↑
Q
M
schema
{
query
:
Query
mutation
:
Mutation
}
interface
Asset
{
id
:
ID
!
type
:
AssetType
!
}
interface
ContentAsset
implements
Asset
{
id
:
ID
!
type
:
AssetType
!
language
:
Language
!
}
"""
Custom error type interface
"""
interface
ErrorResult
{
message
:
String
!
code
:
String
!
}
interface
FileAsset
implements
Asset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
}
"""
Identity
"""
interface
IdentityView
{
id
:
ID
!
name
:
String
!
isAccessible
:
Boolean
!
}
"""
Reprezentace MyIdentity
"""
interface
MyIdentity
{
id
:
ID
!
name
:
String
!
isAccessible
:
Boolean
!
systemAdmin
:
Boolean
!
accessibleInstitutes
:
[
InstituteAccess
!
]
!
}
"""
Reprezentace payloadu
"""
type
AddFilesToVoucherRedeemRequestPayload
{
success
:
Boolean
!
}
"""
Cannot send invitation email for anonymous session
"""
type
AnonymousSessionNotSupported
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
ApiToken
"""
type
ApiTokenView
implements
IdentityView
{
id
:
ID
!
isAccessible
:
Boolean
!
name
:
String
!
}
"""
Describes user's access to application
"""
type
AppAccess
{
id
:
ID
!
name
:
String
!
modules
:
[
ModuleAccess
!
]
!
}
"""
approve voucher redeem
"""
type
ApproveVoucherRedeemPayload
{
success
:
Boolean
!
}
type
ArchiveAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
}
type
AudioAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
duration
:
Int
!
}
"""
Representation of istqb board
"""
type
BoardView
{
id
:
Int
!
acronym
:
String
!
name
:
String
!
}
"""
overview
"""
type
BoardsPayload
{
items
:
[
BoardView
!
]
!
}
"""
Member board booking hours
"""
type
BookingAvailabilityHours
{
mon
:
[
BookingAvailabilityHoursInterval
!
]
!
tue
:
[
BookingAvailabilityHoursInterval
!
]
!
wed
:
[
BookingAvailabilityHoursInterval
!
]
!
thu
:
[
BookingAvailabilityHoursInterval
!
]
!
fri
:
[
BookingAvailabilityHoursInterval
!
]
!
sat
:
[
BookingAvailabilityHoursInterval
!
]
!
sun
:
[
BookingAvailabilityHoursInterval
!
]
!
}
"""
Member board opening hour
"""
type
BookingAvailabilityHoursInterval
{
startTime
:
LocalTime
!
endTime
:
LocalTimeEnd
!
}
"""
Reprezentace kandidata
"""
type
Candidate
{
id
:
ID
!
email
:
EmailAddress
!
firstName
:
String
!
lastName
:
String
!
countryCode
:
String
street
:
String
zipCode
:
String
city
:
String
phone
:
String
company
:
String
importId
:
String
gender
:
Gender
birthDate
:
Date
examSessions
:
[
ExamSessionView
!
]
!
logs
(
filter
:
CandidateLogFilter
!
=
{
actions
:
null
}
)
:
CandidateLogSelection
!
createdAt
:
DateTimeMs
!
updatedAt
:
DateTimeMs
!
deletedAt
:
DateTimeMs
}
type
CandidateAlreadyExists
implements
ErrorResult
{
message
:
String
!
code
:
String
!
candidateId
:
String
!
}
"""
wrong email amount
"""
type
CandidateEmailCountMismatch
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Reprezentace candidate log záznamu
"""
type
CandidateLog
{
id
:
ID
!
action
:
CandidateLogAction
!
createdBy
:
IdentityView
createdAt
:
DateTimeMs
!
}
"""
Reprezentace výběru candidate log záznamů
"""
type
CandidateLogSelection
{
items
(
sort
:
CandidateLogSort
!
=
CREATED
sortDirection
:
SortDirection
!
=
DESC
limit
:
Int
!
=
10
@intConstraint
(
min
:
1
,
max
:
100
)
offset
:
Int
!
=
0
@intConstraint
(
min
:
0
)
)
:
[
CandidateLog
!
]
!
count
:
Int
!
}
"""
Reprezentace výběru z kandidátů
"""
type
CandidateSelection
{
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
"""
type
CandidateView
{
id
:
ID
!
email
:
EmailAddress
!
firstName
:
String
!
lastName
:
String
!
countryCode
:
String
street
:
String
zipCode
:
String
city
:
String
phone
:
String
company
:
String
gender
:
Gender
birthDate
:
Date
isAccessible
:
Boolean
!
}
"""
Voucher generation is locked
"""
type
CannotGenerateVoucher
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Reprezentace payloadu createVoucherPatternPayload
"""
type
CreateVoucherPatternPayload
{
result
:
VoucherPattern
!
}
"""
Reprezentace payloadu createVoucherTemplatePayload
"""
type
CreateVoucherTemplatePayload
{
result
:
VoucherTemplate
!
}
type
CsvAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
}
"""
decline voucher redeem
"""
type
DeclineVoucherRedeemPayload
{
success
:
Boolean
!
}
"""
Reprezentace institutu
"""
type
DeleteCandidatePayload
{
success
:
Boolean
!
}
"""
Smazání voucheru
"""
type
DeleteVoucherPayload
{
success
:
Boolean
!
}
"""
Smazání voucher templaty
"""
type
DeleteVoucherTemplatePayload
{
success
:
Boolean
!
}
type
DocumentAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
}
"""
Reprezentace prubehu stahovani souboru
"""
type
DownloadRequestHandle
{
id
:
ID
!
requestUrl
:
Url
!
status
:
DownloadRequestStatus
!
file
:
FileAsset
triggeredBy
:
IdentityView
!
triggeredAt
:
DateTimeMs
!
}
"""
crm id is already used
"""
type
DuplicateCrmId
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
error representation
"""
type
ErrorValidation
{
message
:
String
!
fields
:
[
FieldValidationError
!
]
!
}
"""
Member board voucher part type
"""
type
ExamCenterSettings
{
examCenter
:
ExamCenterView
!
voucherPart
:
String
bookingParticipantsLimit
:
Int
bookingAvailabilityHours
:
BookingAvailabilityHours
!
deletedAt
:
DateTimeMs
}
"""
ExamCenter
"""
type
ExamCenterView
{
id
:
ID
!
name
:
String
!
contactEmail
:
EmailAddress
instituteId
:
ID
!
isAccessible
:
Boolean
!
}
"""
Exam Center voucher part exists
"""
type
ExamCenterVoucherPartExists
implements
ErrorResult
{
message
:
String
!
code
:
String
!
duplicatedCode
:
String
!
}
"""
Reprezxentace ExamSession
"""
type
ExamSessionView
{
token
:
ID
!
exam
:
ExamView
!
candidateId
:
ID
username
:
String
!
passed
:
Boolean
earnedPercentage
:
Float
requiredPercentage
:
Int
!
earnedPoints
:
Float
maxPoints
:
Int
evaluatedAt
:
DateTimeMs
approvedAt
:
DateTimeMs
isAccessible
:
Boolean
!
metadata
:
Json
!
}
"""
Representation of saved reports
"""
type
ExamSessionsReport
{
id
:
ID
!
memberBoard
:
MemberBoardView
!
boardId
:
Int
!
productId
:
Int
!
period
:
String
!
country
:
String
!
status
:
ReportStatus
!
eCertified
:
Int
eFailed
:
Int
paperCertified
:
Int
paperFailed
:
Int
proctoringCertified
:
Int
proctoringFailed
:
Int
proctoringAccreditedTraining
:
Int
reportedBy
:
IdentityView
reportedAt
:
DateTimeMs
deletedAt
:
DateTimeMs
}
"""
exam template is archived
"""
type
ExamTemplateIsArchived
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Reprezentace voucher template
"""
type
ExamTemplateWithLanguages
{
examTemplate
:
TemplateView
!
languages
:
[
Language
!
]
!
}
"""
Reprezentace examu
"""
type
ExamView
{
id
:
ID
!
template
:
TemplateView
!
memberBoardId
:
ID
!
examCenterId
:
ID
startTime
:
DateTimeMs
endTime
:
DateTimeMs
secondaryCamera
:
Boolean
safeExamBrowser
:
Boolean
withTimeBonus
:
Boolean
!
isAccessible
:
Boolean
!
}
"""
Exceed max voucher amount
"""
type
ExceedMaxVoucherAmount
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Reprezentace payloadu
"""
type
ExportFilePayload
{
downloadRequestHandle
:
DownloadRequestHandle
!
}
"""
extend voucheru
"""
type
ExtendVouchersPayload
{
success
:
Boolean
!
}
"""
error representation
"""
type
FieldValidationError
{
field
:
String
!
messages
:
[
String
!
]
!
}
"""
Reprezentace url pro upload souboru
"""
type
FileUploadUrlPayload
{
url
:
Url
!
}
"""
finish reporting
"""
type
FinishReportingPayload
{
success
:
Boolean
!
}
"""
create vouchers from excell
"""
type
GenerateVoucherBulkFromExcelPayload
{
voucherBulk
:
VoucherBulk
!
}
"""
Reprezentace payloadu generace voucheru
"""
type
GenerateVouchersPayload
{
voucherBulk
:
VoucherBulk
!
}
type
ImageAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
width
:
Int
!
height
:
Int
!
}
"""
Reprezentace importu kandidata
"""
type
ImportCandidatesPayload
{
count
:
Int
!
skippedCount
:
Int
!
candidates
:
[
Candidate
!
]
!
}
"""
Incorrect input when setting expire at.
"""
type
IncorrectInputForExtendsVouchers
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Describes user's access to institute
"""
type
InstituteAccess
{
id
:
ID
!
name
:
String
!
scope
:
InstituteScope
!
accessibleApps
:
[
AppAccess
!
]
!
isRootUser
:
Boolean
!
}
"""
Describes user's data scope within an institute
"""
type
InstituteScope
{
memberBoardIds
:
[
String
!
]
examCenterIds
:
[
String
!
]
}
"""
Institute
"""
type
InstituteView
{
id
:
ID
!
name
:
String
!
logoFileUrl
:
Url
contactEmail
:
String
!
emailSenderAddress
:
String
!
emailSenderName
:
String
!
isAccessible
:
Boolean
!
}
type
InvalidBucket
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid country code provided exception.
"""
type
InvalidCountryCode
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid CSV file provided exception.
"""
type
InvalidCsvFile
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid exam center values.
"""
type
InvalidExamCenterValues
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
wrong startTime or endTime
"""
type
InvalidExamTime
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invitation email can only be sent for online exams
"""
type
InvalidExamType
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
type
InvalidFileUrl
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid voucher generate file
"""
type
InvalidOrEmptyData
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid reporting period
"""
type
InvalidReportingPeriod
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid languages
"""
type
InvalidSetOfLanguages
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid time interval
"""
type
InvalidTimeInterval
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid voucher
"""
type
InvalidVoucher
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
type
InvalidVoucherExamType
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid voucher part alphabet
"""
type
InvalidVoucherPartAlphabet
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid voucher template.
"""
type
InvalidVoucherTemplate
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid auth token
"""
type
IstqbApiTokenInvalid
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid input for reporting
"""
type
IstqbApiTokenNotSet
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
ISTQB api request ended with error
"""
type
IstqbApiUnavailable
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid input for reporting
"""
type
IstqbBoardIdNotSet
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Invalid country
"""
type
IstqbCountryNotAvailableForReporting
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
missing country code
"""
type
MemberBoardCountryCodeNotSet
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Member board not found
"""
type
MemberBoardNotFound
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Member board settings
"""
type
MemberBoardSettings
{
memberBoard
:
MemberBoardView
!
istqbBoardId
:
Int
istqbReportingCountry
:
String
deletedAt
:
DateTimeMs
}
"""
Member Board
"""
type
MemberBoardView
{
id
:
ID
!
name
:
String
!
contactEmail
:
EmailAddress
instituteId
:
ID
!
logoFileUrl
:
Url
isAccessible
:
Boolean
!
}
"""
Describes user's access to module
"""
type
ModuleAccess
{
id
:
ID
!
name
:
String
!
permissions
:
[
String
!
]
!
}
"""
Root type pro mutation operaci
"""
type
Mutation
{
importCandidatesCsv
(
input
:
ImportCandidatesCsvInput
!
)
:
ImportCandidatesCsvResult
!
@auth
(
module
:
DEFAULT
,
permission
:
IMPORT_CANDIDATE
)
importCandidatesRaw
(
input
:
ImportCandidatesRawInput
!
)
:
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
)
input
:
UpdateCandidateInput
!
)
:
UpdateCandidateResult
!
@auth
(
module
:
DEFAULT
,
permission
:
UPDATE_CANDIDATE
)
updateTenantSettings
(
input
:
TenantSettingsInput
!
)
:
UpdateTenantSettingsResult
!
@root
setExamCentersSettings
(
input
:
SetExamCentersSettingsInput
!
)
:
SetExamCentersSettingsResult
!
@admin
setMemberBoardSettings
(
input
:
SetMemberBoardSettingsInput
!
)
:
SetMemberBoardSettingsResult
!
@admin
deleteVoucherTemplate
(
id
:
ID
!
@resource
(
type
:
VOUCHER_TEMPLATE
)
)
:
DeleteVoucherTemplateResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_TEMPLATE_DELETE
)
updateVoucherTemplate
(
id
:
ID
!
@resource
(
type
:
VOUCHER_TEMPLATE
)
input
:
UpdateVoucherTemplateInput
!
)
:
UpdateVoucherTemplateResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_TEMPLATE_UPDATE
)
createVoucherPattern
(
input
:
CreateVoucherPatternInput
!
)
:
CreateVoucherPatternResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_TEMPLATE_CREATE
)
createVoucherTemplate
(
input
:
CreateVoucherTemplateInput
!
)
:
CreateVoucherTemplateResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_TEMPLATE_CREATE
)
generateVouchers
(
input
:
GenerateVouchersInput
!
)
:
GenerateVouchersResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_GENERATE
)
generateVoucherBulkFromExcel
(
input
:
GenerateVoucherBulkFromExcelInput
!
)
:
GenerateVoucherBulkFromExcelResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_GENERATE
)
deleteVoucher
(
id
:
ID
!
@resource
(
type
:
VOUCHER
)
)
:
DeleteVoucherResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_DELETE
)
extendVouchers
(
input
:
ExtendVouchersInput
!
)
:
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
)
input
:
DeclineVoucherRedeemRequestInput
!
)
:
DeclineVoucherRedeemResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_REDEEM_REQUEST_APPROVE
)
addFilesToVoucherRedeemRequest
(
input
:
AddFilesToVoucherRedeemRequestInput
!
)
:
AddFilesToVoucherRedeemRequestResult
!
@auth
(
module
:
VOUCHER
,
permission
:
UPLOAD_FILES
)
sendInvitationEmail
(
input
:
SendInvitationEmailInput
!
)
:
SendInvitationEmailResult
!
@auth
(
module
:
DEFAULT
,
permission
:
UPDATE_CANDIDATE
)
getGenerateVoucherBulkExcel
:
ExportFileResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_GENERATE
)
vouchersCsv
(
filter
:
VoucherFilter
!
=
{
search
:
null
,
code
:
null
,
expired
:
null
,
isRedeemed
:
null
,
createdFrom
:
null
,
createdTo
:
null
,
voucherTemplateId
:
null
,
memberBoardId
:
null
,
voucherBulkId
:
null
,
examCenterId
:
null
,
voucherIds
:
null
}
)
:
ExportFileResult
!
@auth
(
module
:
VOUCHER
,
permission
:
VOUCHER_GENERATE
)
"AssetsHub"
fileUploadUrl
(
input
:
FileUploadUrlInput
!
)
:
FileUploadUrlResult
!
validateFile
(
input
:
ValidateFileInput
!
)
:
ValidateFileResult
!
"ISTQB"
istqbSendReport
(
input
:
SendReportInput
!
)
:
IstqbSendReportResult
!
@auth
(
module
:
DEFAULT
,
permission
:
REPORT_DATA
)
istqbFinishReporting
(
input
:
ReportInput
!
)
:
FinishReportingResult
!
@auth
(
module
:
DEFAULT
,
permission
:
REPORT_DATA
)
}
"""
Authenticated api token
"""
type
MyApiTokenIdentity
implements
MyIdentity
{
id
:
ID
!
isAccessible
:
Boolean
!
systemAdmin
:
Boolean
!
accessibleInstitutes
:
[
InstituteAccess
!
]
!
name
:
String
!
}
"""
Authenticated user
"""
type
MyUserIdentity
implements
MyIdentity
{
id
:
ID
!
isAccessible
:
Boolean
!
systemAdmin
:
Boolean
!
accessibleInstitutes
:
[
InstituteAccess
!
]
!
name
:
String
!
firstName
:
String
!
lastName
:
String
!
email
:
EmailAddress
!
language
:
Language
!
}
"""
No product for reporting
"""
type
NoAvailableProductsForReporting
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
type
PdfAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
pages
:
[
PdfAssetPage
!
]
!
}
type
PdfAssetPage
{
pageNumber
:
Int
!
imageAsset
:
ImageAsset
!
}
"""
Representation of istqb reporting periods
"""
type
PeriodView
{
id
:
Int
!
acronym
:
String
!
name
:
String
!
periods
:
[
String
!
]
!
}
"""
periods overview
"""
type
PeriodsPayload
{
periods
:
PeriodView
!
}
"""
Representation of istqb product
"""
type
ProductView
{
id
:
Int
!
acronym
:
String
!
stream
:
String
!
level
:
String
!
name
:
String
!
allowedReportTypes
:
[
String
!
]
!
}
"""
products overview
"""
type
ProductsPayload
{
items
:
[
ProductView
!
]
!
}
"""
Root type pro query operaci
"""
type
Query
{
"Candidate crud"
candidate
(
id
:
ID
!
@resource
(
type
:
CANDIDATE
)
)
:
Candidate
!
@auth
(
module
:
DEFAULT
)
candidates
(
filter
:
CandidateFilter
!
=
{
search
:
null
,
firstName
:
null
,
lastName
:
null
,
email
:
null
,
importId
:
null
}
)
:
CandidateSelection
!
@auth
(
module
:
DEFAULT
)
"Tenant settings"
tenantSettings
:
TenantSettings
!
@auth
(
module
:
DEFAULT
)
examCenterSettings
:
[
ExamCenterSettings
!
]
!
@auth
(
module
:
DEFAULT
)
memberBoardsSettings
:
[
MemberBoardSettings
!
]
!
@auth
(
module
:
DEFAULT
)
voucherPattern
(
id
:
ID
!
@resource
(
type
:
VOUCHER_PATTERN
)
)
:
VoucherPattern
!
@auth
(
module
:
VOUCHER
)
voucherPatterns
(
filter
:
VoucherPatternFilter
!
)
:
VoucherPatternSelection
!
@auth
(
module
:
VOUCHER
)
voucherTemplate
(
id
:
ID
!
@resource
(
type
:
VOUCHER_TEMPLATE
)
)
:
VoucherTemplate
!
@auth
(
module
:
VOUCHER
)
voucherTemplates
(
filter
:
VoucherTemplateFilter
!
=
{
search
:
null
,
name
:
null
,
examTemplateId
:
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
!
=
{
search
:
null
,
code
:
null
,
expired
:
null
,
isRedeemed
:
null
,
createdFrom
:
null
,
createdTo
:
null
,
voucherTemplateId
:
null
,
memberBoardId
:
null
,
voucherBulkId
:
null
,
examCenterId
:
null
,
voucherIds
:
null
}
)
:
VoucherSelection
!
@auth
(
module
:
VOUCHER
)
voucherRedeemRequest
(
id
:
ID
!
@resource
(
type
:
VOUCHER_REDEEM_REQUEST
)
)
:
VoucherRedeemRequest
!
@auth
(
module
:
VOUCHER
)
voucherRedeemRequests
(
filter
:
VoucherRedeemRequestFilter
!
=
{
search
:
null
,
code
:
null
,
status
:
null
,
active
:
null
}
)
:
VoucherRedeemRequestSelection
!
@auth
(
module
:
VOUCHER
)
downloadRequestHandle
(
id
:
ID
!
)
:
DownloadRequestHandle
!
@auth
(
module
:
DEFAULT
)
"UserHub"
me
:
MyIdentity
!
@loggedIn
"ISTQB"
istqbProducts
(
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
)
:
ProductsResult
!
@auth
(
module
:
DEFAULT
)
istqbPeriods
(
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
)
:
PeriodsResult
!
@auth
(
module
:
DEFAULT
)
istqbBoards
:
BoardsResult
!
@auth
(
module
:
DEFAULT
)
istqbReportsOverview
(
input
:
ReportInput
!
)
:
ReportsOverviewResult
!
@auth
(
module
:
DEFAULT
)
}
"""
VoucherRedeemRequest processed.
"""
type
RedeemRequestAlreadyProcessed
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Representation of examhub report preview
"""
type
ReportInputView
{
country
:
String
!
productId
:
Int
!
eCertified
:
Int
eFailed
:
Int
paperCertified
:
Int
paperFailed
:
Int
proctoringCertified
:
Int
proctoringFailed
:
Int
proctoringAccreditedTraining
:
Int
}
"""
Representation of istqb report and examhub calculated report and saved report in our database
"""
type
ReportOverview
{
memberBoard
:
MemberBoardView
!
boardId
:
Int
!
period
:
String
!
istqbReportData
:
ReportView
calculatedReportData
:
ReportInputView
!
latestSubmitReportData
:
ExamSessionsReport
}
"""
Representation of istqb report
"""
type
ReportView
{
country
:
String
!
productId
:
Int
!
eCertified
:
Int
eFailed
:
Int
paperCertified
:
Int
paperFailed
:
Int
proctoringCertified
:
Int
proctoringFailed
:
Int
proctoringAccreditedTraining
:
Int
}
"""
overview report
"""
type
ReportsOverviewPayload
{
items
:
[
ReportOverview
!
]
!
warnings
:
[
String
!
]
!
}
"""
Send invitation email payload
"""
type
SendInvitationEmailPayload
{
success
:
Boolean
!
}
"""
send istqb report
"""
type
SendReportPayload
{
success
:
Boolean
!
error
:
ErrorValidation
corruptedData
:
ReportInputView
}
"""
Reprezentace nastavení voucher partu pro exam center
"""
type
SetExamCentersSettingsPayload
{
success
:
Boolean
!
}
"""
Reprezentace nastavení pro member board
"""
type
SetMemberBoardSettingsPayload
{
success
:
Boolean
!
}
"""
Reprezentace templatu
"""
type
TemplateView
{
id
:
ID
!
templateVersionId
:
ID
!
name
:
String
!
internalName
:
String
!
logoUrl
:
Url
durationInMinutes
:
Int
!
durationInMinutesWithTimeBonus
:
Int
!
requiredPercentage
:
Int
!
availableLanguages
:
[
Language
!
]
!
isAccessible
:
Boolean
!
requiredDocuments
:
[
String
!
]
!
isArchived
:
Boolean
!
istqbProductId
:
Int
timeBonusMode
:
TimeBonusMode
!
}
"""
Reprezentace nastaveni tenanta
"""
type
TenantSettings
{
soapUsername
:
String
!
soapPassword
:
String
!
voucherPart
:
String
!
"Voucher export strategy: examhub_direct or combit_ftp"
voucherExportStrategy
:
String
!
"Combit FTP server hostname"
combitFtpHost
:
String
"Combit FTP server port"
combitFtpPort
:
Int
"Combit FTP username"
combitFtpUsername
:
String
"Use SSL/TLS for FTP connection"
combitFtpSsl
:
Boolean
istqbApiToken
:
String
}
type
TextAsset
implements
Asset
&
ContentAsset
{
id
:
ID
!
type
:
AssetType
!
language
:
Language
!
value
:
String
!
}
type
TipTapJsonAsset
implements
Asset
&
ContentAsset
{
id
:
ID
!
type
:
AssetType
!
language
:
Language
!
value
:
Json
!
assets
:
[
FileAsset
!
]
!
}
type
UnableToAnalyzeAsset
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
type
UnsupportedAssetType
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Reprezentace payloadu updateCandidate
"""
type
UpdateCandidatePayload
{
result
:
Candidate
!
}
"""
Reprezentace payloadu updateTenantSettings
"""
type
UpdateTenantSettingsPayload
{
result
:
TenantSettings
!
}
"""
Reprezentace payloadu updateVoucherTemplatePayload
"""
type
UpdateVoucherTemplatePayload
{
result
:
VoucherTemplate
!
}
type
UrlAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
}
"""
User
"""
type
UserView
implements
IdentityView
{
id
:
ID
!
isAccessible
:
Boolean
!
name
:
String
!
firstName
:
String
!
lastName
:
String
!
email
:
EmailAddress
!
}
"""
Reprezentace file
"""
type
ValidateFilePayload
{
result
:
FileAsset
!
}
type
VideoAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
width
:
Int
!
height
:
Int
!
duration
:
Int
!
}
"""
Reprezentace voucheru
"""
type
Voucher
{
id
:
ID
!
code
:
String
!
voucherTemplate
:
VoucherTemplate
!
memberBoard
:
MemberBoardView
!
examTemplates
:
[
ExamTemplateWithLanguages
!
]
!
examCenter
:
ExamCenterView
!
assignedCandidate
:
Candidate
remainingBookingCount
:
Int
!
expiresAt
:
DateTimeMs
!
redeemedAt
:
DateTimeMs
secondaryCamera
:
Boolean
!
safeExamBrowser
:
Boolean
!
examType
:
ExamType
!
examSession
:
ExamSessionView
bookingCount
:
Int
!
createdAt
:
DateTimeMs
!
updatedAt
:
DateTimeMs
!
deletedAt
:
DateTimeMs
}
"""
Reprezentace voucheru
"""
type
VoucherBulk
{
id
:
ID
!
targetAmount
:
Int
!
generatedAmount
:
Int
generatedAt
:
DateTimeMs
voucherTemplateAssignments
:
[
VoucherBulkVoucherTemplate
!
]
!
memberBoard
:
MemberBoardView
!
examCenter
:
ExamCenterView
!
createdAt
:
DateTimeMs
!
sendMailToExamCenter
:
Boolean
!
status
:
VoucherBulkStatus
!
}
"""
Reprezentace výběru z voucheru
"""
type
VoucherBulkSelection
{
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 template v bulku
"""
type
VoucherBulkVoucherTemplate
{
targetAmount
:
Int
!
generatedAmount
:
Int
expirationDays
:
Int
!
voucherTemplate
:
VoucherTemplate
!
examType
:
ExamType
!
}
"""
Reprezentace voucher pattern
"""
type
VoucherPattern
{
id
:
ID
!
pattern
:
String
!
placeholderCount
:
Int
!
maxVouchers
:
Int
!
createdAt
:
DateTimeMs
!
updatedAt
:
DateTimeMs
!
}
"""
Reprezentace výběru z voucher patternů
"""
type
VoucherPatternSelection
{
items
(
sort
:
VoucherPatternSort
!
=
CREATED
sortDirection
:
SortDirection
!
=
DESC
limit
:
Int
!
=
10
@intConstraint
(
min
:
1
,
max
:
100
)
offset
:
Int
!
=
0
@intConstraint
(
min
:
0
)
)
:
[
VoucherPattern
!
]
!
count
:
Int
!
}
"""
Reprezentace voucheru redeem requestu
"""
type
VoucherRedeemRequest
{
id
:
ID
!
candidate
:
Candidate
!
language
:
Language
!
withTimeBonus
:
Boolean
!
secondaryCamera
:
Boolean
!
safeExamBrowser
:
Boolean
!
startTime
:
DateTimeMs
!
status
:
VoucherRedeemRequestStatus
!
examTemplate
:
TemplateView
!
voucher
:
Voucher
!
files
:
[
VoucherRedeemRequestFile
!
]
!
resolvedBy
:
IdentityView
resolvedAt
:
DateTimeMs
rebookedAt
:
DateTimeMs
comment
:
String
createdAt
:
DateTimeMs
!
updatedAt
:
DateTimeMs
!
}
"""
Reprezentace file
"""
type
VoucherRedeemRequestFile
{
file
:
FileAsset
!
}
"""
Reprezentace výběru z voucher redeem requestu
"""
type
VoucherRedeemRequestSelection
{
items
(
sort
:
VoucherRedeemRequestSort
!
=
CREATED
sortDirection
:
SortDirection
!
=
DESC
limit
:
Int
!
=
10
@intConstraint
(
min
:
1
,
max
:
100
)
offset
:
Int
!
=
0
@intConstraint
(
min
:
0
)
)
:
[
VoucherRedeemRequest
!
]
!
count
:
Int
!
}
"""
Reprezentace výběru z voucheru
"""
type
VoucherSelection
{
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
"""
type
VoucherTemplate
{
id
:
ID
!
name
:
String
!
voucherPattern
:
VoucherPattern
!
voucherExpirationDays
:
Int
!
examTemplates
:
[
ExamTemplateWithLanguages
!
]
!
activeVoucherCount
:
Int
!
maxRebookingCount
:
Int
!
minRebookingAdvanceHours
:
Int
!
minBookingBufferHours
:
Int
!
autoApproveOnRebooking
:
Boolean
!
secondaryCamera
:
Boolean
!
safeExamBrowser
:
Boolean
!
examType
:
ExamType
!
createdAt
:
DateTimeMs
!
updatedAt
:
DateTimeMs
!
deletedAt
:
DateTimeMs
}
"""
Voucher template pattern unique.
"""
type
VoucherTemplatePatternUnique
implements
ErrorResult
{
message
:
String
!
code
:
String
!
}
"""
Reprezentace výběru z voucher templatu
"""
type
VoucherTemplateSelection
{
items
(
sort
:
VoucherTemplateSort
!
=
CREATED
sortDirection
:
SortDirection
!
=
DESC
limit
:
Int
!
=
10
@intConstraint
(
min
:
1
,
max
:
100
)
offset
:
Int
!
=
0
@intConstraint
(
min
:
0
)
)
:
[
VoucherTemplate
!
]
!
count
:
Int
!
}
type
XmlAsset
implements
Asset
&
FileAsset
{
id
:
ID
!
type
:
AssetType
!
bucket
:
String
!
location
:
String
!
url
:
Url
!
size
:
Int
!
expiresAt
:
DateTime
}
union
AddFilesToVoucherRedeemRequestResult
=
AddFilesToVoucherRedeemRequestPayload
union
ApproveVoucherRedeemResult
=
ApproveVoucherRedeemPayload
|
RedeemRequestAlreadyProcessed
|
InvalidExamTime
|
ExamTemplateIsArchived
union
BoardsResult
=
BoardsPayload
|
IstqbApiTokenNotSet
|
IstqbApiTokenInvalid
|
IstqbApiUnavailable
union
CreateVoucherPatternResult
=
CreateVoucherPatternPayload
|
InvalidVoucherTemplate
|
VoucherTemplatePatternUnique
union
CreateVoucherTemplateResult
=
CreateVoucherTemplatePayload
|
InvalidVoucherTemplate
|
InvalidSetOfLanguages
|
InvalidVoucherExamType
|
VoucherTemplatePatternUnique
union
DeclineVoucherRedeemResult
=
DeclineVoucherRedeemPayload
|
RedeemRequestAlreadyProcessed
union
DeleteCandidateResult
=
DeleteCandidatePayload
union
DeleteVoucherResult
=
DeleteVoucherPayload
union
DeleteVoucherTemplateResult
=
DeleteVoucherTemplatePayload
union
ExportFileResult
=
ExportFilePayload
union
ExtendVouchersResult
=
ExtendVouchersPayload
|
IncorrectInputForExtendsVouchers
union
FileUploadUrlResult
=
FileUploadUrlPayload
|
InvalidBucket
union
FinishReportingResult
=
FinishReportingPayload
|
IstqbApiTokenNotSet
|
IstqbBoardIdNotSet
|
InvalidReportingPeriod
|
IstqbApiTokenInvalid
|
IstqbApiUnavailable
|
MemberBoardCountryCodeNotSet
|
IstqbCountryNotAvailableForReporting
union
GenerateVoucherBulkFromExcelResult
=
GenerateVoucherBulkFromExcelPayload
|
InvalidOrEmptyData
union
GenerateVouchersResult
=
GenerateVouchersPayload
|
ExceedMaxVoucherAmount
|
MemberBoardNotFound
|
CannotGenerateVoucher
|
CandidateEmailCountMismatch
|
DuplicateCrmId
|
InvalidOrEmptyData
|
InvalidCountryCode
union
ImportCandidatesCsvResult
=
ImportCandidatesPayload
|
InvalidCsvFile
|
InvalidCountryCode
union
ImportCandidatesRawResult
=
ImportCandidatesPayload
|
InvalidCountryCode
union
IstqbSendReportResult
=
SendReportPayload
|
IstqbApiTokenNotSet
|
IstqbBoardIdNotSet
|
InvalidReportingPeriod
|
IstqbApiTokenInvalid
|
IstqbApiUnavailable
union
PeriodsResult
=
PeriodsPayload
|
IstqbApiTokenNotSet
|
IstqbBoardIdNotSet
|
IstqbApiTokenInvalid
|
IstqbApiUnavailable
union
ProductsResult
=
ProductsPayload
|
IstqbApiTokenNotSet
|
IstqbBoardIdNotSet
|
IstqbApiTokenInvalid
|
IstqbApiUnavailable
union
ReportsOverviewResult
=
ReportsOverviewPayload
|
IstqbApiTokenNotSet
|
IstqbBoardIdNotSet
|
InvalidReportingPeriod
|
MemberBoardCountryCodeNotSet
|
NoAvailableProductsForReporting
|
IstqbCountryNotAvailableForReporting
|
IstqbApiTokenInvalid
|
IstqbApiUnavailable
union
SendInvitationEmailResult
=
SendInvitationEmailPayload
|
InvalidExamType
|
AnonymousSessionNotSupported
union
SetExamCentersSettingsResult
=
SetExamCentersSettingsPayload
|
InvalidExamCenterValues
|
InvalidVoucherPartAlphabet
|
ExamCenterVoucherPartExists
|
InvalidTimeInterval
union
SetMemberBoardSettingsResult
=
SetMemberBoardSettingsPayload
|
InvalidCountryCode
union
UpdateCandidateResult
=
UpdateCandidatePayload
|
CandidateAlreadyExists
union
UpdateTenantSettingsResult
=
UpdateTenantSettingsPayload
|
InvalidVoucherPartAlphabet
union
UpdateVoucherTemplateResult
=
UpdateVoucherTemplatePayload
|
InvalidVoucherTemplate
|
VoucherTemplatePatternUnique
|
InvalidSetOfLanguages
|
InvalidVoucherExamType
union
ValidateFileResult
=
ValidateFilePayload
|
UnableToAnalyzeAsset
"""
Input add list of files to voucher redeem request
"""
input
AddFilesToVoucherRedeemRequestInput
{
voucherRedeemRequestId
:
ID
!
@resource
(
type
:
VOUCHER_REDEEM_REQUEST
)
files
:
[
ID
!
]
!
@listConstraint
(
minItems
:
1
,
unique
:
true
)
@fileAsset
(
types
:
[
DOCUMENT
,
IMAGE
,
PDF
]
)
}
"""
Input pro nastaveni opening hours pro MB
"""
input
BookingAvailabilityHoursInput
{
mon
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
tue
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
wed
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
thu
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
fri
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
sat
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
sun
:
[
BookingAvailabilityHoursIntervalInput
!
]
!
}
"""
Input pro nastaveni opening hours pro MB
"""
input
BookingAvailabilityHoursIntervalInput
{
startTime
:
LocalTime
!
endTime
:
LocalTimeEnd
!
}
"""
Filter candidates
"""
input
CandidateFilter
{
search
:
String
=
null
firstName
:
String
=
null
lastName
:
String
=
null
email
:
String
=
null
importId
:
String
=
null
}
"""
Input pro pridani kandidata
"""
input
CandidateInput
{
email
:
EmailAddress
!
countryCode
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
3
)
firstName
:
String
!
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
lastName
:
String
!
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
street
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
city
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
zipCode
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
20
)
phone
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
50
)
company
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
20
)
gender
:
Gender
=
null
birthDate
:
Date
=
null
importId
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
255
)
}
"""
Input pro filtraci candidate logs
"""
input
CandidateLogFilter
{
actions
:
[
CandidateLogAction
]
=
null
}
"""
Input pro setnuti Content
"""
input
ContentInput
{
language
:
Language
!
value
:
Json
!
}
"""
Input pro setnuti Content bez jsonu
"""
input
ContentSimpleInput
{
language
:
Language
!
value
:
String
!
}
"""
Input pro create VoucherPattern
"""
input
CreateVoucherPatternInput
{
pattern
:
String
!
@stringConstraint
(
minLength
:
1
,
maxLength
:
100
)
}
"""
Input pro create VoucherTemplate
"""
input
CreateVoucherTemplateInput
{
name
:
String
!
@stringConstraint
(
minLength
:
1
,
maxLength
:
255
)
voucherPattern
:
VoucherTemplatePatternInput
!
voucherExpirationDays
:
Int
!
@intConstraint
(
min
:
1
)
maxRebookingCount
:
Int
!
@intConstraint
(
min
:
0
)
minRebookingAdvanceHours
:
Int
!
@intConstraint
(
min
:
1
)
minBookingBufferHours
:
Int
!
=
1
@intConstraint
(
min
:
1
)
examTemplates
:
[
VoucherTemplateExamTemplateInput
!
]
!
autoApproveOnRebooking
:
Boolean
!
=
true
secondaryCamera
:
Boolean
!
=
true
safeExamBrowser
:
Boolean
!
=
false
examType
:
ExamType
!
=
PROCTORING
}
"""
Input na decline requestu
"""
input
DeclineVoucherRedeemRequestInput
{
comment
:
String
=
null
}
"""
Filter exam centers
"""
input
ExamCenterFilter
{
search
:
String
name
:
String
instituteId
:
ID
}
"""
Input set voucher_part for exam center
"""
input
ExamCenterSettingsInput
{
examCenterId
:
ID
!
@resource
(
type
:
EXAM_CENTER
)
voucherPart
:
String
!
@stringConstraint
(
minLength
:
4
,
maxLength
:
4
)
bookingParticipantsLimit
:
Int
=
null
bookingAvailabilityHours
:
BookingAvailabilityHoursInput
!
}
"""
Filter exams by name
"""
input
ExamFilter
{
search
:
String
=
null
name
:
String
=
null
@stringConstraint
(
minLength
:
1
)
templateIds
:
[
ID
!
]
=
null
@listConstraint
(
unique
:
true
)
memberBoardIds
:
[
ID
!
]
=
null
@listConstraint
(
unique
:
true
)
examCenterIds
:
[
ID
!
]
=
null
@listConstraint
(
unique
:
true
)
type
:
[
ExamType
!
]
=
null
@listConstraint
(
unique
:
true
)
firstStartTimeFrom
:
DateTimeMs
=
null
firstStartTimeTo
:
DateTimeMs
=
null
}
"""
Filter ExamSessions
"""
input
ExamSessionFilter
{
candidateId
:
ID
=
null
templateIds
:
[
ID
!
]
=
null
@listConstraint
(
unique
:
true
)
examId
:
ID
=
null
memberBoardIds
:
[
ID
!
]
=
null
@listConstraint
(
unique
:
true
)
examCenterIds
:
[
ID
!
]
=
null
@listConstraint
(
unique
:
true
)
username
:
String
=
null
sessionStage
:
[
SessionStage
!
]
=
null
@listConstraint
(
unique
:
true
)
examType
:
[
ExamType
!
]
=
null
@listConstraint
(
unique
:
true
)
passed
:
Boolean
=
null
approved
:
Boolean
=
null
hasAnswerSheetPages
:
Boolean
=
null
firstStartTimeFrom
:
DateTimeMs
=
null
firstStartTimeTo
:
DateTimeMs
=
null
isIstqb
:
Boolean
=
null
search
:
String
=
null
}
"""
Input na extend voucheru
"""
input
ExtendVouchersInput
{
voucherIds
:
[
ID
!
]
!
@resource
(
type
:
VOUCHER
)
date
:
DateTimeMs
@optional
days
:
Int
@optional
@intConstraint
(
min
:
1
)
}
"""
File generate url input
"""
input
FileUploadUrlInput
{
bucket
:
Bucket
!
}
"""
Input pro kandidata pri generovani voucheru
"""
input
GenerateVoucherAssignmentInput
{
candidate
:
GenerateVoucherCandidateInput
=
null
crmId
:
String
=
null
@stringConstraint
(
minLength
:
1
,
maxLength
:
255
)
}
"""
Input pro generovani voucheru pro kandidaty
"""
input
GenerateVoucherAssignmentsInput
{
sendMailToCandidates
:
Boolean
!
=
false
entries
:
[
GenerateVoucherAssignmentInput
!
]
!
@listConstraint
(
minItems
:
1
)
}
"""
Input pro nahrani xlsx souboru pro import voucheru
"""
input
GenerateVoucherBulkFromExcelInput
{
examCenterId
:
ID
!
@resource
(
type
:
EXAM_CENTER
)
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
fileId
:
ID
!
@fileAsset
(
types
:
[
DOCUMENT
]
)
}
"""
Kandidat voucheru - existujici (id), nebo novy (new)
"""
input
GenerateVoucherCandidateInput
@oneOf
{
id
:
ID
@resource
(
type
:
CANDIDATE
)
new
:
CandidateInput
}
"""
Input pro generovani poctu voucheru
"""
input
GenerateVoucherCountInput
{
amount
:
Int
!
@intConstraint
(
min
:
1
,
max
:
400
)
}
"""
Strategie generovani voucheru
"""
input
GenerateVoucherGenerationInput
@oneOf
{
count
:
GenerateVoucherCountInput
assignments
:
GenerateVoucherAssignmentsInput
}
"""
Input pro generovani voucheru
"""
input
GenerateVouchersInput
{
voucherTemplates
:
[
GenerateVouchersVoucherTemplateInput
!
]
!
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
examCenterId
:
ID
!
@resource
(
type
:
EXAM_CENTER
)
sendMailToExamCenter
:
Boolean
!
=
false
}
"""
Input pro generovani voucheru
"""
input
GenerateVouchersVoucherTemplateInput
{
voucherTemplateId
:
ID
!
@resource
(
type
:
VOUCHER_TEMPLATE
)
voucherExpirationDays
:
Int
=
null
@intConstraint
(
min
:
1
)
generation
:
GenerateVoucherGenerationInput
!
}
"""
Filter identities
"""
input
IdentityFilter
{
instituteId
:
ID
rootUser
:
Boolean
globalAccess
:
Boolean
search
:
String
}
"""
Input pro csv import candidates
"""
input
ImportCandidatesCsvInput
{
file
:
Upload
!
}
"""
Input pro raw import candidates
"""
input
ImportCandidatesRawInput
{
candidates
:
[
CandidateInput
!
]
!
}
input
ListConstraintInput
{
minItems
:
Int
=
null
@intConstraint
(
min
:
0
)
maxItems
:
Int
=
null
@intConstraint
(
min
:
0
)
unique
:
Boolean
!
=
false
innerList
:
ListConstraintInput
=
null
}
"""
Filter member boards
"""
input
MemberBoardFilter
{
search
:
String
name
:
String
instituteId
:
ID
}
input
ObjectConstraintInput
{
count
:
Int
!
@intConstraint
(
min
:
1
)
from
:
[
String
!
]
!
@listConstraint
(
minItems
:
1
)
}
"""
Input pro ziskani reportu z istqb
"""
input
ReportDataInput
{
productId
:
Int
!
eCertified
:
Int
eFailed
:
Int
paperCertified
:
Int
paperFailed
:
Int
proctoringCertified
:
Int
proctoringFailed
:
Int
proctoringAccreditedTraining
:
Int
}
"""
Input pro ziskani reportu z istqb
"""
input
ReportInput
{
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
year
:
Int
!
@intConstraint
(
min
:
2025
,
max
:
3000
)
month
:
Int
!
@intConstraint
(
min
:
1
,
max
:
12
)
}
"""
Mutace pro odeslání pozvánky na zkoušku
"""
input
SendInvitationEmailInput
{
examSessionIds
:
[
ID
!
]
!
@resource
(
type
:
EXAM_SESSION
)
linkType
:
InvitationEmailLinkType
!
}
"""
Input na odeslani reportu do istqb
"""
input
SendReportInput
{
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
year
:
Int
!
@intConstraint
(
min
:
2025
,
max
:
3000
)
month
:
Int
!
@intConstraint
(
min
:
1
,
max
:
12
)
boardId
:
Int
!
data
:
[
ReportDataInput
!
]
!
}
"""
Input set list of examCenters with voucher parts
"""
input
SetExamCentersSettingsInput
{
examCentersSettings
:
[
ExamCenterSettingsInput
!
]
!
}
"""
Input set istqbBoardId for member board
"""
input
SetMemberBoardSettingsInput
{
memberBoardId
:
ID
!
@resource
(
type
:
MEMBER_BOARD
)
istqbBoardId
:
Int
=
null
istqbReportingCountry
:
String
=
null
}
"""
Filter criteria for templates
"""
input
TemplateFilter
{
search
:
String
=
null
name
:
String
=
null
@stringConstraint
(
minLength
:
1
)
catalogueId
:
ID
=
null
@stringConstraint
(
minLength
:
1
)
isArchived
:
Boolean
=
null
isIstqb
:
Boolean
=
null
languages
:
[
Language
!
]
=
null
@listConstraint
(
minItems
:
1
,
unique
:
true
)
}
"""
Input pro TenantSettings
"""
input
TenantSettingsInput
{
soapUsername
:
String
@optional
@stringConstraint
(
minLength
:
4
,
maxLength
:
200
)
soapPassword
:
String
@optional
@stringConstraint
(
minLength
:
4
,
maxLength
:
200
)
voucherPart
:
String
@optional
@stringConstraint
(
minLength
:
4
,
maxLength
:
4
)
istqbApiToken
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
255
)
}
"""
Input pro pridani kandidata
"""
input
UpdateCandidateInput
{
email
:
EmailAddress
@optional
countryCode
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
3
)
firstName
:
String
@optional
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
lastName
:
String
@optional
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
street
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
city
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
200
)
zipCode
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
20
)
phone
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
50
)
company
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
20
)
gender
:
Gender
birthDate
:
Date
importId
:
String
@optional
@stringConstraint
(
minLength
:
1
,
maxLength
:
255
)
}
"""
Input pro VoucherTemplate
"""
input
UpdateVoucherTemplateInput
{
name
:
String
@optional
@stringConstraint
(
minLength
:
1
,
maxLength
:
255
)
voucherPattern
:
VoucherTemplatePatternInput
@optional
voucherExpirationDays
:
Int
@optional
@intConstraint
(
min
:
1
)
maxRebookingCount
:
Int
@optional
@intConstraint
(
min
:
0
)
minRebookingAdvanceHours
:
Int
@optional
@intConstraint
(
min
:
1
)
minBookingBufferHours
:
Int
@optional
@intConstraint
(
min
:
1
)
examTemplates
:
[
VoucherTemplateExamTemplateInput
!
]
@optional
autoApproveOnRebooking
:
Boolean
@optional
secondaryCamera
:
Boolean
@optional
safeExamBrowser
:
Boolean
@optional
updateVouchers
:
Boolean
!
=
false
examType
:
ExamType
@optional
}
"""
File upload validation input
"""
input
ValidateFileInput
{
fileUrl
:
Url
!
}
"""
Input pro filtraci voucher bulk
"""
input
VoucherBulkFilter
{
voucherTemplateId
:
ID
=
null
@resource
(
type
:
VOUCHER_TEMPLATE
)
memberBoardId
:
ID
=
null
@resource
(
type
:
MEMBER_BOARD
)
}
"""
Input pro filtraci voucheru
"""
input
VoucherFilter
{
search
:
String
=
null
code
:
String
=
null
expired
:
Boolean
=
null
isRedeemed
:
Boolean
=
null
createdFrom
:
DateTimeMs
=
null
createdTo
:
DateTimeMs
=
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
)
voucherIds
:
[
ID
!
]
=
null
@resource
(
type
:
VOUCHER
)
}
"""
Input pro filtraci voucher patternů
"""
input
VoucherPatternFilter
{
search
:
String
=
null
@stringConstraint
(
minLength
:
1
)
}
"""
Input pro filtraci voucher template
"""
input
VoucherRedeemRequestFilter
{
search
:
String
=
null
code
:
String
=
null
@stringConstraint
(
minLength
:
4
)
status
:
VoucherRedeemRequestStatus
=
null
active
:
Boolean
=
null
}
"""
Input pro prirazeni jazyku k ExamTemplate pro VoucherTemplate
"""
input
VoucherTemplateExamTemplateInput
{
examTemplateId
:
ID
!
@resource
(
type
:
EXAM_TEMPLATE
)
languages
:
[
Language
!
]
=
null
@listConstraint
(
unique
:
true
)
}
"""
Input pro filtraci voucher template
"""
input
VoucherTemplateFilter
{
search
:
String
=
null
name
:
String
=
null
examTemplateId
:
ID
=
null
}
"""
OneOf input pro výběr nebo vytvoření voucher patternu
"""
input
VoucherTemplatePatternInput
@oneOf
{
voucherPatternId
:
ID
@resource
(
type
:
VOUCHER_PATTERN
)
pattern
:
String
@stringConstraint
(
minLength
:
1
,
maxLength
:
100
)
}
"""
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"
)
"""
DateTime type - string which contains valid date in ISO8601 format without miliseconds.
"""
scalar
DateTime
@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).
"""
scalar
LocalTime
"""
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.
"""
scalar
LocalTimeEnd
"""
PhoneNumber type - string which contains valid phone number.
The accepted format is without spaces and other special characters, but the leading plus is required.
"""
scalar
PhoneNumber
@specifiedBy
(
url
:
"https://datatracker.ietf.org/doc/html/rfc3966#section-5.1"
)
"""
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"
)
"""
Type of asset
"""
enum
AssetType
{
AUDIO
DOCUMENT
IMAGE
PDF
URL
TEXT
TIP_TAP_JSON
VIDEO
XML
ARCHIVE
CSV
}
"""
Aws buckets supported by this application
"""
enum
Bucket
{
candidate
export
}
"""
Candidate log action type
"""
enum
CandidateLogAction
{
CANDIDATE_CREATED
CANDIDATE_EDITED
VOUCHER_REDEEM_DECLINED
VOUCHER_REDEEMED_SUCCESSFULLY
}
"""
Možnosti řazení candidate logů
"""
enum
CandidateLogSort
{
CREATED
ACTION
}
"""
Možnosti řazení kandidátů
"""
enum
CandidateSort
{
CREATED
NAME
}
"""
request status
"""
enum
DownloadRequestStatus
{
GENERATING
DONE
ERROR
}
"""
Stav zkoušky
"""
enum
ExamType
{
ONLINE
PROCTORING
PAPER
TABLET
RECORD_REVIEW
}
"""
Gender
"""
enum
Gender
{
MALE
FEMALE
DIVERSE
}
"""
Typ pozvánky na zkoušku - přímý odkaz na zkoušku nebo přihlašovací údaje
"""
enum
InvitationEmailLinkType
{
DIRECT_SESSION_LINK
LOGIN_LINK
}
"""
Supported languages
"""
enum
Language
{
AA
AB
AE
AF
AK
AM
AN
AR
AS
AV
AY
AZ
BA
BE
BG
BH
BI
BM
BN
BO
BR
BS
CA
CE
CH
CO
CR
CS
CU
CV
CY
DA
DE
DV
DZ
EE
EL
EN
EO
ES
ES_419
ET
EU
FA
FF
FI
FJ
FO
FR
FY
GA
GD
GL
GN
GU
GV
HA
HE
HI
HO
HR
HT
HU
HY
HZ
IA
ID
IE
IG
II
IK
IO
IS
IT
IU
JA
JV
KA
KG
KI
KJ
KK
KL
KM
KN
KO
KR
KS
KU
KV
KW
KY
LA
LB
LG
LI
LN
LO
LT
LU
LV
MG
MH
MI
MK
ML
MN
MR
MS
MT
MY
NA
NB
ND
NE
NG
NL
NN
NO
NR
NV
NY
OC
OJ
OM
OR
OS
PA
PI
PL
PS
PT
QU
RM
RN
RO
RU
RW
SA
SC
SD
SE
SG
SI
SK
SL
SM
SN
SO
SQ
SR
SS
ST
SU
SV
SW
TA
TE
TG
TH
TI
TK
TL
TN
TO
TR
TS
TT
TW
TY
UG
UK
UR
UZ
VE
VI
VO
WA
WO
XH
YI
YO
ZA
ZH
ZU
}
"""
Modules supported by this application
"""
enum
Module
{
DEFAULT
VOUCHER
}
"""
Permissions supported by this application
"""
enum
Permission
{
DELETE_CANDIDATE
IMPORT_CANDIDATE
UPDATE_CANDIDATE
REPORT_DATA
UPLOAD_FILES
VOUCHER_TEMPLATE_CREATE
VOUCHER_TEMPLATE_UPDATE
VOUCHER_TEMPLATE_DELETE
VOUCHER_GENERATE
VOUCHER_DELETE
VOUCHER_EXTEND
VOUCHER_REDEEM_REQUEST_APPROVE
}
"""
Report status
"""
enum
ReportStatus
{
created
finished
locked
}
"""
Typ entity
"""
enum
ResourceType
{
CANDIDATE
VOUCHER_TEMPLATE
VOUCHER_PATTERN
VOUCHER_BULK
VOUCHER
VOUCHER_REDEEM_REQUEST
EXAM_SESSION_REPORT
IDENTITY
USER
MEMBER_BOARD
EXAM_CENTER
EXAM_TEMPLATE
EXAM_SESSION
ASSET
DOWNLOAD_REQUEST_HANDLE
}
"""
Stav kandidáta ve zkoušce
"""
enum
SessionStage
{
NONE
UPCOMING
RUNNING
SUBMITTED
EVALUATED
AWAITING_APPROVAL
APPROVED
TERMS_DECLINED
}
"""
Sorting direction
"""
enum
SortDirection
{
ASC
DESC
}
"""
native or nonnative speaker
"""
enum
TimeBonusMode
{
NATIVE
NON_NATIVE
BOTH
}
"""
Možnosti řazení voucheru
"""
enum
VoucherBulkSort
{
CREATED
}
"""
Voucher bulk status
"""
enum
VoucherBulkStatus
{
PROCESSING
SUCCESS
ERROR
}
"""
Možnosti řazení voucher pattern
"""
enum
VoucherPatternSort
{
CREATED
PATTERN
}
"""
Možnosti řazení voucher redeem requestu
"""
enum
VoucherRedeemRequestSort
{
CREATED
}
"""
Voucher redeem request status
"""
enum
VoucherRedeemRequestStatus
{
PENDING
APPROVED
DECLINED
}
"""
Možnosti řazení voucheru
"""
enum
VoucherSort
{
CREATED
EXPIRES_AT
}
"""
Možnosti řazení voucher template
"""
enum
VoucherTemplateSort
{
CREATED
NAME
}
"""
Only system admin can perform this action.
"""
directive
@admin
on
FIELD_DEFINITION
"""
Only user with given permission can perform this action.
"""
directive
@auth
(
module
:
Module
!
permission
:
Permission
)
on
FIELD_DEFINITION
"""
Only user with given permission can perform this action.
"""
directive
@authResource
(
module
:
Module
!
permission
:
Permission
)
repeatable
on
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
directive
@fileAsset
(
types
:
[
AssetType
!
]
!
)
on
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
"""
Graphpinator floatConstraint directive.
"""
directive
@floatConstraint
(
min
:
Float
max
:
Float
oneOf
:
[
Float
!
]
)
on
FIELD_DEFINITION
|
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
|
VARIABLE_DEFINITION
"""
Graphpinator intConstraint directive.
"""
directive
@intConstraint
(
min
:
Int
max
:
Int
oneOf
:
[
Int
!
]
)
on
FIELD_DEFINITION
|
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
|
VARIABLE_DEFINITION
"""
Graphpinator listConstraint directive.
"""
directive
@listConstraint
(
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.
"""
directive
@objectConstraint
(
atLeastOne
:
[
String
!
]
@listConstraint
(
minItems
:
1
)
atMostOne
:
[
String
!
]
@listConstraint
(
minItems
:
1
)
exactlyOne
:
[
String
!
]
@listConstraint
(
minItems
:
1
)
atLeast
:
ObjectConstraintInput
atMost
:
ObjectConstraintInput
exactly
:
ObjectConstraintInput
)
repeatable
on
OBJECT
|
INTERFACE
|
INPUT_OBJECT
directive
@optional
on
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
directive
@resource
(
type
:
ResourceType
!
)
on
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
"""
Only root user can perform this action.
"""
directive
@root
on
FIELD_DEFINITION
"""
Graphpinator stringConstraint directive.
"""
directive
@stringConstraint
(
minLength
:
Int
@intConstraint
(
min
:
0
)
maxLength
:
Int
@intConstraint
(
min
:
0
)
regex
:
String
oneOf
:
[
String
!
]
)
on
FIELD_DEFINITION
|
ARGUMENT_DEFINITION
|
INPUT_FIELD_DEFINITION
|
VARIABLE_DEFINITION