Update an organization term
Partial update of term name, code, date range, and optional election or reassessment registration windows. When updating dates, the effective range (merged with existing values for omitted fields) must have termStart strictly before termEnd. 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.
PATCH
/organization-terms/{id}Path parameters
idstringrequiredRequest body
requiredapplication/jsonnamestringcodestringtermStartstring<date-time>Term 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>Term 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>electionEndstring<date-time>reassessmentRegistrationStartstring<date-time>reassessmentRegistrationEndstring<date-time>Responses
200Updated term
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
objectfieldstringmessagestring404Not Found
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 PATCH "https://fuxam.app/api/v4/organization-terms/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/string", {
method: "PATCH",
headers: {
"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.patch(
"https://fuxam.app/api/v4/organization-terms/string",
headers={
"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"
}
]
}