Skip to main content

CrewSheetBlock

The state of one user's sheet of a single entry type, for the period that contains the requested sheet_date.

A block is present for an entry type only when all of the following are true: the type is enabled on the Crew Entry screen, you hold that type's keeper ability, you share a group with the user that carries the role granting it, and the type was not excluded by the sheet_types parameter.

A block describes a period, not necessarily a saved sheet. When the user has no sheet for the period, the block is still returned but the sheet-specific fields (id_sheet, status_int, status_str, pname, dates) are all absent. Test for id_sheet to tell the two apart. If the sheet_state filter is in use, a block is only returned when its own state is one of the requested states, so a user can appear with fewer blocks than you asked for.

Undocumented fields

A block also carries a few fields that exist to drive the Journyx web interface, such as display classes and a link into a server-rendered screen. They are deliberately left out of this reference, are not part of the supported interface, and may change or disappear in any release. Build against the fields documented below.

id_sheetstring

The internal ID of the user's sheet. Absent when the user has no sheet for this period yet. Pass this to the Submit crew sheets endpoint.

Example: 6C5469825DAE4ABF9654B7A567141CD8
sheettypestring

The entry type this block describes. Note that the third type is called custom here (it is the Custom Entry / mileage type); elsewhere in the API and in the product's history it is sometimes called mileage.

Possible values: [time, expense, custom]

Example: time
sheettype_labelstring

The administrator-configurable display label for this entry type, for example Time. Site labels are renameable, so do not test against this value; use sheettype instead.

Example: Time
status_intinteger

The sheet's state as a number: 0 open, 1 submitted, 2 approved, 3 rejected. Absent when no sheet exists for the period.

This is the field to test in code. The sheet_state filter uses the equivalent names (open, submitted, approved, rejected), plus no_sheet for a period with no sheet, which has no numeric form.

Possible values: [0, 1, 2, 3]

Example: 0
status_strstring

A human-readable label for the sheet's state, suitable for display. Absent when no sheet exists for the period. Do not test against this value; use status_int.

Example: Open for Entry
pnamestring

The sheet's name, which for a period sheet is normally its date range. Absent when no sheet exists for the period.

Example: 03/09/2025 - 03/15/2025
datesstring

The sheet's date range as displayed, in the signed-in user's date format. Absent when no sheet exists for the period.

Example: 03/09/2025 - 03/15/2025
reject_reasonstring

Why an approver rejected the sheet. Present only when status_int is 3 (rejected).

Example: Please split the Friday hours across the two tasks.
user_namestring

The full name of the user who owns the sheet. This repeats id_user_properties.fullname on the enclosing row, and exists so that a submit request echoed back from a block can be labeled in an error message.

Example: Alice Dev
CrewSheetBlock
{
"id_sheet": "6C5469825DAE4ABF9654B7A567141CD8",
"sheettype": "time",
"sheettype_label": "Time",
"status_int": 0,
"status_str": "Open for Entry",
"pname": "03/09/2025 - 03/15/2025",
"dates": "03/09/2025 - 03/15/2025",
"reject_reason": "Please split the Friday hours across the two tasks.",
"user_name": "Alice Dev"
}