Saltar al contenido
Esc
↑↓navegar↵abrir⌘Jvista previa

Create a curriculum

Creates a curriculum with an initial version. Returns the created curriculum with versions[]. Optionally attach modules via moduleIds. Connect curricula to a study program with curriculaIds on POST /study-programs (or PATCH). Use GET /curricula/{id} for full structure. Scoped to your integration’s institution via Basic Auth credentials.

POST/curricula
Authorization
AuthorizationBasic auth · headerrequired

Basic Auth with clientId as username and clientSecret as password

Header parameters
Idempotency-Keystringrequired
Request body
requiredapplication/json
namestringrequired
codestring
initialVersionNamestring
moduleIdsstring[]

Optional module IDs to attach to the initial version.

Responses
201

Curriculum created

dataCurriculaCreateResultrequired

Curriculum returned by POST /curricula: created curriculum with its initial version. Use GET /curricula/{id} for full structure and module items.

Show properties
versionsCurriculaVersion[]required
Show properties
Array of CurriculaVersion
idstringrequired
versionstringrequired
namestringrequired
curriculaIdstringrequired
isDefaultbooleanrequired
isCohortVersionbooleanrequired
sourceCohortIdstring | null
electionModestring | null

When students may elect modules. Null when election is not configured.

Allowed:ELECT_WHENEVERELECT_BEFORE_TERMELECT_AFTER_TERM
electionStartWeeksinteger | null

Weeks before term when election opens.

electionEndWeeksinteger | null

Weeks before term when election closes.

createdAtstring<date-time>required
updatedAtstring<date-time>required
studyProgramConnectedCurriculaobject[]
idstringrequired
namestringrequired
institutionIdstringrequired
createdAtstring<date-time>required
updatedAtstring<date-time>required
isCohortSpecificbooleanrequired
isArchivedboolean | null
codestring | null
metaResponseMetarequired
Show properties
requestIdstringrequired
timestampstring<date-time>required
versionstringrequired
Allowed:v4
watermarkstring<date-time>

Present on GET /users?updatedSince= pages. Taken at the first page minus a 60s overlap. Bound into pagination.next_cursor. Use it as the next updatedSince after deduping by user id. Delivery is inclusive >= and at-least-once.

400

Bad Request

typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
existingUserIdstring

Present on 409 email or membership-code conflicts. The user id that already holds the email or code.

activeSessionobject

Present on time-tracking start 409 when a session is already running. Stop this session, then retry start.

Show properties
idstringrequired
startTimestring<date-time>required
conflictingLogobject

Present on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.

Show properties
idstringrequired
startTimestring<date-time>required
endTimestring<date-time> | nullrequired
401

Unauthorized

typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
existingUserIdstring

Present on 409 email or membership-code conflicts. The user id that already holds the email or code.

activeSessionobject

Present on time-tracking start 409 when a session is already running. Stop this session, then retry start.

Show properties
idstringrequired
startTimestring<date-time>required
conflictingLogobject

Present on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.

Show properties
idstringrequired
startTimestring<date-time>required
endTimestring<date-time> | nullrequired
409

Conflict — duplicate email or membership code (body includes existingUserId when known), a time-tracking session that is already running (activeSession), a time-tracking interval that overlaps an existing log (conflictingLog), idempotency key reused with a different body (idempotency_key_reused), or concurrent request with the same key still in progress (idempotency_key_in_progress)

typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
existingUserIdstring

Present on 409 email or membership-code conflicts. The user id that already holds the email or code.

activeSessionobject

Present on time-tracking start 409 when a session is already running. Stop this session, then retry start.

Show properties
idstringrequired
startTimestring<date-time>required
conflictingLogobject

Present on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.

Show properties
idstringrequired
startTimestring<date-time>required
endTimestring<date-time> | nullrequired
429

Too Many Requests — 1000 requests per minute per institution. Includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (ISO-8601), and Retry-After (seconds).

typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
existingUserIdstring

Present on 409 email or membership-code conflicts. The user id that already holds the email or code.

activeSessionobject

Present on time-tracking start 409 when a session is already running. Stop this session, then retry start.

Show properties
idstringrequired
startTimestring<date-time>required
conflictingLogobject

Present on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.

Show properties
idstringrequired
startTimestring<date-time>required
endTimestring<date-time> | nullrequired
500

Internal Server Error

typestringrequired
Allowed:error
codestringrequired
Allowed:bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedidempotency_key_in_progressservice_unavailableretryablerate_limit_exceededinternal_error
titlestringrequired
statusintegerrequired
detailstringrequired
instancestring
errorsobject[]
Show properties
Array of object
fieldstring
messagestring
existingUserIdstring

Present on 409 email or membership-code conflicts. The user id that already holds the email or code.

activeSessionobject

Present on time-tracking start 409 when a session is already running. Stop this session, then retry start.

Show properties
idstringrequired
startTimestring<date-time>required
conflictingLogobject

Present on time-tracking 409 when the interval being written overlaps an existing log or open session. Start uses [punch, ∞). Stop uses [sessionStart, stop). endTime is null while that session is still open.

Show properties
idstringrequired
startTimestring<date-time>required
endTimestring<date-time> | nullrequired
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X POST 'https://fuxam.app/api/v4/curricula' \
  -H 'Authorization: Basic YOUR_CREDENTIALS' \
  -H 'Idempotency-Key: string' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "code": "string",
  "initialVersionName": "string",
  "moduleIds": [
    "string"
  ]
}'
Response
{
  "data": {
    "id": "cur_001",
    "name": "Bachelor CS 2024",
    "institutionId": "inst_123",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-06-01T00:00:00.000Z",
    "isCohortSpecific": false,
    "isArchived": false,
    "code": "CS-2024",
    "versions": [
      {
        "id": "cv_001",
        "version": "1.0",
        "name": "Default",
        "createdAt": "2026-01-01T00:00:00.000Z",
        "updatedAt": "2026-06-01T00:00:00.000Z",
        "curriculaId": "cur_001",
        "electionEndWeeks": null,
        "electionMode": null,
        "electionStartWeeks": null,
        "isCohortVersion": false,
        "sourceCohortId": null
      }
    ],
    "studyProgramConnectedCurricula": []
  },
  "meta": {
    "requestId": "req_abc123",
    "timestamp": "2026-06-26T00:00:00.000Z",
    "version": "v4"
  }
}

¿Te ha resultado útil esta página?