Note: This documentation is based on GraphQL introspection queries against the live API endpoint. It represents the current schema and should be updated when the backend schema changes.
- URL: Configured via
VITE_GRAPHQL_URIenvironment variable (see.env.example) - Authorization:
x-api-keyheader - Introspection: Enabled
The main Candidate object type with the following fields:
id: ID!- Unique identifierfirstName: String!- Candidate's first namelastName: String!- Candidate's last namestatus: CandidateStatus!- Application status (enum)score: Float!- Candidate score/ratingcreatedAt: AWSDateTime!- Creation timestampupdatedAt: AWSDateTime!- Last update timestamp
email: String- Candidate's email addressphoneNumber: String- Candidate's phone number
enum CandidateStatus {
APPLIED
SHORTLISTED
REJECTED
}Fetches a paginated list of candidates with optional filtering.
listCandidates(
filter: ModelCandidateFilterInput
limit: Int
nextToken: String
): ModelCandidateConnectionArguments:
filter- Optional filter input for searching/filtering candidateslimit- Maximum number of items to returnnextToken- Pagination token for fetching next page
Returns: ModelCandidateConnection
type ModelCandidateConnection {
items: [Candidate]!
nextToken: String
}Fetches a single candidate by ID.
getCandidate(id: ID!): CandidateThe ModelCandidateFilterInput supports filtering on:
eq- Equalsne- Not equalscontains- Contains substringnotContains- Does not contain substringbeginsWith- Starts withbetween- Between two valuesle,lt,ge,gt- Comparison operators
eq- Equals specific statusne- Not equals specific status
eq,ne- Equality operatorsle,lt,ge,gt- Comparison operatorsbetween- Between two values
and: [ModelCandidateFilterInput]- AND conditionor: [ModelCandidateFilterInput]- OR conditionnot: ModelCandidateFilterInput- NOT condition
query ListAllCandidates {
listCandidates {
items {
id
firstName
lastName
email
phoneNumber
status
score
createdAt
updatedAt
}
nextToken
}
}query SearchCandidates($searchTerm: String!) {
listCandidates(
filter: {
or: [
{ firstName: { contains: $searchTerm } }
{ lastName: { contains: $searchTerm } }
]
}
) {
items {
id
firstName
lastName
email
status
score
}
nextToken
}
}query FilterByStatus($status: CandidateStatus!) {
listCandidates(
filter: {
status: { eq: $status }
}
) {
items {
id
firstName
lastName
status
score
}
}
}query PaginatedCandidates($limit: Int, $nextToken: String) {
listCandidates(limit: $limit, nextToken: $nextToken) {
items {
id
firstName
lastName
status
}
nextToken
}
}mutation CreateCandidate($input: CreateCandidateInput!) {
createCandidate(input: $input) {
id
firstName
lastName
email
phoneNumber
status
score
createdAt
updatedAt
}
}Input:
input CreateCandidateInput {
id: ID
firstName: String!
lastName: String!
email: String
phoneNumber: String
status: CandidateStatus!
score: Float!
}mutation UpdateCandidate($input: UpdateCandidateInput!) {
updateCandidate(input: $input) {
id
firstName
lastName
email
phoneNumber
status
score
updatedAt
}
}Input:
input UpdateCandidateInput {
id: ID!
firstName: String
lastName: String
email: String
phoneNumber: String
status: CandidateStatus
score: Float
}mutation DeleteCandidate($input: DeleteCandidateInput!) {
deleteCandidate(input: $input) {
id
}
}Input:
input DeleteCandidateInput {
id: ID!
}AWS AppSync datetime scalar representing ISO 8601 datetime strings.
Format: YYYY-MM-DDThh:mm:ss.SSSZ
Examples:
2025-10-14T19:00:00.000Z1970-01-01T12:00:00.277Z1970-01-01T12:00:00.123456789Z
Requirements:
- Time zone offset is required (either
Zfor UTC or±hh:mm:ss) - Nanoseconds field (1-9 digits) is optional
- Supports negative years (e.g.,
-2017-01-01T00:00Z)
See src/types/candidate.ts for the corresponding TypeScript types that match this schema.