Skip to main content

Induction

Inductions allow organisations to define safety, compliance, or procedural forms that users must complete. Each induction consists of a revision history of questions and an optional PDF attachment. Users are assigned inductions via user induction records, and their completed responses are stored as induction record objects.

Induction Object

FieldTypeDescription
idsnowflakethe induction's id
organisation_idsnowflakethe organisation's id
revision_idsnowflakethe current revision's id
revision_hashhashhash of the current revision
created_atISO8601 timestampwhen the induction was created
created_byuserwho created the induction (see Object or Id)
updated_atISO8601 timestampwhen the induction was last updated
updated_byuserwho last updated the induction (see Object or Id)

Induction Revision Object

FieldTypeDescription
idsnowflakethe revision's id
organisation_idsnowflakethe organisation's id
hashhashcryptographic hash of the revision content
induction_idsnowflakethe induction's id
namestringthe revision's name (max 200 characters)
revisionstringthe revision number or label (max 20 characters)
descriptionstringa description of the revision
valid_forintegernumber of seconds the induction is valid for
content_typestringMIME type of the attached PDF document
lengthintegersize in bytes of the attached PDF document
file_namestringoriginal file name of the attached PDF document
file_hashhashSHA-256 hash of the attached PDF document file
questionsarray<induction question>list of questions for this revision
updated_atISO8601 timestampwhen the revision was last updated
updated_byuserwho last updated the revision (see Object or Id)

Induction Question Object

FieldTypeDescription
idsnowflakethe question's id
hashhashcryptographic hash of the question content
induction_idsnowflakethe induction's id
questionstringthe question text
explanationstringan explanation or instruction for the question
typequestion typethe type of the question
enum_valuesarray<question enum value>list of enum values (for enum-type questions only)
answerinduction record answerthe answer to the question (only included when questions are returned with a record)
updated_atISO8601 timestampwhen the question was last updated
updated_byuserwho last updated the question (see Object or Id)

Question Type

ValueDescription
stringfree-text string input
numbernumeric input
booleantrue/false boolean input
enumenumeration selection from a fixed list of values
date_timedate and time input
datedate input
timetime input
timespantime span/duration input
systemsystem-generated value
useruser selection input
initialsuser initials input
signaturedigital signature input
imageimage upload input
filefile upload input

Question Enum Value Object

FieldTypeDescription
idsnowflakethe enum value's id
valuestringthe stored value for the enum value
induction_question_idsnowflakethe question's id this value belongs to
updated_atISO8601 timestampwhen the enum value was last updated
updated_byuserwho last updated the enum value (see Object or Id)

Induction Record Object

FieldTypeDescription
idsnowflakethe record's id
induction_idsnowflakethe induction's id
induction_hashhashhash of the induction revision this record is valid for
useruserthe user who completed the induction (see Object or Id)
emailstringthe user's e-mail at time of induction
first_namestringthe user's first name at time of induction
last_namestringthe user's last name at time of induction
positionstringthe user's position at time of induction
companystringthe user's company at time of induction
inducted_atISO8601 timestampwhen the induction was completed
expires_atISO8601 timestampwhen the induction record expires
questionsarray<induction question>list of questions answered in this record

Induction Record Answer Object

FieldTypeDescription
typequestion typethe type of the answer
enum_idsnowflakethe id of the selected enum value (for enum-type answers only)
valueobjectthe answer value

User Induction Object

FieldTypeDescription
idsnowflakethe user induction's id
induction_idsnowflakethe induction's id
induction_hashhashhash of the induction revision this assignment is for
useruserthe user assigned this induction (see Object or Id)
due_atISO8601 timestampwhen the induction is due to be completed
created_byuserwho assigned this induction (see Object or Id)
created_atISO8601 timestampwhen the induction was assigned
inductioninductionthe induction object
recordinduction recordthe completed induction record (if completed)

Get Induction

GET /inductions/{induction.id}

Returns the induction object for the given induction id. Requires membership in the organisation that owns the induction. If the caller has the MANAGE_INDUCTIONS permission for the organisation, the response will additionally include the full list of induction question objects embedded in the current induction revision.

Error Responses
Status CodeDescription
400The organisation was not found
403The user is not a member of the organisation
404The induction was not found

List Induction Revisions

GET /inductions/{induction.id}/revisions

Returns an array of induction revision objects for the given induction, ordered by updated_at ascending. Requires membership in the organisation that owns the induction.

Error Responses
Status CodeDescription
400The organisation was not found
403The user is not a member of the organisation
404The induction was not found

Get Induction Revision

GET /inductions/{induction.id}/revisions/{revision.hash}

Returns the induction revision object for the given induction and revision hash. Requires membership in the organisation that owns the induction. If the caller has the MANAGE_INDUCTIONS permission, the response will additionally include the full list of induction question objects for this revision.

Error Responses
Status CodeDescription
400The organisation was not found
403The user is not a member of the organisation
404The induction was not found
404The revision was not found

Update Induction

