Create an organization term
Creates an organization term (semester/period) with start and end dates. termStart must be strictly before termEnd. Optionally set election and reassessment registration windows. Returns 422 when start and end are the same instant (… must not be the same) or when start is after end (… must be before …). Scoped to your integration’s institution via Basic Auth credentials.
POST
/organization-termsHeader parameters
Idempotency-KeystringrequiredRequest body
requiredapplication/jsonnamestringrequiredmin length 1
codestringOptional term code. Whitespace-only values are stored as null.
termStartstring<date-time>requiredTerm start date. Must include a timezone offset (`Z` or `±HH:MM`); values without offset return 422. Must be strictly before `termEnd`. If equal to `termEnd`, the API returns `422` with field error `termStart and termEnd must not be the same`.
termEndstring<date-time>requiredTerm end date. Must include a timezone offset (`Z` or `±HH:MM`); values without offset return 422. Must be strictly after `termStart`. If equal to `termStart`, the API returns `422` with field error `termStart and termEnd must not be the same`.
electionStartstring<date-time>Must include a timezone offset (`Z` or `±HH:MM`).
electionEndstring<date-time>Must include a timezone offset (`Z` or `±HH:MM`).
reassessmentRegistrationStartstring<date-time>Must include a timezone offset (`Z` or `±HH:MM`).
reassessmentRegistrationEndstring<date-time>Must include a timezone offset (`Z` or `±HH:MM`).
Responses
201Term created
dataOrganizationTermrequiredAcademic term (semester) with optional module election and reassessment registration windows.
Show propertiesHide properties
idstringrequirednamestringrequiredtermEndstring<date-time>requiredEnd of the academic term.
institutionIdstringrequiredtermStartstring<date-time>requiredStart of the academic term.
codestring | nullelectionEndstring<date-time> | nullDeadline for module elections for this term.
electionStartstring<date-time> | nullWhen students may begin electing modules for this term.
reassessmentRegistrationEndstring<date-time> | nullWhen reassessment registration closes.
reassessmentRegistrationStartstring<date-time> | nullWhen reassessment registration opens.
metaResponseMetarequiredShow propertiesHide properties
requestIdstringrequiredtimestampstring<date-time>requiredversionstringrequiredAllowed:
v4400Bad Request
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring401Unauthorized
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring409Conflict
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring422Unprocessable Entity — validation or business rule error
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring429Too Many Requests
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring500Internal Server Error
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestringRequest
curl -X POST "https://fuxam.app/api/v4/organization-terms" \
-H "Idempotency-Key: string" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"code": "string",
"termStart": "2024-01-01T00:00:00Z",
"termEnd": "2024-01-01T00:00:00Z",
"electionStart": "2024-01-01T00:00:00Z",
"electionEnd": "2024-01-01T00:00:00Z",
"reassessmentRegistrationStart": "2024-01-01T00:00:00Z",
"reassessmentRegistrationEnd": "2024-01-01T00:00:00Z"
}'const response = await fetch("https://fuxam.app/api/v4/organization-terms", {
method: "POST",
headers: {
"Idempotency-Key": "string",
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "string",
"code": "string",
"termStart": "2024-01-01T00:00:00Z",
"termEnd": "2024-01-01T00:00:00Z",
"electionStart": "2024-01-01T00:00:00Z",
"electionEnd": "2024-01-01T00:00:00Z",
"reassessmentRegistrationStart": "2024-01-01T00:00:00Z",
"reassessmentRegistrationEnd": "2024-01-01T00:00:00Z"
})
});import requests
response = requests.post(
"https://fuxam.app/api/v4/organization-terms",
headers={
"Idempotency-Key": "string",
"Content-Type": "application/json"
},
json={
"name": "string",
"code": "string",
"termStart": "2024-01-01T00:00:00Z",
"termEnd": "2024-01-01T00:00:00Z",
"electionStart": "2024-01-01T00:00:00Z",
"electionEnd": "2024-01-01T00:00:00Z",
"reassessmentRegistrationStart": "2024-01-01T00:00:00Z",
"reassessmentRegistrationEnd": "2024-01-01T00:00:00Z"
},
)Response
{
"data": {
"id": "ot_001",
"name": "WS 2024/25",
"termEnd": "2025-03-31T23:59:59.000Z",
"institutionId": "inst_123",
"termStart": "2024-10-01T00:00:00.000Z",
"code": "WS24",
"electionEnd": null,
"electionStart": null,
"reassessmentRegistrationEnd": null,
"reassessmentRegistrationStart": null
},
"meta": {
"requestId": "req_1234567890_abc",
"timestamp": "2026-06-02T07:00:00.000Z",
"version": "v4"
}
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}