---
# System prepended metadata

title: Edcess Tutor Registration API

---


# Edcess Tutor Registration API

API for receiving request from tutors through the wordpress website. Form submission will comprise of two main steps:
1. Form data is submitted to an endpoint to create an application. If successful, the endpoint will return an `applicationId`
2. Upload the file for the given `applicationId`



## Base URL

To be added

## Authentication

> To authorize, use this code:

```shell
# With shell, you can just pass the correct header with each request
curl "<base_url>/api"
  -H "Authorization: api-key"
```


> Make sure to replace `api-key` with your API key.

We use an `api-key` to authenticate users. Please contact edison@edcess.io for a key.

`Authorization: meowmeowmeow`

<aside class="notice">
You must replace <code>api-key</code> with your personal API key.
</aside>

## Tutor Registration

### Send Tutor Details Data (Private Tutor)

This endpoint should be called from the web page that collects tutor registration details.


Endpoint:

```
POST    /web/v1/tutors/private
```

```bash
curl --location --request POST 'http://localhost:5001/edcess-9cc0f/asia-east2/web/tutors' \
--header 'Authorization: Bearer some_api_key' \
--header 'Content-Type: application/json' \
--data-raw '{
    "firstName" : "John",
	"lastName" : "Doeee",
    "gender" : "m",
    "prefix" : "mr",
    "citizenship" : "singaporean",
    "dateOfBirth" : "2020-09-01",
    "contactNumber" : "88888888",
    "postalCode" : "123456",
    "locationPreferences" : ["south", "north"],
    "availability" : ["mon_12-15"],
    "subjects" : ["english"],
    "teachingPreferences" : "online",
    "race" : "chinese",
    "minRate" : 30,
    "commitmentPeriodMonths" : 3,
    "commencementDate" : "2020-09-15",
    // cont..
}'
```

> The above command takes in a JSON request, structured like this: 

```json
{
	"firstName" : "John",
	"lastName" : "Doeee",
    "gender" : "m",
    "prefix" : "mr",
    "citizenship" : "singaporean",
    "dateOfBirth" : "2020-09-01",
    "contactNumber" : "88888888",
    "postalCode" : "123456",
    "locationPreferences" : ["south", "north"],
    "availability" : ["mon_12-15"],
    "race" : "chinese",
    "teachingPreferences" : [
        {
            "studentLevel" : "sec_3",
            "studentStream" : "express",
            "subject": "mathematics",
            "minRatePerHr" : 30,
            "commencementDate" : "2020-09-15",
            "commitmentPeriod" : 3
        },
        {
            "studentLevel" : "sec_4",
            "studentStream" : "express",
            "subject": "mathematics",
            "minRatePerHr" : 30,
            "commencementDate" : "2020-09-15",
            "commitmentPeriod" : 3
        }
    ]
    //cont....
}
```

> The above command returns JSON structured like this:

```json
{
  "applicationId" : "6asd81ec71nc"
}
```

`applicationId` is the identifier of the application. This will be required in the next step.




### Query Parameters

