Specifications‎ > ‎

Proposed extension: Attendance

. liss.getAttendance()

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.

Call:

liss.getAttendance(auth : authenticationObject, date1 : timestamp, date2 : timestamp)

Parameters:

auth : See section 3.3

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


Returns:

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

 Field  Type  Notes  Example
StudentId  string (mandatory) A short identifier which uniquely identifies a student.
4614147
 Activity string (it's mandatory to have either this or 'Type')  This 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.)
9MATB,20161130,2
 Type string (mandatory to have either this or 'Activity')  This 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'.
W
 Status  string (mandatory) A 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.
P
 MinutesLate  integer (optional) Applies 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.
5
 MinutesLeftEarly  integer (optional) Applies to period-by-period attendance.  Represents the number of minutes the student left the lesson early. See above. 15
 ReasonCode  string (optional)  A 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.
L
 Category string (mandatory if Status is neither 'P' nor 'p', except with 'AsAbove')  Closely related to 'ReasonCode', see the explanation above.  The 4 allowed values are:

"unexplained"
"approved"
"unapproved"
"schoolbiz"

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".
schoolbiz
 ReasonText  string (optional)  A free-text explanation of the absence. Julie had stomach pains this morning.
 AsAbove  boolean (optional) This 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. 1  (or 'true' in the case of JSON)



 liss.publishAttendance()

This call will bulk publish period-by-period attendance data from the SIS, i.e. it's the reverse of 'liss.getAttendance()'

Call:

liss.publishAttendance(auth : authenticationObject, date1 : timestamp, date2 : timestamp, data : array of structs)

Parameters:

auth : See section 3.3

data : see liss.getAttendance()

The timestamp parameters should be interpreted as dates, not date-time's, so it is not possible to publish portions of a day, only whole days.

Returns: A string.  An empty string means success, otherwise it’s an error message. 

Semantics: This collection should replace the existing collection of attendance data for the specified date-range.