Kanorio

API 参考

Deliverables

Customer API: GET /deliverables, GET /deliverables/{deliverableId}, GET /deliverables/{deliverableId}/progress, …

本页只有英文版。API 参考、Webhook 事件和更新日志保持英文,与代码中的字段名称、错误码一致。
Base URL https://{site}/api/v1/customerErrorsPagination

Parameters

  • limitinteger · query

    Maximum number of items to return, 1-100. Defaults to 20.

  • cursorstring · query

    Opaque cursor from the previous page's nextCursor. Omit for the first page.

  • localestring · query

    Locale code (any letter case) or URL prefix of a live locale. Omitted: the customer's own locale (Contact.locale, set by their last checkout, sign-in or form submission), falling back to the site's primary locale. Titles and descriptions without a translation fall back to the primary locale.

Response 200

  • dataobject[]required
  • data[].resolvedLocalestring

    Multilingual sites only: the locale actually served (the requested locale when a translation exists, otherwise the primary locale).

  • data[].idstringrequired
  • data[].titlestringrequired
  • data[].descriptionstring | nullrequired
  • data[].structure"COURSE" | "DOWNLOAD"required
  • data[].coverAssetIdstring | nullrequired
  • data[].coverobject | null

    Cover image of the deliverable (null when unset or the image is in the trash).

  • data[].cover.urlstringrequired
  • data[].cover.widthinteger | nullrequired
  • data[].cover.heightinteger | nullrequired
  • data[].cover.altstring | nullrequired
  • data[].cover.placeholderstring | nullrequired

    16px WebP data URL

  • data[].grantedAtstringrequired
  • data[].expiresAtstring | nullrequired
  • data[].expiredbooleanrequired
  • data[].availableFromstring | nullrequired
  • data[].sourcesstring[]required
  • data[].unitCountintegerrequired
  • data[].progressobject | nullrequired
  • data[].progress.percentnumberrequired
  • data[].progress.completedbooleanrequired

    Completion snapshot: set the first time the completion rule is met and never reverts, even if units are added later.

  • data[].progress.completedAtstring | null
  • data[].progress.watchedSecondsinteger

    Wall-clock seconds of media playback across the deliverable (only on the deliverables list).

  • data[].progress.lastPlayedAtstring | null

    Latest media playback (only on the deliverables list).

  • hasMorebooleanrequired

    True when another page exists; pass nextCursor to fetch it.

  • nextCursorstring | nullrequired

    Cursor for the next page, or null on the last page.

Errors

  • INVALID_CURSOR 400
  • INVALID_LIMIT 400
curl -X GET "https://{site}/api/v1/customer/deliverables" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN"

Deliverable tree with per-unit access and progress

GET/deliverables/{deliverableId}
beta

Parameters

  • deliverableIdstring · pathrequired
  • localestring · query

    Locale code (any letter case) or URL prefix of a live locale. Omitted: the customer's own locale (Contact.locale, set by their last checkout, sign-in or form submission), falling back to the site's primary locale. Titles and descriptions without a translation fall back to the primary locale.

