Appearance
Student flow
One student, four calls. Signup returns a token, so a brand-new student can skip sign-in. A returning student starts at sign-in. Send Authorization: Bearer <token> on the profile and search calls.
The account is created on the partner selected by Host. See How we identify partners.
Register
Header: Idempotency-Key: 7c9e6679-7425-40de-944b-e07fc1f90ae7
Use one key per signup attempt. Send that same key again if the request times out.
graphql
mutation Signup($input: CreateUserInput!) {
auth {
createUser(input: $input) {
success
token
expiresAt
user {
id
email
firstName
lastName
}
errors {
code
field
message
}
}
}
}json
{
"input": {
"email": "ava@example.com",
"password": "correct-horse-battery",
"firstName": "Ava",
"lastName": "Nguyen"
}
}Keep token. The student is already signed in.
Sign in
Use this when the student comes back. remember extends the session.
graphql
mutation Login($input: LoginInput!) {
auth {
login(input: $input) {
token
expiresAt
user {
id
email
}
}
}
}json
{
"input": {
"email": "ava@example.com",
"password": "correct-horse-battery",
"remember": true
}
}Update the profile
Matching uses this profile. Send enum values from references.dictionaries, not free text such as "California" or "senior".
graphql
mutation UpdateProfile($input: UpdateUserInput!) {
viewer {
updateUser(input: $input) {
success
user {
firstName
lastName
dateOfBirth
address {
state
zip
}
education {
schoolLevel
gpaOption
degree
degreeType
collegeGraduationYear
}
citizenship
careerGoal
}
errors {
code
field
message
}
}
}
}json
{
"input": {
"firstName": "Ava",
"lastName": "Nguyen",
"dateOfBirth": "2007-04-12T00:00:00.000Z",
"phone": "+14155550123",
"citizenship": "US_CITIZEN",
"careerGoal": "COMPUTERS_IT_TECHNOLOGY",
"address": {
"addressLine1": "1 Market St",
"city": "San Francisco",
"state": "CALIFORNIA",
"zip": "94105"
},
"education": {
"schoolLevel": "HIGH_SCHOOL_SENIOR",
"degree": "COMPUTER_INFORMATION_SCIENCES",
"degreeType": "BACHELORS",
"gpaOption": "3.8",
"collegeGraduationYear": 2031
}
}
}gpaOption is one of the GPA strings from references.dictionaries, including N/A.
Search
isEligible: true keeps the list to scholarships this profile can win. Add filters to narrow it. search matches the scholarship text. Paginate with after set to the previous pageInfo.endCursor.
graphql
query Matches(
$first: Int!
$after: String
$filters: ScholarshipFilters
) {
scholarships {
list(filters: $filters, pagination: { first: $first, after: $after }) {
totalCount
totalAmount
pageInfo {
hasNextPage
endCursor
}
nodes {
id
title
amount
deadline
isEasy
requirementSummary {
type
count
label
}
}
}
}
}json
{
"first": 20,
"filters": {
"isEligible": true,
"isActive": true,
"capBasedSortEnabled": true,
"search": "engineering",
"state": ["CALIFORNIA"],
"schoolLevel": ["HIGH_SCHOOL_SENIOR"],
"minAmount": 1000,
"isEasy": true
}
}Other filters on the same input include deadlineBefore, degree, fieldOfStudy, maxRequirements, and requirementTypes (INCLUDE or EXCLUDE). Saved and ignored lists are isSaved: true and isIgnored: true.