PATCH /inductions/{induction.id}

Updates an induction, creating a new induction revision. Requires the MANAGE_INDUCTIONS permission for the organisation.

This endpoint accepts either application/json or multipart/form-data content types.

Parameters
FieldTypeDescription
namestringthe induction form's name (max 200 characters)
revisionstringthe revision number or label (max 20 characters)
descriptionstringa description of the induction form
valid_forintegernumber of seconds the induction record is valid for
attachment?fileoptional PDF attachment (replaces the existing attachment if provided)
questions?array<update induction question>list of questions for this induction form

Update Induction Question

FieldTypeDescription
id?snowflakethe question's id (omit for new questions)
questionstringthe question text
explanationstringan explanation or instruction for the question
typequestion typethe type of the question (must be string, boolean, or enum)
answerstringthe answer or default value for the question
values?array<update enum value>list of enum values (required when type is enum)

Update Induction Enum Value

FieldTypeDescription
id?snowflakethe enum value's id (omit for new values)
valuestringthe enum value text
nonce?stringoptional nonce to reference this value as the answer
Notes
  • Questions can only be answered as a string, boolean, or enumeration (multiple choice).
  • For enum-type questions, the answer field can reference an enum value by its nonce (for new values) or by its id (for existing values).
  • The existing PDF attachment is retained unless a new attachment is provided.
  • Modifying an enum value's text creates a new enum value with a new id.
Error Responses
Status CodeDescription
400The organisation was not found
400Invalid question type (must be string, boolean, or enum)
400The enum value id does not belong to this question
403The user lacks the MANAGE_INDUCTIONS permission
404The induction was not found

Assign Induction to User

POST /inductions/{induction.id}/users/{user.id}

Assigns an induction to a user. Returns the user induction object. Requires the MANAGE_INDUCTIONS permission for the organisation, or the caller may assign the induction to themselves if they are a member of the organisation. If the user already has this induction assigned, returns the existing user induction without creating a duplicate.

JSON Params
FieldTypeDescription
due_at?integerunix timestamp when the induction is due to be completed
Error Responses
Status CodeDescription
400The organisation was not found
400The user is not a member of the organisation
403The user lacks the MANAGE_INDUCTIONS permission and is not assigning to themselves
404The induction was not found

Remove Induction from User

DELETE /inductions/{induction.id}/users/{user.id}

Removes an induction assignment from a user. Requires the MANAGE_INDUCTIONS permission for the organisation, or the caller may remove the induction from themselves if they are a member of the organisation. Returns 200 OK if the assignment was removed, or 200 OK if no assignment existed.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission and is not removing from themselves
404The induction was not found

Get User Induction

GET /inductions/{induction.id}/users/{user.id}

Returns the user induction object for the given induction and user. The response includes the most recent induction record if the user has completed this induction. Requires the MANAGE_INDUCTIONS permission for the organisation.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission
404The user induction was not found

List Induction Users

GET /inductions/{induction.id}/users

Returns an array of user induction objects for all users assigned to the induction. Each response includes the most recent induction record if the user has completed this induction. Requires the MANAGE_INDUCTIONS permission for the organisation.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission
404The induction was not found

List Induction Records

GET /inductions/{induction.id}/revisions/{revision.hash}/records

Returns an array of induction record objects for the given induction revision, ordered by inducted_at ascending. Requires the MANAGE_INDUCTIONS permission for the organisation.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission
404The induction was not found
404The revision was not found

Export Induction Records (CSV)

GET /inductions/{induction.id}/revisions/{revision.hash}/records/export-csv

Returns the induction records for the given revision as a CSV file. The response includes the following columns: first name, last name, position, company, inducted at, and expires at. Timestamps are formatted according to the caller's timezone. Requires the MANAGE_INDUCTIONS permission for the organisation.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission
404The induction was not found
404The revision was not found

Export Induction Records (XLSX)

GET /inductions/{induction.id}/revisions/{revision.hash}/records/export-xlsx

Returns the induction records for the given revision as an XLSX spreadsheet file. The response includes the following columns: first name, last name, position, company, inducted at, and expires at. Timestamps are formatted according to the caller's timezone. Requires the MANAGE_INDUCTIONS permission for the organisation.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission
404The induction was not found
404The revision was not found

Get Induction Attachment

GET /inductions/{induction.id}/attachments/{file.hash}

Returns the attached PDF file for the given induction revision. The response is streamed with the appropriate Content-Type header and a Content-Disposition header specifying the original file name.

Error Responses
Status CodeDescription
404The induction was not found
404The revision with the given file hash was not found

Get Induction Record

GET /induction-records/{induction-record.id}

Returns the induction record for the given record id, including the full list of induction question objects for the associated revision. Requires the MANAGE_INDUCTIONS permission for the organisation that owns the induction.

Error Responses
Status CodeDescription
400The organisation was not found
403The user lacks the MANAGE_INDUCTIONS permission
404The induction record was not found
404The revision was not found