Response 200

  • deliverableobjectrequired
  • deliverable.resolvedLocalestring

    Multilingual sites only: the locale actually served (the requested locale when a translation exists, otherwise the primary locale).

  • deliverable.idstringrequired
  • deliverable.titlestringrequired
  • deliverable.descriptionstring | nullrequired
  • deliverable.structure"COURSE" | "DOWNLOAD"required
  • deliverable.coverAssetIdstring | nullrequired
  • deliverable.coverobject | null

    Cover image of the deliverable (null when unset or the image is in the trash).

  • deliverable.cover.urlstringrequired
  • deliverable.cover.widthinteger | nullrequired
  • deliverable.cover.heightinteger | nullrequired
  • deliverable.cover.altstring | nullrequired
  • deliverable.cover.placeholderstring | nullrequired

    16px WebP data URL

  • deliverable.authorsobject[]

    Authors/instructors in the owner's order (shared site author list). Older servers omit it.

  • deliverable.authors[].idstringrequired
  • deliverable.authors[].namestringrequired
  • deliverable.authors[].titlestring | nullrequired

    Job title or credential, e.g. Head Chef

  • deliverable.authors[].avatarstring | nullrequired

    Displayable image URL

  • deliverable.authors[].biostring | nullrequired
  • deliverable.authors[].urlstring | nullrequired
  • deliverable.settingsobjectrequired
  • deliverable.unitsobject[]required
  • deliverable.units[].idstringrequired
  • deliverable.units[].parentIdstring | nullrequired
  • deliverable.units[].orderintegerrequired
  • deliverable.units[].kindstringrequired
  • deliverable.units[].titlestring | nullrequired
  • deliverable.units[].descriptionstring | nullrequired
  • deliverable.units[].isPreviewbooleanrequired
  • deliverable.units[].allowDownloadbooleanrequired
  • deliverable.units[].countsTowardCompletionboolean

    false = bonus unit: not counted in percent/completion and never locked by the require-in-order rule.

  • deliverable.units[].isPrerequisiteboolean

    Units after this one stay locked until it is completed.

  • deliverable.units[].hasFilebooleanrequired
  • deliverable.units[].embedobject | nullrequired
  • deliverable.units[].bodyanyrequired
  • deliverable.units[].durationnumber | nullrequired
  • deliverable.units[].pageCountinteger | nullrequired
  • deliverable.units[].mimeTypestring | nullrequired
  • deliverable.units[].accessobjectrequired
  • deliverable.units[].progress"not_started" | "in-progress" | "completed"required
  • deliverable.units[].positionSecondsnumberrequired

    Furthest position reached (seconds); drives progress

  • deliverable.units[].lastPositionnumber

    Where the learner last stopped (seconds); resume from here. Absent on older servers.

  • deliverable.units[].coveredPercentinteger | null

    Share of the media actually watched (union of played ranges), 0-100; null when there is no duration or nothing watched yet

  • deliverable.units[].quizobject | null
  • deliverable.progressobject | nullrequired
  • deliverable.progress.percentnumberrequired
  • deliverable.progress.completedbooleanrequired

    Completion snapshot: set the first time the completion rule is met and never reverts, even if units are added later.

  • deliverable.progress.completedAtstring | null
  • deliverable.progress.watchedSecondsinteger

    Wall-clock seconds of media playback across the deliverable (only on the deliverables list).

  • deliverable.progress.lastPlayedAtstring | null

    Latest media playback (only on the deliverables list).

  • deliverable.certificateobject | null
  • deliverable.certificate.enabledbooleanrequired
  • deliverable.certificate.serialstring | nullrequired
  • deliverable.certificate.issuedAtstring | nullrequired

Errors

  • DELIVERABLE_NOT_FOUND 404
curl -X GET "https://{site}/api/v1/customer/deliverables/{deliverableId}" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN"

Progress summary for a deliverable

GET/deliverables/{deliverableId}/progress
beta

Parameters

  • deliverableIdstring · pathrequired

Response 200

  • unitsobjectrequired
  • positionsobjectrequired
  • percentnumberrequired
  • completedbooleanrequired
  • completedAtstring | null

Errors

  • DELIVERABLE_NOT_FOUND 404
curl -X GET "https://{site}/api/v1/customer/deliverables/{deliverableId}/progress" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN"

Parameters

  • deliverableIdstring · pathrequired

Response 200

  • certificateobjectrequired
  • certificate.serialstringrequired
  • certificate.issuedAtstringrequired
  • certificate.urlstringrequired

    Signed PDF URL, valid for expiresIn seconds

  • certificate.expiresInintegerrequired

Errors

  • DELIVERABLE_NOT_FOUND 404
  • CERTIFICATE_DISABLED 404
  • SIGN_FAILED 503
  • FORBIDDEN 403
curl -X GET "https://{site}/api/v1/customer/deliverables/{deliverableId}/certificate" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN"