Added

Batch upsert professors — create or update up to 1,000 professors in a single request

Create or update up to 1,000 professors in a single request You can now sync professor records in batches using POST /v3/professors/batch-upsert.

This endpoint replaces thousands of sequential requests with a single call, making large-scale imports faster and more reliable for ERP and SIS integrations.


Matching logic

This endpoint performs a batch upsert (create-or-update in one request):

Identifiers providedPathBehaviour
externalReferenceIdUpsertUpdate if found, create if not
professorIdStrict updateUpdate if found → PROFESSOR_NOT_FOUND if not. No create fallback.
NeitherCreatefirstName, lastName, email required
BothRejectedFails with AMBIGUOUS_PROFESSOR_IDENTIFIER

Each professor is processed independently, so one failure does not block the rest of the batch.

What’s new

  • Batch upsert: create or update up to 1,000 professors per request
  • Partial success support: failed records don’t block the rest
  • Deterministic behaviour: no implicit restoration or hidden side effects
  • Idempotent syncs using your own identifiers
  • No cross-record side effects: each professor is processed independently

What to expect

  • Returns 200 when all professors succeed
  • Returns 207 when some professors fail
  • Use inputIndex to map results to your original payload

Overview

Endpoint: POST /v3/professors/batch-upsert

Limits: minimum 1, maximum 1000 professors per request. The endpoint is rate-limited.

{
	"professors": [
  {
    "firstName": "Jean",
    "lastName": "Martin",
    "email": "[email protected]",
    "externalReferenceId": "your-external-reference-id-001",
    "externalReferenceType":  "external-system-source",
    "phone": "+33600000000",
    "speciality": "Mathematics",
    "tags": ["full-time"]
  },
  {
			"professorId": "gkia42e40c9s6i9",
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "phone": "+33600000000",
    "speciality": "Economics",
    "tags": ["full-time"]
  }
],
"options": {
  "onProfessorCreated": {
    "sendCredentials": false,
    "newPasswordNeeded": false
  }
}
}

Professor fields:

Defines the attributes used to create or update a professor record. Only provided fields are updated (partial update semantics).

FieldTypeDescription
externalReferenceIdstringYour unique identifier for the professor. Used as the create-or-update match key. Max 64 characters.
externalReferenceTypestringName of the source system or connector. Max 30 characters.
professorIdstringEdusign internal professor ID — alternative match key
firstNamestringRequired on create. Max 100 characters.
lastNamestringRequired on create. Max 100 characters.
emailstringRequired on create. Must be unique. Max 255 characters
phonestringAccepts null to clear. Max 20 characters
specialitystring (URL)Accepts null to clear. Max 255 characters
tagsstring[]Accepts null to clear. Max 15 tags, each max 35 characters

Options:

FieldDefaultDescription
onProfessorCreated.sendCredentialsfalseSends login credentials by email to newly created professors
onProfessorCreated.newPasswordNeededfalseRequires newly created professors to set a password on first login