Skip to main content

Proposed extension: Attendance

Get attendance

This call will bulk retrieve period-by-period attendance data from the SIS. This call is typically more voluminous than any other LISS call and therefore implementors should consider using LISS-over-JSON instead of LISS-over-XmlRpc.


liss.getAttendance(auth, date1, date2)


auth: See authentication

date1: timestamp. The timestamp parameters should be interpreted as dates, not date-time's, so you cannot query portions of a day, only whole days.

date2: timestamp.


An array of struct’s. Each struct is defined as follows:

StudentIdstring mandatoryA short identifier which uniquely identifies a student.
Activitystring mandatory to have either this or typeThis field is used if the publisher is implementing period-by-period attendance.

An alphanumeric identifier which uniquely identifies a particular lesson, e.g. a particular instance of a class or an excursion. This identifier should be in a particular format: 3 elements, separated by commas: <classCode>,<date>,<period>. There should be no spaces unless the class-code contains a space. In the unlikely event that the classCode contains a comma, the identifier should be broken up from right to left since the latter 2 elements cannot contain commas. These 3 components will match the corresponding fields in liss.publishDailyData().

(The reason this call uses this 3-part string instead of 3 separate fields is to reduce bandwidth with XmlRpc implementations, noting that period-by-period data is voluminous and XmlRpc is very inefficient.)
Typestring mandatory to have either this or ActivityThis field is used instead of 'Activity' if the publisher is not implementing period-by-period attendance.
Values are:
AM meaning morning,
PM meaning afternoon, or
W meaning 'whole day'.
Statusstring mandatoryA single character string or empty string. There are 5 allowed values:
P = confirmed present
A = confirmed absent
p (lowercase) = presumed present, e.g. because they were present in the morning roll-call period
a (lowercase) = presumed absent, e.g. because there has been advance notification of a planned absence
empty string = not known and don't want to guess.
MinutesLateinteger optionalApplies to period-by-period attendance. Represents the number of minutes the student was late to this lesson. Only applicable with 'status=P'. If this field is missing, we understand the student to have arrived on time. LISS does not support multiple absence time-ranges within the one activity.
MinutesLeftEarlyinteger optionalApplies to period-by-period attendance. Represents the number of minutes the student left the lesson early. See above.
ReasonCodestring optionalA short code representing the reason for the absence, if known. This field will be omitted or blank if the reason is unknown. This field is closely related to 'Category': 'ReasonCode' represents a detailed breakdown of absence reasons, in a way that can be customised by any system or even any school, whereas 'Category' has a small and fixed set of standardised values. To make sense of the ReasonCode's i.e. the detailed breakdown, the two systems will need to directly negotiate some system or standards.
Categorystring mandatory if Status is neither 'P' nor 'p', except with 'AsAbove'Closely related to 'ReasonCode', see the explanation above. The 4 allowed values are:

The first 3 should be counted for statistical purposes. The last one, "schoolbiz", is to be used for things like TAFE or 1-on-1 interviews or when the attendance system is being used (abused) to register excursions. For the sake of reports, "schoolbiz" is to be regarded as "present".
ReasonTextstring optionalA free-text explanation of the absence.
AsAboveboolean optionalThis field is used to compress the data being sent. If true (i.e. '1' in XmlRpc) then we will associate this row with the 'reasonCode' and 'reasonText' and 'Category' fields of the previous row in the array. This field should only be used with period-by-period attendance, i.e. if each row contains the 'Activity' field instead of the 'Type' field. If half-day/full-day attendance is used then every record should have the full set of fields.