Parameter | Type | Description
--------- | ------- | -----------
`prefix` | `string` | Prefix for the tutor. Can be either `mr`, `ms`, `mrs` or `dr`
`firstName` | `string` | First name of the user
`lastName` | `string` | Last name of the user
`email` | `string` | Email address
`contactNumber` | `string` | 8-digit contact number
`postalCode` | `string` | 6-digit postal code
`gender` | `string` | Gender (either `m` or `f` )
`citizenship` | `string` | Either `singaporean` (Singapore Citizen), `pr` (Permanent Resident) or `foreigner` (Foreigner)
`race` | `string` | One of the following values: `chinese`, `malay`, `indian`, `eurasian`, `others`
`dateOfBirth` | `string` | DOB in the following format DD-MMM-YYYY (e.g. 25-DEC-1990)
`fromTuitionCentre` | `boolean` | True if from tuition centre, false if otherwise
`tuitionCentreName` | `string` | Name of tuition centre (Applicable if `fromTuitionCentre` is true). Otherwise, add NA.
`isStudying` | `boolean` | true if applicant is still studying.
`highestEducationObtained` | `string` | Highest education obtained (e.g. Bachelors)
`institutionName` | `string` | Name of institution | 
`yearGraduated` | `string` | Year graduated in YYYY format
`currentPursuedEducationLevel` | `string` | Current pursued qualification
`currentInstitutionName` | `string` | Current institution name (Only applicable for current student)
`currentExpectedCompletion` | `string` | Current expected completion
`currentQualificationDetails` | `string` | Current qualification details
`tutorExperience` | `string` | Tutor's experience
`teachingInstitutionName` | `string` | Name of institution taught at
`teachingPeriod` | `string` | Teaching period (e.g. 2001-2005)
`profileDescription` | `string` | Profile description
`student_levels` | `List(String)` | List of levels (see [spreadsheet](https://docs.google.com/spreadsheets/d/1CcqBwpIbgXWdd6pq2-VdBM7vTPsPb5te62I_hLMnyd4/edit?usp=sharing) for allowed values and mapping)
`preferredSteams` | `List(String)` | List of supported streams
`subjects` | `List(String)` | List of subjects (see [spreadsheet](https://docs.google.com/spreadsheets/d/1CcqBwpIbgXWdd6pq2-VdBM7vTPsPb5te62I_hLMnyd4/edit?usp=sharing) for allowed values and mapping)
`commencementDate` | `string` | Date in `YYYY-MM-DD` format. 
`commitmentPeriodMonths` | `number` | Commimtment period in months
`minRate` | `number` | Minimum hourly rate for tuition in SGD
`availability` | `List(String)` | Available timeslots in a day. Values allowed corresponds to the following pattern - `dayofweek<underscore>startTime<hyphen>endHour` (e.g. Monday 12 - 3 pm = `mon_12-15`)
`locationPreferences` | `List(String)` | List of locations `north`, `north_west`, `west`, `central`, `north_east`, `east`, `south` or `no_preference`
`additional_information` | `string` | Information about additional information that the tutor may have
| `preferredPaymentMethod` | `string` | Either `paynow` or `bankAccount` |
| `paynowDetails` | `string` | Details if user enters paynow as an option. This could be phone number or UEN (Only applicable if `preferredPaymentMethod` is PayNow)
| `bankAccount` | `string` | Bank account number (Only applicable if `preferredPaymentMethod` is Bank Transfer)
| `nameOfBank` | `string` | Name of bank (Only applicable if `preferredPaymentMethod` is Bank Transfer)


If there is an error, server will respond with a 400 HTTP Status Code, with details on what error is found:

```json

{
    "message": "Validation Error",
    "details": [
        {
            "message": "\"postalCode\" is required"
        }
    ]
}

```



### Send Tutor Details Data (Tuition Centre)

This endpoint should be called from the web page that collects tutor registration details.

Endpoint:

```
POST    /web/v1/tutors/tuitionCentre
```

```bash
curl --location --request POST 'http://localhost:5001/edcess-9cc0f/asia-east2/web/tutors' \
--header 'Authorization: Bearer some_api_key' \
--header 'Content-Type: application/json' \
--data-raw '{ 
    // similar to above
}'
```

> The above command returns JSON structured like this:

```json
{
  "applicationId" : "6asd81ec71nc"
}
```

`applicationId` is the identifier of the application. This will be required in the next step.




### Query Parameters

Parameter | Type | Description
--------- | ------- | -----------
`name` | `string` | Name of tuition centre
| `moeRegistered` | `boolean` | True if MOE-registed, false otherwise
`contactNumber` | `string` | 8-digit contact number
`email` | `string` | Email address of tuition centre
`address` | `string` | Address of tuition centre
`block` | `string`  | Block number
`unitNo` | `string` | Unit number
`postalCode` | `string` | 6-digit postal code
`description` | `string` | Description of tuition centre (limited to 300 words)
| `preferredPaymentMethod` | `string` | Either `paynow` or `bankAccount` |
| `paynowDetails` | `string` | Details if user enters paynow as an option. This could be phone number or UEN (Only applicable if `preferredPaymentMethod` is PayNow)
| `bankAccount` | `string` | Bank account number (Only applicable if `preferredPaymentMethod` is Bank Transfer)
| `nameOfBank` | `string` | Name of bank (Only applicable if `preferredPaymentMethod` is Bank Transfer)

### File Upload

After submitting the application, you should now have the `applicationId`. This endpoint allows you to upload the files to our server.

```
POST       /fileUpload?:applicationId
```

The applicationId is required as a request query parameter. The endpoint will validate if the application has been created. If it has not been created, it will throw a 404 NOT FOUND error.

Files will be received through a multipart form-data request on a field called `files`. File submission is limited to 10MB.


Example request
```
curl --location --request POST 'http://api.edcess.io/asia-east2/fileUpload?applicationId=SOME_APPLICATION_ID' \
--header 'Authorization: Bearer some_secret_key' \
--form 'files=path_to_pic1.png' \
--form 'files=path_to_pic2.png' \
--form 'files=path_to_pic3.png'
```

### Response

If successful, it will return a 200 success code.
