# Systems Interoperability Framework™
SIF Implementation Specification (Australia) 1.1

## December 23, 2010

This version:
  http://specification.sifassociation.org/Implementation/AU/1.1/
Previous version:
  http://specification.sifassociation.org/Implementation/AU/1.0/
Latest version:
  http://specification.sifassociation.org/Implementation/AU/
Schemas
  SIF_Message (single file, non-annotated) (ZIP archive)
  SIF_Message (single file, annotated) (ZIP archive)
  SIF_Message (includes, non-annotated) (ZIP archive)
  SIF_Message (includes, annotated) (ZIP archive)
  DataModel (single file, non-annotated) (ZIP archive)
  DataModel (single file, annotated) (ZIP archive)
  DataModel (includes, non-annotated) (ZIP archive)
  DataModel (includes, annotated) (ZIP archive)
  Note: SIF_Message schemas define every data object element as optional per SIF's Publish/Subscribe and SIF Request/Response Models; DataModel schemas maintain the cardinality of all data object elements.

Please refer to the errata for this document, which may include some normative corrections.

This document is also available in these non-normative formats: ZIP archive, PDF (for printing as a single file), Excel spreadsheet.

Copyright ©2010 Systems Interoperability Framework (SIF™) Association. All Rights Reserved.

# 1 Preamble

## 1.1 Abstract

### 1.1.1 What is SIF?

The Schools Interoperability Framework (SIF) is not a product, but a technical blueprint for enabling diverse applications to interact and share data related to entities in the pK-12 instructional and administrative environment. SIF is designed to:

- Facilitate data sharing and reporting between applications without incurring expensive customer development costs;
- Enhance product functionality efficiently; and
- Provide best-of-breed solutions to customers easily and seamlessly.

The SIF Implementation Specification defines:

- an XML-based messaging framework that allows diverse software applications to interoperate and share and report data related to entities in the pK-12 instructional and administrative environment;
- an HTTP(S)-based transport for conveying these SIF messages;
- an abstract, platform-independent definition of a message queue for reliable delivery of asynchronous SIF messages and related synchronous administrative functions—the Zone Integration Server (ZIS); and
- an abstract, platform-independent definition of the interface between a software application and the ZIS—the SIF Agent.

These are known collectively as the SIF Infrastructure. The SIF Implementation Specification also defines the SIF Data Model:

- an XML-based data model that models entities in the pK-12 environment as SIF Data Objects to be shared between applications.

A SIF Zone is a distributed system that consists of a ZIS and one or more software applications with a SIF Agent (a SIF-enabled application) sharing/reporting one or more SIF data objects over a network. A SIF Implementation consists of one or more SIF Zones deployed and configured to meet customer data sharing and reporting needs.

The SIF Implementation Specification defines architecture requirements and communication protocols for software components and the interfaces between them; it makes no assumption of specific hardware or software products needed to develop SIF-enabled applications and Zone Integration Server implementations, other than their ability to support technologies leveraged as the foundation for SIF, most prominently XML and HTTP(S).

#### 1.1.1.1 What is SIF (AU)?

SIF Implementation Specification (Australia) defines a set of data objects supporting the Australia's interoperability requirements for the education sector and combines this data model with established infrastructure protocols from the SIF Implementation Specification [SIF]. SIF Implementation Specification (Australia) 1.1 leverages the SIF architecture and redefines the SIF infrastructure from SIF Implementation Specification 2.4 [SIF 2.4] to support its data objects, with an Australia-specific namespace and the data objects defined in this specification. Until such time as the SIF infrastructure is defined separately from its data objects, technical readers should note that the version number internal to SIF XML messages may differ from the version number of the corresponding specification. This is the case for SIF Implementation Specification (Australia) 1.1, which uses version `2.4` from SIF Implementation Specification 2.4, upon which it is based.

### 1.1.2 Schools Interoperability Framework Association

The Schools Interoperability Framework Association (SIF Association) is an industry initiative to enable interoperability and data sharing between software applications in the pK-12 instructional and administrative environment, and the forum for companies and educators to participate in the development of SIF specifications in the SIF Association's working groups and task forces. The SIF Association is designed to:

- Join industry leaders in creating the next-generation framework for education technology; and
- Leverage co-marketing opportunities with partners and distributors.

## 1.2 Disclaimer

The information, software, products, and services included in the SIF Implementation Specification may include inaccuracies or typographical errors. Changes are periodically added to the information herein. The SIF Association may make improvements and/or changes in this document at any time without notification. Information contained in this document should not be relied upon for personal, medical, legal, or financial decisions. Appropriate professionals should be consulted for advice tailored to specific situations.

THE SIF ASSOCIATION, ITS PARTICIPANT(S), AND THIRD PARTY CONTENT PROVIDERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY, RELIABILITY, TIMELINESS, AND ACCURACY OF THE INFORMATION, SOFTWARE, PRODUCTS, SERVICES, AND RELATED GRAPHICS CONTAINED IN THIS DOCUMENT FOR ANY PURPOSE. ALL SUCH INFORMATION, SOFTWARE, PRODUCTS, SERVICES, AND RELATED GRAPHICS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE SIF ASSOCIATION AND/OR ITS PARTICIPANT(S) HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THIS INFORMATION, SOFTWARE, PRODUCTS, SERVICES, AND RELATED GRAPHICS, INCLUDING ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT.

IN NO EVENT SHALL THE SIF ASSOCIATION, ITS PARTICIPANT(S), OR THIRD PARTY CONTENT PROVIDERS BE LIABLE FOR ANY DIRECT, INDIRECT, PUNITIVE, INCIDENTAL, SPECIAL, CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF USE, DATA, OR PROFITS, ARISING OUT OF OR IN ANY WAY CONNECTED WITH THE USE OR PERFORMANCE OF THIS DOCUMENT, WITH THE DELAY OR INABILITY TO USE THE DOCUMENT, THE PROVISION OF OR FAILURE TO PROVIDE SERVICES, OR FOR ANY INFORMATION, SOFTWARE, PRODUCTS, SERVICES AND RELATED GRAPHICS OBTAINED THROUGH THIS DOCUMENT OR OTHERWISE ARISING OUT OF THE USE OF THIS DOCUMENT, WHETHER BASED ON CONTRACT, TORT, STRICT LIABILITY, OR OTHERWISE, EVEN IF THE SIF ASSOCIATION, ITS PARTICIPANT(S), OR THIRD PARTY CONTENT PROVIDERS HAVE BEEN ADVISED OF THE POSSIBILITY OF DAMAGES. BECAUSE SOME STATES/JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATION MAY NOT APPLY TO YOU. IF YOU ARE DISSATISFIED WITH ANY PORTION OF THIS DOCUMENT OR WITH ANY OF THESE TERMS OF USE, YOUR SOLE AND EXCLUSIVE REMEDY IS TO DISCONTINUE USING THIS DOCUMENT.

This specification is released with the following provisos to developers and educators.

## 1.3 Certification and Compliance Claims

Though a product may be demonstrated to comply with this specification, no product may be designated as SIF Certified™ by an organization or individual until the product has been tested against and passed established compliance criteria, published separately [SIFCertification]. Organizations and individuals that are currently paying annual membership dues to the SIF Association and dedicating resources to the initiative may also use the designation SIF Participant to describe their involvement with the SIF Association and SIF in marketing, public relations and other materials.

# Quick Table of Contents

## 1 Preamble

## 2 Introduction

## 3 Architecture

## 4 Messaging

## 5 Infrastructure

## 6 Data Model

## A Common Types

## B Code Sets

## C External Code Sets

## D Notes on Related Technologies

## E Wildcard Version Support Implementation Notes

## F Selective Message Blocking (SMB) Example

## G Background/Supplementary Documentation (non-normative)

## H Index of Tables

## I Index of Examples

## J Index of Figures

## K Index of Objects

## L Index of Common Elements

## M Index of Common Types

## N Index of Elements

## O Index of Attributes

## P References

# Full Table of Contents

## 1 Preamble

### 1.1 Abstract

#### 1.1.1 What is SIF?

##### 1.1.1.1 What is SIF (AU)?

#### 1.1.2 Schools Interoperability Framework Association

### 1.2 Disclaimer

### 1.3 Certification and Compliance Claims

## 2 Introduction

### 2.1 Specification Organization

### 2.2 Document Conventions

#### 2.2.1 Definitions

#### 2.2.2 Structure and Values

#### 2.2.3 Examples

#### 2.2.4 References

#### 2.2.5 Terminology

#### 2.2.6 XML Diagrams

### 2.3 Version Numbers

### 2.4 Highlighted Additions/Changes

## 3 Architecture

### 3.1 Assumptions

#### 3.1.1 Notes on Related Technologies

### 3.2 Concepts

#### 3.2.1 Data Model

#### 3.2.2 Zone Architecture

##### 3.2.2.1 Contexts

#### 3.2.3 Infrastructure and Messaging

#### 3.2.4 Data Provision: A Request/Response Model

#### 3.2.5 Event Reporting: A Publish/Subscribe Model

#### 3.2.6 Communication: An Asynchronous Model

#### 3.2.7 Security Model

##### 3.2.7.1 Encryption

##### 3.2.7.2 Authentication and Validation

##### 3.2.7.3 Access Control

### 3.3 SIF Architecture

#### 3.3.1 Architectural Components

#### 3.3.2 Naming Conventions for Agents and Zone Integration Servers

#### 3.3.3 Object Identifiers

##### 3.3.3.1 Persistence

#### 3.3.4 Agent/Application Requirements

##### 3.3.4.1 Communicate with the ZIS

##### 3.3.4.2 Transmit Application Changes to the ZIS

##### 3.3.4.3 Respond to Requests

##### 3.3.4.4 Changes Required to the Vendor's Application

##### 3.3.4.5 Support Authentication and Digital Signatures

##### 3.3.4.6 Agent Local Queue

##### 3.3.4.7 Wildcard Version Support

#### 3.3.5 Zone Integration Server Requirements

##### 3.3.5.1 Access Control List

##### 3.3.5.2 Zone Status

##### 3.3.5.3 Zone Context Registry

##### 3.3.5.4 Administration

##### 3.3.5.5 Support Selective Message Blocking (SMB) to Resolve Deadlocks

###### 3.3.5.5.1 Description

###### 3.3.5.5.2 Requirements

###### 3.3.5.5.3 Example

#### 3.3.6 Message Processing

##### 3.3.6.1 Message Validation

##### 3.3.6.2 Message Identification

##### 3.3.6.3 Message Security

###### 3.3.6.3.1 SIF_AuthenticationLevel

###### 3.3.6.3.2 SIF_EncryptionLevel

###### 3.3.6.3.3 Notes on SIF_AuthenticationLevel

###### 3.3.6.3.4 Notes on SIF_EncryptionLevel

##### 3.3.6.4 Message Robustness

##### 3.3.6.5 Message Cycle

##### 3.3.6.6 Message Delivery

###### 3.3.6.6.1 The "Push" Model

###### 3.3.6.6.2 The "Pull" Model

###### 3.3.6.6.3 "Multiple Version" Zones

#### 3.3.7 Infrastructure Transport Layer

##### 3.3.7.1 SIF HTTPS Transport

###### 3.3.7.1.1 HTTPS Request/Response Model

###### 3.3.7.1.2 HTTP Request Headers

###### 3.3.7.1.3 HTTP Response Headers

###### 3.3.7.1.4 100 (Continue)

###### 3.3.7.1.5 3XX, 4XX, 5XX Notices

##### 3.3.7.2 SIF HTTP Transport

##### 3.3.7.3 SIF HTTP(S) Transport Compression

##### 3.3.7.4 SIF_Protocol/SIF_Property Accept-Encoding

##### 3.3.7.5 HTTP Client Requirements

##### 3.3.7.6 HTTP Server Requirements

##### 3.3.7.7 Push-Mode Agent Requirements

##### 3.3.7.8 Zone Integration Server Requirements

## 4 Messaging

### 4.1 Agent Protocols

#### 4.1.1 Agent Messaging Protocols

##### 4.1.1.1 SIF_Register

##### 4.1.1.2 SIF_Unregister

##### 4.1.1.3 SIF_Provide

##### 4.1.1.4 SIF_Unprovide

##### 4.1.1.5 SIF_Subscribe

##### 4.1.1.6 SIF_Unsubscribe

##### 4.1.1.7 SIF_Provision

##### 4.1.1.8 SIF_Event

##### 4.1.1.9 SIF_Request

##### 4.1.1.10 SIF_Ping

##### 4.1.1.11 SIF_Sleep

##### 4.1.1.12 SIF_Wakeup

##### 4.1.1.13 SIF_GetZoneStatus

##### 4.1.1.14 SIF_GetAgentACL

##### 4.1.1.15 SIF_CancelRequests

##### 4.1.1.16 SIF_GetMessage (Pull-Mode only)

##### 4.1.1.17 SIF_Ack (Push-Mode)

##### 4.1.1.18 SIF_Ack (Pull-Mode)

#### 4.1.2 Agent Message Handling Protocols

##### 4.1.2.1 SIF_Message

##### 4.1.2.2 SIF_Event

##### 4.1.2.3 SIF_Request

##### 4.1.2.4 SIF_Response

##### 4.1.2.5 SIF_Ping (Push-Mode only)

##### 4.1.2.6 SIF_Sleep (Push-Mode only)

##### 4.1.2.7 SIF_Wakeup (Push-Mode only)

##### 4.1.2.8 SIF_CancelRequests (Push-Mode only) (optional)

### 4.2 ZIS Protocols

#### 4.2.1 ZIS Messaging Protocols

##### 4.2.1.1 SIF_Message Delivery (SIF_Event, SIF_Request, SIF_Response to a Push-mode Agent)

##### 4.2.1.2 SIF_Ping (to a Push-mode Agent)

##### 4.2.1.3 SIF_Sleep (to a Push-mode Agent)

##### 4.2.1.4 SIF_Wakeup (to a Push-mode Agent)

##### 4.2.1.5 SIF_CancelRequests (to a Push-mode Agent)

#### 4.2.2 ZIS Message Handling Protocols

##### 4.2.2.1 SIF_Message

##### 4.2.2.2 SIF_Register

##### 4.2.2.3 SIF_Unregister

##### 4.2.2.4 SIF_Provide

##### 4.2.2.5 SIF_Unprovide

##### 4.2.2.6 SIF_Subscribe

##### 4.2.2.7 SIF_Unsubscribe

##### 4.2.2.8 SIF_Provision

##### 4.2.2.9 SIF_Event

##### 4.2.2.10 SIF_Request

##### 4.2.2.11 SIF_Response

###### 4.2.2.11.1 Implementation Notes

##### 4.2.2.12 SIF_Ping

##### 4.2.2.13 SIF_Sleep

##### 4.2.2.14 SIF_Wakeup

##### 4.2.2.15 SIF_GetZoneStatus

##### 4.2.2.16 SIF_GetAgentACL

##### 4.2.2.17 SIF_CancelRequests

##### 4.2.2.18 SIF_GetMessage

##### 4.2.2.19 SIF_Ack (from a Push-Mode Agent)

##### 4.2.2.20 SIF_Ack (from a Pull-Mode Agent)

## 5 Infrastructure

### 5.1 Common Elements

#### 5.1.1 SIF_Message

#### 5.1.2 SIF_Header

#### 5.1.3 SIF_EncryptionLevel

#### 5.1.4 SIF_AuthenticationLevel

#### 5.1.5 SIF_Contexts

#### 5.1.6 SIF_Context

#### 5.1.7 SIF_Protocol

#### 5.1.8 SIF_Status

#### 5.1.9 SIF_Error

#### 5.1.10 SIF_Query

##### 5.1.10.1 SIF_ConditionGroup

##### 5.1.10.2 SIF_Element Syntax

#### 5.1.11 SIF_ExtendedQuery

##### 5.1.11.1 Mapping SIF_Query to SIF_ExtendedQuery

#### 5.1.12 SIF_ExtendedQueryResults

### 5.2 Messages

#### 5.2.1 SIF_Ack

#### 5.2.2 SIF_Event

#### 5.2.3 SIF_Provide

#### 5.2.4 SIF_Provision

#### 5.2.5 SIF_Register

#### 5.2.6 SIF_Request

#### 5.2.7 SIF_Response

#### 5.2.8 SIF_Subscribe

#### 5.2.9 SIF_SystemControl

#### 5.2.10 SIF_Ping

#### 5.2.11 SIF_Sleep

#### 5.2.12 SIF_Wakeup

##### 5.2.12.1 SIF_Sleep/SIF_Wakeup versus SIF_Register/SIF_Unregister

#### 5.2.13 SIF_GetMessage

#### 5.2.14 SIF_GetZoneStatus

#### 5.2.15 SIF_GetAgentACL

#### 5.2.16 SIF_CancelRequests

#### 5.2.17 SIF_Unprovide

#### 5.2.18 SIF_Unregister

#### 5.2.19 SIF_Unsubscribe

### 5.3 Objects

#### 5.3.1 SIF_AgentACL

#### 5.3.2 SIF_LogEntry

#### 5.3.3 SIF_ZoneStatus

## 6 Data Model

### 6.1 Introduction

#### 6.1.1 Format

#### 6.1.2 Conventions

##### 6.1.2.1 Object Attributes/Primary Keys

##### 6.1.2.2 Object References

##### 6.1.2.3 Lists/Repeatable Elements

###### 6.1.2.3.1 ActionList

###### 6.1.2.3.2 List

##### 6.1.2.4 Supported Optional Elements Without Values

##### 6.1.2.5 Externally-Defined XML

### 6.2 Common Elements

#### 6.2.1 ACStrandSubjectArea

#### 6.2.2 Address

#### 6.2.3 AddressList

#### 6.2.4 AttendanceCode

#### 6.2.5 BirthDate

#### 6.2.6 ContactInfo

#### 6.2.7 Country

#### 6.2.8 Demographics

#### 6.2.9 EducationalLevel

#### 6.2.10 EducationFilter

#### 6.2.11 ElectronicId

#### 6.2.12 ElectronicIdList

#### 6.2.13 Email

#### 6.2.14 EmailList

#### 6.2.15 EnglishProficiency

#### 6.2.16 GraduationDate

#### 6.2.17 GridLocation

#### 6.2.18 HomeroomNumber

#### 6.2.19 LanguageList

#### 6.2.20 LifeCycle

#### 6.2.21 LocalId

#### 6.2.22 Location

#### 6.2.23 Name

#### 6.2.24 OnTimeGraduationYear

#### 6.2.25 OperationalStatus

#### 6.2.26 OtherCodeList

#### 6.2.27 OtherNames

#### 6.2.28 PersonInfo

#### 6.2.29 PhoneNumber

#### 6.2.30 PhoneNumberList

#### 6.2.31 PrincipalInfo

#### 6.2.32 ProgramStatus

#### 6.2.33 ProjectedGraduationYear

#### 6.2.34 PublishInDirectory

#### 6.2.35 Relationship

#### 6.2.36 SchoolContactList

#### 6.2.37 SchoolURL

#### 6.2.38 SchoolYear

#### 6.2.39 SIF_ExtendedElements

#### 6.2.40 SIF_Metadata

#### 6.2.41 StateProvince

#### 6.2.42 StateProvinceId

#### 6.2.43 SubjectArea

#### 6.2.44 SubjectAreaList

#### 6.2.45 TimeElement

#### 6.2.46 YearLevel

#### 6.2.47 YearLevels

### 6.3 SIF AU

#### 6.3.1 AggregateCharacteristicInfo

#### 6.3.2 AggregateStatisticFact

#### 6.3.3 AggregateStatisticInfo

#### 6.3.4 Assessment

#### 6.3.5 AssessmentAdministration

#### 6.3.6 AssessmentForm

#### 6.3.7 AssessmentItem

#### 6.3.8 AssessmentPackage

#### 6.3.9 AssessmentRegistration

#### 6.3.10 AssessmentSubTest

#### 6.3.11 CalendarDate

#### 6.3.12 CalendarSummary

#### 6.3.13 Identity

#### 6.3.14 LEAInfo

#### 6.3.15 LearningResource

#### 6.3.16 LearningResourcePackage

#### 6.3.17 LearningStandardDocument

#### 6.3.18 LearningStandardItem

#### 6.3.19 PersonPicture

#### 6.3.20 ReportAuthorityInfo

#### 6.3.21 ReportManifest

#### 6.3.22 RoomInfo

#### 6.3.23 SchoolCourseInfo

#### 6.3.24 SchoolInfo

#### 6.3.25 SchoolPrograms

#### 6.3.26 SessionInfo

#### 6.3.27 SIF_ReportObject

#### 6.3.28 StaffAssignment

#### 6.3.29 StaffPersonal

#### 6.3.30 StudentActivityInfo

#### 6.3.31 StudentActivityParticipation

#### 6.3.32 StudentAttendanceSummary

#### 6.3.33 StudentContactPersonal

#### 6.3.34 StudentContactRelationship

#### 6.3.35 StudentDailyAttendance

#### 6.3.36 StudentParticipation

#### 6.3.37 StudentPeriodAttendance

#### 6.3.38 StudentPersonal

#### 6.3.39 StudentSchoolEnrollment

#### 6.3.40 StudentScoreSet

#### 6.3.41 StudentSDTN

#### 6.3.42 StudentSnapshot

#### 6.3.43 SummaryEnrollmentInfo

#### 6.3.44 SystemRole

#### 6.3.45 TeachingGroup

#### 6.3.46 TermInfo

#### 6.3.47 TimeTable

#### 6.3.48 TimeTableCell

#### 6.3.49 TimeTableSubject

## A Common Types

### A.1 AbstractContentElementType

### A.2 AbstractContentPackageType

### A.3 BaseNameType

### A.4 DefinedProtocolsType

### A.5 ExtendedContentType

### A.6 GUIDType

### A.7 IdRefType

### A.8 MonetaryAmountType

### A.9 MsgIdType

### A.10 NameOfRecordType

### A.11 ObjectNameType

### A.12 OtherNameType

### A.13 PartialDateType

### A.14 RefIdType

### A.15 ReportDataObjectType

### A.16 ReportPackageType

### A.17 SelectedContentType

### A.18 SIF_EventObjectType

### A.19 SIF_ExampleObjectType

### A.20 SIF_LogEntryExtendedContentType

### A.21 SIF_ProvideObjectNamesType

### A.22 SIF_RequestObjectNamesType

### A.23 SIF_ResponseObjectsType

### A.24 SIF_ResponseObjectType

### A.25 SIF_SubscribeObjectNamesType

### A.26 URIOrBinaryType

### A.27 VersionType

### A.28 VersionWithWildcardsType

## B Code Sets

### AU Code Sets

#### 0211 Program Availability

#### 0792 Identification Procedure

#### ACStrand

#### Activity Involvement Code

#### Activity Type

#### Address Role

#### Address Type

#### Assessment Reporting Method

#### Assessment Type

#### Attendance Code

#### Attendance Status

#### Australian Citizenship Status

#### Australian Standard Classification of Cultural and Ethnic Groups (ASCCEG)

#### Australian Standard Classification of Languages (ASCL)

#### Australian Standard Classification of Religious Groups (ASCRG)

#### Australian Standard Geographical Classification (ASGC)

#### Birthdate Verification

#### Calendar Event

#### Day Value Code

#### Dwelling Arrangement

#### Education Agency Type

#### Electronic Id Type

#### Email Type

#### Employment Type

#### English Proficiency

#### Enrollment Time Frame

#### Entry Type

#### Exit/Withdrawal Status

#### Exit/Withdrawal Type

#### Federal Electorate

#### FTPT Status Code

#### Immunisation Certificate Status

#### Indigenous Status

#### Language Type

#### LearningStandardItem Relationship Types

#### Marital Status AIHW

#### Name Usage Type

#### Non-School Education

#### Operational Status

#### Permanent Resident Status

#### Picture Source

#### Program Funding Source Code

#### Progress Level

#### Public School Catchment Status

#### Relationship To Student

#### School Co-Ed Status

#### School Education Level Type

#### School Enrollment Type

#### School Focus Code

#### School Level

#### School Location

#### School Sector Code

#### School System

#### Session Type

#### Sex Code

#### Source Code Type

#### Staff Activity

#### Standard Australian Classification of Countries (SACC)

#### State Territory Code

#### Student/Family Program Type

#### Systemic Status

#### Telephone Number Type

#### Visa Sub Class

#### Year Level Code

#### Yes Or No Category

### Infrastructure

#### Status Code

#### Error Category

#### XML Validation Error

#### Encryption Error

#### Authentication Error

#### Access and Permission Error

#### Registration Error

#### Provision Error

#### Subscription Error

#### Request and Response Error

#### Event Reporting and Processing Error

#### Transport Error

#### System Error

#### Generic Message Handling Error

#### SMB Error

### SIF_LogEntry

#### Agent Error Condition

#### Data Issues with Failure Result

#### Data Issues with Success Result

#### Success Category

#### ZIS Error Condition

## C External Code Sets

### International Standards Organization (ISO)

#### 4217 Currency names and code elements

## D Notes on Related Technologies

### D.1 SIF and HTTP(S)

### D.2 SIF and URLs

### D.3 SIF and XML

### D.4 SIF and Unicode

### D.5 SIF and XPath

### D.6 SIF and XML Schema

#### D.6.1 xs:boolean

#### D.6.2 xs:time

#### D.6.3 xs:date

#### D.6.4 xs:dateTime

### D.7 SIF and XML Namespaces

### D.8 SIF and UUIDs/GUIDs

### D.9 SIF and Web Services

## E Wildcard Version Support Implementation Notes

### E.1 XML Parsing

### E.2 XML Validation

### E.3 SIF_Message Handling

## F Selective Message Blocking (SMB) Example

### F.1 Example

## G Background/Supplementary Documentation (non-normative)

## H Index of Tables

## I Index of Examples

## J Index of Figures

## K Index of Objects

## L Index of Common Elements

## M Index of Common Types

## N Index of Elements

## O Index of Attributes

## P References

# 2 Introduction

## 2.1 Specification Organization

Beyond the abstract and this introduction, educators and non-technical readers are typically interested in the pK-12 data objects that can be shared and reported on by SIF-enabled applications in SIF implementations. These are presented in the Data Model section in a format that should not be a barrier to readers with a background that includes a brief introduction to [XML], though they may benefit from the introductory sections of Architecture. Technical readers, including software architects, developers and integrators, should have a solid background in Architecture, Messaging, Infrastructure and Data Model.

- The Preamble provides an abstract of SIF along with the SIF Association disclaimer and details regarding certification and compliance claims.
- This Introduction outlines the organization of the specification, provides conventions used in this document, and summarizes versioning of the specification. Highlights of additions/changes since the previous version of the specification are also provided.
- Architecture describes the assumptions, concepts, models, and requirements related to the SIF infrastructure and data model.
- Messaging details the actions Agents and Zone Integration Servers take when sending and receiving messages.
- Infrastructure provides definitions of the XML structure of elements, messages and objects related to SIF infrastructure as opposed to data in the pK-12 environment.
- The Data Model section provides definitions of the XML structure for common elements in the data model and all objects related to entities in the pK-12 environment. This section is organized by the working groups and task forces within the SIF Association that have defined common elements or objects.
- The document concludes with various appendices including lists of code set values defined within SIF and in external documents, and ends with a list of references to other documents.

## 2.2 Document Conventions

### 2.2.1 Definitions

The first time a term or concept is defined, it may be emphasized.

### 2.2.2 Structure and Values

`SIF message and object names, XML element tags, attribute names and values, and other codes or values are typically presented as in this sentence.`

### 2.2.3 Examples

Longer examples of XML or HTTP messages are typically numbered and presented as given here.
Example 2.2.3-1: Examples Convention

### 2.2.4 References

References to other works occuring in this text are given in brackets, e.g. [REFERENCE]. The text in brackets corresponds to a key in the References appendix. Often when the text in the brackets duplicates surrounding text, the reference alone is used (e.g. [XML] instead of XML [XML]).

### 2.2.5 Terminology

The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, OPTIONAL, when EMPHASIZED, are to be interpreted as described in [RFC 2119].

### 2.2.6 XML Diagrams

Quick overviews of XML structures, including messages, objects, common elements and types, are provided in XML diagrams. The following diagram illustrates the conventions typically encountered in SIF.

Figure 2.2.6-1: XML Diagram Conventions

XML elements are represented by rectangles with the name of the element in the upper portion and the type, if any, in the lower portion. Attributes are represented in the same fashion, but have an `@` icon rather than a SIF icon. Elements and attributes that are optional have a circled `?` (0 or 1 occurrence) to the left of the rectangle. Optional and mandatory repeatable elements are indicated by a circled `*` (0 or more occurrences) and `+` (1 or more occurrences), respectively. Element attributes are grouped together in a rectangular block and connected to the element with a line that turns at right angles. Ordered sequences of XML elements are bracketed by lines that turn at right angles. When a choice of XML elements is indicated, the elements are bracketed by angled lines. A choice of elements can occur within an element, or may be an unnamed choice of elements.

XML types are represented using the same conventions as for XML elements, though the type portion of the rectangle typically indicates a base type, if any.

The type name of any element, attribute or type may be prefixed with a `↓`, indicating the type is restricted in some fashion by one or more XML Schema facets (e.g. enumeration). When the type is a union of types, a list of types is presented, each type separated by `|`; if the list of union types is long, the list may be ellipted with `| ...`

In an actual XML diagram, element, type and attribute rectangles are usually linked to their corresponding definitions/descriptions in accompanying tables.

## 2.3 Version Numbers

The SIF Implementation Specification uses the following version numbering scheme:

major version`.`minor version `r` revision number

Major versions typically introduce additions/changes to the SIF infrastructure and/or data model changes that impact a significant percentage of SIF-enabled applications (e.g. making previously optional elements mandatory, removal of deprecated objects, elements or values). The first release of a major version has a minor version of `0` (`2.0`); major version numbers start at `1` and are incremented as major versions are released (`1.0`, `2.0`, `3.0`, ...).

Minor releases typically introduce new data objects, or optional additions to data objects, to the marketplace, and may include minor infrastructure additions/changes that do not impact existing SIF-enabled applications and that ZIS vendors have agreed to implement. The first minor version released subsequent to and within a major release has a minor version of `1` and is incremented as new minor versions are released (`2.1`, `2.2`, ...). If a significant number of minor release features is introduced in a specification, the SIF Association may decide to increment the minor version number by more than `1` (e.g. `1.1` to `1.5`), though a number like `1.5` is not an indication of being halfway to a major release, as minor version numbers may be incremented significantly past `10` (`2.10`, `2.11`, ...) as data objects and other minor version features are released.

Corrections resulting from identified errata, as well as textual changes, may be incorporated into a revision release. These typically include minor corrections to messages or data objects, corrections of typographical errors, or corrected/expanded documentation. If major errors in any release are identified, a revision release may incorporate changes more typical of a major or minor release. First major and minor releases have a revision number of `0`, which is omitted from the version number (`2.0`, not `2.0r0`); subsequent revision numbers start at `1` and are incremented as new revisions are released (`2.0r1`, `2.0r2`, ...).

## 2.4 Highlighted Additions/Changes

This release contains the following significant updates and extensions to the SIF specification.

### Additions

- SystemRole Object – New Object proposed by DSWG to support the ability to transfer information about the individual as well as their role in targeted downstream systems.
- Address – Elements – Community, LocalId and AddressGlobalUID added.
- Identity – Added additional Authentication source for OpenID
- MaritalStatus – Added MaritalStatus to Demographics
- DwellingArrangement/OtherCodeList – Added Other CodeList to DwellingArrangement in Demographics
- Language/Dialect – Added Dialect to Language
- CalendarDayDate – OtherCodeList, Teacher Attendance AdministratorAttendance as per US Data Model
- StudentPeriodAttendance – Added AuditInfo and TimeIn, TimeOut
- StudentPersonal – Added GiftedTalented and GraduationDate
- StudentParticipation – ReferralDate, ReferralSource, ReferralSource/Code, ReferralSource/OtherCodeList, ProgramStatus, GiftedEligibilityCriteria, EvaluationParentalConsentDate, EvaluationDate, EvaluationExtensionDate, ExtensionComments, ReevaluationDate, ProgramEligibilityDate, ProgramPlanDate, ProgramPlanEffectiveDate, NOREPDate, PlacementParentalConsentDate, ProgramPlacementDate, ExtendedSchoolYear, ExtendedDay, ProgramAvailability, ProgramAvailability/Code, ProgramAvailability/OtherCodeList, EntryPerson added.
- StaffAssignment – StaffActivity and TeacherAssignmentList added.
- AggregatedStatistics Objects – AggregatedStatisticFact, AggregaredStatisticFact, AggregatedCharacteristicInfo added.
- Assessment set of Objects – Assessment, AssessmentItem, AssessmentRegistration, AssessmentSubTest, AssessmentForm, AssessmentAdministration, AssessmentPackage, StudentScoreSet added.
- LearningStandards set of Objects – LearningStandardItem, LearningStandardDocument, LearningResource, LearningResourcePackage added.
- Education Filter – Added LearningStandard items included in EducationFilter.
- StudentContactRelationsip – Added ParentRelationshipStatus.

### Changes

- Demographics/VisaStatisticalCode – Changed Type to xs:normalizedString and Removed CodeSet.
- Demographics/VisaSubClass – Added xs:string as a possibility for VisaCode.

# 3 Architecture

## 3.1 Assumptions

The following assumptions are made of non-technical readers of this specification, especially end users undertaking SIF implementations:

- A passing familiarity with [XML] and its use. Readers lacking this prerequisite are referred to [XMLINTRO] and other ubiquitous materials.
- A familiarity with HTTP and HTTPS and the security, encryption and authentication features of the latter. These should be familiar to World Wide Web users.
- A good understanding of the educational data that applications in an implementation store and would benefit from sharing, and the ability to identify equivalents in the SIF Data Model.

They should also be aware that there are numerous third-party products and services available to aid in SIF implementation and integration.

Technical readers implementing SIF software and software solutions, particularly those implementing SIF Agents and Zone Integration Servers from scratch as opposed to using or building upon third-party products and services, should have an understanding of:

- The subset of HTTP 1.1 [RFC 2616] referenced in the SIF HTTPS and SIF HTTP Transport Layers.
- Those portions of TLS 1.0 [RFC 2246], SSL 3.0 [SSL3] and SSL 2.0 [SSL2] that are applicable to the SIF HTTPS and SIF HTTP Transport Layers, including associated encryption, signature and authentication algorithms, including the use of X.509 certificates.
- XML 1.0 [XML] and its references to Unicode and the UTF-8 Encoding.
- The role and use of namespaces in XML [XMLNS].
- Accessing XML elements/attributes using XPath [XPATH].
- XML Schema data types and structures [XMLSCHEMA].
- Relational database and message queue concepts.

It is furthermore assumed that implementers have at their disposal or can implement:

- Adequate XML tools (e.g. parsers; parsers that can validate using XML Schema, if desired; simple XPath evaluators) as they develop SIF-compliant software.
- Implementations of HTTP(S) that support the SIF HTTPS Transport Layer, and optionally, the SIF HTTP Transport Layer.

### 3.1.1 Notes on Related Technologies

Implementers are referred to Notes on Related Technologies, which highlights technologies leveraged within SIF or related to SIF, either in their entirety or as a subset. This partially normative appendix points out specifics casual readers of referenced documents on these technologies must not ignore when implementing SIF Zone Integration Servers and Agents.

## 3.2 Concepts

This section presents the ideas behind the implementation of SIF, including the application and data models on which it is based. It serves as a precursor to further descriptions in following sections.

### 3.2.1 Data Model

The data that can be exchanged in SIF is defined using a series of data objects. These objects are expressed using [XML] and are defined structurally by this document and associated schemas, with this document and supporting documentation defining the semantics behind the exchange of individual data objects. `StudentPersonal`, `StudentSchoolEnrollment` and `StaffPersonal` are three of the many predefined data objects.

### 3.2.2 Zone Architecture

Although there are many variations of SIF topographies, the common feature is that a number of applications wish to share data. All SIF implementations, regardless of their complexity, consist of one or more applications with their associated agents communicating via a Zone Integration Server (ZIS).

One typical use of SIF is to connect products from various vendors together within a single school. These applications could include a student information application, a food service program, and a library automation application. Each of these applications has a vendor-provided interface program called an Agent.

Since the same school shares these applications, it makes sense to group them together into a logical entity. This entity is referred to as a Zone and is managed by a Zone Integration Server (ZIS).

There are no predefined sizes for zones, so a zone can be as large or small as required in order to meet the needs of the customer.

An application relies on its agent to exchange data using a predefined data model. Agents then communicate with other agents using the ZIS as a routing resource. The ZIS also provides access control so the customer can control which applications have access to which SIF data.

#### 3.2.2.1 Contexts

The Zone is the primary means of partitioning data, applications, and policies. Zones are typically organized around geographic boundaries (e.g. school, district, region, state) or functional boundaries (e.g. horizontal integration, student locator services, data warehousing and reporting services). A SIF Context offers the ability to further partition the data within a Zone, to offer different perspectives of the data based on customer needs and application abilities. For example, while a student information system typically serves as the source for student-related data in the default context of a zone that integrates applications in a school or district, a data warehouse might better be suited to provide a historical or longitudinal perspective of that exact same student data in a different context, a context more suited to the reporting and data warehousing needs of an implementation. Contexts enable customers and system integrators to work with data in new ways while retaining the zone topologies commonly in use in implementations.

In addition to offering different perspectives on a zone's data, contexts allow two or more agents to register as a provider of the same object type within a zone. This may lead to future solutions built around contexts; for example, to better define how systems that publish similar objects cooperate in the same zone (e.g. student information systems and special education packages). Contexts also make it easier to apply a different set of business rules to different audiences. Unlike zones, which can be named and assembled in a variety of ways at the discretion of system integrators, contexts are to be treated as a part of the specification. The SIF Association sanctions contexts and provides documentation that defines each context's purpose and any associated message choreographies and business rules for it. Contexts defined by the SIF Association have context names that begin with `SIF_` and the default context for a zone is named `SIF_Default`. It is RECOMMENDED that all ZIS implementations support the SIF Association-defined contexts as they are introduced; support for user-defined contexts is strictly implementation dependent, and agents are discouraged from relying on ad hoc or user-defined contexts.

### 3.2.3 Infrastructure and Messaging

Agents share data in a Zone via two models, the Publish/Subscribe model and the Request/Response model. Agents publish data changes of interest to subscribers by sending a `SIF_Event` message to the ZIS. Agents can also request or query data from other agents in a Zone by sending a `SIF_Request` message to an Agent, eventually being sent one or more `SIF_Response` messages in return. This exchange of messages over a SIF-defined transport layer, SIF HTTPS or SIF HTTP, is the primary feature that defines the SIF Infrastructure. Every message exchanged over this infrastructure is wrapped inside a `SIF_Message` and contains a `SIF_Header` element that specifies the source of the message and optional security, destination and context information. In addition to the messages exchanged between Agents via the ZIS, the SIF Infrastructure defines a number of messages that are exchanged between Agent and ZIS, and between ZIS and Push-mode Agent—these serve primarily to register various Agent settings at the ZIS and to support the exchange of messages between Agents.

### 3.2.4 Data Provision: A Request/Response Model

When an application (the Requester) wants to gather data from a specific data object, a `SIF_Request` message is sent to ZIS. The application may direct this request to a given Responder by specifying an Agent ID in the `SIF_DestinationId` element of `SIF_Header`. In most cases, however, the `SIF_DestinationId` element is omitted in which case the ZIS routes the request to the default responder, or Provider, for the data object of interest. Agents register as Providers with the ZIS using either the `SIF_Provision` or `SIF_Provide` message.

There is a single Provider per object per context per zone. There may be multiple Responders for a given object in a zone context.

In order to maintain control over what data is exchanged over the zone and who exchanges it, the ZIS must provide an access control system that limits who can provide, request, and respond to requests for which data objects. The access control system must maintain policies for each registered application.

If the requester knows or wants to control who the responder will be, it must place the responder's agent identifier in the `SIF_DestinationId` element of the header of the `SIF_Request` message. The ZIS will examine the `SIF_Request` message's header. If a `SIF_DestinationId` element is present, the ZIS must route the `SIF_Request` to the specified agent/application subject to the limitations imposed by the access control security policies for the zone. For instance, even though an application specifies that it wishes a specified application to respond, the zone security policy may prohibit the specified application from generating `SIF_Response` messages.

An application that wants to provide access to the data it contains via SIF may function as a responder. Such applications will support one or more SIF data objects. The application listens for `SIF_Request` messages for the objects that it supports. When it receives a `SIF_Request` for a supported object, the application will generate one or more `SIF_Response` messages containing the application's data, which will be routed by the ZIS to the requester. The responder must place the requester's agent identifier in the `SIF_DestinationId` element of the header for each `SIF_Response` message generated.

When an application receives a `SIF_Request` for a data object that it does not support, it must return a `SIF_Response` message with the `SIF_Error` element populated to indicate the nature of the error (invalid object), a `SIF_PacketNumber` of `1` and the `SIF_MorePackets` element set to indicate that no further packets will be sent in response to the `SIF_Request`.

### 3.2.5 Event Reporting: A Publish/Subscribe Model

Applications propagate data updates by publishing `SIF_Event` messages for the SIF data objects that are being added, changed, or deleted. In order for an application to receive these `SIF_Event`s, subscriptions for the SIF data objects of interest must be entered at the ZIS. This subscription process is performed when an application sends a `SIF_Provision` message or one or more `SIF_Subscribe` messages to the ZIS. Once the subscriptions are entered, any `SIF_Event`s for those objects received by the ZIS will be routed to the list of subscribers for those objects.

Once an application successfully sends a `SIF_Event` to the ZIS, the ZIS is responsible for delivering that `SIF_Event` to the subscribing parties without any further communication to the `SIF_Event` originator. The `SIF_Event` originator does not know how many applications, if any, receive the `SIF_Event`. No notifications are provided to the originator to indicate whether a `SIF_Event` was delivered to a subscriber or not.

The ZIS must maintain an access control system that limits who can publish and subscribe to events for which data objects.

Before an application can utilize the services of the ZIS, the application must register itself by sending a `SIF_Register` message to the ZIS. Once registered, an application does not have to perform any additional registration with the ZIS in order to be a publisher of `SIF_Event` data. Any application that has registered itself with the ZIS may publish `SIF_Event`s subject to the limitations imposed by the access control security policies for the zone. It is recommended that event publishers register their ability to publish events by using the `SIF_Provision` message.

Multiple applications may publish `SIF_Event` messages for a given data object.

The application that is registered as the Provider for a given data object must be able to subscribe to `SIF_Event`s for that object but the application is not required to subscribe to `SIF_Event`s in a given SIF implementation.

An application that has subscribed to a `SIF_Event` must attempt to process the `SIF_Event` according to the business rules of the application. If the `SIF_Event` contains insufficient information or information that is inconsistent with the application's business rules, the application may ignore the message.

If an application publishes a `SIF_Event` as a result of changing the data within the application and the ZIS rejects the `SIF_Event` message, it is recommended that the application rolls back or cancels the changes that were made, but the application does not have to roll back the changes. For example, an application may attempt to add a new student and publish a `SIF_Event` to reflect the addition. If the application does not have permission to publish `SIF_Event` messages for that type of object, the `SIF_Event` is rejected. The application does not have to remove the newly added student from its local database.

### 3.2.6 Communication: An Asynchronous Model

In order to ensure scalability and reliability, SIF requires that its request/response and publish/subscribe models be asynchronous in nature. Once a ZIS synchronously acknowledges receipt of a `SIF_Event`, `SIF_Request` or `SIF_Response` with the return of a successful `SIF_Ack`, an agent cannot be assured that these messages will immediately be delivered to subscribers, providers/responders or requesters, respectively, or that it will receive an immediate `SIF_Response` to any submitted `SIF_Request`.

The asynchronous communication model can be likened to communicating with someone via e-mail or through the postal office: an individual sends the message, but does not know when it will be received, much less when the receiver will respond.

By requiring asynchronous communications, a SIF implementation can exploit software designs that achieve high scalability and reliability. For example, even if an agent is not currently connected to a Zone, another application's agent can still send messages to that agent knowing that the ZIS will deliver those messages as soon as the agent is available.

In contrast to the asynchronous communication model, most agent-to-ZIS and ZIS-to-agent communication—over currently defined transport layers—is synchronous in nature. Any time an agent sends a `SIF_Message` to a ZIS, the agent waits for a `SIF_Ack` to be returned from the ZIS to acknowledge receipt of the message. Once acknowledged, the ZIS guarantees future delivery of `SIF_Event`, `SIF_Request` and `SIF_Response` messages, barring certain error conditions. For messages not directly related to the request/response and publish/subscribe models, the acknowledgement from the ZIS also indicates successful completion of operations related to registration, subscription, provision and system control operations. Relatedly, when a ZIS contacts an agent in Push mode, the ZIS waits for a `SIF_Ack` to be returned from the agent to acknowledge successful delivery of the message currently pending for the agent.

### 3.2.7 Security Model

The security model of SIF centers around three areas: encryption, authentication and access control. SIF provides application agents the ability to specify the encryption and authentication requirements for all other agents that eventually come into contact with their sensitive data. Various communication protocols over which SIF data may be transferred, including SIF HTTPS, provide built-in support for easing the implementation details of guaranteeing encryption and authentication requirements. In addition, access control at the ZIS allows a zone administrator complete control over which agents are allowed to communicate which data to other agents.

As SIF HTTPS is the default communication protocol that all agents and ZIS implementations must support, many of the encryption and authentication levels specified in this document are tailored to the encryption and authentication algorithms currently defined within SIF HTTPS. When a ZIS implementation supports other communication protocols, the ZIS must guarantee that these levels are accurately reflected and adhered to when communicating with agents that support these same protocols.

#### 3.2.7.1 Encryption

Encryption provides the mechanism to ensure that only the sender and receiver of a message can view the message contents. In a totally secure model, all communications between agent and ZIS will be encrypted. The SIF HTTPS protocol, which must be supported by all agents and ZIS implementations, is a secure transport and provides encryption of the data being exchanged.

If additional communication protocols, or transports, are used, it is important to know if these transports are secure to avoid exposing sensitive data. SIF provides a method for an agent to specify to the ZIS how secure the channel between the ZIS and other agents must be when ultimately delivering the originating agent's sensitive data. ZIS implementations must guarantee the requested security levels when communicating with recipient agents, regardless of which transport is in use. If a ZIS is unable to ensure these security levels when communicating with a recipient agent, the ZIS must not transport the message across the insufficiently secure channel. It is recommended that the ZIS log the inability to deliver the message to the recipient agent due to security requirements.

The responsibility for guaranteeing the security of data that an originating agent transfers to the ZIS lies ultimately with the originating agent, or zone administrators. For example, if the originating agent requires a very secure channel for a given message, it should not intentionally or inadvertently communicate that message to the ZIS over an insecure or insufficiently secure channel, should the ZIS support such channels. At that point, the data has already been communicated insecurely. Zone administrators can prevent such occurrences by configuring the ZIS and agents within the zone such that a minimum security level is maintained, below which communication is impossible.

In many cases, the establishment of a secure channel and encryption can be delegated to the transport layer.

#### 3.2.7.2 Authentication and Validation

The role of authentication is to provide a means to ensure that the author of a message is the actual author. Authentication guards against a situation where a foreign agent claims to be a legitimate zone participant and fakes a message to gain access or alter the SIF data.

Another important role of authentication is to provide the ability to detect that each message that passes through the Zone arrives at its destination unaltered by other intermediaries.

Authentication support is optional but highly recommended.

#### 3.2.7.3 Access Control

SIF must be customizable for specific deployments. This particularly applies to customization for the security policies. For example, a SIF administrator can specify which applications can participate in the SIF deployment, which data objects each application can provide or request, and what events each application can produce and receive.

The access control requirements are discussed more fully under ZIS Requirements.

## 3.3 SIF Architecture

This section describes the architecture and components that make up SIF. It presents high-level functional requirements for each component and interfaces between them. More detail on particular requirements and interfaces may be found in Messaging and Infrastructure.

### 3.3.1 Architectural Components

A SIF Zone is a distributed networking system that consists of a Zone Integration Server (ZIS) and one or more integration Agents. The size of a zone is flexible and could consist of a single building, school, a small group of schools, a district, a region, a state, a nation, etc. SIF is a scalable solution for data exchange. A SIF Implementation consists of one or more SIF Zones deployed and configured to meet customer data sharing and reporting needs.

A Zone Integration Server is a program that provides integration services to all the agents registered with it so that they can provide data, subscribe to events, publish events, request data, and respond to requests. It is responsible for all access control and routing within the Zone.

Each application requires an agent, which typically is provided by the application vendor, to communicate with other applications via the ZIS and their respective agents. For example, a school may use a student information application, a food service application, and a library automation application. Each of these applications must have an agent that acts as a go-between between the application and the Zone Integration Server.

In SIF, an agent never communicates with another agent directly. Instead, each agent communicates with the ZIS as a trusted intermediary that brokers the exchange of data with other agents. Having the ZIS manage routing responsibilities allows complex communications to occur between agents that have no direct information about each other and that may or may not be available for communication at any given point in time.

The following diagram illustrates a typical single-zone SIF implementation for a school.

Figure 3.3.1-1: Single-Zone School SIF Implementation

A zone is often defined according to physical boundaries; for example, a zone can consist of all the applications that are connected over a private network and managed by one organization, such as a school. Security, scalability, and manageability requirements can also influence the decision of how zones are designed and configured.

Zones are a flexible and powerfully creative tool for meeting the data exchange and reporting needs of users; zones can be as varied as the customers in the education marketplace. While a single school zone may meet the needs of a single school, SIF implementations can scale to meet the needs of specific end users through the use of multiple zones, sometimes managed by different ZIS implementations. Two examples of many multiple-zone implementation design patterns are included here for illustration.

In the first, the data exchange needs of a district are met through the use of four zones, one for the district, and three for schools within the district: elementary, middle and high school. Here a student information system provides its complete set of district-wide data to a district zone, while providing school-based views of and access to that data in the individual school zones. Library systems in this implementation are school-based, while the food services system, like the SIS, is district-based.

Figure 3.3.1-2: Multiple-Zone District SIF Implementation

The second example illustrates an agent communicating in both a district and a state zone. This agent could be associated with many different types of applications, including a SIS or data warehouse, reporting date up to the state, and so on.

Figure 3.3.1-3: Multiple-Zone State SIF Implementation

Multiply the district portion of this diagram by dozens or hundreds of districts, each with its own local zone or configuration of zones, and the distributed scalability of SIF using zones is readily apparent.

### 3.3.2 Naming Conventions for Agents and Zone Integration Servers

SIF requires that each agent and ZIS be identified with a distinct case-sensitive identifier that is unique within a zone. This identifier is carried inside the `SIF_SourceId` element of the `SIF_Header` included in each SIF message and is used, among other things, at the ZIS to reference access control permissions of each agent within the zone. It is recommended that agent and ZIS implementations have user-configurable identifiers in order for zone administrators to maintain unique identifiers within the zone.

The identifier should be descriptive of the role of the application in the zone. For example, the library automation agent for Ramsey Elementary might carry the identifier RamseyLib instead of the less descriptive CC41Agent. The Zone Integration Server for Ramsey might be known as RamseyZIS.

### 3.3.3 Object Identifiers

Data objects and the data local to an application that map to these objects often must be retrieved by a unique identifier. Likewise there often exist relationships between data objects that require a unique key or identifier for efficient look-up of related data. SIF provides these keys or unique identifiers through object identifiers, also known as RefIds or GUIDs thanks to SIF naming conventions and the type of identifiers used in SIF, respectively. The `StudentPersonal` object, for instance, carries detailed information about a student, and most agents that manage or require student information reference the data stored in this object and often map the `RefId` of `StudentPersonal` to locally stored data, or request `StudentPersonal` objects from the zone by `RefId`. Objects often carry an attribute that identifies a particular object instance; this attribute is named `RefId`. It is imperative that `RefId`s not clash with any other `RefId`. This is especially relevant when an agent manages a database comprised of a mix of objects; for example, a library database containing patrons, which are a mix of both students and staff. To virtually eliminate the possiblity of duplicate object identifiers and to provide a consistent, decentralized way of generating these identifiers, SIF requires the use of a globally unique identifier (GUID) that MUST be generated per published algorithms [RFC 4122] whenever a `RefId` is used. GUIDs in SIF have their own format; they MUST be 32 characters long and contain only valid upper-case hexadecimal characters (0-9, A-F) with no spaces or punctuation.

Object identifiers do not have to appear on any customer screens and they do not replace any identifiers currently in use by applications. Applications and application users users can still reference data as they always have. The GUID provides an additional key, which becomes the SIF primary key that agents use to reference an object within SIF.

As stated, object identifiers are also used to represent telationships between objects. Where referenced, `RefId` is typically prefixed with the object name, e.g. `StudentPersonalRefId` in `StudentPicture` refers to the `RefId` of the `StudentPersonal` object corresponding to the student photographed. Other more complex conventions surrounding object identifiers and RefIds can be found in Data Model.

#### 3.3.3.1 Persistence

When used as identifiers for objects that persist over time—take for instance the `StudentPersonal` object that represents a student in a Zone—it is SIF's intent that object identifiers not change over time. The `RefId` attribute for John Doe in first grade should have the same value when John Doe is in second grade, in middle school or in high school. This persistence of object identifiers enables longitudinal tracking of data within SIF, especially where there exist no locally unique identifiers associated with objects. Implementations SHOULD avoid reassignment of object identifiers within a zone and as the primary home for individual objects may move from one zone to zone over time (e.g. a student moving from a middle-school to a high-school zone).

### 3.3.4 Agent/Application Requirements

Each application that wants to be a SIF application, or SIF-enabled application, must have an agent written for it. An agent is an extension to the application that communicates with the ZIS. An agent can be an integral part of an application itself, or may be a separate, specialized client of or interface to an application.

All applications that are part of a SIF zone must be able to gracefully handle all SIF messages including those messages and data objects that the application does not support. It is RECOMMENDED that the application return an error `SIF_Ack` message to the ZIS for those messages that the agent does not support (error category Generic Message Handling, error code "Message not supported"). An agent MAY return an "Immediate" `SIF_Ack` to the ZIS and ignore unsupported messages.

High-level functional requirements for all SIF-enabled applications include the following. More detail on particular requirements may be found in Messaging and Infrastructure.

#### 3.3.4.1 Communicate with the ZIS

Support for SIF HTTPS is REQUIRED of all agents. An agent MUST be able to communicate with the ZIS using SIF HTTPS, but it may attempt to communicate with the ZIS using any communication protocol defined in this or other specifications. SIF HTTP is the other communication protocol defined in this specification at this time. Support for any communication protocol other than SIF HTTPS is implementation-dependent. If connection attempts in protocols other than SIF HTTPS fail, a connection over SIF HTTPS should be made in order for communication to proceed. Given the sensitive nature of much of the data within the zone, it is RECOMMENDED that all communication occur over SIF HTTPS or similarly secure communication protocols.

Given a communication channel between agent and ZIS, an agent is REQUIRED to register with the ZIS if it is not already registered or if it wishes to change or retransmit its registration settings. The `SIF_Register` message provides the ZIS information regarding agent capabilities and requirements, and allows the ZIS to contact the agent in the future if the agent is capable of accepting ZIS-initiated communications (a Push-Mode Agent).

An agent MAY also indicate its support for various data objects and associated messages using one or more of the `SIF_Provision`, `SIF_Provide` and `SIF_Subscribe` messages.

#### 3.3.4.2 Transmit Application Changes to the ZIS

When an application makes changes to its data that correspond to a SIF object it supports, the application MUST be able to publish `SIF_Event`s reflecting those data changes. If the application/agent makes changes to its data in processing a `SIF_Event` it has received, it MUST NOT publish an event that duplicates the changes as described in the processed `SIF_Event`. Should the application/agent, however, make additional changes beyond those in the `SIF_Event` being processed, the application SHOULD generate a new event describing the additional changes.

If an application does not support an optional field of an object or that element was not changed during the last edit, it MUST NOT send an empty element, (i.e., <BirthDate/> or <BirthDate></BirthDate> ); it MUST omit the element from the XML stream instead.

When publishing `Add` events, Agents MUST include all elements listed as mandatory in Data Model for the object.

#### 3.3.4.3 Respond to Requests

All agents MUST be prepared to handle `SIF_Request` messages for all objects gracefully. In the case where an agent receives a `SIF_Request` for an object that it does not support, in addition to acknowledging the receipt of the message to the ZIS it MUST send a `SIF_Response` message to the Requester with the `SIF_Error` element populated to indicate the nature of the error (invalid object), a `SIF_PacketNumber` of `1` and the `SIF_MorePackets` element set to indicate that no further packets will be sent in response to the `SIF_Request`.

If an application agent is a responder for any object, the agent must be prepared to process `SIF_Request` messages for that object. This involves the ability of the agent to traverse the application database and construct an XML response stream based upon the parameters of the query request. All responders MUST support `SIF_Query` and query conditions that reference root attributes of the object as well as any mandatory elements within the object, along with their mandatory attributes. Responders SHOULD support query conditions that reference optional elements and their attributes, when the application supports such queries. Responders MAY support `SIF_ExtendedQuery` and MUST register their support for `SIF_ExtendedQuery` using `SIF_Provision` and/or `SIF_Provide`.

When an agent is creating `SIF_Response` packets, it MUST attempt to ensure that each packet is no larger than the `SIF_MaxBufferSize` specified by the `SIF_Request`. If for any packet a single packet does fit within the supplied `SIF_MaxBufferSize`, the agent MUST, in addition to acknowledging receipt of the message to the ZIS, send a `SIF_Response` message to the Requester with the `SIF_Error` element populated to indicate the nature of the error, and the `SIF_MorePackets` element set to indicate that no further packets will be sent in response to the `SIF_Request`.

The `SIF_Request` message also contains `SIF_Version` elements that specify which SIF versions the responding agent should use when preparing the response packets. If a responding agent can support a single requested SIF version, it returns a response packet using that version. If more than one version is specified and the responding agent supports more than one of those versions it SHOULD respond with the highest version it supports. If the agent cannot support any requested SIF version, in addition to acknowledging receipt of the message to the ZIS, the agent MUST send a `SIF_Response` message to the Requester with the `SIF_Error` element populated to indicate the nature of the error, a `SIF_PacketNumber` of `1` and the `SIF_MorePackets` element set to indicate that no further packets will be sent in response to the `SIF_Request`.

If any other error occurs while creating `SIF_Response` packets for a given request, in addition to acknowledging receipt of the message to the ZIS, the agent MUST send a `SIF_Response` message to the Requester with the `SIF_Error` element populated to indicate the nature of the error, with `SIF_MorePackets` set to indicate that no further packets will be sent in response to the `SIF_Request`.

Agents supporting `SIF_Request`s MUST be able to return all of the object fields that the responding application supports or a subset of the fields as specified by the query request. For example, an Agent may request that only a student's graduation year be returned and not the entire `StudentPersonal` object. If the responder does not support a requested element, it MUST NOT exclude the object from the response stream. Any requested element that is unsupported is omitted from the response stream; when processing `SIF_Query` requests, parent elements of requested elements, including the object itself, are included in the response stream.

If an application does not support an optional element of an object, it MUST NOT return an empty element. The element MUST instead be omitted from the XML stream.

#### 3.3.4.4 Changes Required to the Vendor's Application

Depending upon the type of architecture, the core application may need to be altered to ensure that the agent is able to forward changes to objects of interest to SIF. For example, an application that edits student data may need to be modified to capture the adds, changes, and deletes made to students and store them into a temporary repository until the agent can forward them to the ZIS. Other architectures provide the ability to trap these changes at a server level eliminating the need for any changes to the application itself.

To meet the SIF requirement of data robustness, it is highly RECOMMENDED that all changes to objects of interest to SIF be persisted using a database table, local message queue, or other highly reliable storage system. This specification allows for the ZIS and any or all agents to be offline at any given time. Without storing agent changes locally, these changes can be lost when the ZIS is temporarily unavailable; local storage allows these changes to be transmitted to the ZIS when it becomes available.

When an object is shared for the first time in SIF, it is the responsibility of the application making the object available to assign its object identifiers/primary keys, typically a RefId in the form of a GUID, before releasing that object to the zone in an `Add` event or in a `SIF_Response`. Some application databases are extended to include SIF object identifiers, others maintain mappings from SIF object identifiers to locally-defined keys.

If an application changes data that maps to a SIF object, it is RECOMMENDED that only the changed fields be sent to the zone. This will result in smaller message sizes and improved performance.

To avoid unintentional overwriting of data, unsupported fields or fields that have not been changed MUST NOT be sent to the zone using empty XML elements, (i.e. <Name Type="04"/> or <Name Type="04"></Name> ); the fields MUST be omitted from the XML stream instead.

#### 3.3.4.5 Support Authentication and Digital Signatures

Supporting authentication is not a requirement but it is highly RECOMMENDED to ensure that your agent will be able to communicate with any ZIS. SIF does not mandate the use of authentication, but it is feasible that many SIF implementations will require this functionality. This is especially true for installations that may use the Internet to transport data.

Typically the authentication and verification mechanisms that are built into the network operating system or transport protocol can be leveraged. If these services are available, authentication and verification take place completely within the underlying security package.

The SIF HTTPS protocol supports authentication between an agent and a ZIS. If authentication is enabled and properly configured, a message receiver (agent or ZIS) can trust the SIF HTTPS implementation to verify that the message in its entirety comes from the claimed sender.

#### 3.3.4.6 Agent Local Queue

An Agent can be developed with a local queuing mechanism so that it can automatically cache incoming messages in a local queue and can acknowledge receipt of each message to the ZIS with "Immediate" `SIF_Ack` messages (which causes the ZIS to remove received messages from the agent's queue). Agents with an Agent Local Queue do not need to send any "Intermediate" `SIF_Ack`s to the ZIS. Use of an Agent Local Queue can be used to locally support selective processing of messages, similar to the functionality provided by Selective Message Blocking; its use also allows more flexibility and robustness during application/system failure when successfully acknowledging events, requests and/or responses before performing the corresponding `SIF_Event`, `SIF_Request` and/or `SIF_Response` handling.

Agent Local Queue is not a required feature of any Agent. Agent developers can choose not to develop the Agent Local Queue mechanism since this is not part of the compliance requirements for the specification at this time.

#### 3.3.4.7 Wildcard Version Support

It is possible for a SIF Zone to contain Agents written to different versions of the SIF Implementation Specification if a ZIS supports multiple versions in a Zone and has at least one version in common with all registered Agents. As such, it is possible for a SIF Zone to contain Agents that have no versions in common with other Agents. These Agents consequently have no ability to exchange `SIF_Event`, `SIF_Request` or `SIF_Response` messages, unless the ZIS provides message conversion as described in "Multiple Version" Zones.

As message conversion is an implementation-dependent feature of a ZIS, it is RECOMMENDED that Agents register in Zones and request data using `SIF_Version` wildcards (see SIF_Register for format) that allow for the exchange of data between Agents supporting any subset of releases within a major release cycle of this specification (e.g. `2.*` or `*` to accept any `SIF_Message` in the 2.x lifecycle). (Note that `*` allows messages from any major version to be delivered, which can be structurally quite different across major versions and pose development challenges, and is not particularly recommended for indicating the ability to receive messages from all versions within a major version release cycle.) This maximizes the ability of Agents to exchange messages and data in these Zones and, for customers, maximizes the utility of Zones supporting different versions of this specification.

Wildcard version support is particularly important for SIF-enabled applications that are not updated with each release of this specification. Furthermore, given that releases of the SIF Implementation Specification are on a more rapid release cycle beginning with version 2.1, typically smaller in scope than SIF Implementation Specification releases historically, it is anticipated that it will become more common for SIF-enabled applications in Zones to support different specification versions, and for more applications not to be updated with each release of this specification. Wildcard version support also allows applications to be SIF-enabled at any time in a SIF Implementation Specification major release cycle without risking the need to upgrade with the introduction of a new minor release of the specification, particularly when the new functionality offered by the specification does not apply to or impact the application.

Ignoring revision releases, the changes typical of releases within a given major version are limited to new data objects and optional additions to existing data objects (and optional infrastructure additions). This nature of a lower release being a subset of each higher release within a major release lifecycle—and of a higher release being a superset of each lower version—allows SIF-enabled applications access to the same elements they rely on at the time of their implementation from SIF messages defined by a number of SIF Implementation Specification versions. For associated implementation notes, see Wildcard Version Support Implementation Notes.

While wildcard version support in this specification is only RECOMMENDED, SIF-enabled application developers should be aware that this support may be mandatory in some SIF Certification Program product standards [SIFCertification] associated with a major release cycle, if application vendors wish to establish their applications as SIF Certified™.

### 3.3.5 Zone Integration Server Requirements

The Zone Integration Server is the central integration point for all the agents in a zone. Depending on the message type, a ZIS either saves information in the messages that it receives or forwards the messages to other appropriate agents.

The ZIS implementer is free to internally manage registration and access permissions information in any form that the implementer supports. In order to provide an example of how an administration system may be structured, this document describes a database consisting of an Access Control List and Zone Status.

#### 3.3.5.1 Access Control List

A ZIS MAY maintain access control on whether a zone administrator has granted an agent permissions to register.

A ZIS MAY exhibit behavior with regard to the ACL that could be perceived by an Agent as if virtual tables exists defining the following information:

Field | Comments
Agent ID | The unique ID for an Agent (provided as the Source ID in a `SIF_Register` message)
Register | May this agent register in the zone?

Table 3.3.5.1-1: Register

An example of this virtual table, which defines which agents are allowed to register in the zone, might be as follows:

Agent ID | Register
RamseySIS | true

Table 3.3.5.1-2: Virtual Table Example (Register)

In addition, a ZIS MUST exhibit behavior with regard to the ACL that could be perceived by an Agent as maintaining per-context/per-object permissions for each message associated with SIF's Publish/Subscribe and Request/Response models. When an agent tries to inquire about a student's personal information, for example, the ZIS needs to check if the agent has the proper permission to request such information. Access control is needed to ensure that the information available in SIF only originates from and is accessible by authorized agents.

Field | Comments
Agent ID | The unique ID for an Agent (provided as the Source ID in a `SIF_Register` message)
Context Name | The name of the SIF Context to which the permissions apply
Object Name | The object being manipulated (e.g., `StudentPersonal`, etc.)
Provide | May this Agent register as the provider for this object in this context?
Subscribe | May this Agent register as a subscriber for this object in this context?
Publish "Add" Event | May this Agent publish "Add" events for this object in this context?
Publish "Update" Event | May the Agent publish "Update" events for this object in this context?
Publish "Delete" Event | May the Agent publish "Delete" events for this object in this context?
Request | May this Agent request this object in this context?
Respond | May this Agent respond to a request for this object in this context?

Table 3.3.5.1-3: Access Control

It is important to understand that this is a virtual table, defining the appearance of the functionality to the Agents, the actual implementation of this functionality is at the discretion of the implementers of a ZIS. An example follows:

Agent ID | Context Name | Object Name | Provide | Subscribe | Publish "Add" Event | Publish "Update" Event | Publish "Delete" Event | Request | Respond
RamseySIS | SIF_Default | StudentPersonal | true | true | true | true | true | false | true
RamseySIS | SIF_Default | LibraryPatronStatus | false | false | false | false | false | true | false
… | … | … | … | … | … | … | … | … | …

Table 3.3.5.1-4: Virtual Table Example (Access Control)

In addition to access control permission violations, attempts to register any of this functionality with the ZIS may fail due to other reasons; e.g. unsupported transport mechanisms, there already being a provider for an object, etc. As a result, an Agent SHOULD be able to gracefully handle corresponding error conditions or report those errors to a zone administrator.

#### 3.3.5.2 Zone Status

The ZIS MUST maintain the status of the zone for implementation purposes, as well as for communicating this status to other agents, as defined in `SIF_ZoneStatus`, when requested. This status includes but is not limited to:

- product information about the ZIS;
- supported transport protocols, authentication methods and SIF versions;
- supported contexts (see below for more information);
- the currently registered agents, along with applicable registration settings and the current state of each agent; and
- lists of currently registered providers, subscribers, publishers, responders, and requesters.

Providing examples of virtual tables that illustrate storage of all the information associated with `SIF_ZoneStatus` is beyond the scope of the specification; implementers should refer to `SIF_ZoneStatus` for requirements.

#### 3.3.5.3 Zone Context Registry

Zone Integration Servers MUST maintain a registry of the contexts used in each zone in order to perform contextual message routing and to populate the `SIF_ZoneStatus/SIF_Contexts` element. This registry will always contain, at a minimum, the official list of contexts defined by the version of SIF that the ZIS supports. Beginning with SIF 2.0, that means that each zone will, at a minimum, support the `SIF_Default` context. A ZIS MAY support allowing additional contexts to be defined within the context registry at the discretion of the ZIS administrator. Access Control Lists within each context MUST also be able to be managed by the ZIS administrator. The set of permissions for each agent within each context MUST be able to be set differently than ACL permissions within a different context for the same agent.

An agent can obtain a list of all contexts currently defined in a zone by requesting the `SIF_ZoneStatus` object and enumerating the children of its `SIF_Contexts` element. An agent can determine its ACL permissions within the zone and each context by referring to the `SIF_AgentACL` object and enumerating the permissions and contexts defined within it.

#### 3.3.5.4 Administration

A ZIS MUST provide an interface for Zone Administrators to configure zone settings, including access control permissions. Given the distributed nature of SIF, it is RECOMMENDED this be a Web-based interface. Some of the areas that require administration are:

Administration
  Start and stop the ZIS and/or set the state of the ZIS to "asleep" or "awake."
Security Policies
  A ZIS must provide an interface for administering access control permissions as described above.
  Administering the minimum `SIF_EncryptionLevel` for the zone (if only one encryption level is supported, configuration options are unnecessary).
  Administering the minimum `SIF_AuthenticationLevel` for the zone (if only one authentication level is supported, configuration options are unnecessary).
  It may also include installing client and server certificate administration.
Zone Settings
  If the ZIS supports more than one SIF version it must support configuration of which SIF versions are used in a zone.
  If the ZIS supports more than one transport protocol, it must allow for configuration of which transports agents can use to communicate, including limiting communication to SIF HTTPS.
  The ZIS must support configuration of the minimum acceptable `SIF_MaxBufferSize` for the zone.
  If message validation is supported and configurable, configuration to enable or disable message validation in a Zone should be available.
Logging
  Capture error and message logs to aid in tracking pending, successful and failed delivery of messages.
Reporting
  Report zone status and statistics.
Testing
  Provide a mechanism to "ping" Push-Mode agents.

#### 3.3.5.5 Support Selective Message Blocking (SMB) to Resolve Deadlocks

##### 3.3.5.5.1 Description

Selective Message Blocking is a feature that MUST be implemented by a ZIS to enable non-multitasking agents unable to persist portions of their message queue locally to request information from other Agents while processing a `SIF_Event` message, without causing communication "deadlock" between an agent and a ZIS.

This feature allows an agent to inform the ZIS with an "Intermediate" `SIF_Ack` message that the ZIS must temporarily stop delivering `SIF_Event` messages to the agent. The "Intermediate" `SIF_Ack` message must not be used by agents in response to messages other than `SIF_Event`. The ZIS, however, can deliver other agent-destined messages, `SIF_Request` and `SIF_Response`, to this agent. After it finishes processing the `SIF_Event` message this agent sends the "Final" `SIF_Ack` message to the ZIS, which will discard the blocked `SIF_Event` message and resume normal delivery of all messages, including `SIF_Event`s. SMB is supported for both Push and Pull modes.

##### 3.3.5.5.2 Requirements

- If, after attempting delivery of a `SIF_Event` message to an agent, the ZIS receives an Intermediate `SIF_Ack` (`SIF_Status/SIF_Code`=`2`) from the agent, the event is blocked and all `SIF_Event` messages destined for the agent, whether already in the queue or that arrive while blocked, are considered frozen. The ZIS will not deliver any `SIF_Event` messages that are frozen.
- If no `SIF_Ack` at all is received, or if a transport error occurs, this `SIF_Event` must be considered an undelivered message. The next message to be delivered to the agent will be this event.
- The ZIS must not deliver another `SIF_Event` message to the agent until a "Final" `SIF_Ack` is received (`SIF_Status/SIF_Code`=`3`), giving the ZIS permission to discard the original event and resume event delivery. The `SIF_OriginalMsgId` in the "Final" `SIF_Ack` MUST contain the `SIF_MsgId` of the blocked `SIF_Event`.
- If `SIF_Event`s are frozen, the next message to be delivered is the oldest message that is not a `SIF_Event` message. Once `SIF_Event`s are unfrozen, all remaining messages in this agent's queue, including `SIF_Event`s, will be delivered in the order in which they have been received by the ZIS.
- If the ZIS receives a `SIF_Wakeup` or `SIF_Register` message then the block on any frozen `SIF_Event` messages will be removed and the originally blocked message will be the next message delivered to the Agent.

##### 3.3.5.5.3 Example

For a detailed example of SMB, see the Selective Message Blocking (SMB) Example.

### 3.3.6 Message Processing

To ensure interoperability, SIF defines a set of messages that are exchanged between agents and Zone Integration Servers. The SIF messages are used to perform various operations such as provision, subscription, event reporting, request and response, and ZIS administration.

#### 3.3.6.1 Message Validation

SIF recommends that each message receiver validate any incoming message to ensure that it is a valid SIF message. A message receiver should discard any messages that do not conform to the definition of `SIF_Message` and return an error to the originator of the message.

This specification will evolve over time to include new messages and modifications to messages that have been defined. Each agent and ZIS should explicitly define which version(s) of the specification they support and validate each incoming message according to its version.

The SIF Association provides an XML Schema [SCHEMA] corresponding to this version of the specification for ZIS and agent implementations that choose to perform optional message validation. Implementations are free to include additional validation above and beyond the validation capabilities that XML Schema provides.

The schemas for all versions of this specification are available from the SIF Association and can be referenced by ZIS and agent implementations that choose to perform optional message validation. This allows implementations to choose schemas based on the particular version in use by an agent or a ZIS. SIF messages MUST NOT be transmitted with hard-coded references to DTDs, schemas or other validation mechanisms. The XML "doctypedecl" (<!DOCTYPE SIF_Message… ) MUST NOT occur in SIF XML messages, nor should `xsi:schemaLocation` be used on `SIF_Message`.

The schemas for supported versions of the SIF Implementation Specification enforce ordering of elements and data typing within objects, as per the element tables given in Infrastructure and Data Model. In the event that ZIS and agent implementations choose not to perform message validation, ZIS and agent implementations must still send elements as ordered with the types specified in the element tables (i.e., well-formed AND valid XML must be sent for approved objects even if validation is known to be turned off). When XML validation is turned off, the sending of draft and locally-defined objects not included in the schemas becomes possible, and these objects may experimentally be sent as desired until they make their way into future versions of the specification and supporting schemas.

ZIS implementations are in the unique position of not only sending messages they themselves formulate; they also forward messages received from agents. When optional message validation is not being performed by a ZIS, it is possible that the ZIS may receive a well-formed but invalid XML message from a non-compliant agent. Under these circumstances, and being the routing mechanism it is, a ZIS is under no obligation to correct an invalid XML message it receives from an agent for delivery to other agents. Zone administrators can prevent invalid XML messages from being delivered if the ZIS supports message validation and they choose to turn that feature on, if configurable. Should it receive an invalid but well-formed message from an agent, a ZIS not performing message validation delivers the message like any other to destination agents.

#### 3.3.6.2 Message Identification

Each message originating from an agent or ZIS needs to have a message identifier (`SIF_MsgId`) that is used to identify the message. In order to eliminate the possibility of duplicated message identifiers, and to provide a consistent way of generating these identifiers, SIF requires the use of a globally unique identifier [RFC 4122] as message identifiers.

The reason that a unique identifier is required is that many messages are handled asynchronously in SIF. This means, for example, that `SIF_Response`s for a given `SIF_Request` message may not arrive until some time in the future. When the `SIF_Response` arrives, it will contain the original `SIF_MsgId` but no other information about the original message is guaranteed to be provided. The message originator must ensure that it will be able to match up the `SIF_Response` with the original message based solely on the message identifier.

For further information concerning the generation of GUIDs, see [RFC 4122].

#### 3.3.6.3 Message Security

Because of policy or legislation, providers of extremely sensitive data must never expose that data over an insecure channel. An insecure channel at delivery time is one whose levels of authentication (`SIF_AuthenticationLevel`) and data encryption (`SIF_EncryptionLevel`) fall below the values specified by the originating sender. Once the data is communicated to the ZIS, the originator of the message depends upon the ZIS to enforce the security levels requested and the ZIS must not deliver that message to recipient agents using an insecure channel. The originating agent requests the use of a secure channel at delivery time by incorporating a `SIF_Security` element in the header of the message. The `SIF_Security` element contains `SIF_AuthenticationLevel` and `SIF_EncryptionLevel` elements that define the minimum level of security a data transport channel must provide upon delivery. If a ZIS does not deliver a message due to insufficient security of the connection with a recipient agent, it is recommended that the ZIS log the inability to deliver the message due to security requirements.

The only SIF messages that currently originate with an agent and that are ultimately delivered to other agents are `SIF_Request`, `SIF_Response` and `SIF_Event`. An originating agent may add a `SIF_Security` element to all messages, but these three messages are the only ones where `SIF_Security` will be examined and processed by the ZIS. `SIF_Security` is used by an originating agent to specify the security requirements of the communication channel between the ZIS and any recipient agent at delivery time. The semantics of including the `SIF_Security` element on messages other than `SIF_Request`, `SIF_Response` and `SIF_Event` are reserved for future versions of the specification.

The specification provides several levels of authentication and encryption protection.

##### 3.3.6.3.1 SIF_AuthenticationLevel

0
  No authentication required and a valid certificate does not need to be presented.
1
  A valid certificate must be presented.
2
  A valid certificate from a trusted certificate authority must be presented.
3
  A valid certificate from a trusted certificate authority must be presented and the CN field of the certificate's Subject entry must match the host sending the certificate.

The CN field is more commonly known as the "Common Name" field. `SIF_AuthenticationLevel` `3` requires that the CN contents match the host where the message was originated. For instance, a CN entry could be "sifinfo.org" or perhaps "207.95.37.30". If a ZIS at SifInfo.org (IP address 207.95.37.30) contacts an agent at MyAgent.sifinfo.org, the agent's SIF HTTPS transport layer can look at the CN entry in the certificate that was presented by the ZIS and compare it to the actual IP address of the ZIS. `SIF_AuthenticationLevel` `3` ensures that not only a valid and trusted certificate was presented but that the agent is actually communicating to the ZIS located at the IP address referenced in the certificate.

Because security is a cornerstone of the SIF specification, it is recommended that all ZIS and Agent implementations support client authentication as well as server authentication. When client authentication is being used, the connection first authenticates the server (the party that is being contacted) and if the authentication was successful, the server will request that the client present its certificate for authentication. In this manner, both the ZIS and the agent confirm that they are communicating with the proper parties.

Since client authentication is not universally available in all SIF HTTPS implementations, client authentication is only recommended. The need for client authentication is reduced somewhat by using asynchronous message delivery (Push mode) since the ZIS and the agent are both server type applications and will authenticate each other. The need for client authentication is greater for those agents polling for messages (Pull mode) because the ZIS never has to initiate contact with the agent.

##### 3.3.6.3.2 SIF_EncryptionLevel

0
  No encryption required
1
  Symmetric key length of at least 40 bits is to be used
2
  Symmetric key length of at least 56 bits is to be used
3
  Symmetric key length of at least 80 bits is to be used
4
  Symmetric key length of at least 128 bits is to be used

If a `SIF_Request`, `SIF_Response` or `SIF_Event` is received by the ZIS that does not contain a `SIF_Security` element, the ZIS assigns the lowest level (`0`) to both the `SIF_AuthenticationLevel` and `SIF_EncryptionLevel` requirements for the message, unless a Zone administrator has configured higher minimum encryption and authentication levels for the Zone. This means that the ZIS may distribute this message to any agent that has registered with the ZIS subject to the access control security provisions in place for the zone.

The lack of a `SIF_Security` element does not mean that the message will be transported in an insecure manner. Recipient agents communicating with the ZIS over secure channels will receive the message in a secure manner, consistent with the connection. Omitting the `SIF_Security` element simply allows for those agents that communicate over insecure channels to receive the message, should a zone allow for insecure channels. A zone administrator can prevent messages without `SIF_Security` elements being communicated over insecure channels by configuring the ZIS and agents in the zone such that a minimum security level is maintained, below which communication is impossible.

For ZIS and agent implementations that support communication protocols or transport implementations where the security of a channel cannot be determined at delivery time, it is recommended that the zone administrator configure the ZIS and agents in the zone such that a minimum security level is maintained, below which insecure connections cannot be established.

##### 3.3.6.3.3 Notes on SIF_AuthenticationLevel

If authentication based on certificates is being used, care needs to be given to determine if Level 2 (anonymous certificates) will provide the necessary level of protection. With Level 2 authentication, it is possible to use a web browser to make secure connections to the ZIS using the certificates that are built into the browser. This level of authentication is what is used by almost all Internet transactions (stock trading, shopping, financial, etc.). Level 2 does expose the user to a risk of a "man-in-the-middle" attack that can't occur using Level 3 authentication.

Level 3 mandates that a certificate issued by a trusted authority, (i.e. school district), be installed in the web browser before the browser will be able to connect to the ZIS. This may place unnecessary burdens on the client especially if it is likely that authorized users may wish to connect to the ZIS using a variety of browsers.

##### 3.3.6.3.4 Notes on SIF_EncryptionLevel

Weaknesses in a cipher algorithm aside, the major governing factor as to the strength of data encryption is the length of the cipher key. Thus a 128-bit implementation typically provides stronger encryption than an 80-bit implementation. Please note that support of some SIF encryption levels may be subject to export control, limiting distribution of all levels in all countries [EXPORT].

There are also two main types of cipher algorithms. The first is called a symmetric cipher, which uses the same key to encrypt and decrypt the data. The second type is called public-key cipher, which depends upon using a private key of the sender along with the public key of the receiver. Because of the nature of public-key ciphers, a larger number of bits must be used to achieve a comparable level of encryption strength.

The `SIF_EncryptionLevel` bit sizes are based on symmetric ciphers. A table that lists the equivalent key length for a public-key cipher is listed below.

Symmetric Key Length | Public Key Length | Strength
40 bits | 256 bits | Very weak, not recommended except for very minimal protection (i.e. prevents casual snooping but can be broken in minutes by knowledgeable attackers).
64 bits | 512 bits | Weak. The current U.S. "standard" has been bumped up to 64 bits from 56 bits but the key length is still weak for sensitive data.
80 bits | 768 bits | Moderate
128 bits | 2048 bits | Strong, recommended for Internet

Table 3.3.6.3.4-1: Key Lengths

For more information regarding this topic, please refer to Chapter 7 of [Schneier].

#### 3.3.6.4 Message Robustness

It is important for SIF to guarantee message delivery no matter what happens during delivery of a message, including an unexpected network breakdown or system crash. This requires that each agent and ZIS save each message in permanent storage. At delivery time it is also possible, however, for a ZIS to be prohibited from delivering a message due to security requirements requested by originating agents for individual messages. If this occurs, it is recommended that ZIS implementations discard the affected message so that delivery of other messages may proceed. If the ZIS does discard the message, the ZIS MUST report a `SIF_LogEntry` event with the appropriate error category and code, containing a copy of the `SIF_Header` from the original message. In addition, it is recommended that the ZIS log the delivery failure to its own log.

When a message is delivered under normal circumstances by a ZIS, an agent will return an "Immediate" `SIF_Ack` or a `SIF_Ack` with any applicable error condition, signaling the ZIS that it may delete the message from permanent storage. In the case of events, agents may also return an "Intermediate" `SIF_Ack` to invoke Selective Message Blocking (SMB). In that case, the ZIS will not delete the current `SIF_Event` from permanent storage until the agent sends a "Final" `SIF_Ack` to the ZIS.

When a message is sent to the ZIS under normal circumstances by an agent, the ZIS returns a successful `SIF_Ack` or a `SIF_Ack` with any applicable error condition to indicate to the agent that it has in fact received the message and that the agent may delete the message from any permanent storage.

If a ZIS or agent encounters a transport error in sending a message, it is recommended that the sender retry sending the message. Transport errors where retrying the message is warranted include, but are not limited to, a connection close without a `SIF_Ack` returned, a transport error or a `SIF_Ack` with an error category of 10 indicating a connection cannot currently be established, etc. A ZIS in particular must retry delivery of messages from the agent queue until a `SIF_Ack` that removes the message from the agent's queue is received, subject to certain undeliverable error conditions (e.g. security requirements cannot be negotiated, maximum buffer size too small, etc.). Facing such error conditions, other potentially unresolvable transport errors, or if a `SIF_Ack` is returned with any other type of error category, the sender may decide not to retry or—when queued, to delete—a message to avoid a potential deadlock condition. Agents returning `SIF_Ack` messages with error conditions should be aware that such acknowledgements will remove the currently pending message from their delivery queue.

#### 3.3.6.5 Message Cycle

All SIF messages follow the same model. The sender posts a message and receives a `SIF_Ack` back as a response. The posting of the message by the sender and the receipt of the `SIF_Ack` from the receiver constitutes one complete cycle. Agents and ZISes can function as senders or receivers, depending on the type of message. The message process is identical, regardless of the type of message being sent.

If for any reason a sender inadvertently resends a message with a given `SIF_MsgId` and the receiver detects this, the receiver may return a `SIF_Status` code indicating that it already has the message. This `SIF_Status` code is considered a success; the receiver simply discards the duplicate message and continues handling of the original message.

#### 3.3.6.6 Message Delivery

There are two models for delivering messages to an agent, "Push" and "Pull." An agent specifies which mode it wants to use when it registers with the ZIS.

"Push" refers to the action by a ZIS to actively deliver messages to an agent without the agent having to initiate contact with the ZIS. When the ZIS receives a message for an agent and the agent is not in "Sleep" mode; the ZIS will initiate contact with the agent and send the message to the agent.

"Pull" refers to the action by an agent to explicitly request a single message from the ZIS. When an agent is ready to receive a message, it sends a "Pull" request to the ZIS, to obtain a message that the ZIS has saved in the queue for the agent. After receiving the pull request, the ZIS will examine the agent's queue and either returns a message or a status code indicating that no messages are available for the agent.

Both modes serve useful purposes. The key requirement is that both an agent and its ZIS must communicate using the SAME mode to avoid potential conflicts.

At delivery time, be it in push or pull mode, a ZIS may encounter messages that it is prohibited from delivering, e.g. due to security requirements requested by originating agents for individual messages, etc. If this occurs, it is recommended that ZIS implementations discard the affected message(s) so that delivery of other messages may proceed. If the ZIS does discard a message, the ZIS MUST report a `SIF_LogEntry` event with the appropriate error category and code, containing a copy of the `SIF_Header` from the original message. `SIF_LogEntry/SIF_Desc` must contain the SourceId of the agent that has failed to receive the message. In addition, it is recommended that the ZIS log the delivery failure to its own log.

##### 3.3.6.6.1 The "Push" Model

When an agent has registered using the "Push" mode, the agent assumes that the ZIS will open a transport connection and send the next available message to the agent. An agent can reply to the sent message with an "Immediate" or optionally—in the case of `SIF_Event`s—an "Intermediate" `SIF_Ack`, invoking Selective Message Blocking (SMB); it can also reply using a `SIF_Ack` with any applicable error condition. "Immediate" or error `SIF_Ack`s remove the current message from the agent's queue, freeing any remaining or future messages to be delivered to the agent. A "Final" `SIF_Ack` sent to the ZIS will terminate SMB, removing the frozen event from the agent's queue, freeing any remaining or future messages to be delivered to the agent.

##### 3.3.6.6.2 The "Pull" Model

When an agent has registered using the "Pull" mode, the agent requests a message from the ZIS by sending a `SIF_GetMessage` message to the ZIS.

An agent can only issue a `SIF_GetMessage` to request a message if the agent has previously sent a successful `SIF_Register` message specifying Pull mode. If the ZIS receives a `SIF_GetMessage` request and the agent hasn't registered using the Pull mode, the ZIS must return a `SIF_Ack` containing an error category of Registration and an error code indicating that the agent has registered using Push mode.

After receiving a `SIF_GetMessage` request from an agent, the ZIS will return the next message available for delivery to the agent, subject to Selective Message Blocking. The criteria used to select the message are identical to that used if the ZIS were to Push a message to an agent.

If a message is available for the agent, the ZIS will return a `SIF_Ack` message with a `SIF_Status/SIF_Code` of `0` and `SIF_Status/SIF_Data` containing the message from the queue:

<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>ABCD1058E028D076F083738296372D4E</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>1058ABCDE028D076F083283BC63E6276</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_Message Version="2.3"> <SIF_Event> <SIF_Header> <SIF_MsgId>AB34DC093261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLib</SIF_SourceId> </SIF_Header> <SIF_ObjectData> <SIF_EventObject ObjectName="StudentPersonal" Action="Change"> <StudentPersonal RefId="D3E34B359D75101A8C3D00AA001A1652"> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> </PersonInfo> </StudentPersonal> </SIF_EventObject> </SIF_ObjectData> </SIF_Event> </SIF_Message> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 3.3.6.6.2-1: The "Pull" Model - SIF_Status/SIF_Code of 0

When a pull-mode agent supports multiple SIF specification versions, the version of the `SIF_Ack` message returned by the ZIS must match the version of any `SIF_Message` contained in `SIF_Status/SIF_Data`. For example, if an agent supports versions 1.1 and 1.5 (or 1.*) and the next message in the agent's queue has a `SIF_Message/@Version` value of `1.5`, the `Version` attribute of the `SIF_Ack` message returned by the ZIS must be `1.5`, even if the pull-mode agent sent its `SIF_GetMessage` in a 1.1 `SIF_Message`. For an agent that supports both 1.1 or later versions and pre-1.1 version(s) (e.g. 1.0r2), when the next message in the agent's queue is from a pre-1.1 agent, the ZIS must return the message in a `SIF_Ack` message as defined by the pre-1.1 specification.

A pull-mode agent removes the returned message from its queue in one of three ways. In each case the value for the `SIF_OriginalMsgId` element in any `SIF_Ack`(s) created by the agent originates from the `SIF_MsgId` of the `SIF_Message` returned as `SIF_Data` by the ZIS. Typically a pull-mode agent removes the message from its queue by sending an "Immediate" `SIF_Ack` to the ZIS; an agent may also send a `SIF_Ack` with any applicable error condition to the ZIS. The ZIS then removes the message from the agent's queue and returns a successful `SIF_Ack`. If the message is a `SIF_Event` and the agent wishes to invoke SMB, it can instead notify the ZIS that it is processing the event by sending an "Intermediate" `SIF_Ack` (which the ZIS acknowledges with a successful `SIF_Ack`) and later sending a "Final" `SIF_Ack` when the `SIF_Event` processing is complete. When the ZIS receives the "Final" `SIF_Ack`, it removes the `SIF_Event` from the agent's queue and returns a successful `SIF_Ack`.

If there are no messages in the agent's queue that can be delivered, the ZIS will return a `SIF_Ack` message with a `SIF_Status/SIF_Code` of `9` to indicate that there are no messages available for the agent:

<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>ABCD1058E028D076F0835E32AC89E048</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>1058ABCDE028D076F08365109BE7C892</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>9</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 3.3.6.6.2-2: The "Pull" Model - SIF_Status/SIF_Code of 9

##### 3.3.6.6.3 "Multiple Version" Zones

It is possible for a zone to contain agents written to different versions of the SIF Implementation Specification if a ZIS supports multiple versions in a zone and has at least one version in common with all registered agents. It is possible that two agents in the same zone—both successfully registered—have no version in common, and this affects message delivery by the ZIS in the following manner.

When the next message to be delivered to a given agent has a `SIF_Message/@Version` attribute that the agent is known not to support, the ZIS cannot successfully deliver that message to the agent without conversion. Should a ZIS implementation choose to convert messages on the fly as a "value-add" feature, it is free to do so; this specification does not prescribe how to convert messages, and support for such conversion is implementation-dependent. However, if the ZIS does not or cannot convert the message such that it can be delivered, it should discard the pending message so that delivery of other messages may proceed. If the ZIS does discard the message, the ZIS MUST report a `SIF_LogEntry` event with the appropriate error category and code, containing a copy of the `SIF_Header` from the original message. `SIF_LogEntry/SIF_Desc` must contain the SourceId of the agent that has failed to receive the message. In addition, it is recommended that the ZIS log the delivery failure to its own log.

### 3.3.7 Infrastructure Transport Layer

The Infrastructure messages are used by SIF to encapsulate and transfer the data objects. They form a messaging application program interface (API) which is expressed in XML.

It is a design objective to express the entire Infrastructure API in XML and not to have dependencies upon any underlying transport layer to provide functionality other than the transportation of the XML from client to server and back. This ensures that the Infrastructure messages can be carried over a variety of communication transports.

The infrastructure depends upon the transport layer to provide a reliable connection to move messages back and forth from client and server. The transport layer is also responsible for providing data security by means of data encryption and authentication of the client and server. Some transport layers even provide data compression, which is an important factor when processing a large volume of XML messages.

By delegating the authentication, compression, and encryption to the transport layer, it makes the user interface to the transport simpler. A client that wishes to send an infrastructure message assembles the message in XML and then hands it off to the transport layer for delivery. The transport layer takes the XML message and transfers it to the server where it is taken from the transport layer and processed.

In moving from the client to the server, the transport may have compressed, encrypted, and authenticated the connections but all of this is transparent to the users of the Infrastructure API. To the user, it is XML in and XML out.

Different types of transports are or will become available providing various features and benefits. An Agent or ZIS MAY employ multiple transport protocols but they MUST support SIF HTTPS.

Please note that throughout this specification transport layer errors are sometimes illustrated as `SIF_Ack` messages with `SIF_Error/SIF_Category` of Transport and applicable error codes. Under many transport error conditions, these `SIF_Ack` messages could not be returned or sent by the remote host. Depending on the SIF infrastructure transport layer implementation these messages may be generated by the implementation (e.g. when a connection to a server cannot be established), or may occur as transport layer errors or exceptions in the underlying network operating system or transport protocol. Both should be treated equivalently.

#### 3.3.7.1 SIF HTTPS Transport

In order to ensure that Agents and Zone Integration Servers can communicate with each other regardless of vendor or platform, all Agent and ZIS implementations MUST support the SIF HTTPS transport layer protocol.

SIF HTTPS is a combination of the HTTP 1.1 protocol [RFC 2616] with secure socket layer (SSL) protocols, resulting in an easy-to-use and secure transport protocol. The RECOMMENDED SSL implementation is TLS 1.0 [RFC 2246]; however, SSL 3.0 [SSL3] is also supported and SSL 2.0 client hellos [SSL2] used to negotiate TLS 1.0 or SSL 3.0 connections are also permitted. Support for the SSL 2.0 protocol itself—aside from its client hello message—is not provided in SIF. Due to the age of the SSL 3.0 and SSL 2.0 protocols and the increasing prevalence of TLS 1.0, The SIF Association expects to deprecate support for the SSL 3.0 protocol and SSL 2.0 client hellos in future major releases of this specification.

Being based upon HTTP 1.1, the SIF HTTPS and SIF HTTP protocols support persistent or keep-alive connections that greatly increase the message throughput between sender and receiver. This is an especially important factor when using HTTP in conjunction with secure socket layers, where there is a significant amount of overhead when initially opening a connection.

When using HTTP 1.1 with SIF, [RFC 2616] can be used as a reference, however SIF uses a subset of the HTTP 1.1 protocol. For example, only the POST method and the 200-OK response notice are used by the SIF HTTPS protocol.

Support of Transfer Encoding and data chunking ([RFC 2616], Section 3.6) is not required for SIF HTTPS. An implementation of the protocol may support Transfer Encoding and data chunking but it must be able to communicate successfully with a client or server that does not support this feature.

Because protocol changes are handled at the Infrastructure XML API level, a client or server must not use the `Connection: Upgrade` or `Upgrade: xxx` headers to invoke a request for a protocol change. If a client or server receives an upgrade header, it must ignore that header and not change communication protocols.

##### 3.3.7.1.1 HTTPS Request/Response Model

A client is the party (Agent or ZIS) who initiates a connection to a remote machine. The remote end (ZIS or Push-Mode Agent) is known as the server.

A client using the SIF HTTPS protocol opens a connection to the server and sends a HTTP 1.1 POST request with the SIF Infrastructure XML message as the POST payload. The server responds with an HTTP response with the Infrastructure XML acknowledgement message as the response payload. Clients MUST encode the XML message using UTF-8; servers MUST be able to process UTF-8-encoded XML and SHOULD expect all incoming SIF XML messages to be encoded using UTF-8.

The default behavior for HTTP 1.1 is to use persistent or "keep-alive" connections. When operating in this mode, the client may send additional POST requests and receive the HTTP responses using the same connection. Clients SHOULD use persistent connections for performance reasons but MUST be able to use non-persistent connections if the server does not wish to use persistent connections.

##### 3.3.7.1.2 HTTP Request Headers

The following HTTP request and common headers defined in [RFC 2616]MUST be present in all SIF HTTPS messages sent by a client:

Header | Description | Required Contents
Content-Length | The exact size of the attached payload (XML message) |
Content-Type | Describes the contents of the request. Firewall and web server programs can filter messages going through a network by examining this header. | application/xml;charset="utf-8"
Host | Specifies the Internet host and port number of the destination server |

Table 3.3.7.1.2-1: HTTP Request Headers

Note that all header values MUST conform to the requirements of [RFC 2616] and MAY take equivalent forms subject to those requirements (e.g. `application/xml;charset=utf-8` (no quotes), `application/xml; charset=utf-8` (optional spacing), etc.).

In addition to the headers above, a client may include a `Connection: close` header in the HTTP request if it wishes to close the current connection after receiving the response. If this header is included, the client MUST NOT send additional requests on this connection. The client MUST close the connection after receiving the response.

Clients may also include an "Expect: 100-continue" header (see below).

Additional headers beyond the required and optional headers listed here MAY be included by a client; however, the server MUST be able to successfully process POST requests that only contain the required headers.

POST /MyPath HTTP/1.1 Content-Length: 420 Content-Type: application/xml;charset="utf-8" Host: sifinfo.org:8000 <SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>56409F0C01FBD1C44300B4518E100765</SIF_MsgId> <SIF_Timestamp>2006-04-11T18:18:13-05:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestAgent</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Ping /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 3.3.7.1.2-1: SIF HTTPS Request

Implementations of SIF HTTPS MUST be able to specify the value for the path (`/MyPath` in the example) as the Agent or ZIS may require a specific value for routing purposes.

##### 3.3.7.1.3 HTTP Response Headers

The following HTTP response and common headers defined in [RFC 2616] must be present in all SIF HTTPS responses messages sent by a server:

Header | Description | Required Contents
Content-Length | The exact size of the attached payload (XML message) |
Content-Type | Describes the contents of the request. Firewall and web server programs can filter messages going through a network by examining this header. | application/xml;charset="utf-8"
Date | The current date and time in the format described in RFC 2616 Section 3.3. Note that the date is UTC based and NOT local time. |
Server | Identifies the server sending the response. Clients may use this information to infer information about the server being contacted (vendor, model, version, capabilities, etc.) |

Table 3.3.7.1.3-1: HTTP Response Headers

Note that all header values MUST conform to the requirements of [RFC 2616] and MAY take equivalent forms subject to those requirements (e.g. `application/xml;charset=utf-8`, `application/xml; charset=utf-8`, etc.).

In addition to the headers above, a server MAY include a `Connection: close` header in the HTTP response if it wishes to close the current connection after sending the response. The server MUST close the connection after sending the response.

The server MAY include additional headers; however, the client MUST be able to successfully process response notices that only contain the required headers and optional header listed here.

HTTP/1.1 200 OK Content-Length: 529 Content-Type: application/xml;charset="utf-8" Date: Mon, 02 Apr 2001 23:32:00 GMT Server: SIFZIS;V1.1 <SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>4A900E10F4E675CF4A01B4518E100765</SIF_MsgId> <SIF_Timestamp>2006-04-11T18:18:13-05:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>SifInfo_TestAgent</SIF_OriginalSourceId> <SIF_OriginalMsgId>56409F0C01FBD1C44300B4518E100765</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 3.3.7.1.3-1: SIF HTTPS Response

Although the SIF HTTPS protocol uses the 200-OK response notice to communicate all responses, Agent or ZIS implementations could be built using existing web server infrastructures. As such, SIF HTTPS implementations should expect the possible receipt of other HTTP 1.1 response notices.

##### 3.3.7.1.4 100 (Continue)

This response message status is generally returned if the client has included an `Expect: 100-continue` header in its request. Certain web server implementations return a 100 (Continue) status response even though the original request did not contain an `Expect: 100-continue` header. When a client receives an unexpected response with a 100 (Continue) status, it must discard that response and wait for a subsequent final (e.g. 200-OK) response. Clients explicitly requesting a 100 (Continue) status response by including an `Expect: 100-continue` header in a request should proceed with the request body according to section 8.2.3 of the HTTP 1.1 [RFC 2616] specification upon receipt of the 100 (Continue) status response.

A SIF HTTPS client may include an `Expect: 100-continue` header but generally does not. If it does, however, servers (ZIS and push-mode agent implementations) must handle the header according to section 8.2.3 of the HTTP 1.1 [RFC 2616] specification, possibly returning an intermediate response with 100 (Continue) status, for communication to proceed correctly.

##### 3.3.7.1.5 3XX, 4XX, 5XX Notices

A server should only return 200-OK response notices but may return other notices. Servers built using existing web server technology are more likely to return other types of response notices. If a client receives any 3xx, 4xx, or 5xx response notices, it must treat these responses as if a transport error has occurred.

#### 3.3.7.2 SIF HTTP Transport

The SIF HTTP protocol is identical to the SIF HTTPS transport without a secure socket layer to provide data encryption and authentication.

An Agent or ZIS MAY implement the SIF HTTP transport but MUST implement the SIF HTTPS protocol.

Because of the sensitive data being exchanged in SIF, it is RECOMMENDED that only SIF HTTPS be used.

#### 3.3.7.3 SIF HTTP(S) Transport Compression

It is possible that compression can improve network throughput in SIF implementations where large amounts of data are transferred over SIF HTTP(S), either horizontally or vertically. The HTTP 1.1 specification [RFC 2616] allows for negotiating the content encoding (and compression) of server responses using the `Accept-Encoding` request header and the `Content-Encoding` response header. Registered content encodings include in addition to the default uncompressed `identity` encoding a number of compressed encodings: `gzip`, `compress` and `deflate`. A client can specify one or more encodings to use in a response along with its preference for each using `Accept-Encoding`, and the server responds accordingly, per the HTTP specification. If the server does not support a requested encoding, it is recommended the server return a `406 (Not Acceptable)` status code.

POST /MyPath HTTP/1.1 Content-Length: 420 Content-Type: application/xml;charset="utf-8" Accept-Encoding: gzip Host: sifinfo.org:8000 <SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> ... </SIF_Message>
Example 3.3.7.3-1: SIF client requesting compression of response
HTTP/1.1 200 OK Content-Length: 24 Content-Type: application/xml;charset="utf-8" Content-Encoding: gzip Date: Wed, 25 Apr 2007 23:32:00 GMT Server: SIFZIS ...compressed SIF_Ack...
Example 3.3.7.3-2: SIF server returning compressed SIF_Ack

The content encoding of any HTTP entity body, either in a request or a response, is indicated using the `Content-Encoding` header, which is considered a modifier to the `Content-Type` header. A client may compress or apply an encoding to the body of an HTTP request and indicate it has done so with an appropriate `Content-Encoding` value. It is recommended that a server that cannot or will not accept a particular encoding return a `415 (Unsupported Media Type)` status code.

POST /MyPath HTTP/1.1 Content-Length: 149 Content-Type: application/xml;charset="utf-8" Content-Encoding: gzip Host: sifinfo.org:8000 ...compressed SIF_Message...
Example 3.3.7.3-3: SIF client sending compressed SIF_Message
POST /MyPath HTTP/1.1 Content-Length: 149 Content-Type: application/xml;charset="utf-8" Content-Encoding: gzip Accept-Encoding: gzip Host: sifinfo.org:8000 ...compressed SIF_Message...
Example 3.3.7.3-4: SIF client sending compressed SIF_Message and requesting compression of response

With these HTTP-defined headers, SIF Agents and Zone Integration Servers have the ability to compress or negotiate compression of SIF HTTP(S) request and response entity bodies using any version of SIF where the transport protocol is SIF HTTPS or SIF HTTP. However, to increase interoperability of Agents and Zone Integration Servers that wish to compress requests or receive compressed responses beyond the level of trial and error in an environment where server status codes are not guaranteed, the following mechanisms were developed in SIF Implementation Specification Version 2.1.

#### 3.3.7.4 SIF_Protocol/SIF_Property Accept-Encoding

In both `SIF_Register` and `SIF_ZoneStatus` the following `SIF_Property` is defined when used in conjunction with a `SIF_Protocol/@Type` value of `HTTPS` or `HTTP`:

`SIF_Name` | `SIF_Value`
--- | ---
`Accept-Encoding` | An `Accept-Encoding` header value as per HTTP 1.1 [RFC 2616].

This property indicates that an HTTP(S) server can accept corresponding content encodings with an appropriate `Content-Encoding` header value.

<SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://www.sifinfo.org/sifagent/MyAgent/</SIF_URL> <SIF_Property> <SIF_Name>Accept-Encoding</SIF_Name> <SIF_Value>gzip</SIF_Value> </SIF_Property> </SIF_Protocol>
Example 3.3.7.4-1: SIF_Protocol with Accept-Encoding indicating acceptance of gzip (and identity)
<SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://www.sifinfo.org/sifagent/MyAgent/</SIF_URL> <SIF_Property> <SIF_Name>Accept-Encoding</SIF_Name> <SIF_Value>gzip;q=1.0, identity;q=0.5, *;q=0</SIF_Value> </SIF_Property> </SIF_Protocol>
Example 3.3.7.4-2: SIF_Protocol with Accept-Encoding indicating no acceptance of encodings other than gzip or identity, gzip preferred over identity

The recommended compression algorithm for use in SIF is `gzip`. It is NOT RECOMMENDED that the `identity` (uncompressed) encoding ever be explicitly excluded in the `Accept-Encoding` `SIF_Property`.

#### 3.3.7.5 HTTP Client Requirements

A client (ZIS, Push- or Pull-Mode Agent) that wishes to receive a compressed response MUST include an `Accept-Encoding` header, per HTTP 1.1, and MUST be prepared to handle a `406 (Not Acceptable)` or other HTTP error, in which case the client SHOULD assume compression using the specified algorithm(s) is not supported and retry communication as per SIF HTTPS Transport or SIF HTTP Transport above. Clients MUST be prepared to receive `identity`-encoded (unencoded) responses unless the client explicitly excludes `identity` in its `Accept-Encoding` header, which is NOT RECOMMENDED.

Zone Integration Servers MAY consult a Push-Mode Agent's registered `SIF_Protocol/SIF_Property` value where `SIF_Name` is `Accept-Encoding` before contacting the Agent and SHOULD assume that posting a corresponding encoded entity body accompanied by the applicable `Content-Encoding` header value will be processed without content encoding support errors by the Agent.

Push- and Pull-Mode Agents MAY consult a Zone's supported compression algorithms in the `SIF_ZoneStatus/SIF_SupportedProtocols/SIF_Protocol/SIF_Property` entitled `Accept-Encoding` in `SIF_Name` before contacting the Zone Integration Server and SHOULD assume that posting a corresponding encoded entity body accompanied by the applicable `Content-Encoding` header value will be processed without content encoding support errors by the ZIS.

#### 3.3.7.6 HTTP Server Requirements

A server (ZIS or Push-Mode Agent) that receives an HTTP request with an `Accept-Encoding` header MUST process the request per HTTP 1.1's `Accept-Encoding` specification. It is RECOMMENDED that servers return a `406 (Not Acceptable)` status when a requested encoding cannot be negotiated.

A server that receives an HTTP request with a `Content-Encoding` header specified MUST process the request per HTTP 1.1's `Content-Encoding` specification. It is RECOMMENDED that servers unable to process a particular content encoding return a `415 (Unsupported Media Type)` status code.

#### 3.3.7.7 Push-Mode Agent Requirements

A Push-Mode Agent that wishes to receive compressed/encoded requests from the ZIS MUST register its preference with the ZIS in the `SIF_Register/SIF_Protocol` property entitled `Accept-Encoding` in `SIF_Name`, providing an `Accept-Encoding` value in `SIF_Value` per HTTP 1.1 (the recommended compression algorithm for SIF is `gzip`). The Agent MUST be prepared to handle an error `SIF_Ack` from the ZIS when registering `Accept-Encoding` (`SIF_Error/SIF_Category` of `5` [Registration], `SIF_Error/SIF_Code` value of `10`) if the ZIS cannot support at least one specified encoding and SHOULD re-attempt registration without `Accept-Encoding`.

Upon successful registration of an `Accept-Encoding` value, the Agent SHOULD expect to receive requests from the ZIS encoded accordingly, but it MAY received `identity`-encoded (unencoded) requests unless `identity` was explicitly excluded in the registered `Accept-Encoding` value.

#### 3.3.7.8 Zone Integration Server Requirements

A Zone Integration Server that receives a `SIF_Register/SIF_Protocol/SIF_Property` named `Accept-Encoding` in `SIF_Name` must fail the attempt to register if the ZIS does not support at least one of the specified encodings (`SIF_Error/SIF_Category` of `5` [Registration], `SIF_Error/SIF_Code` value of `10`). While this property is typically registered by Push-Mode Agents, Pull-Mode Agents may also specify this property when registering. A ZIS SHOULD compress requests when contacting a Push-Mode Agent if the Agent has previously registered that preference, but it MAY send uncompressed requests if the Push-Mode Agent did not explicitly exclude the `identity` encoding in its registered `Accept-Encoding` value.

Zone Integration Servers that support handling of compressed/encoded requests SHOULD return an `Accept-Encoding` header `SIF_Value` in the `SIF_ZoneStatus/SIF_SupportedProtocols/SIF_Protocol/SIF_Property` named `Accept-Encoding` in `SIF_Name`.

# 4 Messaging

This section documents the messaging and message handling protocols defined in SIF. A messaging protocol consists of sending a `SIF_Message` to initiate an operation, receiving back a `SIF_Ack`; a message handling protocol consists of processing an incoming `SIF_Message` and responding with a `SIF_Ack` and possibly sending follow-up `SIF_Message`s. This section is independent of transport layer details, aside from encryption and authentication level impacts associated with individual messages. Unless otherwise noted, all protocols assume successful communication over the appropriate transport layer; agent and ZIS implementations should also be prepared to handle transport layer errors and exceptions, directly or wrapped in a `SIF_Ack/SIF_Error` by underlying code.

## 4.1 Agent Protocols

### 4.1.1 Agent Messaging Protocols

This section documents how Agents should send individual messages, and the resulting post-conditions upon success or failure, along with any necessary steps to take. These correspond to each of the operations an Agent can initiate.

#### 4.1.1.1 SIF_Register

An Agent must register with the ZIS to participate in a Zone. To do so, it sends a `SIF_Register` message. An Agent may at any time re-register by sending another `SIF_Register` message. The ZIS updates the Agent's registered settings accordingly.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Register` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place your Agent's name, supported versions and maximum buffer size for receiving messages into `SIF_Name`, `SIF_Version` and `SIF_MaxBufferSize`, respectively. Specify whether your Agent is Push- or Pull-mode in `SIF_Mode`. If `SIF_Mode` is `Push`, specify the protocol information for the ZIS to use when delivering messages to your agent in `SIF_Protocol`; optional compression settings may be included in the `Accept-Encoding` `SIF_Protocol/SIF_Property`. If desired, supply optional information regarding your Agent and/or application in `SIF_NodeVendor`, `SIF_NodeVersion`, `SIF_Application` and `SIF_Icon`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is now registered in the Zone. The Access Control settings for your agent (`SIF_AgentACL` are in `SIF_Status/SIF_Data`). | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. Note particularly category `5`. If an `Accept-Encoding` `SIF_Protocol/SIF_Property` was specified, the ZIS may return error code `10` (ZIS does not support the requested `Accept-Encoding` value). Your agent SHOULD re-attempt registration without, or with another, `Accept-Encoding` value. | Messaging protocol complete (failure).

Table 4.1.1.1-1: SIF_Register Protocol

#### 4.1.1.2 SIF_Unregister

An Agent removes itself from a Zone by sending a `SIF_Unregister` message to the ZIS. Successful completion of this operation removes all settings associated with the Agent, including the objects it is currently providing and subscribed to in the zone; the Agent's message queue is also deleted. Note that a successful `SIF_Unregister` message may, depending on the ZIS implementation, remove access control settings that have been manually configured by a Zone administrator and that may need to be re-configured for a subsequent successful `SIF_Register`.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Unregister` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is now removed from the Zone. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.2-1: SIF_Unregister Protocol

#### 4.1.1.3 SIF_Provide

An Agent registers with the ZIS to be the default Responder, or Provider, for one or more SIF objects in one or more contexts by sending a `SIF_Provide` message to the ZIS. The Agent must have access control rights at the ZIS to successfully register as a Provider for an object.

Note that upon successful completion of `SIF_Provide` that your Agent is still the Provider of any objects for which it was previously registered as the Provider. To unregister as the Provider of given objects, use `SIF_Unprovide`. To replace all objects your Agent provides in one operation, use `SIF_Provision`.

As of version 2.0 of this specification, `SIF_Provision` is the preferred method for registering an Agent as a Provider, and provisioning an Agent in general. Support for `SIF_Provide` may be removed in a future major release of this specification.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Provide` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. For each object your Agent would like to provide, place a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). Your Agent's support for `SIF_ExtendedQuery` can be specified in `SIF_ExtendedQuerySupport` for each object. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is now the Provider of each of the objects specified in the `SIF_Provide` message, in the applicable context(s). Any request sent by an Agent for one of these objects without explicitly specifying a particular Responder in `SIF_Header/SIF_DestinationId` will be placed in your Agent's message queue. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. Note particularly category `4`, code `3` (no permission to provide) and category `6`, code `4` (object already has a Provider). | Messaging protocol complete (failure).

Table 4.1.1.3-1: SIF_Provide Protocol

#### 4.1.1.4 SIF_Unprovide

Your Agent unregisters with the ZIS as the default Responder, or Provider, for one or more SIF objects in one or more contexts by sending a `SIF_Unprovide` message to the ZIS. Note that any `SIF_Request`s for these objects already pending in your Agent's queue will still be delivered.

As of version 2.0 of this specification, `SIF_Provision` is the preferred method for unregistering an Agent as a Provider, and provisioning an Agent in general. Support for `SIF_Unprovide` may be removed in a future major release of this specification.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Unprovide` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. For each object your Agent would like to provide, include a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is no longer the Provider of each of the objects specified in the `SIF_Unprovide` message, in the applicable context(s). `SIF_Request`s will no longer be routed to your Agent by default, but this does not prevent other Agents from sending requests directly to your Agent (if permitted by access control rights). | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.4-1: SIF_Unprovide Protocol

#### 4.1.1.5 SIF_Subscribe

An Agent registers with the ZIS to receive `SIF_Event`s for one or more SIF objects in one or more contexts by sending a `SIF_Subscribe` message to the ZIS. The Agent must have access control rights at the ZIS to successfully subscribe to events for an object.

Note that upon successful completion of `SIF_Subscribe` that your Agent is still subscribed to objects to which it had previously subscribed. To unregister as a Subscriber of given objects, use `SIF_Unsubscribe`. To replace all objects to which your Agent subscribes in one operation, use `SIF_Provision`.

As of version 2.0 of this specification, `SIF_Provision` is the preferred method for registering an Agent as a Subscriber, and provisioning an Agent in general. Support for `SIF_Subscribe` may be removed in a future major release of this specification.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Subscribe` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. For each object your Agent would like to subscribe to, place a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is now subscribed to each of the objects specified in the `SIF_Subscribe` message, in the specified context(s) if included. Any `SIF_Events` for these objects will be placed in your Agent's queue. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. Note particularly category `4`, code `4` (no permission to subscribe). | Messaging protocol complete (failure).

Table 4.1.1.5-1: SIF_Subscribe Protocol

#### 4.1.1.6 SIF_Unsubscribe

To stop receiving `SIF_Event`s for one or more objects in one or more contexts, an Agent sends a `SIF_Unsubscribe` message to the ZIS. Note that if there are events already pending in your Agent's queue for these objects, they will still be delivered after a successful `SIF_Unsubscribe`.

As of version 2.0 of this specification, `SIF_Provision` is the preferred method for unregistering an Agent as a Subscriber, and provisioning an Agent in general. Support for `SIF_Unsubscribe` may be removed in a future major release of this specification.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Unsubscribe` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. For each object your Agent would like to cease receiving events, include a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is now unsubscribed from each of the objects specified in the `SIF_Unsubscribe` message, in the applicable context(s). `SIF_Events` for these objects will cease to be placed in your Agent's queue. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.6-1: SIF_Unsubscribe Protocol

#### 4.1.1.7 SIF_Provision

The `SIF_Provision` message provides an Agent the ability to register the objects it provides and to which it subscribes in a single operation, replacing whatever settings the ZIS has on record for the Agent. In effect it is an alternative to `SIF_Provide`, `SIF_Unprovide`, `SIF_Subscribe` and `SIF_Unsubscribe`, though an Agent may choose to use this message or those, or a combination of these messages.

This message also allows the Agent to fully describe the operations it will perform in a Zone beyond those that can be communicated with `SIF_Provide` and `SIF_Subscribe`, including the types of events it will publish, the requests to which it will respond with or without being the Provider for requested objects, and the objects for which it sends requests.

The Agent must have the appropriate access control settings to successfully register any of the corresponding information included in `SIF_Provision`. Note that the list of access control settings can be determined by examining the `SIF_AgentACL` object returned in the `SIF_Register` or `SIF_GetAgentACL` message protocols.

Note that `SIF_Provision` will also fail if the Agent is attempting to provide an object that is already provided by another Agent in the applicable Zone Context. The list of Providers in a Zone can be found in `SIF_ZoneStatus`.

As of version 2.0 of this specification, `SIF_Provision` is the preferred method for provisioning an Agent. Support for `SIF_Subscribe`, `SIF_Unsubscribe`, `SIF_Provide` and `SIF_Unprovide` may be removed in a future major release of this specification.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Provision` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Include `SIF_ProvideObjects` and for each object your Agent would like to provide, place a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). Your Agent can also state its support for `SIF_ExtendedQuery` in `SIF_ExtendedQuerySupport`, which defaults to `false`. Include `SIF_SubscribeObjects` and for each object to which your Agent would like to subscribe, place a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). Include `SIF_PublishAddObjects`, `SIF_PublishChangeObjects` and `SIF_PublishDeleteObjects` elements and include a `SIF_Object` element with an `ObjectName` in the respective sections for each event type your agent publishes with regard to that oject. Optionally specify for each object one or more `SIF_Context` names (which default to `SIF_Default` if omitted). Include `SIF_RequestObjects` and for each object your Agent requests, place a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). Your Agent can also state its support for `SIF_ExtendedQuery` in `SIF_ExtendedQuerySupport`, which defaults to `false`. Include `SIF_RespondObjects` and for each object for which your Agent processes requests (including those listed in `SIF_ProvideObjects`), include a `SIF_Object` element with an `ObjectName` and optionally one or more `SIF_Context` names (which default to `SIF_Default` if omitted). Your Agent can also state its support for `SIF_ExtendedQuery` in `SIF_ExtendedQuerySupport`, which defaults to `false`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent is now registered with the corresponding settings in the Zone. Any previously recorded settings with regard to the operations your Agent performs have been replaced. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.7-1: SIF_Provision Protocol

#### 4.1.1.8 SIF_Event

When an application adds, changes or deletes data represented in one or more Zone Contexts, its Agent SHOULD publish the corresponding `Add`, `Change` or `Delete` `SIF_Event` to the Zone. Upon successful delivery of a `SIF_Event` to the ZIS, the ZIS places the event in the queue for any Agents subscribed to events for the object, including your Agent if it is a subscriber.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Event` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`. If your Agent would like to indicate minimum encryption and/or authentication requirements for Agents receiving this `SIF_Event`; supply `SIF_Security` with the appropriate settings; use an equally secure channel when communicating with the ZIS, if desired. If this event specifically applies to one or more contexts, place them in `SIF_Contexts`; if omitted, the context is `SIF_Default`. Specify the name of the object that is being added, changed or deleted in `SIF_EventObject/@ObjectName`. Place the type of event in `SIF_EventObject/@Action` and place the object in `SIF_EventObject`. For an `Add` event, this MUST be the complete object with all mandatory elements present. If the agent wishes to indicate that a particular optional element is supported but has no value, the element MAY be included as empty, with `xsi:nil` set to `true` if necessary. For a `Change` event, all unchanged elements, whether mandatory or optional SHOULD be omitted from the object. Optional elements that have been deleted MAY be included as empty, with `xsi:nil` set to `true` if necessary. For each list of repeatable elements in the object that has changed, include the whole list if the list type indicated is `List`. If the list type is `ActionList`, the agent MAY include only those elements in the list that have been added, changed or deleted. If an element has been deleted from an `ActionList`, the element MUST be included with at least its key attribute(s) and/or element(s) specified, and include a `SIF_Action` attribute value of `Delete` on the deleted child element in the list. Omitting an element in an `ActionList` indicates that it has been unchanged in the event. Refer to the Dat Model section of the specification, Lists/Repeatable Elements, for more details on ActionLists and Lists. For a `Delete` event, only elements/attributes that identify the object sufficiently for deletion SHOULD be included. This set of identifying elements/attributes are typically communicated by the mandatory root attributes of an object, which MUST be included. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | The event has been successfully received by the ZIS. It will be placed in the queue of any Agents registered as subscribers to events for the given object. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.8-1: SIF_Event Protocol

#### 4.1.1.9 SIF_Request

An Agent can request data from another Agent at any time by sending a `SIF_Request` message. Agents use one of two query mechanisms in requests. SIF's default query mechanism, `SIF_Query`, is used to request objects of a given type, matching optional query conditions, optionally returning a subset of object elements. `SIF_ExtendedQuery` is used to select elements from one or more objects, joined together, if necessary, on `RefId`-based conditions. Before delivering a request with a `SIF_ExtendedQuery` to a Responder, the ZIS checks that the Responder supports `SIF_ExtendedQuery` for all referenced objects.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Request` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`. If your Agent would like to indicate minimum encryption and/or authentication requirements for Agents receiving this `SIF_Request`, supply `SIF_Security` with the appropriate settings; use an equally secure channel when communicating with the ZIS, if desired. If this request is associated with a context, specify a single `SIF_Context` in `SIF_Contexts`; if omitted, the context is `SIF_Default`. If your Agent would like to explicitly route this request to a given Agent, specify the Agent's ID in `SIF_DestinationId`. Specify the SIF versions the responder may choose from when returning data in `SIF_Version`. Each version specified MUST be registered at the ZIS as supported by your Agent. Specify the maximum buffer size the Responder must respect when sending `SIF_Response` packets; this MUST be less than or equal to the `SIF_MaxBufferSize` with which your Agent registered with the ZIS. | If using `SIF_ExtendedQuery`, go to step 3; otherwise go to step 2.
2 | In `SIF_Query`, specify the object name being requested in `SIF_QueryObject/@ObjectName`. Optionally specify the subset of elements/attributes to be returned from each object in `SIF_QueryObject/SIF_Element`; note that parent elements of specified elements/attributes are returned as well. If your Agent would like to specify query matching conditions, include `SIF_ConditionGroup`. Alternately an example of an object allowed for use in query-by-example can be placed in `SIF_Example`. | Send `SIF_Message` to ZIS over appropriate transport. Go to step 4.
3 | Include a `SIF_ExtendedQuery`. If your Agent did not specify `SIF_DestinationId`, the `SIF_Request` will be routed to the Provider for `SIF_From/@ObjectName`. If your Agent would like to override this routing mechanism, include `SIF_DestinationProvider` set to the object name for which the ZIS will determine the Provider and route the request accordingly. | Send `SIF_Message` to ZIS over appropriate transport.
4 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 8.
5 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 7.
6 | The request has been successfully received by the ZIS. It will be placed in the queue of the appropriate Responder as specified in `SIF_Header/SIF_DestinationId` or determined by `SIF_ExtendedQuery/SIF_From/@ObjectName` or `SIF_ExtendedQuery/SIF_DestinationProvider`. | Messaging protocol complete (success).
7 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
8 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.9-1: SIF_Request Protocol

#### 4.1.1.10 SIF_Ping

An agent can "ping" the ZIS or check that it's online and/or "awake" by sending a SIF_Ping message to the ZIS. If the agent receives a successful acknowledgement, the ZIS is awake; the ZIS may also reply that it is asleep. As a ZIS may be offline completely, Agents should be prepared to handle transport errors directly or wrapped in a `SIF_Ack/SIF_Error` by underlying code.

Step | Process | Flow Control
1 | Prepare a `SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_Ping` element in `SIF_SystemControlData`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 8.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | The ZIS is awake. | Messaging protocol complete (success).
5 | Is `SIF_Status/SIF_Code` `8` (ZIS is asleep)? | If no, go to Step 7.
6 | The ZIS is asleep. | Messaging protocol complete (success).
7 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
8 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.10-1: SIF_Ping Protocol

#### 4.1.1.11 SIF_Sleep

A Push-mode Agent can send a SIF_Sleep message to the ZIS to change its state to "asleep," indicating that the ZIS should not send the Agent messages until it "wakes up" by sending a `SIF_Wakeup` message or re-registering with `SIF_Register`. A Pull-mode Agent can also changes it state to "sleeping," but this has no effect other than indicating to other Agents via `SIF_ZoneStatus` that it is "sleeping" and not processing messages in its queue. Sending a `SIF_Wakeup` or `SIF_GetMessage` will indicate that the Agent is "awake," as will re-registering with `SIF_Register`.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_Sleep` element in `SIF_SystemControlData`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent's state has been set to "asleep" in the ZIS. This is reflected to other Agents in `SIF_ZoneStatus` and if your Agent is a Push-mode Agent, the ZIS will stop delivering messages to your Agent. To "wake up," send a `SIF_Wakeup` message, or re-register with `SIF_Register`. Pull-mode Agents may also send `SIF_GetMessage`. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.11-1: SIF_Sleep Protocol

#### 4.1.1.12 SIF_Wakeup

An Agent can send a `SIF_Wakeup` message to the ZIS to change its state to "awake," whether sleeping or not; this state is available to other Agents via `SIF_ZoneStatus`. Upon success, the ZIS may begin delivering messages to a Push-mode Agent again, if previously sleeping.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_Wakeup` element in `SIF_SystemControlData`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | Your Agent's state has been set to "awake" in the ZIS. This is reflected to other Agents in `SIF_ZoneStatus` and if your Agent is a Push-mode Agent and it was previously asleep, the ZIS will resume delivering messages to your Agent. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.12-1: SIF_Wakeup Protocol

#### 4.1.1.13 SIF_GetZoneStatus

To retrieve the current status of the Zone (`SIF_ZoneStatus`), send a `SIF_GetZoneStatus` message to the ZIS.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_GetZoneStatus` element in `SIF_SystemControlData`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | `SIF_Status/SIF_Data` contains the current status of the Zone in `SIF_ZoneStatus`. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.13-1: SIF_GetZoneStatus Protocol

#### 4.1.1.14 SIF_GetAgentACL

To retrieve your Agent's current access control list settings from the ZIS (`SIF_AgentACL`), send a `SIF_GetAgentACL` message to the ZIS.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_GetAgentACL` element in `SIF_SystemControlData`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | `SIF_Status/SIF_Data` contains your Agent's current access control list settings in the Zone in `SIF_AgentACL`. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.14-1: SIF_GetAgentACL Protocol

#### 4.1.1.15 SIF_CancelRequests

Agents can request that a ZIS cancel `SIF_Request`s, pending or in process, by sending a list of `SIF_RequestMsgId`s in a `SIF_CancelRequests` message. If an Agent abandons or restarts a data collection using `SIF_Request`s, whether or not the response stream has started, it is RECOMMENDED that the Agent send one or more `SIF_CancelRequests` messages to the ZIS. Such data collections can place a heavy load on responding Agents, where often all data of a specific object type is requested, and cancelling requests may spare Zone resources. Cancelling of responses can also reduce the number of response packets the receiving/cancelling agent needs to process and discard.

If the cancelling Agent wishes to receive a "final" `SIF_Response` from the ZIS for each cancelled message, it can specify `Standard` in `SIF_CancelRequests/SIF_NotificationType`. If the cancelling Agent does not desire or require "final" `SIF_Response`s, the Agent can specify `None` in `SIF_NotificationType`.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Add a `SIF_CancelRequests` element in `SIF_SystemControlData`. |
2 | Specify `Standard` in `NotificationType` if your Agent desires or requires a "final" `SIF_Response` be returned by the ZIS for each cancelled message (`SIF_Response/SIF_MorePackets` = `No`). Otherwise specify `None`. |
3 | Add a `SIF_RequestMsgIds` element and add a child `SIF_RequestMsgId` element for each `SIF_Request` that the Agent wishes to cancel. | Send `SIF_Message` to ZIS over appropriate transport.
4 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 8.
5 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 7.
6 | The ZIS has accepted the `SIF_CancelRequests` message. Your Agent will receive or not receive "final" `SIF_Response`s per the specified `NotificationType`. | Messaging protocol complete (success).
7 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate SIF_MsgId). | Messaging protocol complete (failure).
8 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.15-1: SIF_CancelRequests Protocol

#### 4.1.1.16 SIF_GetMessage (Pull-Mode only)

Pull-mode Agents retrieve the next message in their queue by sending a `SIF_GetMessage` message to the ZIS. Note that as individual messages may have specific minimum encryption/authentication levels attached to them by senders, a Pull-Mode Agent should always use the highest encryption/authentication levels it supports when contacting the ZIS to avoid individual messages being discarded when contacting the ZIS using lower encryption/authentication levels than might be required for receipt of a given message.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_GetMessage` element in `SIF_SystemControlData`. | Send `SIF_Message` to ZIS over appropriate transport. Always use the highest encryption/authentication levels that your Agent supports to maximize the number of messages that can be returned to your Agent.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 7.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | `SIF_Status/SIF_Data` contains the next `SIF_Message` in your agent's queue. | Messaging protocol complete (success). Process the returned `SIF_Message` according to Agent Message Handling Protocols below.
5 | Is `SIF_Status/SIF_Code` `9`? | If yes, there are no messages available for your Agent. Message processing complete (success).
6 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
7 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. If a Push-mode Agent sends `SIF_GetMessage`, note particularly category `5`, code `9` (agent registered in Push mode). | Messaging protocol complete (failure).

Table 4.1.1.16-1: SIF_GetMessage Protocol

#### 4.1.1.17 SIF_Ack (Push-Mode)

Push-Mode Agents end Selective Message Blocking (SMB) by sending a final `SIF_Ack` to the ZIS.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. From the message being unblocked/removed from the queue, place the `SIF_Header/SIF_SourceId` value into `SIF_OriginalSourceId` and place the `SIF_Header/SIF_MsgId` value into `SIF_OriginalMsgId`. Place `3` (final `SIF_Ack`) into `SIF_Code/SIF_Data`. | Send `SIF_Message` to ZIS over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 5.
4 | The referenced message has been unblocked and removed from your Agent's queue. The ZIS resumes delivery of events to your Agent. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.17-1: SIF_Ack Protocol (Push-Mode)

#### 4.1.1.18 SIF_Ack (Pull-Mode)

Pull-mode Agents acknowledge messages received in response to `SIF_GetMessage` and remove them from their queue by sending a `SIF_Ack` message to the ZIS. `SIF_Ack` is also sent by Pull-Mode Agents to invoke and end Selective Message Blocking (SMB).

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. | If your Agent is invoking SMB, go to Step 3. If your Agent is ending SMB, go to Step 4.
2 | From the message being acknowledged/the message to be removed from the queue, place the `SIF_Header/SIF_SourceId` value into `SIF_OriginalSourceId` and place the `SIF_Header/SIF_MsgId` value into `SIF_OriginalMsgId`. Place `1` (immediate `SIF_Ack`) into `SIF_Code/SIF_Data` or an appropriate error description in `SIF_Error`. If your Agent indicates a transport error or places `8` (receiver is sleeping) into `SIF_Code/SIF_Data`, the message will be acknowledged but remain in your Agent's queue. | Send `SIF_Message` to ZIS over appropriate transport. Go to Step 5.
3 | From the `SIF_Event` being blocked, place the `SIF_Header/SIF_SourceId` value into `SIF_OriginalSourceId` and place the `SIF_Header/SIF_MsgId` value into `SIF_OriginalMsgId`. Place `2` (intermediate `SIF_Ack`) into `SIF_Code/SIF_Data`. | Send `SIF_Message` to ZIS over appropriate transport. Go to Step 5.
4 | From the `SIF_Event` being unblocked, place the `SIF_Header/SIF_SourceId` value into `SIF_OriginalSourceId` and place the `SIF_Header/SIF_MsgId` value into `SIF_OriginalMsgId`. Place `3` (final `SIF_Ack`) into `SIF_Code/SIF_Data`. | Send `SIF_Message` to ZIS over appropriate transport.
5 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 9.
6 | Is `SIF_Status/SIF_Code` `0`? | If no, go to Step 8.
7 | If your Agent did not invoke or end SMB for a `SIF_Event`, the referenced message has been removed from your Agent's queue, unless your agent indicated a transport error or that it was sleeping (in which case the message has been acknowledged but remains in your Agent's queue). If your Agent invoked SMB by sending an intermediate `SIF_Ack`, delivery of events is blocked until your Agent removes the `SIF_Event` from its queue by sending a final `SIF_Ack`. Your Agent will continue to receive `SIF_Response`s and `SIF_Request`s. If your Agent ended SMB by sending a final `SIF_Ack`, the ZIS has removed the blocked event from your Agent's queue and resumes delivery of events to your Agent. | Messaging protocol complete (success).
8 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (ZIS is asleep) or `7` (your Agent sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
9 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.1.1.18-1: SIF_Ack Protocol (Pull-Mode)

### 4.1.2 Agent Message Handling Protocols

This section documents how Agents should respond to incoming messages, and the resulting post-conditions upon success or failure, along with any necessary steps to take.

Note that in handling any `SIF_Message`, an Agent may return a `SIF_Ack` with `SIF_Status/SIF_Code` `8` (receiver is sleeping) or `7` (already have this `SIF_MsgId` from you) if a duplicate message is detected. These responses are typically omitted from the handling protocols below.

#### 4.1.2.1 SIF_Message

Upon receipt of a generic message from the ZIS, in most cases it may be safely assumed that the message XML is well-formed, and perhaps even valid, but the Agent should take the following steps to determine whether the XML is well-formed, optionally validate the message, and check that the message is of a valid type before handing the message off to the respective message handling protocol below.

Step | Process | Flow Control
1 | If your transport layer implementation rejects XML that is not well-formed and optionally that is invalid, go to Step 3, 5, 7 or 9 depending on the extent of that implementation. Otherwise, is the XML message well-formed? | If yes, go to step 3.
2 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. If your Agent can scan the incoming message as UTF-8 encoded text to locate `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId`, these values can be placed in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Otherwise include these elements with empty values, including an `xsi:nil` attribute value of `true` on `SIF_OriginalMsgId`. Include a `SIF_Error` element with a `SIF_Category` of `1` (XML Validation) and a `SIF_Code` of `2` (message is not well-formed). | Go to step 12.
3 | Is the root element of the message unprefixed with a local name of `SIF_Message`? | If yes, go to step 5.
4 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Error` element with a `SIF_Category` of `1` (XML Validation) and a `SIF_Code` of `3` (generic validation error). | Go to step 12.
5 | Is the namespace for `SIF_Message` a namespace of a major version of SIF your Agent supports? Is `SIF_Message/@Version` present with a value that your Agent supports? (If omitted, interpret `SIF_Message/@Version` as `1.1`.) | If yes, go to step 7.
6 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Error` element with a `SIF_Category` of `12` (Generic Message Handling) and a `SIF_Code` of `3` (version not supported). | Go to step 12.
7 | If your Agent does not validate messages, go to step 9. Otherwise choose a validation schema based on the value of `SIF_Message/@Version`. Does the message validate? | If yes, go to step 9.
8 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Error` element with a `SIF_Category` of `1` (XML Validation) and an appropriate `SIF_Code` from the corresponding choices in Error Codes. | Go to step 12.
9 | If the namespace for `SIF_Message` is for a previous major version of SIF, handle according to the specification for `SIF_Message/@Version`. Otherwise, is the message type (the child element of `SIF_Message`) `SIF_Event`, `SIF_Request`, `SIF_Response`, `SIF_Ping` (Push-mode only), `SIF_Sleep` (Push-mode only), `SIF_Wakeup` (Push-mode only), or `SIF_CancelRequests` (Push-mode only and your Agent chooses to support this optional message)? | If yes, go to step 11.
10 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Error` element with a `SIF_Category` of `12` (Generic Message Handling) and a `SIF_Code` of `2` (message not supported). | Go to step 12.
11 | Process per the corresponding message handling protocol below. | Message handling is complete.
12 | If your Agent is a Push-mode Agent, return the `SIF_Ack` to the ZIS. If your Agent is a Pull-mode Agent send the `SIF_Ack` to the ZIS per `SIF_Ack` (Pull-Mode) above. | Message handling is complete.

Table 4.1.2.1-1: SIF_Message Handling

#### 4.1.2.2 SIF_Event

A ZIS places a `SIF_Event` in your Agent's queue when an event occurs in a Zone Context with regard to an object for which your agent has subscribed to receive events. A `SIF_Event` is delivered when it is the next message pending delivery in the queue.

An event may apply to one or more contexts; these are listed in `SIF_Header/SIF_Contexts`. If `SIF_Contexts` is not present, the context for the event is `SIF_Default`. The type of event is specified in `SIF_EventObject/@Action`, the corresponding data object is in `SIF_EventObject`. A `Change` or `Delete` event may contain a partial object, but it must include the necessary attribute(s) and element(s) to uniquely identify the object being changed or deleted. These keys/identifiers are typically communicated in the root attributes of an object.

Step | Process | Flow Control
1 | Does your Agent invoke Selective Message Blocking (SMB) for all events, or does this event indicate to your Agent that it will invoke SMB? | If no, go to Step 3.
2 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Place `2` (intermediate `SIF_Ack`) in `SIF_Status/SIF_Code`. If your Agent is a Push-Mode Agent, return the `SIF_Ack` to the ZIS and commence sending the necessary requests as described in the `SIF_Request` protocol above to complete processing of the event per your Agent's business rules. When complete or if an error occurs, end SMB as described in the `SIF_Ack` (Push-Mode) protocol above. If your Agent is a Pull-Mode Agent, send the `SIF_Ack` to the ZIS per `SIF_Ack` (Pull-Mode) above and commence sending the necessary requests as described in the `SIF_Request` protocol above to complete processing of the event per your Agent's business rules. When complete or if an error occurs, end SMB as described in the `SIF_Ack` (Pull-Mode) protocol above. If an error occurs, it is RECOMMENDED that your Agent publish a `SIF_LogEntry` `Add` event. | Message handling complete.
3 | If your Agent is a Pull-Mode Agent, process the event per your Agent's business rules. When complete or if an error occurs, acknowledge the message and remove it from your Agent's queue per `SIF_Ack` (Pull-Mode) above. If your Agent is a Push-Mode Agent, it has one of two options: process the event, then acknowledge it; or acknowledge the event, then process it. The advantage of first processing the event is the ability to return a descriptive error, if necessary, to the ZIS when acknowledging the message. The disadvantage of first processing is that if the processing is long running, the connection from the ZIS to your Agent may time out, which will lead to the event being redelivered to your Agent in another delivery attempt, to possibly run into another time-out. To avoid the latter, it is RECOMMENDED that your Push-Mode Agent first acknowledge the event, then process it, unless event processing is known to always occur within a reasonable amount of time. Agents that first acknowledge then process SHOULD persist the event locally until processing is complete, as the event is removed from your Agent's queue upon successful acknowledgement, otherwise the event will be lost in the case of an application or system error that affects your Agent's ability to complete processing of the event. Choose an option and process the event according to your Agent's business rules. When acknowledging: Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Place `1` (immediate `SIF_Ack`) in `SIF_Status/SIF_Data` in the case of successful procssing, and return the `SIF_Ack` to the ZIS. If an error has occurred, include a `SIF_Error` element with an appropriate `SIF_Category` and `SIF_Code` and describe the error as needed in `SIF_Desc` and optionally `SIF_ExtendedDesc`. Note that indicating a transport error will not remove the message from your Agent's queue, only acknowledge it. The same action can be accomplished indicating `8` (receiver is sleeping) in `SIF_Status/SIF_Code`. If an error occurs regardless of the option chosen, it is RECOMMENDED that your Agent publish a `SIF_LogEntry` `Add` event. | Message handling complete

Table 4.1.2.2-1: SIF_Event Handling

#### 4.1.2.3 SIF_Request

A ZIS places a `SIF_Request` in your Agent's queue when an Agent sends a request directly to your Agent, or when an Agent sends a request without a `SIF_DestinationId` and your agent is registered as the Provider for the object requested in `SIF_Query`, or in the case of `SIF_ExtendedQuery` when your agent is registered as the Provider of the object specified by the Requester in `SIF_ExtendedQuery/SIF_DestinationProvider` or `SIF_ExtendedQuery/SIF_From/@ObjectName`. The ZIS will not send your Agent a `SIF_ExtendedQuery` unless your Agent has registered its support for that query type using `SIF_Provide` or `SIF_Provision`. A `SIF_Request` is delivered when it is the next message pending delivery in your Agent's queue.

Any error that occurs while generating `SIF_Response`s during `SIF_Request` handling MUST be sent to the Requester with `SIF_MorePackets` set to `No`, at which point the response stream ends.

Step | Process | Flow Control
1 | Examine `SIF_Header/SIF_Contexts` to determine the context for the request; if none is specified, the context is `SIF_Default`. | Go to Step 3 if the context is supported.
2 | Prepare a `SIF_Response` message with a copy of `SIF_Contexts`, `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate General Message Handling and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the requested context is not supported. Add `SIF_PacketNumber` with a value of `1` and set `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester and acknowledge the error to the ZIS. | Message handling complete.
3 | Examine the `SIF_Version` element or elements specified in the `SIF_Request` message. If more than one version is supported, select the highest version number supported. | Go to Step 5 if a version is supported.
4 | Prepare a `SIF_Response` message with a copy of `SIF_Contexts`, `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the requested `SIF_Version`s are not supported. Add `SIF_PacketNumber` with a value of `1` and set `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester and acknowledge the error to the ZIS. | Message handling complete.
5 | Examine the `SIF_MaxBufferSize` specified in the `SIF_Request` message. | Go to Step 7 if it is greater than or equal to the minimum buffer size your Agent can support. (The buffer size of individual packets will be handled below).
6 | Using the SIF version selected in Step 1, prepare a `SIF_Response` message with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the `SIF_MaxBufferSize` cannot be honored. Add `SIF_PacketNumber` with a value of `1` and set `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester and acknowledge the error to the ZIS. | Message handling complete.
7 | Is `SIF_ExtendedQuery` specified? | If yes, go to Step 10.
6 | The query type is `SIF_Query`. Examine the object name being queried in `SIF_QueryObject/@ObjectName`. | Go to Step 8 if the object is supported.
7 | Prepare a `SIF_Response` message using the version chosen in Step 1 with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the object is not supported. Add `SIF_PacketNumber` with a value of `1` and set `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester and acknowledge the error to the ZIS. | Stop processing the message.
8 | Examine the query represented, if any, by `SIF_ConditionGroup`, or `SIF_Example` in the case of objects that support query-by-example, and determine whether it is supported. | Go to Step 12 if neither `SIF_ConditionGroup` nor `SIF_Example` is present, or if the query represented by `SIF_ConditionGroup` or `SIF_Example` is supported.
9 | Prepare a `SIF_Response` message with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the query is not supported. Add `SIF_PacketNumber` with a value of `1` and set `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester and acknowledge the error to the ZIS. | Stop processing the message.
10 | Examine the query represented by `SIF_ExtendedQuery`, and determine whether it is supported. | Go to Step 12 if the query is supported.
11 | Prepare a `SIF_Response` message with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the query is not supported. Add `SIF_PacketNumber` with a value of `1` and set `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester and acknowledge the error to the ZIS. | Stop processing the message.
12 | Note that Push-Mode Agents should acknowledge receipt of the `SIF_Request` as response generation is typically a long-running operation that will typically lead to HTTP time-outs. As the request will be removed from the Agent's queue, it is RECOMMENDED that the Push-Mode Agent persist the request and its `SIF_PacketNumber` while generating responses, in case of an application or system failure that prevents it from completing the request processing; upon restarting, the Agent can end the response stream with a `SIF_Error`, `SIF_PacketNumber` set to the last successfully transmitted `SIF_PacketNumber + 1` and `SIF_MorePackets` set to `No`. If a Push-Mode Agent elects to successfully acknowledge the request before processing, it can do so. Otherwise it should acknowledge receipt of the request upon completion of response generation. Pull-Mode Agents can choose to acknowledge receipt of the request here or at the end of response generation. Initialize packet counter to 1. |
13 | Prepare a `SIF_Response` message with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. When handling `SIF_ExtendedQuery`, copy the requested columns into `SIF_ExtendedQueryResults/SIF_ColumnHeaders`. |
14 | Add one or more of the matching objects into `SIF_ObjectData`, for `SIF_Query`, or rows into `SIF_ExtendedQueryResult`, for `SIF_ExtendedQuery`, until no more will fit within the specified buffer size. If no objects or rows will fit within `SIF_MaxBufferSize`, go to Step 15 with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that `SIF_MaxBufferSize` cannot be honored. Otherwise, note that only requested columns are returned when processing `SIF_ExtendedQuery`. When processing `SIF_Query`, if the requester specified only certain elements be returned, that the Responder needs to return only those elements and their parent elements and attributes. Not supporting a requested element/attribute does not exclude the object from the response stream; include the parent elements/attributes of any missing elements, including the object itself. | If no errors occur in retrieving/adding matching objects, go to step 16.
15 | Set `SIF_PacketNumber` to the current packet counter and `SIF_MorePackets` to `No`. Add an appropriate `SIF_Error` element to the `SIF_Response` and send the `SIF_Response` to the ZIS. | Go to Step 19.
16 | Set `SIF_PacketNumber` to the current packet counter value and set `SIF_MorePackets` appropriately. Send the `SIF_Response` to the ZIS. |
17 | Examine the `SIF_Ack` returned by the ZIS. | If an error occurred, stop processing the `SIF_Request` message. Go to Step 19.
18 | Determine if more objects or rows match the specified conditions. | If yes, increment the packet counter and go to Step 13; otherwise, go to Step 19.
19 | If your Agent has not yet acknowledged receipt of the incoming request, acknowledge successful receipt of the request, or return a descriptive error to the ZIS. | Message handling complete.

Table 4.1.2.3-1: SIF_Request Handling

#### 4.1.2.4 SIF_Response

A ZIS places a `SIF_Response` in your Agent's queue when a responder sends a response packet to your Agent per a `SIF_Request` previously sent by your Agent. It is delivered when it is the next message available for delivery to your Agent.

Step | Process | Flow Control
1 | `SIF_RequestMsgId` indicates which of your `SIF_Request`s this packet is in response to. Is `SIF_Error` present? | If no, go to Step 3.
2 | The Responder's handling of your Agent's `SIF_Request` has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. this is the last packet your Agent will receive associated with that request. If your Agent is a Pull-Mode Agent, acknowledge the message per `SIF_Ack` (Pull-Mode) above. If your Agent is a Push-Mode Agent: Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Place `1` (immediate `SIF_Ack`) in `SIF_Status/SIF_Data`, and return the `SIF_Ack` to the ZIS. | Message handling complete. Any resources associated with the request can be released.
3 | If your Agent is a Pull-Mode Agent, process the response per your Agent's business rules. When complete or if an error occurs, acknowledge the message and remove it from your Agent's queue per `SIF_Ack` (Pull-Mode) above. If your Agent is a Push-Mode Agent, it has one of two options: process the response, then acknowledge it; or acknowledge the response, then process it. The advantage of first processing the response is the ability to return a descriptive error, if necessary, to the ZIS when acknowledging the message. The disadvantage of first processing is that if the processing is long running, the connection from the ZIS to your Agent may time out, which will lead to the response being redelivered to your Agent in another delivery attempt, to possibly run into another time-out. To avoid the latter, it is RECOMMENDED that your Push-Mode Agent first acknowledge the response, then process it, unless response processing is known to always occur within a reasonable amount of time. Agents that first acknowledge then process SHOULD persist the response locally until processing is complete, as the response is removed from your Agent's queue upon successful acknowledgement, otherwise the response will be lost in the case of an application or system error that affects your Agent's ability to complete processing of the response. Choose an option and process the response according to your Agent's business rules. When acknowledging: Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Place `1` (immediate `SIF_Ack`) in `SIF_Status/SIF_Data` in the case of successful procssing, and return the `SIF_Ack` to the ZIS. If an error has occurred, include a `SIF_Error` element with an appropriate `SIF_Category` and `SIF_Code` and describe the error as needed in `SIF_Desc` and optionally `SIF_ExtendedDesc`. Note that indicating a transport error will not remove the message from your Agent's queue, only acknowledge it. The same action can be accomplished indicating `8` (receiver is sleeping) in `SIF_Status/SIF_Code`. If an error occurs regardless of the option chosen, it is RECOMMENDED that your Agent publish a `SIF_LogEntry` `Add` event. | Message handling complete. If `SIF_MorePackets` is `No`, this is the last packet associated with the request your Agent will receive; any resources associated with the request can be released.

Table 4.1.2.4-1: SIF_Event Handling

#### 4.1.2.5 SIF_Ping (Push-Mode only)

The ZIS is pinging your Agent to see if it is reachable, "awake" and/or processing messages.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. If your Agent is "awake," include a `SIF_Status` element with a `SIF_Code` of `1` (immediate `SIF_Ack`). Otherwise you may optionally notify the ZIS that your Agent is asleep by returning a `SIF_Code` of `8` (receiver is sleeping). |
2 | Return the `SIF_Ack` to the ZIS. | Message processing complete (success).

Table 4.1.2.5-1: SIF_Ping Handling

#### 4.1.2.6 SIF_Sleep (Push-Mode only)

The ZIS has changed its state to "asleep" and is either not processing incoming messages or all incoming messages will be acknowledged with a `SIF_Ack/SIF_Status/SIF_Code` value of `8` (receiver is sleeping); delivery of queued messages to your Agent is halted. Your Agent SHOULD avoid sending messages to the ZIS until receipt of a `SIF_Wakeup` message, or be prepared to handle transport errors or the aforementioned acknowledgement.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `1` (immediate `SIF_Ack`). Change your Agent's ZIS state to "asleep." |
2 | Return the `SIF_Ack` to the ZIS. | Message processing complete (success).

Table 4.1.2.6-1: SIF_Sleep Handling

#### 4.1.2.7 SIF_Wakeup (Push-Mode only)

The ZIS has changed its state to "awake" and is processing incoming messages and delivering queued messages again.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `1` (immediate `SIF_Ack`). Change your Agent's ZIS state to "awake." |
2 | Return the `SIF_Ack` to the ZIS. | Message processing complete (success).

Table 4.1.2.7-1: SIF_Wakeup Handling

#### 4.1.2.8 SIF_CancelRequests (Push-Mode only) (optional)

A ZIS is requesting that your Agent cancel processing of one or more `SIF_Request` messages. Support for handling of this message is currently optional for Push-Mode Agents. If your Agent does not support `SIF_CancelRequests`, it returns a Generic Message Handling error upon receipt of the `SIF_SystemControl` message, error code "Message not supported," per the `SIF_Message` handling protocol.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Agent's Agent ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `1` (immediate SIF_Ack). |
2 | If your Agent is currently preparing `SIF_Response` packets for any of the `SIF_Request` messages specified in the `SIF_RequestMsgId` element(s), stop processing the request(s). If your Agent has any of the specified `SIF_Request`s queued locally, remove them from the agent local queue. |
3 | Return the `SIF_Ack` to the ZIS. | Message processing complete (success).

Table 4.1.2.8-1: SIF_CancelRequests Handling

## 4.2 ZIS Protocols

### 4.2.1 ZIS Messaging Protocols

This section documents how Zone Integration Servers send individual messages, and the resulting post-conditions upon success or failure, along with any necessary steps to take. These correspond to each of the actions a Zone Integration Server can initiate.

#### 4.2.1.1 SIF_Message Delivery (SIF_Event, SIF_Request, SIF_Response to a Push-mode Agent)

A ZIS contacts a Push-Mode Agent to deliver `SIF_Event`, `SIF_Request` and `SIF_Response` messages queued for the Agent. This delivery protocol starts with a check on whether there are messages pending, as the protocol can loop as messages are delivered.

Step | Process | Flow Control
1 | Are there messages queued for the Agent? | If yes, go to Step 2. Otherwise messaging protocol complete (success).
2 | Is the state of the Agent "asleep?" If yes, the ZIS SHOULD wait until the Agent sends a `SIF_Wakeup` message or re-registers in Push mode before attempting message delivery. Otherwise the ZIS MUST be prepared to handle transport errors/exceptions and/or the Agent responding with a `SIF_Status/SIF_Code` of `8` (receiver is sleeping). | If no, go to Step 3. Otherwise messaging protocol complete (success).
3 | Has the Agent previously invoked SMB? | If no, go to Step 6.
4 | Iterate through the Agent's queue from the message received first to the most recently received message. Stop at the first `SIF_Response` or `SIF_Request` in the queue, if one exists. | If one exists, it is the next message to be delivered. Go to Step 7.
5 | The only messages queued for the Agent are `SIF_Events`; try again later, or after a `SIF_Response` or `SIF_Request` arrives, or after the Agent has ended SMB by sending a final `SIF_Ack`. | Messaging protocol complete (no message needs to be delivered).
6 | The next message to be delivered is the message received first in the Agent's queue. |
7 | Is `SIF_Header/SIF_Security` present in the `SIF_Message` with `SIF_EncryptionLevel`, `SIF_AuthenticationLevel`, or both? | If no, the message delivery encryption/authentication levels are the minimum encryption/authentication levels set up for the Zone. Go to Step 9.
8 | The ZIS MUST guarantee that the minimum encryption and/or authentication levels specified are respected when delivering this message. Use the higher of these and the Zone's minimum encryption and/or authentication levels during message delivery. |
9 | If a connection is already open to the Push-Mode Agent from a previously delivered message, are the encryption and authentication levels greater than or equal to those needed for the delivery of this message? | If there is no connection open, go to Step 11. If there is and the encryption/authentication levels are adequate for delivery, go to Step 13.
10 | Attempt to renegotiate the encryption/authentication levels for the connection, or close the connection and attempt to open a new connection with adequate encryption/authentication levels. | Go to Step 12.
11 | If the registered transport layer is known to not provide adequate encryption/authentication levels (e.g. SIF HTTP), go to Step 12. Otherwise attempt to open a connection to the Agent with adequate encryption/authentication levels, using the appropriate transport layer. |
12 | Was a connection opened or renegotiated with adequate encryption/authentication levels? If no, the message cannot be delivered; remove it from the Agent's queue. It is RECOMMENDED that your ZIS log the error. Your ZIS MUST post a `SIF_LogEntry` `Add` event with the appropriate error category and code, containing a copy of the `SIF_Header` of the queued message. `SIF_LogEntry/SIF_Desc` MUST contain the `SIF_SourceId` of the Agent that failed to receive the message. | Go to Step 1 to start delivery of the next queued message, if desired. Otherwise messaging protocol complete (error).
13 | Send the message to the Agent over the connection. |
14 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 24.
15 | Is `SIF_Status/SIF_Code` `1` (immediate `SIF_Ack`)? | If no, go to Step 17.
16 | The Agent has successfully acknowledged receipt of the message; remove it from the Agent's queue. | Go to Step 1 to start delivery of the next queued message, if desired. Otherwise messaging protocol complete (success).
17 | Is `SIF_Status/SIF_Code` `2` (intermediate `SIF_Ack`)? | If no, go to Step 21.
18 | The Agent is invoking SMB. Is the delivered message a `SIF_Event`? | If yes, go to Step 20.
19 | The Agent has violated protocol; remove the message from the Agent's queue. It is RECOMMENDED that your ZIS log the error. Your ZIS MUST post a `SIF_LogEntry` `Add` event with the appropriate error category of `13` (SMB Error) and code `2` (SMB can only be invoked for `SIF_Event`), containing a copy of the `SIF_Header` of the queued message. `SIF_LogEntry/SIF_Desc` MUST contain the `SIF_SourceId` of the Agent that committed the protocol error. | Go to Step 1 to start delivery of the next queued message, if desired. Otherwise messaging protocol complete (error).
20 | The Agent has invoked SMB on this `SIF_Event`. Persist that the Agent has invoked SMB along with the `SIF_MsgId` of the event. The event stays in the agent's queue as blocked, and all other events are frozen until the Agent eventually ends SMB by sending a final `SIF_Ack` with this `SIF_MsgId` in `SIF_OriginalMsgId`, or by sending a `SIF_Wakeup` or by re-registering. | Go to Step 1 to start delivery of the next queued message, if desired. Otherwise messaging protocol complete (success).
21 | Is `SIF_Status/SIF_Code` `8` (receiver is sleeping)? | If no, go to Step 23.
22 | The Agent is asleep. Re-attempt delivery later. | Messaging protocol complete (success).
23 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `7` (already have this `SIF_MsgId`). The ZIS cannot correct this, as the `SIF_MsgId` originates from an Agent and can't be changed without other repercussions. Remove the message from the Agent's queue. It is RECOMMENDED that your ZIS log the error. Your ZIS MUST post a `SIF_LogEntry` `Add` event with the appropriate error category and code, containing a copy of the `SIF_Header` of the queued message. `SIF_LogEntry/SIF_Desc` MUST contain the `SIF_SourceId` of the Agent that did not receive the message. | Go to Step 1 to start delivery of the next queued message, if desired. Otherwise messaging protocol complete (error).
24 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. If `SIF_Category` does not indicate a transport error, remove the message from the Agent's queue. Otherwise re-attempt delivery of this message later. It is RECOMMENDED that your ZIS log the error. Your ZIS MAY post a `SIF_LogEntry` `Add` event with the appropriate error category and code, containing a copy of the `SIF_Header` of the queued message. `SIF_LogEntry/SIF_Desc` MUST contain the `SIF_SourceId` of the Agent that indicated the error. | Go to Step 1 to start delivery of the next queued message, if desired. Otherwise messaging protocol complete (error).

Table 4.2.1.1-1: SIF_Message Delivery Protocol

#### 4.2.1.2 SIF_Ping (to a Push-mode Agent)

A ZIS can "ping" a Push-Mode Agent or check that it's "awake" by sending a `SIF_Ping` message to the Agent. If the Agent returns a successful acknowledgement, it is awake; the Agent may also reply that it is asleep. As a Push-Mode Agent may be offline completely, Zone Integration Servers should be prepared to handle transport errors directly or wrapped in a `SIF_Ack/SIF_Error` by underlying code.

Step | Process | Flow Control
1 | Prepare a `SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, the Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_Ping` element in `SIF_SystemControlData`. | Send `SIF_Message` to Agent over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 8.
3 | Is `SIF_Status/SIF_Code` `1`? | If no, go to Step 5.
4 | The Agent is awake. | Messaging protocol complete (success).
5 | Is `SIF_Status/SIF_Code` `8` (receiver is sleeping)? | If no, go to Step 7.
6 | The Agent is asleep. | Messaging protocol complete (success).
7 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `7` (your ZIS sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
8 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.2.1.2-1: SIF_Ping Protocol

#### 4.2.1.3 SIF_Sleep (to a Push-mode Agent)

A ZIS can send a `SIF_Sleep` message to a Push-Mode Agent to change its state to "sleeping," indicating that it will either be offline or acknowleding incoming messages with a `SIF_Status/SIF_Code` of `8` (receiver is sleeping), and that it will not be delivering messages to the Agent until it "wakes up" by sending a `SIF_Wakeup` message.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_Sleep` element in `SIF_SystemControlData`. | Send `SIF_Message` to Agent over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `1`? | If no, go to Step 5.
4 | The Agent has successfully acknowledged your `SIF_Sleep` and should not be expecting further message delivery until your ZIS sends a `SIF_Wakeup`. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (Agent is asleep) or `7` (your ZIS sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.2.1.3-1: SIF_Sleep Protocol

#### 4.2.1.4 SIF_Wakeup (to a Push-mode Agent)

A ZIS can send a SIF_Wakeup message to a Push-Mode Agent to change its state to "awake;" i.e., that it is ready to process incoming messages and deliver queued messages again.

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place an empty `SIF_Wakeup` element in `SIF_SystemControlData`. | Send `SIF_Message` to Agent over appropriate transport.
2 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 6.
3 | Is `SIF_Status/SIF_Code` `1`? | If no, go to Step 5.
4 | The Agent has successfully acknowledged your "awake" status. | Messaging protocol complete (success).
5 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (Agent is asleep) or `7` (your ZIS sent a duplicate `SIF_MsgId`). | Messaging protocol complete (failure).
6 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | Messaging protocol complete (failure).

Table 4.2.1.4-1: SIF_Wakeup Protocol

#### 4.2.1.5 SIF_CancelRequests (to a Push-mode Agent)

A ZIS can send a SIF_CancelRequests message to a Push-Mode Agent after receiving a `SIF_CancelRequests` messages from another agent, as per the `SIF_CancelRequests` message handling protocol. As support for this message is currently optional for Push-Mode Agents, the ZIS should be prepared to handle a Generic Message Handling error from the Agent upon receipt of the `SIF_SystemControl` message, error code "Message not supported."

Step | Process | Flow Control
1 | Prepare a `SIF_Message/SIF_SystemControl` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place a `SIF_CancelRequests` element in `SIF_SystemControlData`. |
2 | Place the requests that should be cancelled in `SIF_RequestMsgIds/SIF_RequestMsgId`. While it is not used by the Push-Mode Agent, set the `NotificationType` to `None`. | Send `SIF_Message` to Agent over appropriate transport.
3 | Receive `SIF_Ack` in response. Is `SIF_Error` present? | If yes, go to Step 7.
4 | Is `SIF_Status/SIF_Code` `1`? | If no, go to Step 6.
5 | The Agent has successfully acknowledged your `SIF_CancelRequests` and should have cancelled any corresponding response activity. | Messaging protocol complete (success).
6 | Messaging protocol has failed due to a `SIF_Status/SIF_Code` of `8` (Agent is asleep) or `7` (your ZIS sent a duplicate SIF_MsgId). | Messaging protocol complete (failure).
7 | Messaging protocol has failed due to a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. | If the `SIF_Error` is a Generic Message Handling error, error code "Message not supported," go to Step 8. Otherwise messaging protocol complete (failure).
8 | The Agent does not support `SIF_CancelRequests`. | Messaging protocol complete (success).

Table 4.2.1.5-1: SIF_CancelRequests Protocol

### 4.2.2 ZIS Message Handling Protocols

This section documents how Zone Integration Servers should respond to incoming messages, and the resulting post-conditions upon success or failure, along with any necessary steps to take.

Note that in handling any `SIF_Message`, the ZIS can return a `SIF_Ack` with `SIF_Status/SIF_Code` `8` (receiver is sleeping) or `7` (already have this `SIF_MsgId` from you) if a duplicate message is detected. These responses are omitted from the handling protocols below.

#### 4.2.2.1 SIF_Message

When a message is received, the ZIS should first validate the XML message. If the message is not `SIF_Register`, the ZIS should determine whether the sender is registered in the zone. If errors are found, a `SIF_Ack` with a `SIF_Error` element should be returned to the caller and no further processing should occur. If no errors are found, message processing proceeds according to message type. Subsequent message processing sections are assured of receiving well-formed and/or valid XML, and all non-`SIF_Register` message processing sections are assured that the agent is indeed registered with the zone.

Step | Process | Flow Control
1 | Validate incoming XML message. Message validation is optional. The `Version` attribute of `SIF_Message` can be used to indicate the appropriate message definition. | If not performing message validation, go to Step 3 if XML is well-formed. If performing message validation, go to Step 3 if message is well-formed and valid.
2 | Prepare a `SIF_Ack` containing a `SIF_Error` element. (Note that if XML is not well-formed, or invalid and the well-formed XML is not made available by the XML parser, `SIF_SourceId` and `SIF_MsgId` will not be available from the incoming XML message. If this is the case, include `SIF_OriginalSourceId` and `SIF_OriginalMsgId` in the `SIF_Ack` as empty elements with xsi:nil set to true as necessary to indicate the current message.) Set `SIF_Error/SIF_Category` to indicate XML Validation and place the appropriate error code and description in `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc`. Place any additional parser information into `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to caller. If it can be determined the message is a `SIF_Response`, see `SIF_Response` Handling below, Step 13, to send an error `SIF_Response` to the requester. | Stop processing this message.
3 | Examine the Version attribute of the message. | If the version is supported, go to Step 5.
4 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to Generic Message Handling, indicating that the message is not supported in `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc`. Return the `SIF_Ack` to the caller. If this message is a `SIF_Response`, see `SIF_Response` Handling below, Step 13, to send an error `SIF_Response` to the requester. | Stop processing this message.
5 | Examine message's `SIF_Header` to retrieve the `SIF_SourceId` and the message to get the message type. If message type is not `SIF_Register`, determine if the sender identified by `SIF_SourceId` is registered. | If message type is `SIF_Register` or if the sender's `SIF_SourceId` is registered, go to Step 7.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to Access and Permissions, indicating that the sender is not registered in `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc`. Return the `SIF_Ack` to the caller. If this message is a `SIF_Response`, see `SIF_Response` Handling below, Step 13, to send an error `SIF_Response` to the requester. | Stop processing the message.
7 | Forward message to the proper handler based on the message type. |

Table 4.2.2.1-1: SIF_Message Handling

#### 4.2.2.2 SIF_Register

Before an agent can participate in a zone, it must register itself in order to provide the data that the ZIS needs to interact with the agent. This process is handled using a `SIF_Register` message.

Step | Process | Flow Control
1 | If ZIS implementation limits `SIF_SourceId` values in some way, examine `SIF_SourceId` and determine whether it is valid. | If implementation allows any `SIF_SourceId` or if the `SIF_SourceId` is valid, go to Step 3.
2 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Registration and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that `SIF_SourceId` is invalid. Return the `SIF_Ack` to the caller. | Stop processing this message.
3 | If ZIS implementation requires previous permissions to register, examine `SIF_SourceId` and determine whether sender is permitted to register. | If implementation allows any sender to register or if sender is permitted to register, go to Step 5.
4 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Access and Permissions and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the lack of permission to register. Return the `SIF_Ack` to the caller. | Stop processing this message.
5 | Examine `SIF_Version` element(s) and determine if the ZIS can handle the version(s). | Go to Step 7 if the ZIS can handle the SIF version(s) specified by agent.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Registration and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the ZIS cannot handle SIF messages in a version requested. Place the unsupported version in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing this message.
7 | Examine `SIF_MaxBufferSize` and verify that it is greater than or equal to the minimum value for the ZIS. | Go to Step 9 if `SIF_MaxBufferSize` is large enough.
8 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Registration and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the `SIF_MaxBufferSize` is too small to be supported by the ZIS. Return the `SIF_Ack` to the caller | Stop processing this message.
9 | If the supplied value of `SIF_Mode` is `Push`, verify that the `SIF_Protocol` element is provided and that the protocol information appears sufficient for contacting the agent in Push mode and that the ZIS supports the `Accept-Encoding` `SIF_Protocol/SIF_Property`, if specified. | Go to Step 11 if `SIF_Mode` is `Pull` or `SIF_Protocol` information appears valid.
10 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Registration and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the protocol is not supported, a secure transport is required, or that the ZIS does not support the supplied `Accept-Encoding` value. Return the `SIF_Ack` to the caller. | Stop processing this message.
11 | Store data from the `SIF_Register` message into the agent's database profile. |
12 | Prepare a `SIF_Ack` containing a `SIF_Status` element indicating success, placing the agent's access control permissions in `SIF_Status/SIF_Data/SIF_AgentACL`. Return the `SIF_Ack` to the caller. | Stop processing this message.

Table 4.2.2.2-1: SIF_Register Handling

An agent may also send the `SIF_Register` message when already registered. In this case, the ZIS should re-register the agent in the same manner as defined for initial registration. Any existing provision and subscription entries, as well as any pending messages, maintained by the ZIS for the agent should remain intact. Upon successful re-registration, any new or updated registration settings for the agent, including push mode protocol information, take effect after the ZIS has returned a successful `SIF_Ack` for the `SIF_Register` message.

#### 4.2.2.3 SIF_Unregister

When an agent is going be removed from a Zone, the agent must send a `SIF_Unregister` message. When a ZIS receives this message from an agent, it performs those steps—ignoring `SIF_Ack` preparation and delivery—outlined for the `SIF_Unprovide` and `SIF_Unsubscribe` messages for any agent provisions or subscriptions, respectively. The ZIS then discards any messages pending for the agent. The ZIS will also remove any registration information and remove the agent from its list of registered agents.

It is recommended that the ZIS not remove access control data from its database as a replacement agent may be installed. Keeping the access permissions is optional, however.

Step | Process | Flow Control
1 | Examine message and retrieve the `SIF_SourceId` of the message. The ZIS must remove the agent from its list of registered agents. Perform `SIF_Unprovide` functionality for any objects the agent is providing. Perform `SIF_Unsubscribe` functionality for any objects to which the agent is subscribed. Discard any pending messages for the agent. |
2 | Prepare a `SIF_Ack` containing a `SIF_Status` element indicating success. Return the `SIF_Ack` to caller. | Stop processing the message.

Table 4.2.2.3-1: SIF_Unregister Handling

#### 4.2.2.4 SIF_Provide

An agent makes an object available to be requested by a process called Provision that is represented by the `SIF_Provide` message.

The `SIF_Provide` message can contain provision requests for multiple objects. The ZIS must treat all of the objects as a set; if there is an error with one of the objects then there should be no change to the Providers database.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack`. | Go to Step 3.
2 | Examine the message to determine whether any more objects are being provided. | Go to Step 11 if there are no further object provisions to process for this message.
3 | Retrieve the name of the next object to be provided. If not otherwise performed in initial message validation, check whether the object name is valid (e.g. valid/supported object, not `SIF_ZoneStatus`). | If object name is valid, go to Step 5.
4 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Provision and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the object is invalid. Place the name of the invalid object in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 14.
5 | If no `SIF_Context` is specified, the context is `SIF_Default`. Otherwise check that each `SIF_Context` supplied in `SIF_Contexts` is supported. | If they are all supported, go to Step 7.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Generic Message Handling. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate a context is not supported. Place the name of the context in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 14.
7 | Using the `SIF_SourceId`, consult the ACL to determine if the sender has the proper access and permissions for this object in each of the specified contexts. | If sender has the proper access and permissions, go to Step 9.
8 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Access and Permissions. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the sender lacks permission to provide this object. Place the name of the object in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 14.
9 | Check the Providers database to see if this object has already been provided in the contexts specified. | If the object does not have a provider in the contexts specified, go to Step 11.
10 | Is the current provider the same as the `SIF_SourceId` of this message? | If the provider differs from the `SIF_SourceId` of this message, go to Step 14. Otherwise go to Step 2.
11 | Add a record in the Providers database to indicate that `SIF_SourceId` is the provider of this object in the given contexts. If an error occurs, add a `SIF_Error` element to the `SIF_Ack`. | If an error occurs, go to Step 13; otherwise go to Step 2.
12 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Provision and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that the object already has a provider. Place the name of the provider in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 14.
13 | Add a `SIF_Status` element indicating success to the `SIF_Ack`. Return the `SIF_Ack` to the caller. | Stop processing the message.
14 | Undo all changes to the Providers database. Return the `SIF_Ack` to the caller. | Stop processing the message.

Table 4.2.2.4-1: SIF_Provide Handling

#### 4.2.2.5 SIF_Unprovide

If an agent wishes to withdraw an object previously provided, the `SIF_Unprovide` message is used.

The `SIF_Unprovide` message can contain multiple objects. The ZIS must treat all of the objects as a set; if there is an error with one of the objects then there should be no change to the Providers database.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack`. | Go to Step 3.
2 | Examine the message to determine whether any more objects are being unprovided. | Go to Step 7 if there are no further objects to process for this message.
3 | Examine the message and retrieve the name of an object to be unprovided. If not otherwise performed in initial message validation, check whether the object name is valid (e.g. valid/supported object, not `SIF_ZoneStatus`). | Go to Step 5 if the object name is valid.
4 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Provision and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the object is invalid. Place the name of the invalid object in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 10.
5 | If no `SIF_Context` is specified, the context is `SIF_Default`. Otherwise check that each `SIF_Context` supplied in `SIF_Contexts` is supported. | If they are all supported, go to Step 7.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Generic Message Handling. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate a context is not supported. Place the name of the context in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 10.
7 | If it exists, remove the records in the Providers database that marks `SIF_SourceId` as the provider of this object for the given contexts. If an error occurs, add a `SIF_Error` element to the `SIF_Ack`. | If an error occurs, go to Step 10.
8 | Leave all pending `SIF_Request`s for the object in the responder's queue, as they may include `SIF_Request`s routed explicitly to the responder using `SIF_DestinationId`. | Go to Step 2.
9 | Add a `SIF_Status` element indicating success to the `SIF_Ack`. Return the `SIF_Ack` to the caller | Stop processing the message.
10 | Undo all changes to the Providers database. Return the `SIF_Ack` to the caller. | Stop processing the message.

Table 4.2.2.5-1: SIF_Unprovide Handling

#### 4.2.2.6 SIF_Subscribe

An agent requests to receive `SIF_Event`s for an object by a process called Subscription that is represented by the `SIF_Subscribe` message.

The `SIF_Subscribe` message can contain subscription requests for multiple objects. The ZIS must treat all of the objects as a set, if there is an error with one of the objects then there should be no change to the Subscribers database.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack`. | Go to Step 3.
2 | Examine the message to determine whether any more subscriptions need to be processed. | Go to Step 9 if there are no further subscriptions to process in this message.
3 | Retrieve the name of the next object to be subscribed to. If not otherwise performed in initial message validation, check whether the object name is valid (e.g., valid/supported object with events reported). | If the object name is valid, go to Step 5.
4 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Subscription and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the object is invalid. Place the name of the invalid object in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 12.
5 | If no `SIF_Context` is specified, the context is `SIF_Default`. Otherwise check that each `SIF_Context` supplied in `SIF_Contexts` is supported. | If they are all supported, go to Step 7.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Generic Message Handling. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate a context is not supported. Place the name of the context in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 12.
7 | Using the `SIF_SourceId`, consult the ACL to determine if the sender has the proper access and permissions for this object and contexts. | If sender has the proper access and permissions, go to Step 9.
8 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Access and Permissions. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the sender lacks permission to subscribe to this object. Place the name of the object in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 12.
9 | Check the Subscribers database to see if the caller is already subscribed to this object for the specified contexts. | If the caller is already subscribed to this object, go to Step 2.
10 | Add a record in the Subscribers database to indicate that `SIF_SourceId` is a subscriber of this object's `SIF_Event`s in the specified contexts. If an error occurs, add a `SIF_Error` element to the `SIF_Ack`. | If an error occurs go to Step 12; otherwise go to Step 2.
9 | Add a `SIF_Status` element indicating success to the `SIF_Ack`. Return the `SIF_Ack` to the caller. | Stop processing the message.
12 | Undo all changes to the Subscribers database. Return the `SIF_Ack` to the caller. | Stop processing the message.

Table 4.2.2.6-1: SIF_Subscribe Handling

#### 4.2.2.7 SIF_Unsubscribe

If an agent wishes to cancel one or more subscriptions, the `SIF_Unsubscribe` message is used. Events already queued for delivery prior to unsubscription will be delivered.

The `SIF_Unsubscribe` message can contain subscription requests for multiple objects. The ZIS must treat all of the objects as a set, if there is an error with one of the objects then there should be no change to the Subscribers database.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack`. | Go to Step 3.
2 | Examine the message to determine whether any more unsubscriptions need to be processed. | Go to Step 6 if there are no further objects to process in the message.
3 | Retrieve the name of the next object. If not otherwise performed in initial message validation, check whether the object name is valid (e.g. valid/supported object with events reported). | If the object name is valid, go to Step 5.
4 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Subscription and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the object is invalid. Place the name of the invalid object in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 9.
5 | If no `SIF_Context` is specified, the context is `SIF_Default`. Otherwise check that each `SIF_Context` supplied in `SIF_Contexts` is supported. | If they are all supported, go to Step 7.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Generic Message Handling. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate a context is not supported. Place the name of the context in `SIF_Error/SIF_ExtendedDesc`. | Go to Step 12.
7 | If it exists, remove the record in the Subscribers database that marks `SIF_SourceId` as a subscriber of this object's `SIF_Event`s in the specified contexts. If an error occurs, add a `SIF_Error` element to the `SIF_Ack`. | If an error occurs go to Step 9, otherwise go to Step 2.
8 | Add a `SIF_Status` element indicating success to the `SIF_Ack`. Return the `SIF_Ack` to the caller. | Stop processing the message.
9 | Undo all changes to the Subscribers database. Return the `SIF_Ack` to the caller. | Stop processing the message.

Table 4.2.2.7-1: SIF_Unsubscribe Handling

#### 4.2.2.8 SIF_Provision

An Agent is registering its support for various messages with regard to various objects. Settings supplied replace any previously recorded settings for the Agent.

Step | Process | Flow Control
--- | --- | ---
1 | Prepare `SIF_Ack`. |
2 | Process `SIF_ProvideObjects` as provide. | On error go to step 13.
3 | Process objects not in `SIF_ProvideObjects` as unprovide. | On error go to step 13.
4 | Process `SIF_SubscribeObjects` as subscribe. | On error go to step 13.
5 | Process objects not in `SIF_SubscribeObjects` as unsubscribe. | On error go to step 13.
6 | Process `SIF_PublishAddObjects`. | On error go to step 13.
7 | Process `SIF_PublishChangeObjects`. | On error go to step 13.
8 | Process `SIF_PublishDeleteObjects`. | On error go to step 13.
9 | Process `SIF_RequestObjects`. | On error go to step 13.
10 | Process `SIF_RespondObjects`. | On error go to step 13.
11 | Save changes. |
12 | Return success `SIF_Ack`. | Stop processing.
13 | Roll back any changes. |
14 | Return error `SIF_Ack`. | Stop processing.

Table 4.2.2.8-1: SIF_Provision Handling

#### 4.2.2.9 SIF_Event

When an application has made a change in an object that is part of the Zone and for which the application has declared the ability to generate `SIF_Event`s, the agent will send a `SIF_Event` message to its Zone Integration Server so the framework may distribute it.

Step | Process | Flow Control
1 | Examine message and retrieve the name of the object. Check whether the object name is valid (e.g. valid/supported object with events reported). | If object name is valid, go to Step 3.
2 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Event Reporting and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the event is invalid. Place the name of the invalid object in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
3 | If no `SIF_Context` is specified, the context is `SIF_Default`. Otherwise check that each `SIF_Context` supplied in `SIF_Contexts` is supported. | If they are all supported, go to Step 5.
4 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Generic Message Handling. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate a context is not supported. Place the name of the context in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
5 | Using the `SIF_SourceId`, consult the ACL to determine if the sender has the proper access and permissions for this object in the specified contexts. | If sender has the proper access and permissions, go to Step 7.
6 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Access and Permissions. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the sender lacks permission to publish events pertaining to this object (use general `SIF_Event` error code, or specific Add, Change, Delete codes). Place the name of the object in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
7 | Check the Subscriber database to see if there are any subscribers in the specified contexts for the `SIF_Event`. | Go to Step 9 if there are no subscribers for this object.
8 | Create a new message for this `SIF_Event` and place a copy into each subscribing agent's queue. If more than one context is specified for the event, only one copy of the event is placed in the subscribing agent's queue. If the event cannot be placed into an individual agent's queue due to the agent's maximum buffer size or because the subscribing agent does not support the message version of the `SIF_Event`, it is recommended that the ZIS log the inability to deliver the event. In addition, the ZIS MUST report a `SIF_LogEntry` event with the appropriate error category and code, containing a copy of the `SIF_Header` from the original message. `SIF_LogEntry/SIF_Desc` must contain the SourceId of the agent that has failed to receive the message. |
9 | Prepare a `SIF_Ack` containing a `SIF_Status` element indicating success. Return a `SIF_Ack` to the caller. | Stop processing the message.

Table 4.2.2.9-1: SIF_Event Handling

#### 4.2.2.10 SIF_Request

When an agent needs information from a Zone context it sends a `SIF_Request` message to the ZIS. If the `SIF_Request`'s header does not contain a `SIF_DestinationId` element, the ZIS will route the message to the Provider of the object referenced in the `SIF_Request`. If the header contains a `SIF_DestinationId`, the ZIS will route the message to the application referenced in the `SIF_DestinationId` if the security policies of the zone permit such routing. The ZIS will return a `SIF_Ack` message to the requesting agent to indicate whether or not it was able to process the `SIF_Request` message.

After the ZIS returns a success `SIF_Ack` to the requester, the ZIS will route the `SIF_Request` to the responder and the requesting agent may expect to receive one or more `SIF_Response` messages sent by the responder. However, the responder may not be currently on-line or it may not be able to immediately satisfy the `SIF_Request`. Therefore, requesting agents must not depend upon a timely response to their `SIF_Request`.

If the ZIS returns an error `SIF_Ack`, the requesting agent will not receive any `SIF_Response` messages from a responder.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack`. |
2 | Retrieve the name of the object from the `ObjectName` attribute of `SIF_Query/SIF_QueryObject` and check whether it's a valid/supported object. | Go to Step 4 if the object name is valid.
3 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Request and Response and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the object name is invalid. Place the name of the invalid object in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
4 | If no `SIF_Context` is specified, the context is `SIF_Default`. Otherwise check that the context supplied in `SIF_Contexts` is supported. If more than one context is specified, go to Step 5. | If the context is supported, go to Step 6.
5 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Generic Message Handling. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate a specified context is not supported or that multiple contexts are not supported, depending on the error. Place the name of the context in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
6 | Using the `SIF_SourceId`, consult the ACL to determine if the sender has the proper access and permissions for this object in the applicable contexr. | If sender has the proper access and permissions, go to Step 8.
7 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Access and Permissions. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the sender lacks permission to request this object. Place the name of the object in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
8 | Examine the `SIF_Request` header looking for a `SIF_DestinationId` | Go to Step 11 if a `SIF_DestinationId` was located.
9 | No `SIF_DestinationId` was found. Examine the Providers database to locate the responder for the requested object in the applicable context. | Go to Step 12 if a Provider was located.
10 | Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate that no provider was found. Return the `SIF_Ack` to the caller. | Stop processing the message.
11 | A `SIF_DestinationId` was specified indicating the responder. Confirm that the agent specified in `SIF_DestinationId` has permission to send `SIF_Response` messages for the requested data object in the applicable context. | Go to Step 10 if the agent does not have the necessary permission.
12 | If it can be determined from ACL settings or settings recorded by `SIF_Provision` and/or `SIF_Provide` that the Responder cannot handle a `SIF_Query` for a given object or `SIF_ExtendedQuery` for any referenced object, or that the Responder doesn't handle extended queries in general, add a `SIF_Error` element with the applicable `SIF_Error/SIF_Category` and `SIF_Error/SIF_Code` (object not supported, query not supported, or `SIF_ExtendedQuery` not supported). Place an appropriate error message in `SIF_Desc` and/or `SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
13 | Deposit the `SIF_Request` in the responder's queue. If the request cannot be placed into an individual agent's queue due to the agent's maximum buffer size or because the destination agent does not support the message version of the `SIF_Request`, it is recommended that the ZIS log the inability to deliver the request. In addition, the ZIS MUST report a `SIF_LogEntry` event with the appropriate error category and code, containing a copy of the `SIF_Header` from this message. `SIF_LogEntry/SIF_Desc` MUST contain the SourceId of the agent that has failed to receive the request. |
14 | Return a `SIF_Ack`, with `SIF_Status` set to `0`, to the caller to indicate that `SIF_Request` has been sent. | Stop processing the message.

Table 4.2.2.10-1: SIF_Request Handling

#### 4.2.2.11 SIF_Response

When receiving a `SIF_Response` packet from an agent responding to a `SIF_Request`, the ZIS MUST perform the validation protocol below.

Step | Process | Flow Control
--- | --- | ---
1 | Prepare a `SIF_Ack`.
2 | Using the supplied `SIF_RequestMsgId`, look up the `SIF_Request` that initiated this response. | Go to Step 4 if the `SIF_Request` is found.
3 | Add a `SIF_Error` element to the `SIF_Ack`. Set `SIF_Error/SIF_Category` to indicate Request and Response and set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the `SIF_RequestMsgId` is invalid. Place `SIF_RequestMsgId` in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Stop processing the message.
4 | Examine the `SIF_MaxBufferSize` specified in the `SIF_Request` message and compare it to the size of the `SIF_Response` packet. | If the `SIF_Response` packet is smaller than or equal to the `SIF_MaxBufferSize` specified in the original request, go to Step 6.
5 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate indicate Request and Response. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the `SIF_MaxBufferSize` is incorrect. Place a description of the `SIF_MaxBufferSize` and the actual size of the message received in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Go to step 13.
6 | Examine the `SIF_DestinationId` specified in the `SIF_Response` and compare it to the `SIF_SourceId` of the original request. | If the `SIF_DestinationId` is correct, go to Step 8.
7 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate indicate Request and Response. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the `SIF_DestinationId` is incorrect. Place a description of the `SIF_DestinationId` specified and the `SIF_DestinationId` expected in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Go to step 13.
8 | Examine the `SIF_PacketNumber` specified in the `SIF_Response`. If this is the first `SIF_Response` packet received, the `SIF_PacketNumber` must be set to a value of `1`. Subsequent packets must be received in order with the `SIF_PacketNumber` set to `1 +` the previous `SIF_PacketNumber`. | If the `SIF_PacketNumber` is correct, go to Step 10.
9 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate indicate Request and Response. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the `SIF_PacketNumber` is incorrect. Place a description of the `SIF_PacketNumber` specified and the `SIF_PacketNumber` expected in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Go to step 13.
10 | Examine the `SIF_Version` specified in the `SIF_Response` and compare it to the `SIF_Version`s allowed in the original request. | If the SIF version matches one of the SIF Versions requested in the `SIF_Request`, go to Step 12.
11 | Prepare a `SIF_Ack` containing a `SIF_Error` element. Set `SIF_Error/SIF_Category` to indicate Request and Response. Set `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the `SIF_Version` is incorrect. Place a description of the version of the `SIF_Response` and versions allowed by the `SIF_Request` in `SIF_Error/SIF_ExtendedDesc`. Return the `SIF_Ack` to the caller. | Go to step 13.
12 | Place the `SIF_Response` packet in the requesting agent's queue. | Message processing is complete. Stop processing the message.
13 | Prepare a `SIF_Response` message with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. Add a `SIF_Error` element with the `SIF_Error/SIF_Category` set to indicate Request and Response and `SIF_Error/SIF_Code` and `SIF_Error/SIF_Desc` to indicate the reason that the `SIF_Response` packet was rejected. Add `SIF_PacketNumber` with a value set to set to `1 +` the previous `SIF_PacketNumber` and `SIF_MorePackets` to `No`. Send the `SIF_Response` to the original requester. In addition, the ZIS MUST report a `SIF_LogEntry` event with the appropriate error category and code, containing a copy of the `SIF_Header` from the request. `SIF_LogEntry/SIF_ExtendedDesc` should contain information about why the message failed `SIF_Response` validation. | Stop processing the message. The ZIS must also guarantee that no additional `SIF_Response` packets for this `SIF_Request` will be accepted. Depending on the implementation, the ZIS may need to alter the `SIF_Request` cache it maintains to signal that the `SIF_Request` is no longer valid. The ZIS may remove the `SIF_Request` from the cache as the stream is closed.

Table 4.2.2.11-1: SIF_Response Handling

##### 4.2.2.11.1 Implementation Notes

The ZIS must maintain a reliable list of all open `SIF_Request`s in order to satisfy the Quality of Service validations that are applied to `SIF_Response`s above. It is envisioned that once a `SIF_Response` has been completed, either by receiving the last packet or by failing one of the validations applied below, knowledge of the initiating `SIF_Request` will no longer need to be maintained by the ZIS. If the responding agent attempts to send any more `SIF_Response`s for a failed `SIF_Request`, it will automatically fail at Step 2 and get the error response specified in Step 3. Notification of the failed `SIF_Response` would have already been sent to the requesting agent.

There remain three cases where a requesting agent will not receive a complete `SIF_Response` for a request.

1. The responding agent never replies with a `SIF_Response`.
2. The responding agent starts replying, but never finishes the `SIF_Response` by sending a `SIF_Response` with the `SIF_MorePackets` element set to "No".
3. The responding agent attempts a reply with a `SIF_Response` but the ZIS is unable to parse the message enough to read the `SIF_RequestMsgId`. If this case occurs, and the responding agent sends a subsequent `SIF_Response` that is parseable, it is likely that the requesting agent will be notified of the problem because subsequent `SIF_Response` packets will not pass the `SIF_PacketNumber` validation.

Management of the `SIF_Request` cache that is maintained by the ZIS is left up to the ZIS implementation. The ZIS is required to maintain the `SIF_Request`s for a reasonable amount of time. If the ZIS eventually removes `SIF_Request`s that have been cached for a long period of time, that option must be able to be configured by the ZIS administrator.

When an open request cache entry is removed by the administrator or a timeout of the record, the ZIS should publish a `SIF_LogEntry` and a `SIF_Response/SIF_Error` indicating the reason it was removed.

#### 4.2.2.12 SIF_Ping

An Agent is pinging your ZIS to see if it is reachable, "awake" and/or processing messages.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. If your ZIS is "awake," include a `SIF_Status` element with a `SIF_Code` of `0` (success). Otherwise you may optionally notify the Agent that your ZIS is asleep by returning a `SIF_Code` of `8` (receiver is sleeping). |
2 | Return the `SIF_Ack` to the Agent. | Message processing complete (success).

Table 4.2.2.12-1: SIF_Ping Handling

#### 4.2.2.13 SIF_Sleep

The Agent wants its state changed to "asleep." Upon successful state change, your ZIS SHOULD avoid sending messages to a Push-Mode Agent until receipt of a `SIF_Wakeup` message or that Agent re-registers, or be prepared to handle transport errors or the aforementioned acknowledgement. Whether the Agent is registered in Push or Pull mode, this state is communicated to other Agents in `SIF_ZoneStatus` and MUST be persisted accordingly. In addition to sending a `SIF_Wakeup` or `SIF_Register`, a Pull-Mode Agent can also change its state to "awake" by sending a `SIF_GetMessage`.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `0` (success). Change the state of the Agent to "asleep." |
2 | Return the `SIF_Ack` to the Agent. | Message processing complete (success).

Table 4.2.2.13-1: SIF_Sleep Handling

#### 4.2.2.14 SIF_Wakeup

An Agent wants its state changed to "awake," notifying the ZIS and other Agents of the state change. A ZIS MUST persist this state in order to communicate it to other Agents via `SIF_ZoneStatus`. When a Push-Mode Agent changes its state to "awake," the ZIS may also resume delivery of queued messages to the Agent.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `0` (success). Change the Agent's state to "awake." |
2 | Return the `SIF_Ack` to the Agent. | Message processing complete (success).

Table 4.2.2.14-1: SIF_Wakeup Handling

#### 4.2.2.15 SIF_GetZoneStatus

An Agent is requesting the status of the zone.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `0` (success). Reflect the current state of the zone in `SIF_Status/SIF_Data/SIF_ZoneStatus`. |
2 | Return the `SIF_Ack` to the Agent. | Message processing complete (success).

Table 4.2.2.15-1: SIF_GetZoneStatus Handling

#### 4.2.2.16 SIF_GetAgentACL

An Agent is requesting its access control permissions.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `0` (success). Communicate the Agent's ACL permissions in `SIF_Status/SIF_Data/SIF_AgentACL`. |
2 | Return the `SIF_Ack` to the Agent. | Message processing complete (success).

Table 4.2.2.16-1: SIF_GetZoneStatus Handling

#### 4.2.2.17 SIF_CancelRequests

If an Agent abandons or restarts a data collection using `SIF_Request`s, whether or not the response stream has started, it is RECOMMENDED that it send one or more `SIF_CancelRequests` messages to the ZIS. Upon receipt of the `SIF_CancelRequests` message, the ZIS deletes corresponding `SIF_Request` messages from Agent queues and deletes its own state/tracking information regarding each request. Doing the latter ensures that if a Responder is still processing a request, the ZIS effectively ends the response stream upon receipt of the next `SIF_Response` packet by returning a `SIF_Error` with a `SIF_Category` of `8` (Request and Response Error) and a `SIF_Code` of `10` (invalid SIF_RequestMsgId specified in SIF_Response). No changes to responding Agent behaviors are required as all agents in the SIF 2.x lifecycle have the capability to handle this error state.

When cancelling `SIF_Request`s, the ZIS also has the ability to send a `SIF_CancelRequests` message to Push-Mode Agents. Pull-Mode Responders cannot receive these messages, but any pending response handling is cancelled per the ZIS behavior above. When dealing with Push-Mode Agents, ZIS implementations must bear in mind that support for this message is optional for Push-Mode Agents.

When a cancelling Agent specifies a `NotificationType` of `Standard`, it is the responsibility of the ZIS to end the response stream to the requesting Agent by sending a `SIF_Response` packet with a `SIF_MorePackets` of `No` on the Responder's behalf.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. Include a `SIF_Status` element with a `SIF_Code` of `0` (success). Return the `SIF_Ack` to the Agent. (There are no error return values that apply to this message.) | Go to Step 2.
2 | For each `SIF_RequestMsgId` element, perform the following steps. | If all `SIF_RequestMsgId` elements have been processed, processing is complete.
3 | Using the supplied `SIF_RequestMsgId`, look up the `SIF_Request` that initiated this response. | Go to Step 2 if the `SIF_Request` is not found, or has already been completed with a "final" `SIF_Response` packet (`SIF_MorePackets` = `No`).
4 | Examine the `SIF_SourceId` specified in the `SIF_Request` message and compare it to the `SIF_SourceId` in the `SIF_SystemControl` message. | If the `SIF_SourceId` is not the same, go to Step 2.
5 | Close out the `SIF_Request` tracking state for the request so that no further tracking is performed. |
6 | If the responding Agent has already received the request and is running in Push mode, send a `SIF_CancelRequests` message to that Agent. (Note: This could also be accomplished by packaging up all `SIF_RequestMsgId`s that apply to the same responding Agent and sending a single `SIF_CancelRequests` message.) |
7 | Examine the value of `SIF_NotificationType`. | If set to `Standard`, go to Step 8. If set to `None`, go to Step 10.
8 | Prepare a `SIF_Response` message with `SIF_DestinationId` set to `SIF_SourceId` and `SIF_RequestMsgId` set to `SIF_MsgId` from the `SIF_Request` message. |
9 | Add a `SIF_Error` element with the `SIF_Category` set to indicate Request and Response, with `SIF_Code` and `SIF_Desc` indicating `18` (SIF_Request cancelled by requesting agent). Add `SIF_PacketNumber` with a value set to the previous `SIF_PacketNumber + 1`. Set `SIF_MorePackets` to `No`. Place the `SIF_Response` in the requester's queue. |
10 | Determine if there are any more `SIF_RequestMsgId` elements left to process. | Go to Step 2 if there are more `SIF_RequestMsgId` elements, otherwise processing is complete.

Table 4.2.2.17-1: SIF_CancelRequests Handling

#### 4.2.2.18 SIF_GetMessage

A Pull-Mode Agent is requesting the next message in its queue.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. Place the incoming `SIF_Header/SIF_SourceId` and `SIF_Header/SIF_MsgId` in `SIF_OriginalSourceId` and `SIF_OriginalMsgId`, respectively. If the Agent sending `SIF_GetMessage` is registered as a Pull-Mode Agent, go to step 3. |
2 | The Agent is a Push-Mode Agent and is not allowed to send `SIF_GetMessage`. Include a `SIF_Error/SIF_Category` of `5` (Registration) and a `SIF_Error/SIF_Code` of `9` (Agent is registered in Push mode). Populate `SIF_Desc` and optionally `SIF_ExtendedDesc` as desired. Return the `SIF_Ack` to the Agent. | Message processing complete.
3 | If the recorded state of the Pull-Mode Agent is "asleep," change that state to "awake." Is there a message available in the Agent's message queue, subject to Selective Message Blocking? If yes, go to step 5. |
4 | There is no message currently available for the Agent. Include a `SIF_Status/SIF_Code` of `9` (no messages available). Return the `SIF_Ack` to the Agent. | Message processing complete.
5 | The next available message in the Agent's queue, subject to Selective Message Blocking, can be delivered (it will be removed from the queue later per successful handling of a `SIF_Ack` from the Pull-Mode Agent). If `SIF_Security` is specified on the message and the connection from the Pull-Mode Agent does not meet the specified minimum encryption and/or authentication levels, or if the connection does not meet minimum encryption/authentication levels in the Zone, remove the message from the Agent's queue and return an appropriate `SIF_Error`. Otherwise include a `SIF_Status/SIF_Code` of `0` (success) and place the message in `SIF_Status/SIF_Data`. | Message processing complete.

Table 4.2.2.18-1: SIF_GetMessage Handling

#### 4.2.2.19 SIF_Ack (from a Push-Mode Agent)

A Push-Mode Agent is sending a final `SIF_Ack` to end Selective Message Blocking (SMB).

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. |
2 | Is `SIF_Status/SIF_Code` `3` (final `SIF_Ack`)? | If yes, go to Step 3.
2 | The Agent has violated protocol. End SMB if it has been invoked by the Agent and remove the blocked `SIF_Event` from the Agent's queue. Indicate `SIF_Error/SIF_Category` of `13` (SMB Error) and `SIF_Error/SIF_Code` `3` (final `SIF_Ack` expected). It is RECOMMENDED that your ZIS log the error. Your ZIS MAY post a `SIF_LogEntry` `Add` event with the same error category and code above, containing a copy of the `SIF_Header` of the message. | Return the `SIF_Ack` to the Agent. Message handling complete (error).
3 | Does `SIF_OriginalMsgId` match the `SIF_MsgId` for the `SIF_Event` that was blocked in SMB, if any? | If yes, go to Step 5.
4 | The Agent has violated protocol. As there can be only one event blocked by SMB, end SMB for the agent and remove the blocked `SIF_Event` from the Agent's queue, if any. Indicate `SIF_Error/SIF_Category` of `13` (SMB Error) and `SIF_Error/SIF_Code` `4` (incorrect `SIF_MsgId` in final `SIF_Ack`). It is RECOMMENDED that your ZIS log the error. Your ZIS MAY post a `SIF_LogEntry` `Add` event with the same error category and code above, containing a copy of the `SIF_Header` of the message. | Return the `SIF_Ack` to the Agent. Message handling complete (error).
5 | SMB has been ended by the Agent. Removed the blocked `SIF_Event` from the Agent's queue. Place `0` in `SIF_Status/SIF_Code`. | Return the `SIF_Ack` to the Agent. Message handling complete (success).

Table 4.2.2.19-1: SIF_Ack Handling

#### 4.2.2.20 SIF_Ack (from a Pull-Mode Agent)

A Pull-Mode Agent is acknowledging a message it has retrieved using `SIF_GetMessage`. This typically leads to the message in question being removed from the Agent's queue. The Agent may also invoke Selective Message Blocking when acknowledging an event, blocking delivery of subsequent `SIF_Event`s until Selective Message Blocking is ended by the Agent.

Step | Process | Flow Control
1 | Prepare a `SIF_Ack` message with `SIF_Header` containing a new GUID in `SIF_MsgId`, your Zone ID in `SIF_SourceId` and the current time in `SIF_Timestamp`; other `SIF_Header` elements do not apply. |
2 | Is `SIF_Error` present? | If yes, go to Step 14.
3 | Is `SIF_Status/SIF_Code` `1` (immediate `SIF_Ack`)? | If no, go to Step 5.
4 | If no message matches `SIF_OriginalMsgId`, set `SIF_Error/SIF_Category` to `12` (Generic Message Handling) and `SIF_Error/SIF_Code` to `6` (no such message). Otherwise remove the identified message from the Agent's queue and set `SIF_Status/SIF_Code` to `0`. | Return `SIF_Ack`. Message handling complete.
5 | Is `SIF_Status/SIF_Code` `2` (intermediate `SIF_Ack`)? | If no, go to Step 7.
6 | If no message matches `SIF_OriginalMsgId`, set `SIF_Error/SIF_Category` to `12` (Generic Message Handling) and `SIF_Error/SIF_Code` to `6` (no such message). If the message identified is not a `SIF_Event`, set `SIF_Category` to `13` (SMB Error) and `SIF_Code` to `2` (SMB can only be invoked on a `SIF_Event`). Otherwise invoke SMB on the identified `SIF_Event`, persisting `SIF_OriginalMsgId`, and set `SIF_Status/SIF_Code` to `0`. This event is blocked and all `SIF_Event`s are frozen. | Return `SIF_Ack`. Message handling complete.
7 | Is `SIF_Status/SIF_Code` `3` (final `SIF_Ack`)? | If no, go to Step 9.
8 | If SMB has not been invoked or the message identified by `SIF_OriginalMsgId` doesn't exist or doesn't match the `SIF_Event` blocked by SMB, set `SIF_Error/SIF_Category` to `13` (SMB Error) and `SIF_Error/SIF_Code` to `4` (incorrect `SIF_MsgId` in final `SIF_Ack`). (In the case of SMB having been invoked but the message not matching, end SMB, remove the message blocked by SMB from the Agent's queue and unfreeze delivery of events.) Otherwise end SMB, remove the identified message from the Agent's queue and unfreeze delivery of events. Set `SIF_Status/SIF_Code` to `0`. | Return `SIF_Ack`. Message handling complete.
9 | Is `SIF_Status/SIF_Code` `7` (already have this `SIF_MsgId` from you)? | If no, go to Step 11.
10 | The ZIS cannot correct this, as the `SIF_MsgId` originates from an Agent and can't be changed without other repercussions. Remove the message from the Agent's queue. Set `SIF_Status/SIF_Code` to `0`. | Return `SIF_Ack`. Message handling complete.
11 | Is `SIF_Status/SIF_Code` `8` (receiver is sleeping)? | If no, go to Step 13.
12 | The Agent is stating it cannot process the message at this time; leave it as the next message to be delivered. Set `SIF_Status/SIF_Code` to `0`. | Return `SIF_Ack`. Message handling complete.
13 | The Agent has violated protocol. Indicate `SIF_Error/SIF_Category` of `12` (Generic Message Handling Error) and `SIF_Error/SIF_Code` `5` (protocol error). of the message. | Return `SIF_Ack`. Message handling complete.
14 | The Agent has indicated a `SIF_Error` condition. See Error Codes with `SIF_Category` and `SIF_Code`, and examine `SIF_Desc` and `SIF_ExtendedDesc`, if included. If `SIF_Category` does not indicate a transport error, remove the message from the Agent's queue. Otherwise it remains the next message to be delivered. Set `SIF_Status/SIF_Code` to `0`. | Return `SIF_Ack`. Message handling complete.

Table 4.2.2.20-1: SIF_Ack Handling

# 5 Infrastructure

This section presents the XML structure for Infrastructure common elements, messages and objects in a tabular format for readers less versed in parsing formal XML schema definitions.

The Char(acteristics) column for all of the tables in this section use the following codes:

Code | Characteristic
M | Mandatory element or attribute
O | Optional element or attribute
C | Conditional element or attribute
MR | Mandatory and repeatable element
OR | Optional and repeatable element
CR | Conditional and repeatable element

Mandatory elements and attributes MUST be provided in the Infrastructure messages in which they appear. Infrastructure data objects (`SIF_ZoneStatus`, `SIF_AgentACL`) can be subject to SIF's request/response and event models; when impacted by these models (in a `SIF_Event` or in a `SIF_Response`), these objects follow the same conventions as listed in Data Model.

## 5.1 Common Elements

### 5.1.1 SIF_Message

The `SIF_Message` element is the root element of all SIF messages.

Figure 5.1.1-1: SIF_Message

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Message |  | Contains one of the SIF message types. | choice of: SIF_Ack SIF_Event SIF_Provide SIF_Provision SIF_Register SIF_Request SIF_Response SIF_Subscribe SIF_SystemControl SIF_Unprovide SIF_Unregister SIF_Unsubscribe
@ | xmlns | C | The xmlns attribute specifies the XML namespace for SIF messages. For this version of the specification, the value of this attribute MUST be `http://www.sifinfo.org/au/infrastructure/2.x` . This XML namespace value will remain the same until the next major release of SIF (3.0). Note that one `SIF_Message` may be contained within another when a ZIS delivers a Pull-Mode Agent's next message in a `SIF_Ack` response to a `SIF_GetMessage` from the Pull-Mode Agent. If the default namespace specified for the child `SIF_Message` is the same as the default namespace of the parent `SIF_Message`, the `xmlns` attribute for the child message MAY be omitted. | xs:anyURI
@ | Version | M | The version of the SIF Implementation Specification that defines this message's XML structure. For this version of the specification, the value of this attribute is `2.4`. This attribute can be used by ZIS and agent implementations to choose schema files to validate the message's XML. | VersionType

Table 5.1.1-1: SIF_Message
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> ... </SIF_Message>
Example 5.1.1-1: SIF_Message

### 5.1.2 SIF_Header

`SIF_Header` is a common message header for all SIF messages.

Figure 5.1.2-1: SIF_Header

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Header | M | Header information associated with a message. |
| SIF_MsgId | M | `SIF_MsgId` is a globally unique message identifier from the Agent or ZIS that sends out the message. | MsgIdType
| SIF_Timestamp | M | Timestamp of when the message was sent. | xs:dateTime
| SIF_Security | O | This element allows an originating agent to specify security requirements that the ZIS must ensure upon delivery of the message to recipient agents. `SIF_Security` is only examined and processed by a ZIS on `SIF_Request`, `SIF_Response` and `SIF_Event` messages. In this version of the specification, `SIF_Security` is ignored on all other messages; its use on other messages is reserved for future versions of this specification. |
| SIF_Security/SIF_SecureChannel | M | The originating agent uses this element to specify security requirements for the channel between the ZIS and any recipient agents at delivery time. The ZIS must ensure these requirements are met for this message when delivered to other agents. |
| SIF_Security/SIF_SecureChannel/ SIF_AuthenticationLevel | M | The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents. | SIF_AuthenticationLevel
| SIF_Security/SIF_SecureChannel/ SIF_EncryptionLevel | M | The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents. | SIF_EncryptionLevel
| SIF_SourceId | M | The `SIF_SourceId` is the ID of the originator of the message. Each source needs to have a zone unique case-sensitive identifier. | xs:token
xs:maxLength | 64
| SIF_DestinationId | C | This element represents the ID of the recipient of the message and may be present as follows: `SIF_Response` messages MUST have this element set to the `SIF_SourceId` of the originator of the `SIF_Request` message. The ZIS will use this information to route the `SIF_Response` to the requesting agent. `SIF_Request` messages MAY have this element set to the ID of a specific agent if the requesting agent wishes to direct the `SIF_Request` to a specific responder. If present, the ZIS will route the `SIF_Request` to the agent referenced in the element subject to the access control policies in effect for the zone. This element SHOULD NOT be used in any other SIF Infrastructure messages. If the element is present, it will be ignored by the ZIS. | xs:token
xs:maxLength | 64
| SIF_Contexts | O | Contains each SIF Context that applies to the message. If omitted, the applicable context is `SIF_Default`. `SIF_Context` is repeatable for `SIF_Event`s, not repeatable for `SIF_Request` or `SIF_Response`. | SIF_Contexts

Table 5.1.2-1: SIF_Header
<SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T14:30:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header>
Example 5.1.2-1: SIF_Header
<SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330E</SIF_MsgId> <SIF_Timestamp>2006-03-11T08:39:49-08:00</SIF_Timestamp> <SIF_Security> <SIF_SecureChannel> <SIF_AuthenticationLevel>3</SIF_AuthenticationLevel> <SIF_EncryptionLevel>4</SIF_EncryptionLevel> </SIF_SecureChannel> </SIF_Security> <SIF_SourceId>RamseyLIB</SIF_SourceId> <SIF_DestinationId>RamseySIS</SIF_DestinationId> </SIF_Header>
Example 5.1.2-2: SIF_Header

### 5.1.3 SIF_EncryptionLevel

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

Figure 5.1.3-1: SIF_EncryptionLevel

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_EncryptionLevel |  | The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents. | values: 0 No encryption required 1 Symmetric key length of at least 40 bits is to be used 2 Symmetric key length of at least 56 bits is to be used 3 Symmetric key length of at least 80 bits is to be used 4 Symmetric key length of at least 128 bits is to be used

Table 5.1.3-1: SIF_EncryptionLevel

### 5.1.4 SIF_AuthenticationLevel

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

Figure 5.1.4-1: SIF_AuthenticationLevel

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_AuthenticationLevel |  | The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents. | values: 0 No authentication required and a valid certificate does not need to be presented. 1 A valid certificate must be presented. 2 A valid certificate from a trusted certificate authority must be presented. 3 A valid certificate from a trusted certificate authority must be presented and the CN field of the certificate's Subject entry must match the host sending the certificate.

Table 5.1.4-1: SIF_AuthenticationLevel

### 5.1.5 SIF_Contexts

A list of SIF contexts that applies to a message or operation. Typically where used as an optional element, the omission of this element implies the `SIF_Default` context applies.

Figure 5.1.5-1: SIF_Contexts

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Contexts |  | A list of SIF contexts that applies to a message or operation. Typically where used as an optional element, the omission of this element implies the `SIF_Default` context applies. | List
| SIF_Context | MR |  | SIF_Context

Table 5.1.5-1: SIF_Contexts

### 5.1.6 SIF_Context

The name of a SIF Context that applies to a message or operation.

Figure 5.1.6-1: SIF_Context

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Context |  | The name of a SIF Context that applies to a message or operation. | xs:token
xs:maxLength | 64

Table 5.1.6-1: SIF_Context

### 5.1.7 SIF_Protocol

Contains protocol information regarding a ZIS or Agent.

Figure 5.1.7-1: SIF_Protocol

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Protocol | C | Contains protocol information regarding a ZIS or Agent. |
@ | Type | M | The type of protocol to use (`HTTPS`, `HTTP` or an implementation-defined protocol). | union of: DefinedProtocolsType xs:token
@ | Secure | M | Whether the protocol provides a secure channel. | values: Yes No
| SIF_URL | C | This element is required if the protocol is `HTTPS` or `HTTP`. It contains the `https` or `http` URL for contacting the agent. | xs:anyURI
xs:maxLength | 256
| SIF_Property | OR | May contain zero or more `SIF_Property` elements containing `SIF_Name`/`SIF_Value` pairs describing any protocol settings required to ensure proper communication. |
| SIF_Property/SIF_Name | M | Property name. | xs:token
xs:maxLength | 64
| SIF_Property/SIF_Value | M | Property value. | xs:string
xs:maxLength | 256

Table 5.1.7-1: SIF_Protocol

### 5.1.8 SIF_Status

This element is used to signal a successful response.

Figure 5.1.8-1: SIF_Status

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Status |  | This element is used to signal a successful response. |
| SIF_Code | M |  | InfrastructureStatusCodeType
| SIF_Desc | O | An optional textual description/equivalent of `SIF_Code`. | xs:string
xs:maxLength | 1024
| SIF_Data | O | Optional element to hold data related to a successful operation. This data is currently limited to a `SIF_Message` returned by the ZIS in response to a Pull-Mode Agent's `SIF_GetMessage`, `SIF_AgentACL` returned by the ZIS in response to `SIF_Register` and `SIF_GetAgentACL`, and `SIF_ZoneStatus` returned by the ZIS in response to `SIF_GetZoneStatus`. | choice of: SIF_Message SIF_AgentACL SIF_ZoneStatus

Table 5.1.8-1: SIF_Status

### 5.1.9 SIF_Error

This element is used to signal an unsuccessful response.

Figure 5.1.9-1: SIF_Error

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Error |  | This element is used to signal an unsuccessful response. |
| SIF_Category | M |  | InfrastructureErrorCategoryType
| SIF_Code | M | See Error Codes. | union of: InfrastructureXMLValidationErrorType InfrastructureEncryptionErrorType InfrastructureAuthenticationErrorType InfrastructureAccessAndPermissionErrorType InfrastructureRegistrationErrorType InfrastructureProvisionErrorType InfrastructureSubscriptionErrorType InfrastructureRequestAndResponseErrorType InfrastructureEventReportingAndProcessingErrorType InfrastructureTransportErrorType InfrastructureSystemErrorType InfrastructureGenericMessageHandlingErrorType xs:token
| SIF_Desc | M | A simple, easy to understand, description of the error. The primary consumer of this message is the application user. Example: "Unable to open database." | xs:string
xs:maxLength | 1024
| SIF_ExtendedDesc | O | An optional error description that is more complete and technical in nature. It is to be used as a diagnostic message in trouble-shooting procedures. Example: "The 'Students' table is opened in exclusive mode by user 'ADM1' (dbm.cpp, line 300)." | xs:string

Table 5.1.9-1: SIF_Error

### 5.1.10 SIF_Query

SIF's default query mechanism.
Figure 5.1.10-1: SIF_Query

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Query |  | SIF's default query mechanism. |
| SIF_QueryObject | M | This is the object that is being queried for. |
@ | ObjectName | M | The actual name of the object that is being queried for. | SIF_RequestObjectNamesType
| SIF_QueryObject/SIF_Element | OR | Individual elements/attributes being requested of matching object. See `SIF_Element` Syntax below. If specified, only the elements/attributes requested are returned in the `SIF_Response` (with any parent elements/attributes); otherwise, all elements supported by the provider's object are returned. Note that this is a means to filter or select a subset of elements/attributes from a matching object; specifying elements/attributes here that do not occur in or are not supported in a matching object does not exclude that matching object from being returned. Include any existing parent elements/attributes of the elements/attributes that are requested but not present. | xs:normalizedString
| SIF_ConditionGroup | C | Either `SIF_ConditionGroup` or `SIF_Example` may optionally be specified to present conditions matching objects should satisfy. `SIF_ConditionGroup` represents the conditions that the queried object(s) must meet. If conditions are specified, only those objects that meet the conditions are returned; otherwise, all objects of the specified name are returned. |
@ | Type | M | The Boolean operator for joining conditions (`SIF_Conditions` elements) within this element. Note that `None` should be used if there is only one `SIF_Conditions` element. | values: And Or None
| SIF_ConditionGroup/SIF_Conditions | MR | This construct allows for nested conditions. |
@ | Type | M | The boolean operator for joining conditions (`SIF_Condition` elements) within this element. Note that `None` should be used if there is only one `SIF_Condition` element. | values: And Or None
| SIF_ConditionGroup/SIF_Conditions/ SIF_Condition | MR | This element represents an individual condition. |
| SIF_ConditionGroup/SIF_Conditions/ SIF_Condition/SIF_Element | M | This is the element/attribute being queried. See below for syntax. | xs:normalizedString
| SIF_ConditionGroup/SIF_Conditions/ SIF_Condition/SIF_Operator | M | The comparison operator for the condition. | values: EQ Equals LT Less Than GT Greater Than LE Less Than Or Equals GE Greater Than Or Equals NE Not Equals
| SIF_ConditionGroup/SIF_Conditions/ SIF_Condition/SIF_Value | M | `SIF_Value` is the data that is used to compare with the value of the element or attribute. | xs:string
| SIF_Example | C | An example SIF object that serves as a template for matching objects. There is an implied `EQ` operator for every element/attribute value present and an implied `And` group of all resulting conditions. Currently this is an experimental feature and limited to use with select objects; wider use may be considered in future versions of this specification. | SIF_ExampleObjectType

Table 5.1.10-1: SIF_Query

#### 5.1.10.1 SIF_ConditionGroup

The `SIF_Query` element may have a `SIF_ConditionGroup` element that may have one or more `SIF_Conditions` elements. A `SIF_Conditions` element may contain one or more `SIF_Condition` elements. Each `SIF_Condition` element defines a search criterion, which contains the following sub-elements. For example, if you wished to request the StaffPersonal object for all teachers, the `SIF_ConditionGroup` would be:

<SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@SIF_RefObject</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>StaffPersonal</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup>
Example 5.1.10.1-1

If you wished to request the `StaffPersonal` object for a specific teacher then the `SIF_ConditionGroup` would be:

<SIF_ConditionGroup Type="None"> <SIF_Conditions Type="And"> <SIF_Condition> <SIF_Element>@SIF_RefObject</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>StaffPersonal</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element>@SIF_RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>D3E34B359D75101A8C3D00AA001A1652</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup>
Example 5.1.10.1-2
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="StudentPersonal" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>Name/LastName</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Smith</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message>
Example 5.1.10.1-3: SIF_ConditionGroup querying into an object

#### 5.1.10.2 SIF_Element Syntax

To reference individual elements/attributes in query criteria for objects, and in lists of individual elements/attributes to be returned from matching objects, SIF defines a path syntax which is based on a small subset of [XPath], for use in `SIF_Element`. Elements are specified by name (e.g. `Name`) and attributes are specified by name, prefixed with `@` (e.g. `@Type`). Namespace prefixes may precede element/attribute names as necessary (e.g. `@xml:lang`) and reference the current prefix-to-namespace mappings within the XML of the request. To reference child elements or attributes of child elements, a path notation is used where each element/attribute in the path is separated by `/` (e.g. `Name/FirstName` , `Name/@Type` ). The object's element is the root element and is not included when referencing child elements (e.g. `Name/FirstName` , not `StudentPersonal/Name/FirstName` ); no `/` is required when referencing attributes of the object itself (e.g. `@RefId`, not `StudentPersonal/@RefId)` .

`SIF_Condition/SIF_Element` may also contain XPath predicates (e.g. `[@Type='04']` ) to allow for more precise matching, especially with regard to repeatable elements with "key" attributes. The following `SIF_Condition` would match object withs any `FirstName` of `Cameron`:

<SIF_Condition> <SIF_Element>Name/FirstName</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Cameron</SIF_Value> </SIF_Condition>
Example 5.1.10.2-1

Using a predicate allows the requester to specifically query the person's name of record (`04` ) vs. his/her previous, professional, current legal name, etc.

<SIF_Condition> <SIF_Element>Name[@Type='04']/FirstName</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Cameron</SIF_Value> </SIF_Condition>
Example 5.1.10.2-2

Predicate expressions supported in SIF are limited to `or`, `and`, `=`, element/attribute names with optional prefixes and accessing nested elements/attributes using `/`.

### 5.1.11 SIF_ExtendedQuery

SIF's default query mechanism for `SIF_Request`, `SIF_Query`, has several limitations that limit its usefulness when creating reporting applications that process data from a SIF zone. `SIF_Query` is limited to matching only one object type per query, requiring applications to manually join together results as needed for reporting and general data processing. `SIF_ExtendedQuery` is designed to allow for joins on object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL. Each returned column may contain hierarchical XML elements/objects. While envisioned as the primary mechanism for SIF-based `ReportManifest`s, Providers and Responders in a Zone may support `SIF_ExtendedQuery` in addition to `SIF_Query`. Support for `SIF_ExtendedQuery` can be declared in and retrieved from the Zone is various Infrastructure messages and objects.

Note that matching rows are generated solely based on the `SIF_From` clause, with optional join criteria, optionally limited/filtered by the `SIF_Where` clause. If a repeatable element is requested as a column in `SIF_Select`, this does not generate multiple rows for each occurrence of matching elements; all elements are returned in the corresponding column within a single row.

Figure 5.1.11-1: SIF_ExtendedQuery

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ExtendedQuery |  | SIF's default query mechanism for `SIF_Request`, `SIF_Query`, has several limitations that limit its usefulness when creating reporting applications that process data from a SIF zone. `SIF_Query` is limited to matching only one object type per query, requiring applications to manually join together results as needed for reporting and general data processing. `SIF_ExtendedQuery` is designed to allow for joins on object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL. Each returned column may contain hierarchical XML elements/objects. While envisioned as the primary mechanism for SIF-based `ReportManifest`s, Providers and Responders in a Zone may support `SIF_ExtendedQuery` in addition to `SIF_Query`. Support for `SIF_ExtendedQuery` can be declared in and retrieved from the Zone is various Infrastructure messages and objects. Note that matching rows are generated solely based on the `SIF_From` clause, with optional join criteria, optionally limited/filtered by the `SIF_Where` clause. If a repeatable element is requested as a column in `SIF_Select`, this does not generate multiple rows for each occurrence of matching elements; all elements are returned in the corresponding column within a single row. |
| SIF_DestinationProvider | O | If no `SIF_DestinationId` applies to the request and this element is supplied, the Requester specifies that the extended query be routed to the Provider on record for the given object name. If this element is omitted and no `SIF_DestinationId` applies to the request, the ZIS routes the request to the Provider on record for the object name in `SIF_From`. | SIF_RequestObjectNamesType
| SIF_Select | M | Identifies which data elements/attribute are to be returned as columns in each matching row. |
@ | Distinct | M | Specifies whether query results should return all rows (`false`) or just distinct ones (`true`). Rows are distinct if at least one column differs between them. | xs:boolean
@ | RowCount | M | The maximum number of rows to return. If `All`, return all rows, otherwise return the top rows up to the maximum row count indicated. | union of: xs:positiveInteger additional values: All
| SIF_Select/SIF_Element | MR | Indicates the element/attribute to return as a column. Contents can be left empty to return the whole object specified in `ObjectName`, or `*` can be designated to return all attributes and immediate child elements of the object specified in `ObjectName`, or `SIF_Element` Syntax can be specified, relative to the object specified in `ObjectName`. Requested attributes are to be returned as the text value of the corresponding attribute, elements as a copy of the XML element itself including attributes if they exist. | xs:normalizedString
@ | Alias | O | Optional caption for the column. | xs:normalizedString
xs:maxLength | 64
@ | ObjectName | M | The name of the object from which to retrieve element/attributes. | SIF_RequestObjectNamesType
| SIF_From | M | Join specification for the query if more than one object is being queried. If only one object is being queried, specify it without the `SIF_Join` clause. This clause generates the matching rows returned, optionally limited/filtered by the `SIF_Where` clause. Each object referenced in the `SIF_Select`, `SIF_Where` and `SIF_OrderBy` clauses must be included here. |
@ | ObjectName | M | The name of the object to query. | SIF_RequestObjectNamesType
| SIF_From/SIF_Join | OR | Additional objects to query, with join conditions specifying the relationships between objects. |
@ | Type | M | Type of relational join. | values: Inner LeftOuter RightOuter FullOuter
| SIF_From/SIF_Join/SIF_JoinOn | MR | Specifies the conditions for the join. |
| SIF_From/SIF_Join/SIF_JoinOn/ SIF_LeftElement | M | Specifies the left-side element/attribute on which to constrain the join. Currently only support for keys/RefIds/RefId references is required. | xs:normalizedString
@ | ObjectName | M | Name of the object that contains the element/attribute. | SIF_RequestObjectNamesType
| SIF_From/SIF_Join/SIF_JoinOn/ SIF_RightElement | M | Specifies right left-side element/attribute on which to constrain the join. Currently only support for keys/RefIds/RefId references is required. | xs:normalizedString
@ | ObjectName | M | Name of the object that contains the element/attribute. | SIF_RequestObjectNamesType
| SIF_Where | O | Optionally specifies conditions to limit/filter rows resulting from the `SIF_From` clause. |
| SIF_Where/SIF_ConditionGroup | M | Conditions that matching rows must meet. |
@ | Type | M | The Boolean operator for joining conditions (`SIF_Conditions` elements) within this element. Note that `None` should be used if there is only one `SIF_Conditions` element. | values: And Or None
| SIF_Where/SIF_ConditionGroup/ SIF_Conditions | MR | This construct allows for nested conditions. |
@ | Type | M | The boolean operator for joining conditions (`SIF_Condition` elements) within this element. Note that `None` should be used if there is only one `SIF_Condition` element. | values: And Or None
| SIF_Where/SIF_ConditionGroup/ SIF_Conditions/SIF_Condition | MR | This element represents an individual condition. |
| SIF_Where/SIF_ConditionGroup/ SIF_Conditions/SIF_Condition/ SIF_Element | M | This is the element/attribute being queried. | xs:normalizedString
@ | ObjectName | M | The name of the object containing the element/attribute. | SIF_RequestObjectNamesType
| SIF_Where/SIF_ConditionGroup/ SIF_Conditions/SIF_Condition/ SIF_Operator | M | The comparison operator for the condition. | values: EQ Equals LT Less Than GT Greater Than LE Less Than Or Equals GE Greater Than Or Equals NE Not Equals
| SIF_Where/SIF_ConditionGroup/ SIF_Conditions/SIF_Condition/ SIF_Value | M | `SIF_Value` is the data that is used to compare with the value of the element or attribute. | xs:string
| SIF_OrderBy | O | An optional list of elements/attributes by which to sort the resulting rows. |
| SIF_OrderBy/SIF_Element | MR | Indicates the element/attribute by which to sort. | xs:normalizedString
@ | ObjectName | M | The name of the object containing the element/attribute. | SIF_RequestObjectNamesType
@ | Ordering | M | Whether to order the element/attribute in ascending or descending order. | values: Ascending Descending

Table 5.1.11-1: SIF_ExtendedQuery
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="StudentPersonal" /> </SIF_Select> <SIF_From ObjectName="StudentPersonal" /> </SIF_ExtendedQuery>
Example 5.1.11-1: Selecting all StudentPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="StudentPersonal">*</SIF_Element> </SIF_Select> <SIF_From ObjectName="StudentPersonal" /> </SIF_ExtendedQuery>
Example 5.1.11-2: Selecting all attributes and immediate child elements of StudentPersonal as columns from all StudentPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="StudentPersonal">@RefId</SIF_Element> <SIF_Element ObjectName="StudentPersonal">Name/GivenName</SIF_Element> <SIF_Element ObjectName="StudentPersonal">Name/FamilyName</SIF_Element> <SIF_Element ObjectName="StudentPersonal">EmailList</SIF_Element> </SIF_Select> <SIF_From ObjectName="StudentPersonal" /> </SIF_ExtendedQuery>
Example 5.1.11-4: Selecting specific attributes and elements from all StudentPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="true" RowCount="All"> <SIF_Element ObjectName="StudentPersonal" /> <SIF_Element ObjectName="StudentSchoolEnrollment" Alias="Student Entry Date">EntryDate</SIF_Element> </SIF_Select> <SIF_From ObjectName="StudentPersonal"> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="StudentPersonal">@RefId</SIF_LeftElement> <SIF_RightElement ObjectName="StudentSchoolEnrollment">@StudentPersonalRefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> </SIF_From> <SIF_Where> <SIF_ConditionGroup Type="And"> <SIF_Conditions Type="And"> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@SchoolInfoRefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>A3E90785EFDA330DACB00785EFDA330D</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@SchoolYear</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>2007</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@MembershipType</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Home</SIF_Value> </SIF_Condition> </SIF_Conditions> <SIF_Conditions Type="Or"> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@TimeFrame</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Current</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@TimeFrame</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Future</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> <SIF_OrderBy> <SIF_Element ObjectName="StudentPersonal" Ordering="Ascending">Name/LastName</SIF_Element> </SIF_OrderBy> </SIF_ExtendedQuery>
Example 5.1.11-5: Selecting StudentPersonal objects along with each student's EntryDate from StudentSchoolEnrollment for a specific school, school year and other StudentSchoolEnrollment values, sorted by student's last name
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="StudentPersonal" /> <SIF_Element ObjectName="StudentSchoolEnrollment" /> <SIF_Element ObjectName="SchoolInfo">SchoolName</SIF_Element> </SIF_Select> <SIF_From ObjectName="StudentPersonal"> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="StudentPersonal">@RefId</SIF_LeftElement> <SIF_RightElement ObjectName="StudentSchoolEnrollment">@StudentPersonalRefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="StudentSchoolEnrollment">@SchoolInfoRefId</SIF_LeftElement> <SIF_RightElement ObjectName="SchoolInfo">@RefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> </SIF_From> <SIF_Where> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element ObjectName="StudentPersonal">@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>12345678901234567890123456789012</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> </SIF_ExtendedQuery>
Example 5.1.11-6: Selecting a specific StudentPersonal's StudentSchoolEnrollment objects, along with the corresponding school name for each enrollment

#### 5.1.11.1 Mapping SIF_Query to SIF_ExtendedQuery

While there are differences in how matching objects are returned, note that all non-`SIF_Example` `SIF_Query`-based requests can be mapped to a corresponding `SIF_ExtendedQuery`-based request:

1 | Place `SIF_Query/SIF_QueryObject/@ObjectName` in `SIF_ExtendedQuery/SIF_From/@ObjectName`.
2 | If elements/attributes are specified in `SIF_Query/SIF_QueryObject/SIF_Element`, place them in `SIF_ExtendedQuery/SIF_Select/SIF_Element` with `@ObjectName` set to `SIF_Query/SIF_QueryObject/@ObjectName`. Otherwise in `SIF_Select`, specify an empty `SIF_Element` element with `@ObjectName` set to `SIF_Query/SIF_QueryObject/@ObjectName`.
3 | If `SIF_Query/SIF_ConditionGroup` exists, place it in `SIF_ExtendedQuery/SIF_Where` setting `@ObjectName` to `SIF_Query/SIF_QueryObject/@ObjectName` in every occurrence of `SIF_Element`.
4 | Set `SIF_Select/@Distinct` to `false` and `SIF_Select/@RowCount` to `All`.

Table 5.1.11.1-1: Mapping SIF_Query to SIF_ExtendedQuery
<SIF_Query> <SIF_QueryObject ObjectName="StudentPersonal"> <SIF_Element>Name/FirstName</SIF_Element> <SIF_Element>Name/LastName</SIF_Element> </SIF_QueryObject> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>F0F29E6AE742498D9CB91CBB3BE6890E</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query>
Example 5.1.11.1-1: Input SIF_Query
<SIF_ExtendedQuery> <SIF_Select Distinct="false" RowCount="All"> <SIF_Element ObjectName="StudentPersonal">Name/FirstName</SIF_Element> <SIF_Element ObjectName="StudentPersonal">Name/LastName</SIF_Element> </SIF_Select> <SIF_From ObjectName="StudentPersonal" /> <SIF_Where> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element ObjectName="StudentPersonal">@RefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>F0F29E6AE742498D9CB91CBB3BE6890E</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> </SIF_ExtendedQuery>
Example 5.1.11.1-2: Corresponding SIF_ExtendedQuery

### 5.1.12 SIF_ExtendedQueryResults

This element provides a wrapper for data returned in response to a `SIF_ExtendedQuery`. Used in `SIF_Response` and `SIF_ReportObject`.

Figure 5.1.12-1: SIF_ExtendedQueryResults

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ExtendedQueryResults |  | This element provides a wrapper for data returned in response to a `SIF_ExtendedQuery`. Used in `SIF_Response` and `SIF_ReportObject`. |
| SIF_ColumnHeaders | M | Provides the element/attribute and caption information for each column supplied in `SIF_ExtendedQuery`. The order must correspond to the order of the elements as requested in `SIF_ExtendedQuery`. |
| SIF_ColumnHeaders/SIF_Element | MR | The element/attribute specified for the column in `SIF_ExtendedQuery`. | xs:normalizedString
@ | ObjectName | M | The object in which the element/attribute occurs. | SIF_RequestObjectNamesType
@ | Alias | O | The caption for the column, if specified in `SIF_ExtendedQuery`. | xs:normalizedString
xs:maxLength | 64
@ | xsi:type | O | Optionally allows type of column value to be explicitly communicated. |
| SIF_Rows | M | A list of matching rows resulting from the supplied `SIF_ExtendedQuery`. Note that the complete list of rows may span multiple `SIF_Response` messages, per the `SIF_MaxBufferSize` supplied in `SIF_Request`. If there are no matching rows, this is an empty list. |
| SIF_Rows/R | OR | An individual matching row resulting from the supplied `SIF_ExtendedQuery`. |
| SIF_Rows/R/C | MR | Contains the value of each column specified in `SIF_ExtendedQuery/SIF_Select`. The order of the columns must correspond to the order of the elements as requested in `SIF_ExtendedQuery`. Note the number of columns may be expanded from the requested columns if `*` is indicated one or more times in the `SIF_Select` clause. | SelectedContentType

Table 5.1.12-1: SIF_ExtendedQueryResults
<SIF_ExtendedQueryResults> <SIF_ColumnHeaders> <SIF_Element ObjectName="StudentPersonal" /> <SIF_Element ObjectName="StudentSchoolEnrollment" /> <SIF_Element ObjectName="SchoolInfo">SchoolName</SIF_Element> </SIF_ColumnHeaders> <SIF_Rows> <R> <C> <StudentPersonal RefId="12345678901234567890123456789012"> <!--...--> </StudentPersonal> </C> <C> <StudentSchoolEnrollment RefId="AED4AEF825284D7E9F082EBBEB1999FA" StudentPersonalRefId="12345678901234567890123456789012" SchoolInfoRefId="AED4AEF825284D7E9F082EBBEBB12345" MembershipType="Home" TimeFrame="Current" SchoolYear="2007"> <!--...--> </StudentSchoolEnrollment> </C> <C> <SchoolName>SIFA High</SchoolName> </C> </R> <R> <C> <StudentPersonal RefId="12345678901234567890123456789012"> <!--...--> </StudentPersonal> </C> <C> <StudentSchoolEnrollment RefId="AED4AEF825284D7E9F082EBBEB1999FA" StudentPersonalRefId="12345678901234567890123456789012" SchoolInfoRefId="ED4AEF825284D7E9F082EBBEBB678902" MembershipType="Concurrent" TimeFrame="Current" SchoolYear="2007"> <!--...--> </StudentSchoolEnrollment> </C> <C> <SchoolName>SIFA University</SchoolName> </C> </R> </SIF_Rows> </SIF_ExtendedQueryResults>
Example 5.1.12-1: SIF_ExtendedQueryResults

## 5.2 Messages

### 5.2.1 SIF_Ack

This message is used as an acknowledgement for infrastructure messages. All infrastructure messages will return a `SIF_Ack` as a result to indicate if the request was successful or not. A `SIF_Ack` must contain either a `SIF_Status` element acknowledging a successful result or a `SIF_Error` element describing the failure. The `SIF_Error` element contains a standardized error number as well as a description of the error.

A successful `SIF_Ack` is typically returned to the caller containing a `SIF_Header`, `SIF_OriginalSourceId`, `SIF_OriginalMsgId` and the `SIF_Status` element. In situations where additional information needs to be returned to the caller, a `SIF_Data` element can be added to the `SIF_Status` element.

In addition, successful `SIF_Ack` messages may also be sent to the ZIS under two conditions. The first is when a pull-mode agent requests that a message is to be removed from its queue. The second is when an agent which has invoked SMB wishes to end SMB handling. In that case, the agent sends a "Final" `SIF_Ack` to the ZIS. In each instance the ZIS returns a `SIF_Ack` in response to the agent's `SIF_Ack` message.

Figure 5.2.1-1: SIF_Ack

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Ack | M | This message is used as an acknowledgement to an infrastructure message. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_OriginalSourceId | M | The `SIF_SourceId` of the infrastructure message for which the `SIF_Ack` serves as a response. | xs:token
| SIF_OriginalMsgId | M | The `SIF_MsgId` of the infrastructure message for which the `SIF_Ack` message serves as a response. | MsgIdType
| SIF_Status | C | This element is used to signal a successful response. | SIF_Status
| SIF_Error | C | This element is used to signal an unsuccessful response. | SIF_Error

Table 5.2.1-1: SIF_Ack
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>AB1058CD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyLib</SIF_OriginalSourceId> <SIF_OriginalMsgId>1298ACEF3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_Message Version="2.4"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:02-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="SchoolInfo" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@SIF_RefObject</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>StaffPersonal</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.1-1: SIF_Ack Status Message
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>AB1058CD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SifInfo_TestZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyLib</SIF_OriginalSourceId> <SIF_OriginalMsgId>1298ACEF3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_Message Version="2.4"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:02-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="SchoolInfo" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@SIF_RefObject</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>StaffPersonal</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.1-2: SIF_Ack Status Message
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>CD5087FE3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>1945CD783261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Error> <SIF_Category>3</SIF_Category> <SIF_Code>5</SIF_Code> <SIF_Desc>Sender's certificate is not trusted</SIF_Desc> <SIF_ExtendedDesc>Agent requires certificate issued by ISD11 CA</SIF_ExtendedDesc> </SIF_Error> </SIF_Ack> </SIF_Message>
Example 5.2.1-3: SIF_Ack Error Message

### 5.2.2 SIF_Event

`SIF_Event` is used to deliver event objects as defined in SIF. Events represent the availability of a new data object, changes to, or deletions of data object.

Figure 5.2.2-1: SIF_Event

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Event | M | `SIF_Event` is used to deliver event objects as defined in SIF. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_ObjectData | M |  |
| SIF_ObjectData/SIF_EventObject | M | Contains the actual object (partial or whole) that is being added, changed or deleted. | SIF_EventObjectType
@ | ObjectName | M | This is the name of the object being added, changed or deleted. | SIF_SubscribeObjectNamesType
@ | Action | M | This is the action associated with the object that is being conveyed by this `SIF_Event`. | values: Add Delete Change

Table 5.2.2-1: SIF_Event
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Event> <SIF_Header> <SIF_MsgId>AB34DC093261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_ObjectData> <SIF_EventObject ObjectName="StudentPersonal" Action="Change"> <StudentPersonal RefId="D3E34B359D75101A8C3D00AA001A1652"> <PersonInfo> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2289</Number> <Extension>72289</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0437-765-234</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> </PersonInfo> </StudentPersonal> </SIF_EventObject> </SIF_ObjectData> </SIF_Event> </SIF_Message>
Example 5.2.2-1: SIF_Event Message with StudentPersonal changes

### 5.2.3 SIF_Provide

The `SIF_Provide` message is used to attempt registering as the provider of one or more data objects.

Figure 5.2.3-1: SIF_Provide

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Provide | M | The`SIF_Provide` message is used for advertising the provision of data objects. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_Object | MR | This is the object that is being provided. |
@ | ObjectName | M | The actual name of the object that is being provided. | SIF_ProvideObjectNamesType
| SIF_Object/SIF_ExtendedQuerySupport | O | Whether or not the Agent supports `SIF_ExtendedQuery` for this object. | xs:boolean
| SIF_Object/SIF_Contexts | O | The contexts in which the object is being provided; if omitted, the context is `SIF_Default`. | SIF_Contexts

Table 5.2.3-1: SIF_Provide
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Provide> <SIF_Header> <SIF_MsgId>34DC87FE3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StudentSchoolEnrollment" /> </SIF_Provide> </SIF_Message>
Example 5.2.3-1: SIF_Provide

### 5.2.4 SIF_Provision

Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide. The ZIS compares the functionality to its access control list and either returns a failure or a success. Upon success, the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically updates other stored settings for the agent. A ZIS must not allow an agent to perform operations that it did not successfully announce. Agents should be aware that if the access control list changes after a successful `SIF_Provision`, some operations may still be rejected with access control errors.

Figure 5.2.4-1: SIF_Provision

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Provision |  | Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide. The ZIS compares the functionality to its access control list and either returns a failure or a success. Upon success, the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically updates other stored settings for the agent. A ZIS must not allow an agent to perform operations that it did not successfully announce. Agents should be aware that if the access control list changes after a successful `SIF_Provision`, some operations may still be rejected with access control errors. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_ProvideObjects | M | A list of objects an Agent wishes to provide. |
| SIF_ProvideObjects/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_ProvideObjectNamesType
| SIF_ProvideObjects/SIF_Object/ SIF_ExtendedQuerySupport | O | Whether or not `SIF_ExtendedQuery` is supported with regard to this object. | xs:boolean
| SIF_ProvideObjects/SIF_Object/ SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts
| SIF_SubscribeObjects | M | A list of objects to which an Agent wishes to subscribe. |
| SIF_SubscribeObjects/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_SubscribeObjectNamesType
| SIF_SubscribeObjects/SIF_Object/ SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts
| SIF_PublishAddObjects | M | A list of objects for which an Agent wishes to publish `Add` events. |
| SIF_PublishAddObjects/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_SubscribeObjectNamesType
| SIF_PublishAddObjects/SIF_Object/ SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts
| SIF_PublishChangeObjects | M | A list of objects for which an Agent wishes to publish `Change` events. |
| SIF_PublishChangeObjects/ SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_SubscribeObjectNamesType
| SIF_PublishChangeObjects/ SIF_Object/SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts
| SIF_PublishDeleteObjects | M | A list of objects for which an Agent wishes to publish Delete events. |
| SIF_PublishDeleteObjects/ SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_SubscribeObjectNamesType
| SIF_PublishDeleteObjects/ SIF_Object/SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts
| SIF_RequestObjects | M | A list of objects an Agent wishes to request. |
| SIF_RequestObjects/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_RequestObjectNamesType
| SIF_RequestObjects/SIF_Object/ SIF_ExtendedQuerySupport | O | Optionally specify whether or not `SIF_ExtendedQuery` may be sent in requests for this object. | xs:boolean
| SIF_RequestObjects/SIF_Object/ SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts
| SIF_RespondObjects | M | A list of objects for which an Agent wishes to handle requests, whether or not it is the Provider for each object. Note that this list MUST include those objects specified in `SIF_ProvideObjects`. |
| SIF_RespondObjects/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | SIF_RequestObjectNamesType
| SIF_RespondObjects/SIF_Object/ SIF_ExtendedQuerySupport | O | Whether or not `SIF_ExtendedQuery` is supported with regard to this object. | xs:boolean
| SIF_RespondObjects/SIF_Object/ SIF_Contexts | O | Applicable contexts for stated object support. If omitted, the context defaults to `SIF_Default`. | SIF_Contexts

Table 5.2.4-1: SIF_Provision
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Provision> <SIF_Header> <SIF_MsgId>A10F92EB649F4A648B5BFC44C7FD965C</SIF_MsgId> <SIF_Timestamp>2006-08-18T11:23:11-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_ProvideObjects> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StudentSchoolEnrollment" /> </SIF_ProvideObjects> <SIF_SubscribeObjects> <SIF_Object ObjectName="PersonPicture" /> </SIF_SubscribeObjects> <SIF_PublishAddObjects> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StudentSchoolEnrollment" /> </SIF_PublishAddObjects> <SIF_PublishChangeObjects> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StudentSchoolEnrollment" /> </SIF_PublishChangeObjects> <SIF_PublishDeleteObjects> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StudentSchoolEnrollment" /> </SIF_PublishDeleteObjects> <SIF_RequestObjects> <SIF_Object ObjectName="PersonPicture" /> </SIF_RequestObjects> <SIF_RespondObjects> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StudentSchoolEnrollment" /> </SIF_RespondObjects> </SIF_Provision> </SIF_Message>
Example 5.2.4-1: SIF_Provision Example

### 5.2.5 SIF_Register

`SIF_Register` is the message for registering an agent with a ZIS. An agent must be registered before it sends out other SIF messages. `SIF_Register` serves to provide the ZIS with the sender's identification information as well as to provide the information that the ZIS will need to contact this agent, should it register in Push mode.

Once a sender registers in the ZIS with the `SIF_Register` message, the sender can use the `SIF_SourceId` value in the header of all other outgoing messages as its identification. It is not necessary to send a `SIF_Register` message each time your agent starts up but it is not an error to do so. If there are any blocked events in the Agent's queue when a ZIS receives the `SIF_Register` message, the blocks will be removed.

Figure 5.2.5-1: SIF_Register

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Register | M | `SIF_Register` is the message for registering an agent with a ZIS. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_Name | M | This is the descriptive name of the agent that is registering (i.e. Ramsey Media Center). | xs:normalizedString
xs:maxLength | 64
| SIF_Version | MR | Specifies the SIF Implementation Specification version(s) defining messages the agent can receive. If the ZIS cannot communicate in this format, it should reject the request. The format of `SIF_Version` values can be found in Version Numbers. In a `SIF_Register` message, an individual `SIF_Version` element may also contain the following wildcards: * - Any SIF version <major version>.* - Any minor version plus revisions within a major version (e.g., 1.*) <major version>.<minor version><r>* - Any revision within a minor version (e.g., 1.1r*) Note: As wildcarding was first introduced in version 1.1 of the specification, 1.* does not match versions 1.0, 1.0r1 or 1.0r2. 1.1 or later agents that register with 1.* and wish to also receive messages from pre-1.1 agents must include `SIF_Version` element(s) with the supported pre-1.1 versions. | VersionWithWildcardsType
| SIF_MaxBufferSize | M | Specifies the maximum size of a packet to be returned by the ZIS. The ZIS may return packets smaller than, or equal to, the maximum value. | xs:unsignedInt
| SIF_Mode | M | Specifies the communication mode (Pull or Push) as chosen by the message sender. | values: Push Pull
| SIF_Protocol | C | If `SIF_Mode` is `Push`, `SIF_Protocol` contains protocol information for contacting the agent in Push mode. A Pull-mode agent does not need to send `SIF_Protocol`; if received, a ZIS ignores it. | SIF_Protocol
| SIF_NodeVendor | O | The vendor of the SIF agent. | xs:normalizedString
xs:maxLength | 256
| SIF_NodeVersion | O | The agent version number. The format of this field is undefined, but it should match the format used in the agent's conformance statement, if the agent is SIF Certified. Examples 2.0.1.11 | xs:normalizedString
xs:maxLength | 32
| SIF_Application | O | Contains information about the vendor of the product that the agent represents. |
| SIF_Application/SIF_Vendor | M | The name of the company of the product that this agent supports. | xs:normalizedString
xs:maxLength | 256
| SIF_Application/SIF_Product | M | The name of the product that this agent supports. | xs:normalizedString
xs:maxLength | 256
| SIF_Application/SIF_Version | M | The version of the product. This field is informative only. | xs:normalizedString
xs:maxLength | 32
| SIF_Icon | O | HTTP URL referencing an icon for graphical representation of the application/agent. Should range from 16x16 pixels to 128x128 pixels and be of an `image` MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). Agents may optionally follow the more restrictive guidelines at [FAVICON]. | xs:anyURI

Table 5.2.5-1: SIF_Register
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Register> <SIF_Header> <SIF_MsgId>14BA09653261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-06:00</SIF_Timestamp> <SIF_SourceId>AcmeAgent</SIF_SourceId> </SIF_Header> <SIF_Name>Acme Agent for WAP 2.x</SIF_Name> <SIF_Version>2.4</SIF_Version> <SIF_MaxBufferSize>524288</SIF_MaxBufferSize> <SIF_Mode>Push</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://AcmeHost:8030/StudentAdmin</SIF_URL> </SIF_Protocol> <SIF_NodeVersion>2.0.1.20</SIF_NodeVersion> <SIF_Application> <SIF_Vendor>Acme Consulting</SIF_Vendor> <SIF_Product>Web Administration Portal 5.x</SIF_Product> <SIF_Version>5.1.2</SIF_Version> </SIF_Application> </SIF_Register> </SIF_Message>
Example 5.2.5-1: SIF_Register

### 5.2.6 SIF_Request

This message is used to request information in SIF data objects from other SIF nodes. It optionally specifies the query criteria with which to match objects, as well as an optional subset of elements to be returned for matching objects.

Figure 5.2.6-1: SIF_Request

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Request | M | `SIF_Request` is used to request information in SIF data objects from other SIF nodes. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_Version | MR | Specifies which SIF Implementation Specification version should be used when returning the response data; wildcards are allowed. The responding agent SHOULD return data using the highest version it supports that falls within the specified versions. | VersionWithWildcardsType
| SIF_MaxBufferSize | M | Specifies the maximum size of a response packet to be returned to the requester. The responder may return packets smaller than, or equal to, the maximum value. To guarantee delivery of response packets, requesting agents must not specify a `SIF_MaxBufferSize` greater than its registered `SIF_Register/SIF_MaxBufferSize`. | xs:unsignedInt
| SIF_Query | C | Either `SIF_Query` or `SIF_ExtendedQuery` must be specified, which contain the criteria to be used to match response objects. | SIF_Query
| SIF_ExtendedQuery | C |  | SIF_ExtendedQuery

Table 5.2.6-1: SIF_Request
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="LibraryPatronStatus" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@SIF_RefObject</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>StaffPersonal</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message>
Example 5.2.6-1: SIF_Request
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Request> <SIF_Header> <SIF_MsgId>A3E90785EFDA330DACB00785EFDA330D</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Version>2.*</SIF_Version> <SIF_MaxBufferSize>1048576</SIF_MaxBufferSize> <SIF_Query> <SIF_QueryObject ObjectName="SchoolInfo" /> <SIF_ConditionGroup Type="None"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@SIF_RefObject</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>StaffPersonal</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_Request> </SIF_Message>
Example 5.2.6-2: SIF_Request

### 5.2.7 SIF_Response

`SIF_Response` is used to respond to a `SIF_Request` message. A response may span multiple `SIF_Response` messages.

Figure 5.2.7-1: SIF_Response

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Response | M | `SIF_Response` is used to respond to a `SIF_Request` message. |
| SIF_Header | M | Header information associated with this message. The `SIF_DestinationId` needs to be the `SIF_SourceId` of the original `SIF_Request` message being processed. | SIF_Header
| SIF_RequestMsgId | M | This is the message ID of the `SIF_Request` message being processed. It provides a unique match between a `SIF_Response` and a previous `SIF_Request`. Since the ID of each message from an agent is unique, the receiver of a `SIF_Response` message will be able to relate the `SIF_Response` to a `SIF_Request` that it sent out previously. | MsgIdType
| SIF_PacketNumber | M | This element represents the index of the `SIF_Response` message in the sequence of packets that make up a complete response. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up a response. The receiver of a `SIF_Response` message, with the help of the `SIF_MorePackets` and `SIF_PacketNumber` element in each incoming `SIF_Response` message, will be able to interpret and process each `SIF_Response` as part of a complete response to a previous `SIF_Request`. | xs:positiveInteger
| SIF_MorePackets | M | This element provides an indication as to whether there are more packets besides this one to make up a complete response. The necessity of this element stems from the requirement on an agent to break response data to fit into the `SIF_MaxBufferSize` provided in the `SIF_Request`. Agents may also break response data into multiple packets for the benefit of improving performance or for circumventing limitations of the underlying network infrastructure. When this element's value is equal to `No`, it is an indication from the sender to the receiver that it has already sent out all the packets that make up a complete response for a `SIF_Request` as indicated by the `SIF_RequestMsgId` element. | values: Yes No
| SIF_Error | C | The responder returns `SIF_Error`, `SIF_ObjectData` or `SIF_ExtendedQueryResults`. This element allows the Responder to report an error condition that occurs while processing the `SIF_Request`. If a `SIF_Error` element is present, the requesting agent must not expect to receive further `SIF_Responses` to the `SIF_Request`. | SIF_Error
| SIF_ObjectData | C | The `SIF_ObjectData` element contains the data objects matching the supplied criteria in the `SIF_Request` message if the `SIF_Request` contained `SIF_Query`. If the `SIF_Request` contained `SIF_ExtendedQuery`, include `SIF_ExtendedQueryResults`. | SIF_ResponseObjectsType
| SIF_ExtendedQueryResults | C | This element contains the elements requested by `SIF_ExtendedQuery` in `SIF_Request`. | SIF_ExtendedQueryResults

Table 5.2.7-1: SIF_Response
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>1BCD10580EF250789012AC0554321EA2</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>FE1078BA3261545A319059376B3A4898</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData> <StudentPersonal RefId="E3E34B359D75101A8C3D00AA00184753"> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> </PersonInfo> </StudentPersonal> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 5.2.7-1: Sample single-packet SIF_Response to a SIF_Request for the Name element from a StudentPersonal object
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>322925BC9818433E8090D5110EE61DA3</SIF_MsgId> <SIF_Timestamp>2006-04-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>FE1078BA3261545A31905937B265CE01</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>Yes</SIF_MorePackets> <SIF_ObjectData> <StudentPersonal RefId="E3E34B359D75101A8C3D00AA00184753"> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> </PersonInfo> </StudentPersonal> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 5.2.7-2: SIF_Response (first packet)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>322925BC9818433E8090D51256786BC9</SIF_MsgId> <SIF_Timestamp>2006-04-18T08:39:49-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>FE1078BA3261545A31905937B265CE01</SIF_RequestMsgId> <SIF_PacketNumber>2</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData> <StudentPersonal RefId="F14B5B359D75101A8C3D00AA00184753"> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Alice</GivenName> <FullName>Alice Smith</FullName> </Name> </PersonInfo> </StudentPersonal> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 5.2.7-3: SIF_Response (second packet)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>F557D40A1367455E9F01DED76E29260C</SIF_MsgId> <SIF_Timestamp>2006-04-18T08:43:08-08:00</SIF_Timestamp> <SIF_SourceId>SISAgent</SIF_SourceId> <SIF_DestinationId>NetworkAgent</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>971D7C7EF2684C7081A7765BF89FAD14</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData /> </SIF_Response> </SIF_Message>
Example 5.2.7-4: SIF_Response with no matching objects

### 5.2.8 SIF_Subscribe

This message is used to subscribe to event objects that are contained in this message.

Figure 5.2.8-1: SIF_Subscribe

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Subscribe | M | This message is used to subscribe to event objects that are contained in this message. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_Object | MR |  |
@ | ObjectName | M | The actual name of the object that is being subscribed to. All valid `SIF_Event`s for this object will be routed to the subscriber. | SIF_SubscribeObjectNamesType
| SIF_Object/SIF_Contexts | O | The contexts to which the subscription applies; if omitted, the context is `SIF_Default`. | SIF_Contexts

Table 5.2.8-1: SIF_Subscribe
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Subscribe> <SIF_Header> <SIF_MsgId>AB2065FD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StaffPersonal" /> </SIF_Subscribe> </SIF_Message>
Example 5.2.8-1: SIF_Subscribe

### 5.2.9 SIF_SystemControl

A `SIF_SystemControl` message is designed to control the flow of data between an agent and ZIS or vice-versa, and to synchronously retrieve data available from the ZIS. The `SIF_SystemControl` message is a container for a number of specialized control messages. `SIF_SystemControl` messages are handled immediately by receivers and are not persisted in a message queue for later delivery.

Figure 5.2.9-1: SIF_SystemControl

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_SystemControl | M | This message is designed to control the flow of data an agent and ZIS or vice-versa, and to synchronously retrieve data available from the ZIS. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_SystemControlData | M | This element holds the sub-message being sent. | choice of: SIF_Ping SIF_Sleep SIF_Wakeup SIF_GetMessage SIF_GetZoneStatus SIF_GetAgentACL SIF_CancelRequests

Table 5.2.9-1: SIF_SystemControl
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_MsgId> <SIF_Timestamp>2006-12-27T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Ping /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.9-1: SIF_SystemControl

### 5.2.10 SIF_Ping

`SIF_Ping` is sent to detect if a ZIS or push-mode agent is ready to receive and process messages.

Figure 5.2.10-1: SIF_Ping

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Ping | M | This sub-message detects if an a Push-Mode Agent or ZIS is ready to receive and process messages. | EMPTY

Table 5.2.10-1: SIF_Ping
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_MsgId> <SIF_Timestamp>2006-12-27T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Ping /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.10-1: SIF_Ping
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>AE9E2BD747B94F4D8545E41F482854C8</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:23:20-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>9812ABFD3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.10-2: SIF_SystemControl—SIF_Ping ("Okay" status)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>3C11DFF1451C4E9A8A1F07E03C1D7FBB</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:24:31-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>9812ABFD3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>8</SIF_Code> <SIF_Desc>Receiver is sleeping</SIF_Desc> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.10-3: SIF_SystemControl—SIF_Ping ("Receiver is sleeping" status)
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>1594A3B29DD34786B5EA77998899F49F</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:24:31-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>9812ABFD3261545A31905937B265CE01</SIF_OriginalMsgId> <SIF_Error> <SIF_Category>10</SIF_Category> <SIF_Code>4</SIF_Code> <SIF_Desc>Unable to establish connection</SIF_Desc> <SIF_ExtendedDesc>Error 10061: Connection refused</SIF_ExtendedDesc> </SIF_Error> </SIF_Ack> </SIF_Message>
Example 5.2.10-4: SIF_SystemControl—SIF_Ping (Transport error returned)

### 5.2.11 SIF_Sleep

The `SIF_Sleep` message allows an agent to notify a ZIS or a ZIS to notify a push-mode agent that it must not send any more messages to the sender of the `SIF_Sleep`. After the sender receives a `SIF_Ack` indicating that the message was received, the receiver must not send any further messages to the sender.

This message provides the ability to signal an agent or ZIS that the sender will be unable to process further messages until some time in the future. Reasons for sending a `SIF_Sleep` message include the sender is unable to process more data because of limited resources (i.e. disk storage, network bandwidth, etc.), or the sender is being temporarily shutdown and will be unable to receive messages.

Since the sender may send a `SIF_Sleep` message for a variety of reasons, if the receiver sends messages after a `SIF_Sleep` message but prior to receiving a `SIF_Wakeup` or `SIF_Register` message from the sender, an error must be returned. A transport error will occur or be returned if a connection cannot be established with the sender, or the sender may choose to receive the connection but return an error.

If the sender is an agent, the ZIS will continue to hold any messages for the agent in the queue but the ZIS will not send those messages until a `SIF_Wakeup` (or `SIF_Register`) message is received. If an agent is processing a message requiring additional `SIF_Request`s to be sent to the ZIS and a `SIF_Sleep` message is received from the ZIS, the agent will not be able to retrieve the additional data. The agent must abort the processing of the message and only attempt to process the message after receiving a `SIF_Wakeup` message from the ZIS.

An agent or ZIS is not required to be able to send `SIF_Sleep` messages. However, if an agent or ZIS has the ability to send a `SIF_Sleep`, it must also be able to send a `SIF_Wakeup`. Although the sending of `SIF_Sleep` is optional, an agent or ZIS must always be able to process and respond appropriately to these messages if received.

Figure 5.2.11-1: SIF_Sleep

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Sleep | M | This sub-message tells a receiver not to send any more messages to the sender. | EMPTY

Table 5.2.11-1: SIF_Sleep
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>1594A3B29DD34786B5EA77998899F49F</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:28:19-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Sleep /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.11-1: SIF_Sleep
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>9F5167FA5CA848F99EB27544B314AF4D</SIF_MsgId> <SIF_Timestamp>2006-10-14T14:29:09-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>1594A3B29DD34786B5EA77998899F49F</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.11-2: SIF_Ack with "Okay" status in response to SIF_Sleep

### 5.2.12 SIF_Wakeup

When the "sleeping" agent or ZIS is ready to resume message processing, it will send a `SIF_Wakeup` message. This will signal the receiver that the sender is now able to process messages. Sending a `SIF_Wakeup` message without a previous `SIF_Sleep` message is permissible and is not considered an error.

If there are any blocked events in the Agent's queue when a ZIS receives the `SIF_Wakeup` message, the blocks will be removed.

Since a ZIS may choose to stop sending messages to an agent if a connection cannot be made with that agent, it is recommended that an agent send a `SIF_Wakeup` message to the ZIS upon agent startup.

An agent or ZIS is not required to be able to send `SIF_Wakeup` messages. Although the sending of `SIF_Wakeup` is optional, an agent or ZIS must always be able to process and respond to these messages correctly if received.

Figure 5.2.12-1: SIF_Wakeup

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Wakeup | M | This message tells a receiver that the sender is able to process messages. | EMPTY

Table 5.2.12-1: SIF_Wakeup
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>715A32E026B0495A826DF84E821949BD</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:34:22-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_Wakeup /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.12-1: SIF_Wakeup
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>5631E28868E3482EAA51B6CDE4145957</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:34:48-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseyZIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>715A32E026B0495A826DF84E821949BD</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.12-2: SIF_Ack with an "Okay" status in response to SIF_Wakeup

#### 5.2.12.1 SIF_Sleep/SIF_Wakeup versus SIF_Register/SIF_Unregister

Using the `SIF_Wakeup` message is the preferred method of communicating that an agent or ZIS is ready to process messages. This is preferable over the use of a `SIF_Register` message because a `SIF_Register` message specifies protocol information while the `SIF_Sleep`/`SIF_Wakeup` pair communicates flow control information. However, when a `SIF_Register` message is processed, the receiver must behave like a `SIF_Wakeup` message was also received.

It is important to note that while `SIF_Sleep` and `SIF_Wakeup` are opposites of one another, this is not the case with `SIF_Register` and `SIF_Unregister`. This is because a `SIF_Unregister` command removes essential agent configuration information such as the provision and subscription lists, which will not be specified by a subsequent `SIF_Register` command. (`SIF_Unregister` also causes any messages pending delivery to the agent to be purged from the agent's queue.) In other words, a `SIF_Register` alone will not reverse the effects of a `SIF_Unregister`.

### 5.2.13 SIF_GetMessage

The `SIF_GetMessage` message provides the mechanism for an agent to pull message from a ZIS. An agent sends a `SIF_GetMessage` and the ZIS returns the next available message, subject to Selective Message Blocking, wrapped in a `SIF_Ack` with a `SIF_Status/SIF_Code` of `0` and the message in the `SIF_Status/SIF_Data` element. If there are no messages to be returned, the ZIS returns a value of `9` in `SIF_Status/SIF_Code`.

If an agent is not registered with a mode of `Pull` the ZIS will return a `SIF_Ack` with an error category of Registration and an error code indicating the agent is registered in Push mode.

Figure 5.2.13-1: SIF_GetMessage

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_GetMessage | M | This message tells the ZIS to return the first available message to the agent, subject to Selective Message Blocking. | EMPTY

Table 5.2.13-1: SIF_GetMessage
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>B0E80A74265A4A75ADDC0ECC50AEF737</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:54:32-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_GetMessage /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.13-1: SIF_GetMessage
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>9861A45AAC364607938A7DB440514DDF</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:54:42-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>B0E80A74265A4A75ADDC0ECC50AEF737</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_Message Version="2.4"> <SIF_Event> <SIF_Header> <SIF_MsgId>AB34DC093261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:40:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_ObjectData> <SIF_EventObject ObjectName="StudentPersonal" Action="Change"> <StudentPersonal RefId="D3E34B359D75101A8C3D00AA001A1652"> <PersonInfo> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2289</Number> <Extension>72289</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0437-765-234</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> </PersonInfo> </StudentPersonal> </SIF_EventObject> </SIF_ObjectData> </SIF_Event> </SIF_Message> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.13-2: SIF_Ack in response to SIF_GetMessage
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>9861A45AAC364607938A7DB440514DDF</SIF_MsgId> <SIF_Timestamp>2006-10-14T15:54:42-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>B0E80A74265A4A75ADDC0ECC50AEF737</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>9</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.13-3: SIF_Ack in response to SIF_GetMessage (no message in queue)

### 5.2.14 SIF_GetZoneStatus

The `SIF_GetZoneStatus` message provides the agent with the ability to synchronously retrieve the current status of the zone, by-passing the asynchronous nature of retrieving the zone status by sending a `SIF_Request` for `SIF_ZoneStatus` and waiting for the arrival of the `SIF_ZoneStatus` response at the top of its queue. Agents may also use the asynchronous model for requesting `SIF_ZoneStatus`, if and when desired.

Figure 5.2.14-1: SIF_GetZoneStatus

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_GetZoneStatus | M | This message tells the ZIS to return the current `SIF_ZoneStatus` in a `SIF_Ack`. | EMPTY

Table 5.2.14-1: SIF_GetZoneStatus
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>91401B5073F54AB1AEBC63E51764C77A</SIF_MsgId> <SIF_Timestamp>2006-10-14T16:09:54-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_GetZoneStatus /> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.14-1: SIF_GetZoneStatus
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>C4BF5F868EEC4A41AF7DAF316C4E89DC</SIF_MsgId> <SIF_Timestamp>2006-10-14T16:10:42-08:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>91401B5073F54AB1AEBC63E51764C77A</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>0</SIF_Code> <SIF_Data> <SIF_ZoneStatus ZoneId="SIFExampleZone">...</SIF_ZoneStatus> </SIF_Data> </SIF_Status> </SIF_Ack> </SIF_Message>
Example 5.2.14-2: SIF_Ack containing SIF_ZoneStatus

### 5.2.15 SIF_GetAgentACL

The `SIF_GetAgentACL` message provides the agent with the ability to synchronously retrieve its Access Control List permissions in the Zone via `SIF_AgentACL`. Agents may also use the asynchronous model of `SIF_Request` for requesting `SIF_AgentACL`, if and when desired.

Figure 5.2.15-1: SIF_GetAgentACL

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_GetAgentACL | M | This message tells the ZIS to return the Agent's ACL permissions in a `SIF_Ack`. | EMPTY

Table 5.2.15-1: SIF_GetAgentACL

### 5.2.16 SIF_CancelRequests

The SIF_SystemControl—SIF_CancelRequests message allows an Agent or ZIS to notify a ZIS or Push-Mode Agent, respectively, that the specified `SIF_Request`s should be cancelled, whether pending or in process. Handling by a Push-Mode Agent is optional; if unsupported, the Agent returns a Generic Message Handling error upon receipt of the `SIF_SystemControl` message, error code "Message not supported."

Figure 5.2.16-1: SIF_CancelRequests

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_CancelRequests | M | This sub-message asks a receiver (ZIS or Push-Mode Agent) to cancel the specified `SIF_Request`s, pending or in process. |
| SIF_NotificationType | M |  | values: Standard ZIS will send a "final" SIF_Response for each cancelled SIF_Request. None No further SIF_Responses for these requests will be placed in the Agent's queue.
| SIF_RequestMsgIds | M | The list of `SIF_Request`s to cancel. | List
| SIF_RequestMsgIds/SIF_RequestMsgId | MR | This is the `SIF_MsgId` of the `SIF_Request` message being cancelled. | MsgIdType

Table 5.2.16-1: SIF_CancelRequests
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_SystemControl> <SIF_Header> <SIF_MsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_MsgId> <SIF_Timestamp>2006-12-27T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>AcmeAgent</SIF_SourceId> </SIF_Header> <SIF_SystemControlData> <SIF_CancelRequests> <SIF_NotificationType>None</SIF_NotificationType> <SIF_RequestMsgIds> <SIF_RequestMsgId>C332B8A9DFA5480AB89B6B6F62BE57B3</SIF_RequestMsgId> <SIF_RequestMsgId>1058ABCDE028D076F08365109BE7C892</SIF_RequestMsgId> </SIF_RequestMsgIds> </SIF_CancelRequests> </SIF_SystemControlData> </SIF_SystemControl> </SIF_Message>
Example 5.2.16-1: SIF_CancelRequests

### 5.2.17 SIF_Unprovide

This message performs the opposite function of `SIF_Provide`. It removes the message sender as a provider of the data objects contained in this message.

Figure 5.2.17-1: SIF_Unprovide

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Unprovide | M | This message performs the opposite function of `SIF_Provide`. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_Object | MR | This is the object that is being removed from the provider list. |
@ | ObjectName | M | The actual name of the object that is being removed. | SIF_ProvideObjectNamesType
| SIF_Object/SIF_Contexts | O | The contexts from which the object is being removed; if omitted, the context is `SIF_Default`. | SIF_Contexts

Table 5.2.17-1: SIF_Unprovide
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Unprovide> <SIF_Header> <SIF_MsgId>76EFAB543261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseySIS</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StaffPersonal" /> </SIF_Unprovide> </SIF_Message>
Example 5.2.17-1: SIF_Unprovide

### 5.2.18 SIF_Unregister

This message allows an agent to remove any association it has with the ZIS. By sending this message, the ZIS will remove all provisions and subscriptions it maintains for the sender and discards any messages pending for the agent.

Figure 5.2.18-1: SIF_Unregister

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Unregister | M | This message is used to unregister an agent from a Zone. |
| SIF_Header | M | Header information contained in the message. | SIF_Header

Table 5.2.18-1: SIF_Unregister
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Unregister> <SIF_Header> <SIF_MsgId>1057FABD3261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyFOOD</SIF_SourceId> </SIF_Header> </SIF_Unregister> </SIF_Message>
Example 5.2.18-1: SIF_Unregister

### 5.2.19 SIF_Unsubscribe

This message performs the opposite function of `SIF_Subscribe`. It removes the message sender as a subscriber to the `SIF_Event`s contained in this message.

Figure 5.2.19-1: SIF_Unsubscribe

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Unsubscribe | M | This message is used to unsubscribe from `SIF_Event`s. |
| SIF_Header | M | Header information associated with this message. | SIF_Header
| SIF_Object | MR |  |
@ | ObjectName | M | The actual name of the object from which the agent should be unsubscribed. Events pertaining to this object published after successful unsubscription will no longer be queued for delivery to the agent. Events already queued for delivery to the agent prior to unsubscription will be delivered. | SIF_SubscribeObjectNamesType
| SIF_Object/SIF_Contexts | O | The applicable contexts; if omitted, the context is `SIF_Default`. | SIF_Contexts

Table 5.2.19-1: SIF_Unsubscribe
<SIF_Message Version="2.4" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Unsubscribe> <SIF_Header> <SIF_MsgId>101AE3703261545A31905937B265CE01</SIF_MsgId> <SIF_Timestamp>2006-02-18T20:39:12-08:00</SIF_Timestamp> <SIF_SourceId>RamseyFOOD</SIF_SourceId> </SIF_Header> <SIF_Object ObjectName="StudentPersonal" /> <SIF_Object ObjectName="StaffPersonal" /> </SIF_Unsubscribe> </SIF_Message>
Example 5.2.19-1: SIF_Unsubscribe

## 5.3 Objects

### 5.3.1 SIF_AgentACL

This object provides an Agent its access control list (ACL) settings in the Zone. It does not communicate which objects the Agent is currently registered as providing, subscribing, publishing, requesting, or responding; it simply lists the ACL rights granted to the Agent in the Zone. When objects are absent from any of the access lists, the Agent does not have the necessary rights to perform the given action on the object. While an Agent may asynchronously request this object from the ZIS via `SIF_Request`, it is typically returned synchronously in response to the `SIF_SystemControl` message `SIF_GetAgentACL`; it is also returned synchronously in response to `SIF_Register`.

Typically only `Change` events are reported.

Figure 5.3.1-1: SIF_AgentACL

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_AgentACL |  | This object provides an Agent its access control list (ACL) settings in the Zone. |
| SIF_ProvideAccess | M | Access control list by object for `SIF_Provide` and corresponding section in `SIF_Provision`. | List
| SIF_ProvideAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_ProvideAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_SubscribeAccess | M | Access control list by object for `SIF_Subscribe` and corresponding section in `SIF_Provision`. | List
| SIF_SubscribeAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_SubscribeAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_PublishAddAccess | M | Access control list by object for corresponding section in `SIF_Provision`, whether the Agent has the right to publish `Add` events. | List
| SIF_PublishAddAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_PublishAddAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_PublishChangeAccess | M | Access control list by object for corresponding section in `SIF_Provision`, whether the Agent has the right to publish `Change` events. | List
| SIF_PublishChangeAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_PublishChangeAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_PublishDeleteAccess | M | Access control list by object for corresponding section in `SIF_Provision`, whether the Agent has the right to publish Delete events. | List
| SIF_PublishDeleteAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_PublishDeleteAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_RequestAccess | M | Access control list by object for `SIF_Request` and corresponding section in `SIF_Provision`. | List
| SIF_RequestAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_RequestAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_RespondAccess | M | Access control list by object for corresponding section in `SIF_Provision`, whether the Agent has the right to respond to requests for an object regardless of being the Provider of that object. | List
| SIF_RespondAccess/SIF_Object | OR |  |
@ | ObjectName | M | The name of each object. | ObjectNameType
| SIF_RespondAccess/SIF_Object/ SIF_Contexts | M | List of contexts in which rights for the given action/object apply. | SIF_Contexts
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 5.3.1-1: SIF_AgentACL
<SIF_AgentACL> <SIF_ProvideAccess> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ProvideAccess> <SIF_SubscribeAccess> <SIF_Object ObjectName="Authentication"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_SubscribeAccess> <SIF_PublishAddAccess> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_PublishAddAccess> <SIF_PublishChangeAccess> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_PublishChangeAccess> <SIF_PublishDeleteAccess> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_PublishDeleteAccess> <SIF_RequestAccess> <SIF_Object ObjectName="Authentication"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_RequestAccess> <SIF_RespondAccess> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_RespondAccess> </SIF_AgentACL>
Example 5.3.1-1: SIF_AgentACL

### 5.3.2 SIF_LogEntry

This object captures an occurrence within a SIF node (ZIS or agent)—error, warning or information—for storage in an optionally provided zone log. SIF_LogEntry Adds are reported and are used to post new log entries to the provider of the log. Of course, subscribing agents may also filter incoming Adds as part of their own logging mechanism. Any Change or Delete SIF_Events should be ignored at the agent level, but should be routed by the ZIS (though this should not be necessary). Use of the log is optional and voluntary, except where noted as mandatory in this specification. Nodes may post as much or as little log data as required with the expectation that if there is a provider of SIF_LogEntry that the logged entries be available for a provider-defined amount of time subject to provider-defined restrictions on the quantity of data logged by any given node.

SIF_Events are reported for this object.

Figure 5.3.2-1: SIF_LogEntry

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_LogEntry |  | This object captures an occurrence within a SIF node (ZIS or agent)—error, warning or information—for storage in an optionally provided zone log. SIF_LogEntry Adds are reported and are used to post new log entries to the provider of the log. Of course, subscribing agents may also filter incoming Adds as part of their own logging mechanism. Any Change or Delete SIF_Events should be ignored at the agent level, but should be routed by the ZIS (though this should not be necessary). Use of the log is optional and voluntary, except where noted as mandatory in this specification. Nodes may post as much or as little log data as required with the expectation that if there is a provider of SIF_LogEntry that the logged entries be available for a provider-defined amount of time subject to provider-defined restrictions on the quantity of data logged by any given node. |
@ | Source | M | The SIF node that logged this entry. | values: Agent ZIS
@ | LogLevel | M | The level of the log entry herein described. | values: Info Warning Error
| SIF_LogEntryHeader | M | This is a copy of the SIF_Event/SIF_Header in the message that added this SIF_LogEntry to the zone. This copy facilitates querying log entries with regard to source, time, optionally destination, etc. |
| SIF_LogEntryHeader/SIF_Header | M |  | SIF_Header
| SIF_OriginalHeader | O | If this log entry references a previous SIF_Message, this element contains a copy of the referenced message's SIF_Header. |
| SIF_OriginalHeader/SIF_Header | M |  | SIF_Header
| SIF_Category | C | A SIF_LogEntry category. May be omitted for informational-type postings, where typically a textual description will suffice. Note that categories may be combined with the Source attribute of SIF_LogEntry to differentiate agent error conditions from ZIS error conditions. | values: 1 Success 2 Data Issues with Success Result 3 Data Issues with Failure Result 4 Error Conditions
| SIF_Code | O | A SIF_LogEntry code with regard to SIF_Category above. May be omitted for informational-type postings, where typically a textual description will suffice. If a SIF_Code is included, SIF_Category must be included as well. | union of: SIF_LogEntrySuccessCategoryType SIF_LogEntryDataIssuesWithSuccessResultType SIF_LogEntryDataIssuesWithFailureResultType SIF_LogEntryAgentErrorConditionType SIF_LogEntryZISErrorConditionType
| SIF_ApplicationCode | O | An error code specific to the application posting the entry. Can be used by vendors to query log entries for errors specific to their applications. If a SIF_ApplicationCode is included, SIF_Category must be included as well; i.e., application-specific error codes should fall within one of the defined log entry categories. | xs:normalizedString
xs:maxLength | 64
| SIF_Desc | M | A textual description of the error. | xs:string
xs:maxLength | 1024
| SIF_ExtendedDesc | O | Any extended error description. | xs:string
| SIF_LogObjects | O |  | List
| SIF_LogObjects/SIF_LogObject | MR | Any SIF data objects to which this log entry may apply. | SIF_LogEntryExtendedContentType
@ | ObjectName | M | The name of the SIF object referenced (e.g. StudentPersonal). | SIF_RequestObjectNamesType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 5.3.2-1: SIF_LogEntry
<SIF_LogEntry Source="Agent" LogLevel="Error"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>83252CE5C5F14FD88607F645224E4CAA</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:36:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySISAgent</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_Category>4</SIF_Category> <SIF_Code>1</SIF_Code> <SIF_Desc>Agent has run out of memory and will shut down</SIF_Desc> <SIF_ExtendedDesc>OutOfMemoryException: ...</SIF_ExtendedDesc> </SIF_LogEntry>
Example 5.3.2-1: SIF_LogEntry when an agent encounters a system failure
<SIF_LogEntry Source="Agent" LogLevel="Error"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>BA86894B795A4EB7A45093AD1CDBA54C</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:39:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySISAgent</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_OriginalHeader> <SIF_Header> <SIF_MsgId>74234DCB460A4BCB8937B07467EA73CC</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:29:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseyLibraryAgent</SIF_SourceId> </SIF_Header> </SIF_OriginalHeader> <SIF_Category>3</SIF_Category> <SIF_Code>2</SIF_Code> <SIF_ApplicationCode>-33</SIF_ApplicationCode> <SIF_Desc>Could not delete student John Smith due to business rule</SIF_Desc> <SIF_LogObjects> <SIF_LogObject ObjectName="StudentPersonal"> <StudentPersonal RefId="76D3A70232FE40D7A5D43A7A317EAEF9"> <AlertMessages> <AlertMessage Type="Legal">This is the Legal Alert for Joe Student</AlertMessage> </AlertMessages> <LocalId>P00001</LocalId> <StateProvinceId>WB0025</StateProvinceId> <ElectronicIdList> <ElectronicId Type="Barcode">206654</ElectronicId> </ElectronicIdList> <Name Type="04"> <LastName>Student</LastName> <FirstName>Joe</FirstName> <MiddleName /> <PreferredName>Joe</PreferredName> </Name> <Demographics> <Gender>M</Gender> </Demographics> <AddressList> <Address Type="0123"> <Street> <Line1>6799 33rd Ave.</Line1> <StreetNumber>6799</StreetNumber> <StreetName>33rd</StreetName> <StreetType>Ave.</StreetType> </Street> <City>Chicago</City> <StateProvince>IL</StateProvince> <Country>US</Country> <PostalCode>60660</PostalCode> </Address> </AddressList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>(312) 555-1234</Number> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="Primary">Joe.Student@anyschool.com</Email> </EmailList> <OnTimeGraduationYear>2007</OnTimeGraduationYear> </StudentPersonal> </SIF_LogObject> </SIF_LogObjects> </SIF_LogEntry>
Example 5.3.2-2: SIF_LogEntry when an agent fails to delete a student
<SIF_LogEntry Source="Agent" LogLevel="Info"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>64B0CC6CFB314A328E520A102229CBC8</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:46:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseySISAgent</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_Desc>Agent starting synchronization</SIF_Desc> </SIF_LogEntry>
Example 5.3.2-3: SIF_LogEntry when an agent starts synchronizing data
<SIF_LogEntry Source="ZIS" LogLevel="Error"> <SIF_LogEntryHeader> <SIF_Header> <SIF_MsgId>BC1D982CEC5F49D998169930FE5B271C</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:49:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseyZIS</SIF_SourceId> </SIF_Header> </SIF_LogEntryHeader> <SIF_OriginalHeader> <SIF_Header> <SIF_MsgId>74234DCB460A4BCB8937B07467EA73CC</SIF_MsgId> <SIF_Timestamp>2006-08-19T10:29:00-05:00</SIF_Timestamp> <SIF_SourceId>RamseyLibraryAgent</SIF_SourceId> </SIF_Header> </SIF_OriginalHeader> <SIF_Category>4</SIF_Category> <SIF_Code>2</SIF_Code> <SIF_Desc>Could not deliver StudentPicture Add to RamseyLibraryAgent (127,546 bytes) due to maximum buffer size of 16,384 bytes.</SIF_Desc> </SIF_LogEntry>
Example 5.3.2-4: SIF_LogEntry when a ZIS fails to deliver a message due to buffer size limitations

### 5.3.3 SIF_ZoneStatus

The `SIF_ZoneStatus` object is an object that is implicitly provided by all Zone Integration Servers to provide information about the ZIS. Zone Integration Servers MUST provide this object.

Change events are supported on `SIF_ZoneStatus`.

Figure 5.3.3-1: SIF_ZoneStatus

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ZoneStatus |  | The `SIF_ZoneStatus` object is an object that is implicitly provided by all Zone Integration Servers to provide information about the ZIS. Zone Integration Servers MUST provide this object. |
@ | ZoneId | M | The identifier for this Zone. It is the same as the `SIF_SourceId` that the ZIS would place in any `SIF_Header` that it creates. | xs:token
| SIF_Name | M | The descriptive name for the zone. | xs:normalizedString
| SIF_Icon | O | HTTP URL referencing an icon for graphical representation of the ZIS/Zone. Should range from 16x16 pixels to 128x128 pixels and be of an `image` MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). Agents may optionally follow the more restrictive guidelines at [FAVICON]. | xs:anyURI
| SIF_Vendor | O | Contains information about the vendor that wrote this ZIS. |
| SIF_Vendor/SIF_Name | M | The name of the company that wrote the ZIS. | xs:normalizedString
| SIF_Vendor/SIF_Product | M | The product name assigned by the vendor to identify this ZIS. | xs:normalizedString
| SIF_Vendor/SIF_Version | M | The version of the vendor's product—not necessarily the SIF version. | xs:normalizedString
| SIF_Providers | C | Encompasses all the providers registered with this ZIS. This element is mandatory if there are providers registered with the ZIS. | List
| SIF_Providers/SIF_Provider | MR |  |
@ | SourceId | M | The identifier of the SIF node that is providing objects. This is the agent or ZIS identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the SIF node. | xs:token
xs:maxLength | 64
| SIF_Providers/SIF_Provider/ SIF_ObjectList | M |  | List
| SIF_Providers/SIF_Provider/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object being provided by this SIF node. | ObjectNameType
| SIF_Providers/SIF_Provider/ SIF_ObjectList/SIF_Object/ SIF_ExtendedQuerySupport | M |  | xs:boolean
| SIF_Providers/SIF_Provider/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_Subscribers | C | Encompasses all the subscribers registered with this ZIS. This element is mandatory if there are subscribers registered with the ZIS. | List
| SIF_Subscribers/SIF_Subscriber | MR |  |
@ | SourceId | M | The identifier of the SIF node that is subscribing to the object events. This is the agent or ZIS identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the SIF node. | xs:token
xs:maxLength | 64
| SIF_Subscribers/SIF_Subscriber/ SIF_ObjectList | M |  | List
| SIF_Subscribers/SIF_Subscriber/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object being subscribed to by this SIF node. | ObjectNameType
| SIF_Subscribers/SIF_Subscriber/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_AddPublishers | C | Encompasses all the `Add` `SIF_Event` publishers registered with this zone. | List
| SIF_AddPublishers/SIF_Publisher | MR |  |
@ | SourceId | M | The identifier of the SIF node that can publish the `SIF_Event`. This is the agent identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the agent. | xs:token
xs:maxLength | 64
| SIF_AddPublishers/SIF_Publisher/ SIF_ObjectList | M |  | List
| SIF_AddPublishers/SIF_Publisher/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object being published by this agent. | ObjectNameType
| SIF_AddPublishers/SIF_Publisher/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_ChangePublishers | C | Encompasses all the `Change` `SIF_Event` publishers registered with this zone. | List
| SIF_ChangePublishers/SIF_Publisher | MR |  |
@ | SourceId | M | The identifier of the SIF node that can publish the `SIF_Event`. This is the agent identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the agent. | xs:token
xs:maxLength | 64
| SIF_ChangePublishers/SIF_Publisher/ SIF_ObjectList | M |  | List
| SIF_ChangePublishers/SIF_Publisher/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object being published by this agent. | ObjectNameType
| SIF_ChangePublishers/SIF_Publisher/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_DeletePublishers | C | Encompasses all the `Delete` `SIF_Event` publishers registered with this zone. | List
| SIF_DeletePublishers/SIF_Publisher | MR |  |
@ | SourceId | M | The identifier of the SIF node that can publish the `SIF_Event`. This is the agent identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the agent. | xs:token
xs:maxLength | 64
| SIF_DeletePublishers/SIF_Publisher/ SIF_ObjectList | M |  | List
| SIF_DeletePublishers/SIF_Publisher/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object being published by this agent. | ObjectNameType
| SIF_DeletePublishers/SIF_Publisher/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_Responders | C | Encompasses all the responders registered with this zone. | List
| SIF_Responders/SIF_Responder | MR |  |
@ | SourceId | M | The identifier of the SIF node that can respond. This is the agent identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the agent. | xs:token
xs:maxLength | 64
| SIF_Responders/SIF_Responder/ SIF_ObjectList | M |  | List
| SIF_Responders/SIF_Responder/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object for which the agent can respond to requests. | ObjectNameType
| SIF_Responders/SIF_Responder/ SIF_ObjectList/SIF_Object/ SIF_ExtendedQuerySupport | M |  | xs:boolean
| SIF_Responders/SIF_Responder/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_Requesters | C | Encompasses all the requesters registered with this zone. | List
| SIF_Requesters/SIF_Requester | MR |  |
@ | SourceId | M | The identifier of the SIF node that can request an object. This is the agent identifier that would appear in the `SIF_SourceId` field of any `SIF_Header` created by the agent. | xs:token
xs:maxLength | 64
| SIF_Requesters/SIF_Requester/ SIF_ObjectList | M |  | List
| SIF_Requesters/SIF_Requester/ SIF_ObjectList/SIF_Object | MR |  |
@ | ObjectName | M | The name of the object being requested by this agent. | ObjectNameType
| SIF_Requesters/SIF_Requester/ SIF_ObjectList/SIF_Object/ SIF_ExtendedQuerySupport | M |  | xs:boolean
| SIF_Requesters/SIF_Requester/ SIF_ObjectList/SIF_Object/ SIF_Contexts | M |  | SIF_Contexts
| SIF_SIFNodes | C | Encompasses all of the nodes registered with the ZIS. This element is mandatory if there are SIF nodes registered. | List
| SIF_SIFNodes/SIF_SIFNode | MR |  |
@ | Type | M | The type of the node registered with the ZIS. Note that `ZIS` is forward-looking and not used currently; all information about this Zone/ZIS is contained outside `SIF_SIFNodes`. | values: Agent ZIS
| SIF_SIFNodes/SIF_SIFNode/ SIF_Name | M | The descriptive name of the SIF node (i.e. Ramsey Food Services). | xs:normalizedString
| SIF_SIFNodes/SIF_SIFNode/ SIF_Icon | O | HTTP URL referencing an icon for graphical representation of the application/agent. Should range from 16x16 pixels to 128x128 pixels and be of an `image` MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). Agents may optionally follow the more restrictive guidelines at [FAVICON]. | xs:anyURI
| SIF_SIFNodes/SIF_SIFNode/ SIF_NodeVendor | O | The vendor of the SIF agent. | xs:normalizedString
xs:maxLength | 256
| SIF_SIFNodes/SIF_SIFNode/ SIF_NodeVersion | O | The agent version number. The format of this field is undefined, but it should match the format used in the agent's conformance statement, if the agent is SIF Certified. Examples 2.0.1.11 | xs:normalizedString
xs:maxLength | 32
| SIF_SIFNodes/SIF_SIFNode/ SIF_Application | O | Contains information about the vendor of the product that the agent represents. |
| SIF_SIFNodes/SIF_SIFNode/ SIF_Application/SIF_Vendor | M | The name of the company of the product that this agent supports. | xs:normalizedString
xs:maxLength | 256
| SIF_SIFNodes/SIF_SIFNode/ SIF_Application/SIF_Product | M | The name of the product that this agent supports. | xs:normalizedString
xs:maxLength | 256
| SIF_SIFNodes/SIF_SIFNode/ SIF_Application/SIF_Version | M | The version of the product. This field is informative only. | xs:normalizedString
xs:maxLength | 32
| SIF_SIFNodes/SIF_SIFNode/ SIF_SourceId | M | The agent or ZIS identifier. This is the same value that the SIF node would place in any `SIF_Header` that it would create. | xs:token
xs:maxLength | 64
| SIF_SIFNodes/SIF_SIFNode/ SIF_Mode | M | Specifies the communication mode (Pull or Push) as chosen by the message sender. | values: Push Pull
| SIF_SIFNodes/SIF_SIFNode/ SIF_Protocol | O | Describes the currently active protocol that the SIF node is using to communicate with the ZIS. | SIF_Protocol
| SIF_SIFNodes/SIF_SIFNode/ SIF_VersionList | M |  | List
| SIF_SIFNodes/SIF_SIFNode/ SIF_VersionList/SIF_Version | MR | This is the version or versions of the SIF Implementation Specification that define(s) the messages the SIF node can receive. For agents, this information was communicated when the SIF node registered with the ZIS. | VersionWithWildcardsType
| SIF_SIFNodes/SIF_SIFNode/ SIF_AuthenticationLevel | O | This is the level of authentication that the SIF node supports when it wants to communicate via a secure channel. | SIF_AuthenticationLevel
| SIF_SIFNodes/SIF_SIFNode/ SIF_EncryptionLevel | O | This is the level of encryption that the SIF node supports when it wants to communicate via a secure channel. | SIF_EncryptionLevel
| SIF_SIFNodes/SIF_SIFNode/ SIF_MaxBufferSize | M | Specifies that the ZIS should never send packets larger than this value. Query responses from other providers are controlled by the `SIF_MaxBufferSize` attribute in the `SIF_Request` message. | xs:unsignedInt
| SIF_SIFNodes/SIF_SIFNode/ SIF_Sleeping | M | This element shows whether the SIF node is ready to process messages. | values: No The SIF node is ready to process messages Yes The SIF node is sleeping and cannot process messages
| SIF_SupportedAuthentication | C | Enumerates the various authentication protocols that the ZIS supports. If the ZIS supports an authentication protocol this element is mandatory. | List
| SIF_SupportedAuthentication/ SIF_ProtocolName | MR | Describes a particular authentication protocol supported. | values: X.509
| SIF_SupportedProtocols | M | Enumerates the various communication transport protocols that are supported by the ZIS. | List
| SIF_SupportedProtocols/SIF_Protocol | MR |  | SIF_Protocol
| SIF_SupportedVersions | M | Enumerates the versions of the SIF Implementation Specification that this ZIS can use when communicating with the agent. | List
| SIF_SupportedVersions/SIF_Version | MR | Lists a specific SIF Implementation Specification version. | VersionType
| SIF_AdministrationURL | O | Should a ZIS vendor provide an administration interface for the zone via a URL, the ZIS can make the URL available in `SIF_ZoneStatus`. Agent administrators can use the URL to access zone administration features, should they have permission to do so. | xs:anyURI
| SIF_Contexts | M |  | SIF_Contexts
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 5.3.3-1: SIF_ZoneStatus
<SIF_ZoneStatus ZoneId="RamseyZIS"> <SIF_Name>Ramsey Elementary</SIF_Name> <SIF_Vendor> <SIF_Name>ZoneMaster, Inc.</SIF_Name> <SIF_Product>ZonePlus Zone Integration Server</SIF_Product> <SIF_Version>3.01</SIF_Version> </SIF_Vendor> <SIF_Providers> <SIF_Provider SourceId="RamseyFOOD"> <SIF_ObjectList> <SIF_Object ObjectName="StudentMeal"> <SIF_ExtendedQuerySupport>false</SIF_ExtendedQuerySupport> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Provider> <SIF_Provider SourceId="RamseyLIB"> <SIF_ObjectList> <SIF_Object ObjectName="LibraryPatronStatus"> <SIF_ExtendedQuerySupport>false</SIF_ExtendedQuerySupport> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Provider> <SIF_Provider SourceId="RamseySIS"> <SIF_ObjectList> <SIF_Object ObjectName="StudentPersonal"> <SIF_ExtendedQuerySupport>false</SIF_ExtendedQuerySupport> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> <SIF_Object ObjectName="StudentSchoolEnrollment"> <SIF_ExtendedQuerySupport>false</SIF_ExtendedQuerySupport> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Provider> </SIF_Providers> <SIF_Subscribers> <SIF_Subscriber SourceId="RamseyFOOD"> <SIF_ObjectList> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> <SIF_Object ObjectName="StudentSchoolEnrollment"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Subscriber> <SIF_Subscriber SourceId="RamseyLIB"> <SIF_ObjectList> <SIF_Object ObjectName="StudentPersonal"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> <SIF_Object ObjectName="StudentSchoolEnrollment"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Subscriber> <SIF_Subscriber SourceId="RamseySIS"> <SIF_ObjectList> <SIF_Object ObjectName="StudentContact"> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_Object> </SIF_ObjectList> </SIF_Subscriber> </SIF_Subscribers> <SIF_SIFNodes> <SIF_SIFNode Type="Agent"> <SIF_Name>Ramsey Food Services</SIF_Name> <SIF_SourceId>RamseyFOOD</SIF_SourceId> <SIF_Mode>Push</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8010/FoodService</SIF_URL> </SIF_Protocol> <SIF_VersionList> <SIF_Version>2.3</SIF_Version> </SIF_VersionList> <SIF_MaxBufferSize>16384</SIF_MaxBufferSize> <SIF_Sleeping>No</SIF_Sleeping> </SIF_SIFNode> <SIF_SIFNode Type="Agent"> <SIF_Name>Ramsey Media Resource Center</SIF_Name> <SIF_SourceId>RamseyLIB</SIF_SourceId> <SIF_Mode>Pull</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8020/Library</SIF_URL> </SIF_Protocol> <SIF_VersionList> <SIF_Version>2.3</SIF_Version> </SIF_VersionList> <SIF_MaxBufferSize>16384</SIF_MaxBufferSize> <SIF_Sleeping>No</SIF_Sleeping> </SIF_SIFNode> <SIF_SIFNode Type="Agent"> <SIF_Name>Ramsey Administration</SIF_Name> <SIF_SourceId>RamseySIS</SIF_SourceId> <SIF_Mode>Push</SIF_Mode> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8030/StudentAdmin</SIF_URL> </SIF_Protocol> <SIF_VersionList> <SIF_Version>2.3</SIF_Version> </SIF_VersionList> <SIF_MaxBufferSize>16384</SIF_MaxBufferSize> <SIF_Sleeping>No</SIF_Sleeping> </SIF_SIFNode> </SIF_SIFNodes> <SIF_SupportedAuthentication> <SIF_ProtocolName>X.509</SIF_ProtocolName> </SIF_SupportedAuthentication> <SIF_SupportedProtocols> <SIF_Protocol Type="HTTPS" Secure="Yes"> <SIF_URL>https://RamseyNT:8000/ZIS</SIF_URL> </SIF_Protocol> <SIF_Protocol Type="HTTP" Secure="No"> <SIF_URL>http://RamseyNT:8000/ZIS</SIF_URL> </SIF_Protocol> </SIF_SupportedProtocols> <SIF_SupportedVersions> <SIF_Version>2.3</SIF_Version> </SIF_SupportedVersions> <SIF_AdministrationURL>http://RamseyNT:8000/Administer</SIF_AdministrationURL> <SIF_Contexts> <SIF_Context>SIF_Default</SIF_Context> </SIF_Contexts> </SIF_ZoneStatus>
Example 5.3.3-1: SIF_ZoneStatus

# 6 Data Model

## 6.1 Introduction

This section presents the XML structure for SIF Data Model common elements and objects in a tabular format for readers less versed in parsing formal XML schema definitions, along with conventions that typically apply in the data model for easy reference.

### 6.1.1 Format

The Char(acteristics) column for all of the tables in this section use the following codes:

Code | Characteristic
M | Mandatory element or attribute
O | Optional element or attribute
C | Conditional element or attribute
MR | Mandatory and repeatable element
OR | Optional and repeatable element
CR | Conditional and repeatable element

Mandatory elements MUST be present in Add events, and in non-empty and non-error responses to requests for entire SIF objects (e.g., no `SIF_Query/SIF_QueryObject/SIF_Element` elements supplied in the request). Mandatory attributes MUST always be present if their corresponding element is present.

SIF Agents and Zone Integration Servers MUST supply data according to the types specified in the Type columns and their corresponding equivalents in the most recent schema files associated with this specification. If there is a discrepancy between object and element definitions in this specification and the corresponding schema files, the definition in the schema files takes precedence; every effort will be made to note discrepancies in the errata for this document as they are identified.

### 6.1.2 Conventions

#### 6.1.2.1 Object Attributes/Primary Keys

While XML attributes are primarily used in SIF to provide additional processing information regarding the associated element content, attributes at the root level of an object have special significance. These attributes serve as the primary key or identifier for the object; in many cases this is no more than a `RefId` GUID of `RefIdType`, though the primary key may consist solely of foreign key references to other SIF objects and include school years, dates, etc. These key attributes are immutable over the lifetime of an object and serve the purpose of uniquely identifying an object, especially in `Change` and `Delete` events. Some groups include non-primary key attributes in object attributes (e.g. mandatory foreign key references to other objects) and attributes that provide additional processing information regarding the objects. As SIF currently mandates that all object attributes be included in all messages, when a SIF Association working group or task force places a non-primary key attribute in the object's attribute definitions (typically out of historical query conventions), they are indicating that this value must still be accessible to systems in `Change` and, more notably, `Delete` events. All object attributes must be supplied to identify the object in `Change` and `Delete` events.

#### 6.1.2.2 Object References

As stated elsewhere, SIF primarily uses GUIDs as object identifiers, primary keys, or `RefId`s. References to primary keys (foreign key references) follow certain conventions in SIF in most objects:

- An element or attribute of type `IdRefType` can be defined that consists of the referenced object name concatenated with `RefId`, e.g., `DataPersonalRefId` (a reference to the object identifier/primary key/`RefId` of a `DataPersonal` object);
- An element requiring a more descriptive name for the reference or one that refers to more than one object type is defined as `IdRefType`, has an element name of a group's choosing (or generically `SIF_RefId`) and enumerates all possible object types that can be referenced in the `SIF_RefObject` attribute; or
- A pair of attributes can be defined, one of type `IdRefType` containing the referenced object's `RefId`, the other enumerating all possible object types that can be referenced; generically these are named `SIF_RefId` and `SIF_RefObject`, respectively; naming conventions that programmatically allow identification of the pair beyond the generic names will be documented when the need arises.

#### 6.1.2.3 Lists/Repeatable Elements

To those accustomed with normalized relational databases, the SIF Data Model will appear to not be especially normalized, especially with regard to repeating groups of data not being separated into their own "tables," or in SIF's case, "objects" with primary/foreign keys to maintain the relationship. Bear in mind that SIF is not a format for storing data; it is a format for transmitting data asynchronously between disparate and distributed systems needing to share data for interoperability; the format this data takes in different systems can vary greatly, and the data related to any given "entity" may come from a variety of sources and systems. The goals of normalization—eliminating redundancy, organizing data efficiently, reducing inconsistencies, etc.—take on a different meaning in a message queuing system. Of primary importance is transmitting the data needed for interoperability in a minimum number of messages. The need to "join" together a great number of separate objects is kept to a minimum in SIF, as individual systems do not have access to all the data required and due to the asynchronous nature of SIF, any one of these systems may take a fair amount of time before returning data necessary for joins (`SIF_ExtendedQuery` has been developed to communicate a join to a single system that may have direct access to the all the data necessary to efficiently accomplish this task). It's one thing to make a separate request for a student's picture or enrollment information, another entirely to request every available phone number, address and e-mail address separately from the SIF Zone. As such, it is often the case in SIF that repeating data is stored directly in an object, rather than being separated out into a separate object.

Repeating data is very analogous to objects, though, within any given object. In SIF's Publish/Subscribe model, repeating elements in objects can be added to, changed in or deleted from an object, much like objects can be added to, changed in or deleted from a Zone. Within an existing object, all of these actions take place within a `Change` event, and repeating elements—if any exist initially—are first made available within an object in an `Add` event or can be obtained directly via requests. Repeatable elements are contained within a parent List element in most SIF objects whether or not they support events, e.g.:

<EmailList> <Email Type="01">contact@sifinfo.org</Email> <Email Type="02">info@sifinfo.org</Email> </EmailList>
Example 6.1.2.3-1: EmailList

Two types of list are currently defined in SIF, ActionList and List; both consist of a list container element and a single repeatable child element. Each type of list serves different needs and has associated conventions for communication and processing in the SIF Publish/Subscribe Model. List or ActionList is specified in the Type column in tables in this section for each list; when an ActionList the key, possibly compound, is also indicated in the Type column. ActionList key values must be unique within an instance of an ActionList.

##### 6.1.2.3.1 ActionList

An ActionList has a key that uniquely identifies each child element within the list. This type of list is primarily used when it is desirable or necessary for systems to support or refer to a subset of the list, either due to functionally only being able to support a subset or because specifying a subset in `Change` events is more efficient than transmitting a whole list as in List. While one system may support the `Primary` and `Alternate1` e-mail address types above, another may additionally support `Alternate2` addresses. The second system is able to communicate the addition, change or deletion of an `Alternate2` address without the first system inadvertently interpreting that to mean a student or staff member's `Primary` and `Alternate1` addresses have been deleted.

Systems communicate the whole list as a cohesive unit consisting of the parent list container element and all child elements in an `Add` event; if the container is present with no child elements, the list is empty; the same is implied when an optional list is not present in an `Add` event. In a `Change` event, systems SHOULD only transmit those elements that have been added, changed or deleted. Deletion is not implied by the omission of a child element, but rather explicitly communicated with a `SIF_Action` attribute of `Delete` added to the deleted element, along with the element's key attribute(s)/element(s) at a minimum. An empty list in a `Change` event implies no changes have occurred in the list, as does the omission of the list. Systems storing ActionList data should set/replace/delete any existing values identified by primary keys in the `Change` event they support.

<EmailList> <Email Type="01">editor@sifinfo.org</Email> <Email Type="02" SIF_Action="Delete" /> </EmailList>
Example 6.1.2.3.1-1: Indicating a new value for the Primary e-mail address and deleting the Alternate1 address

A system that supports an `Alternate2` e-mail makes no changes to its value for that address type.

##### 6.1.2.3.2 List

While a unique, primary key may still be identifiable in its child elements, a List is used primarily when:

- the list is a cohesive whole conceptually, where supporting or referring to a subset of the list is of little value;
- when the list consists only of keys, and no associated data;
- the list is informational/temporary state information and not typically persisted; or
- when no key exists to uniquely identify items in the list.

Lists are always transmitted as a cohesive unit consisting of the parent list container element and all child elements. If no child elements exist in the list, the list consists of the container element alone. Omission of an optional List in an `Add` event also implies no list items. In a `Change` event, omission of the List indicates no changes have been made; otherwise the parent container element and all child elements, if any, are included. Systems storing List data should replace all corresponding data in their systems when persisting the list; likewise when a change is made to one or more list items or when all items in the list are deleted, systems should send the whole list in a `Change` event.

<CountriesOfCitizenship> <CountryOfCitizenship>1101</CountryOfCitizenship> <CountryOfCitizenship>2304</CountryOfCitizenship> </CountriesOfCitizenship>
Example 6.1.2.3.2-1: Indicating an updated list of country citizenships

A system that supports `CountriesOfCitizenship` updates its local data to reflect Australia and German citizenship.

#### 6.1.2.4 Supported Optional Elements Without Values

Some agents follow the convention of supplying an optional element as empty (e.g. `<BirthDate></BirthDate>` or `<BirthDate/>` to indicate that the application supports the element, but that it currently has no value available within a given object. To allow for this convention within SIF—as in this example an empty string does not satisfy the `xs:date` type definition of `BirthDate`—all optional elements in SIF are defined as `nillable` [SCHEMA]. To satisfy type constraints on an element while still supplying an empty or "nil" value, agents MUST tag the element with a `true` value for the `nil` attribute from namespace `http://www.w3.org/2001/XMLSchema-instance` [SCHEMA] (e.g. `<BirthDate xsi:nil="true"/>` where the prefix `xsi` has been mapped to the namespace `http://www.w3.org/2001/XMLSchema-instance`), unless an empty value is valid with regard to the element's type definition, in which case supplying the `nil` attribute value of `true` is optional. See SIF and XML Namespaces for more details on namespaces, and SIF and XML Schema for more details on SIF's use of XML Schema.

#### 6.1.2.5 Externally-Defined XML

Note that XML not defined within SIF does not necessarily support ad hoc omission of XML elements at will to conform with the conventions of the SIF Publish/Subscribe Model (where unchanged elements are typically omitted in Change events, and where non-key elements are often omitted in Delete events) or of the SIF Request/Response Model (where a subset of elements can be retrieved from objects with requests). If externally-defined XML occurs within a SIF data object, SIF conventions do not extend to that XML unless that XML is defined to accommodate SIF conventions; the XML, when transmitted, must only conform to any external definitions dictating its structure, if any. Applications should be prepared for the possibility of receiving whole externally-defined XML structures in Change events (regardless of how little or much of the external XML has changed) and possibly also Delete events, likewise in responses even when a subset of the XML structure's child elements may have explicitly been requested.

## 6.2 Common Elements

### 6.2.1 ACStrandSubjectArea

Subject matter.

Figure 6.2.1-1: ACStrandSubjectArea

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ACStrandSubjectArea |  | Subject matter. |
| ACStrand | M | Subject matter. | AUCodeSetsACStrandType
| SubjectArea | O | Subject matter. | SubjectArea

Table 6.2.1-1: ACStrandSubjectArea
<ACStrandSubjectArea> <ACStrand>M</ACStrand> <SubjectArea> <Code>Maths</Code> <OtherCodeList> <OtherCode Codeset="Text">Mathematics</OtherCode> </OtherCodeList> </SubjectArea> </ACStrandSubjectArea>
Example 6.2.1-1: ACStrandSubjectArea

### 6.2.2 Address

This element contains address data

Figure 6.2.2-1: Address

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Address | M | This element contains address data. |
@ | Type | M | Code that defines the location of the address. Note: A subset of specific valid values for each instance in a data object may be listed in that object. | AUCodeSetsAddressTypeType
@ | Role | M | A facet of Address | AUCodeSetsAddressRoleType
| Street | M | The street element is a complex element and breaks the street down into several parts. (Allow for PO Box here) |
| Street/Line1 | M | Address line 1. | xs:normalizedString
| Street/Line2 | O | Address line 2. | xs:normalizedString
| Street/Line3 | O | Address line 3. | xs:normalizedString
| Street/Complex | O | Name of the complex. | xs:normalizedString
| Street/StreetNumber | O | The address number assigned to the building. | xs:normalizedString
| Street/StreetPrefix | O | Street prefix like NE | xs:normalizedString
| Street/StreetName | O | The name of the street. | xs:normalizedString
| Street/StreetType | O | The type of street. For example, Lane, Blvd., Ave., etc. | xs:normalizedString
| Street/StreetSuffix | O | Street suffix like SW. | xs:normalizedString
| Street/ApartmentType | O | Type of apartment, for example, Suite. | xs:normalizedString
| Street/ApartmentNumberPrefix | O | Apartment number prefix. | xs:normalizedString
| Street/ApartmentNumber | O | The number of the apartment. | xs:normalizedString
| Street/ApartmentNumberSuffix | O | Apartment number suffix. | xs:normalizedString
| City | M | The city part of the address. | xs:normalizedString
| StateProvince | C | The state or province code. StateTerritory Code only applicable if an Australian Address. Conditional- If Australian Address this is mandatory. | StateProvince
| Country | O | The country code. | Country
| PostalCode | M | The ZIP/postal code. | xs:normalizedString
| GridLocation | O | The location of the address. | GridLocation
| MapReference | O | A Map Reference in x-y co-ordinates. |
@ | Type | M | Type map reference | xs:normalizedString
| MapReference/XCoordinate | M | X Co-ordinate of reference | xs:normalizedString
| MapReference/YCoordinate | M | Y Co-ordinate of reference | xs:normalizedString
| RadioContact | O | UHF Radio frequency or channel used for contact eg: 477MHz or CH60 | xs:string
| Community | O | This element is used to describe a Community that is associated with the instance of the address. | xs:normalizedString
| LocalId | O | This is the LocalId of the specific address if it can be provided. | LocalId
| AddressGlobalUID | O | This is the GUID generated by the Provider system. Where it is available to be provided, the globally unique identifier links together separate instances of the Address Common Element which reference the same physical address. When it can be provided, it can be used by subsribing systems to connect addresses from different personal objects. | GUIDType

Table 6.2.2-1: Address
<Address Type="0123" Role="012B"> <Street> <Line1>1 IBM Plaza</Line1> <Line2>Suite 2000</Line2> <StreetNumber>1</StreetNumber> <StreetName>IBM</StreetName> <StreetType>Plaza</StreetType> <ApartmentType>Suite</ApartmentType> <ApartmentNumber>2000</ApartmentNumber> </Street> <City>Chicago</City> <StateProvince>IL</StateProvince> <Country>1101</Country> <PostalCode>60611</PostalCode> <GridLocation> <Latitude>41.850000</Latitude> <Longitude>-87.650000</Longitude> </GridLocation> <Community>Bidyadanga Community</Community> <LocalId>A1530</LocalId> <AddressGlobalUID>4286194F43ED43C18EE2F0A27C4BEF87</AddressGlobalUID> </Address>
Example 6.2.2-1: Address

### 6.2.3 AddressList

A list of Address elements.

Figure 6.2.3-1: AddressList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AddressList |  | A list of Address elements. | ActionList (Address/@Type, Address/@Role)
| Address | MR |  | Address
@ | SIF_Action | O | In a `Change` event, this flag can be used to indicate an element has been deleted from the parent list container. At a minimum the key for the list must also be present. | values: Delete

Table 6.2.3-1: AddressList
<AddressList> <Address Type="0123" Role="012B"> <Street> <Line1>1 IBM Plaza</Line1> <Line2>Suite 2000</Line2> <StreetNumber>1</StreetNumber> <StreetName>IBM</StreetName> <StreetType>Plaza</StreetType> <ApartmentType>Suite</ApartmentType> <ApartmentNumber>2000</ApartmentNumber> </Street> <City>Chicago</City> <StateProvince>IL</StateProvince> <Country>1101</Country> <PostalCode>60611</PostalCode> <GridLocation> <Latitude>41.850000</Latitude> <Longitude>-87.650000</Longitude> </GridLocation> </Address> </AddressList>
Example 6.2.3-1: AddressList

### 6.2.4 AttendanceCode

Figure 6.2.4-1: AttendanceCode

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AttendanceCode |  | Code that describes the absence/attendance. |
| Code | M | Code representing the absence/attendance. | AUCodeSetsAttendanceCodeType
| OtherCodeList | O |  | OtherCodeList

Table 6.2.4-1: AttendanceCode
<AttendanceCode> <Code>200</Code> <OtherCodeList> <OtherCode Codeset="Local">S</OtherCode> <OtherCode Codeset="Other">C</OtherCode> </OtherCodeList> </AttendanceCode>
Example 6.2.4-1: AttendanceCode

### 6.2.5 BirthDate

A person's date of birth.

Figure 6.2.5-1: BirthDate

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| BirthDate |  | A person's date of birth. | xs:date

Table 6.2.5-1: BirthDate
<BirthDate>1970-08-11</BirthDate>
Example 6.2.5-1: BirthDate

### 6.2.6 ContactInfo

Common element used to supply information for a contact person at a school, LEA, or other institution.

Figure 6.2.6-1: ContactInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ContactInfo |  | Common element used to supply information for a contact person at a school, LEA, or other institution. |
| Name | M |  | Name
| PositionTitle | O | The contact person's position title. Examples Superintendent | xs:normalizedString
| Role | O | Role played by this contact in this instance. Examples Report Contact Primary Contact Alternate Contact | xs:normalizedString
| Address | O | Address of the contact. | Address
| EmailList | O | List of Email elements. | EmailList
| PhoneNumberList | O | List of PhoneNumber elements. | PhoneNumberList

Table 6.2.6-1: ContactInfo
<ContactInfo> <Name Type="LGL"> <FamilyName>Woodall</FamilyName> <GivenName>Charles</GivenName> <MiddleName>William</MiddleName> </Name> <PositionTitle>Superintendent</PositionTitle> <EmailList> <Email Type="01">drseuss@whoville.k12.state.us</Email> </EmailList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>(02) 9555-0102</Number> </PhoneNumber> </PhoneNumberList> </ContactInfo>
Example 6.2.6-1: ContactInfo

### 6.2.7 Country

A country code.

Figure 6.2.7-1: Country

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Country |  | A country code. | union of: AUCodeSetsStandardAustralianClassificationOfCountriesSACCType

Table 6.2.7-1: Country
<Country>1101</Country>
Example 6.2.7-1: Country

### 6.2.8 Demographics

Demographics information about the student, contact, staff member, etc.

Figure 6.2.8-1: Demographics

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Demographics |  | Demographics information about the student, contact, staff member, etc. |
| IndigenousStatus | O | Whether or not the student identifies themselves as being of Aboriginal and/or Torres Strait Islander descent. | AUCodeSetsIndigenousStatusType
| Sex | O | 'Sex' is the distinction 'male' and 'female', as reported by the person | AUCodeSetsSexCodeType
| BirthDate | O | The person's date of birth. | BirthDate
| BirthDateVerification | O | Means by which the person's birth date was validated. | AUCodeSetsBirthdateVerificationType
| PlaceOfBirth | O | The person's place of birth—like village, town, city etc. | xs:normalizedString
| StateOfBirth | O | The person's state of birth. | StateProvince
| CountryOfBirth | O | The person's country of birth. | Country
| CountriesOfCitizenship | O |  | List
| CountriesOfCitizenship/CountryOfCitizenship | MR | A person's country of citizenship. | Country
| CountriesOfResidency | O |  | List
| CountriesOfResidency/CountryOfResidency | MR | A person's country of residence. | Country
| CountryArrivalDate | O | Date the person first arrived in the country. | xs:date
| AustralianCitizenshipStatus | O | The person's citizenship status. | AUCodeSetsAustralianCitizenshipStatusType
| EnglishProficiency | O | Person's proficiency in English. | EnglishProficiency
| LanguageList | O | List of languages an individual uses to communicate. | LanguageList
| DwellingArrangement | O | Setting/environment in which the person resides. |
| DwellingArrangement/Code | M | Code representing the setting/environment in which the person resides | AUCodeSetsDwellingArrangementType
| DwellingArrangement/OtherCodeList | O |  | OtherCodeList
| Religion | O | Type of Religion if any |
| Religion/Code | M | Religion Code | AUCodeSetsAustralianStandardClassificationOfReligiousGroupsASCRGType
| Religion/OtherCodeList | O |  | OtherCodeList
| ReligiousEventList | O | List of Religious events | List
| ReligiousEventList/ReligiousEvent | OR |  |
| ReligiousEventList/ReligiousEvent/ Type | M | Religious Event - Currently Free Text | xs:normalizedString
| ReligiousEventList/ReligiousEvent/ Date | M | Date of Religious Event | xs:date
| ReligiousRegion | O | Belong to Religious Region - Currently Free Text. | xs:normalizedString
| PermanentResident | O | Australian Residency Status (Mandatory for Student) | AUCodeSetsPermanentResidentStatusType
| VisaSubClass | O | Visa Sub-Class - Can be free text - not necessary to validate | union of: AUCodeSetsVisaSubClassType xs:string
| VisaStatisticalCode | O | Visa Statistical Code - Can be free text - not necessary to validate | xs:normalizedString
| VisaExpiryDate | O | Expiry Date of Visa if one exists | xs:date
| ImmunisationCertificateStatus | O | Status of Immunisation Certificate | AUCodeSetsImmunisationCertificateStatusType
| CulturalBackground | O | Used to indicate cultural background. | AUCodeSetsAustralianStandardClassificationOfCulturalAndEthnicGroupsASCCEGType
| MaritalStatus | O | The person's marital status. | AUCodeSetsMaritalStatusAIHWType

Table 6.2.8-1: Demographics
<Demographics> <IndigenousStatus>3</IndigenousStatus> <Sex>1</Sex> <BirthDate>1990-09-26</BirthDate> <BirthDateVerification>1004</BirthDateVerification> <PlaceOfBirth>Clayton</PlaceOfBirth> <StateOfBirth>VIC</StateOfBirth> <CountryOfBirth>1101</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>8104</CountryOfCitizenship> <CountryOfCitizenship>1101</CountryOfCitizenship> </CountriesOfCitizenship> <CountriesOfResidency> <CountryOfResidency>8104</CountryOfResidency> <CountryOfResidency>1101</CountryOfResidency> </CountriesOfResidency> <CountryArrivalDate>1990-09-26</CountryArrivalDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> <EnglishProficiency> <Code>1</Code> </EnglishProficiency> <LanguageList> <Language> <Code>0001</Code> <LanguageType>1</LanguageType> </Language> </LanguageList> <DwellingArrangement> <Code>1671</Code> </DwellingArrangement> <Religion> <Code>2013</Code> </Religion> <ReligiousEventList> <ReligiousEvent> <Type>Baptism</Type> <Date>2000-09-01</Date> </ReligiousEvent> <ReligiousEvent> <Type>Christmas</Type> <Date>2009-12-24</Date> </ReligiousEvent> </ReligiousEventList> <ReligiousRegion>The Religion Region</ReligiousRegion> <PermanentResident>P</PermanentResident> <VisaSubClass>101</VisaSubClass> <VisaStatisticalCode>05</VisaStatisticalCode> </Demographics>
Example 6.2.8-1: Demographics Example

### 6.2.9 EducationalLevel

A code representing the highest level of education completed by a person.

Figure 6.2.9-1: EducationalLevel

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| EducationalLevel |  | A code representing the highest level of education completed by a person. | AUCodeSetsSchoolEducationLevelTypeType

Table 6.2.9-1: EducationalLevel
<EducationalLevel>3</EducationalLevel>
Example 6.2.9-1: EducationalLevel

### 6.2.10 EducationFilter

Based on feedback from publishers, instructional management and system integrator vendors, `EducationFilter` was developed to provide the ability to tag objects with metadata that allows for categorization, sorting, and filtering, to empower teaching and learning SIF usage. There exist two main business cases:

- Content providers receiving a request for learning resources can tag content with applicable filters. Upon receipt of SIF objects, receiving application can then read the metadata to categorize the content most appropriately.
- When supported by providers, this metadata can then be utilized in queries to more precisely limit the type of content returned to requesting applications.

The use cases for `EducationFilter` require a contract and choreography to be understood between both sides of the transaction as is the case with all `SIF_Metadata`.

Figure 6.2.10-1: EducationFilter

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| EducationFilter |  |  |
| LearningStandardItems | O | Allows any SIF object to be correlated to learning standards. | List
| LearningStandardItems/LearningStandardItemRefId | MR |  | IdRefType

Table 6.2.10-1: EducationFilter
<EducationFilter> <LearningStandardItems> <LearningStandardItemRefId>FA3023B26277CAD47105327F3A782BED</LearningStandardItemRefId> <LearningStandardItemRefId>DE937CB2627AAE872850E1F3A782BEDF</LearningStandardItemRefId> <LearningStandardItemRefId>BCFA143627AAE87E830E1F3AD92B4DA7</LearningStandardItemRefId> <LearningStandardItemRefId>DE840286ABB72198756E1F349CAE8273</LearningStandardItemRefId> <LearningStandardItemRefId>913DE839BA8329FCA938EF2709BC31A0</LearningStandardItemRefId> <LearningStandardItemRefId>A8930CD176EBB992714ACEB78492AE9C</LearningStandardItemRefId> <LearningStandardItemRefId>0264FFBA72C78ED903BE27CAA18905FB</LearningStandardItemRefId> </LearningStandardItems> </EducationFilter>
Example 6.2.10-1: EducationFilter - Example 1

### 6.2.11 ElectronicId

Common element used to specify entity identifiers that are read by electronic equipment.

Figure 6.2.11-1: ElectronicId

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ElectronicId |  | Common element used to specify entity identifiers that are read by electronic equipment. | xs:normalizedString
@ | Type | M | Electronic ID type. | AUCodeSetsElectronicIdTypeType

Table 6.2.11-1: ElectronicId
<ElectronicId Type="01">206654</ElectronicId>
Example 6.2.11-1: ElectronicId

### 6.2.12 ElectronicIdList

A list of electronic identifiers associated with an entity.

Figure 6.2.12-1: ElectronicIdList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ElectronicIdList |  | A list of electronic identifiers associated with an entity. | List
| ElectronicId | MR |  | ElectronicId

Table 6.2.12-1: ElectronicIdList
<ElectronicIdList> <ElectronicId Type="01">206654</ElectronicId> <ElectronicId Type="03">1234</ElectronicId> </ElectronicIdList>
Example 6.2.12-1: ElectronicIdList

### 6.2.13 Email

This element represents an e-mail address of one of a number of types and occurs in objects such as StudentPersonal, StaffPersonal, StudentContactPersonal, etc.

Figure 6.2.13-1: Email

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Email |  | This element represents an e-mail address of one of a number of types and occurs in objects such as StudentPersonal, StaffPersonal, StudentContactPersonal, etc. | xs:normalizedString
@ | Type | M | This attribute specifies the type of e-mail address. | AUCodeSetsEmailTypeType

Table 6.2.13-1: Email
<Email Type="01">contact@sifinfo.org</Email>
Example 6.2.13-1: Email

### 6.2.14 EmailList

A list of e-mail addresses associated with an individual or organization.

Figure 6.2.14-1: EmailList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| EmailList |  | A list of e-mail addresses associated with an individual or organization. | ActionList (Email/@Type)
| Email | MR |  | Email
@ | SIF_Action | O | In a `Change` event, this flag can be used to indicate an element has been deleted from the parent list container. At a minimum the key for the list must also be present. | values: Delete

Table 6.2.14-1: EmailList
<EmailList> <Email Type="01">contact@sifinfo.org</Email> <Email Type="02">info@sifinfo.org</Email> </EmailList>
Example 6.2.14-1: EmailList

### 6.2.15 EnglishProficiency

Figure 6.2.15-1: EnglishProficiency

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| EnglishProficiency | O |  |
| Code | M | Person's proficiency in English. | AUCodeSetsEnglishProficiencyType
| OtherCodeList | O |  | OtherCodeList

Table 6.2.15-1: EnglishProficiency
<EnglishProficiency> <Code>9</Code> </EnglishProficiency>
Example 6.2.15-1: EnglishProficiency

### 6.2.16 GraduationDate

Date student officially graduated from secondary education.

Figure 6.2.16-1: GraduationDate

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| GraduationDate |  | Date student officially graduated from secondary education. | PartialDateType

Table 6.2.16-1: GraduationDate
<GraduationDate>2005-05-27</GraduationDate>
Example 6.2.16-1: GraduationDate

### 6.2.17 GridLocation

This element contains a map location. The GridLocation element is utilized within the Address element.

Figure 6.2.17-1: GridLocation

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| GridLocation |  | This element contains a map location. The GridLocation element is utilized within the Address element. |
| Latitude | M | Latitude in decimal degrees. Latitudes north of the equator are positive, latitudes south of the equator are negative [ISO 6709]. | xs:decimal
xs:minInclusive | -90
xs:maxInclusive | 90
| Longitude | M | Longitude in decimal degrees. Longitudes east of the Prime Meridian in Greenwich are positive, longitudes west of the Prime Meridian are negative. The 180th meridian is negative. [ISO 6709] | xs:decimal
xs:minInclusive | -180
xs:maxInclusive | 180

Table 6.2.17-1: GridLocation
<GridLocation> <Latitude>41.850000</Latitude> <Longitude>-87.650000</Longitude> </GridLocation>
Example 6.2.17-1: GridLocation

### 6.2.18 HomeroomNumber

Common element used to specify the locally-defined number or identifier for a homeroom. It is used in objects such as RoomInfo and StudentSnapshot.

Figure 6.2.18-1: HomeroomNumber

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| HomeroomNumber |  | Common element used to specify the locally-defined number or identifier for a homeroom. It is used in objects such as RoomInfo and StudentSnapshot. | xs:normalizedString

Table 6.2.18-1: HomeroomNumber
<HomeroomNumber>A-204</HomeroomNumber>
Example 6.2.18-1: HomeroomNumber

### 6.2.19 LanguageList

Figure 6.2.19-1: LanguageList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LanguageList | O |  | List
| Language | MR |  |
| Language/Code | M | The code representing the specific language that an individual uses to communicate. | AUCodeSetsAustralianStandardClassificationOfLanguagesASCLType
| Language/OtherCodeList | O |  | OtherCodeList
| Language/LanguageType | O | An indication of the function and context in which an individual uses a language to communicate. | AUCodeSetsLanguageTypeType
| Language/Dialect | O | Specific dialect of a person's language. | xs:normalizedString

Table 6.2.19-1: LanguageList
<LanguageList> <Language> <Code>1201</Code> <LanguageType>1</LanguageType> </Language> <Language> <Code>1301</Code> <LanguageType>9</LanguageType> </Language> </LanguageList>
Example 6.2.19-1: LanguageList

### 6.2.20 LifeCycle

This common metadata element describes the life cycle of the object it represents, based on the IEEE LOM LifeCycle element [LOM].

Figure 6.2.20-1: LifeCycle

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LifeCycle |  | This common metadata element describes the life cycle of the object it represents, based on the IEEE LOM LifeCycle element [LOM]. |
| Created | O | When the object was created by whom. This is a more persistent creation date than the date/time in the object's `SIF_Header`. Depending on the use case being implemented, this value could contain the date the data in the object first entered the zone or was actually created. |
| Created/DateTime | M |  | xs:dateTime
| Created/Creators | O |  | List
| Created/Creators/Creator | MR |  |
| Created/Creators/Creator/ Name | M | Human-readable name of the data's creator. If the object contains system-generated data, the name should identify the creating service or application. | xs:normalizedString
| Created/Creators/Creator/ ID | M | Unique identifier of the creator. An email address or URI could be used here. | xs:normalizedString
| ModificationHistory | O | An ordered set of `Modified` elements describing which system modified the data, when the modification took place, and a brief description of the modification. | List
| ModificationHistory/Modified | OR | A single modification event. |
| ModificationHistory/Modified/ By | M | Identifier of the system or person that modified the data. | xs:normalizedString
| ModificationHistory/Modified/ DateTime | M | The date/time the modification occurred. | xs:dateTime
| ModificationHistory/Modified/ Description | O | Human readable description of the data modifications. | xs:string
| TimeElements | O |  | List
| TimeElements/TimeElement | OR |  | TimeElement

Table 6.2.20-1: LifeCycle
<LifeCycle> <Created> <DateTime>2006-08-13T09:00:00-05:00</DateTime> <Creators> <Creator> <Name>Alphonse Berdonosi</Name> <ID>http://www.edugeeks.com/aberdonosi</ID> </Creator> </Creators> </Created> <ModificationHistory> <Modified> <By>http://www.edugeeks.com/aberdonosi</By> <DateTime>2006-08-17T09:30:00-05:00</DateTime> </Modified> </ModificationHistory> </LifeCycle>
Example 6.2.20-1: LifeCycle

### 6.2.21 LocalId

This is a common element used to define the locally assigned identifier associated with an entity.

Figure 6.2.21-1: LocalId

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LocalId |  | This is a common element used to define the locally assigned identifier associated with an entity. | xs:normalizedString

Table 6.2.21-1: LocalId
<LocalId>123321A</LocalId>
Example 6.2.21-1: LocalId

### 6.2.22 Location

This common element initially supports core data elements describing specific physical locations.

Figure 6.2.22-1: Location

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Location |  |  |
@ | Type | O |  | values: Classroom School District Campus IntermediateUnit StateEducationAgency NonInstructionalSpace AthleticVenue Other
| LocationName | O | Name of the location. | xs:token
| LocationRefId | O | RefId of the location object if the location is a SIF Object such as `SchoolInfo`. | IdRefType
@ | SIF_RefObject | M | Type of SIF Object `Location` points to. | values: SchoolInfo LEAInfo RoomInfo

Table 6.2.22-1: Location
<Location Type="Classroom"> <LocationName>Beaconhills Middle School Library</LocationName> <LocationRefId SIF_RefObject="RoomInfo">947582610947583ACEB2BB345291BAAA</LocationRefId> </Location>
Example 6.2.22-1: Location

### 6.2.23 Name

The Name element, which could belong to a student, staff member, contact, etc. This element or a form with a subset of Type values occurs within objects such as StudentPersonal, StudentContactPersonal, StaffPersonal, etc.
Figure 6.2.23-1: Name

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Name |  | The Name element, which could belong to a student, staff member, contact, etc. This element or a form with a subset of Type values occurs within objects such as StudentPersonal, StudentContactPersonal, StaffPersonal, etc. | BaseNameType
@ | Type | M | Code that specifies what type of name this is. If unsure, use `LGL`. | AUCodeSetsNameUsageTypeType

Table 6.2.23-1: Name
<Name Type="LGL"> <FamilyName>Woodall</FamilyName> <GivenName>Charles</GivenName> <MiddleName>William</MiddleName> </Name>
Example 6.2.23-1: Name

### 6.2.24 OnTimeGraduationYear

First projected graduation year, usually determined when student is accepted into 9th grade (CCYY).

Figure 6.2.24-1: OnTimeGraduationYear

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| OnTimeGraduationYear |  | First projected graduation year, usually determined when student is accepted into 9th grade (CCYY). | xs:gYear

Table 6.2.24-1: OnTimeGraduationYear
<OnTimeGraduationYear>2006</OnTimeGraduationYear>
Example 6.2.24-1: OnTimeGraduationYear

### 6.2.25 OperationalStatus

This common element contains status information an institution.

Figure 6.2.25-1: OperationalStatus

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| OperationalStatus |  | Operational condition of an institution. | union of: AUCodeSetsOperationalStatusType

Table 6.2.25-1: OperationalStatus
<OperationalStatus>O</OperationalStatus>
Example 6.2.25-1: OperationalStatus

### 6.2.26 OtherCodeList

List of other codes or strings that crosswalk to or serve as translations of the `Code` element paired with this common element. If `Code` changes and `OtherCode`s are supported, both `Code` and all associated `OtherCode` elements must be present.

Figure 6.2.26-1: OtherCodeList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| OtherCodeList |  | List of other codes or strings that crosswalk to or serve as translations of the `Code` element paired with this common element. If `Code` changes and `OtherCode`s are supported, both `Code` and all associated `OtherCode` elements must be present. | List
| OtherCode | MR | A state/province code, local code, other code or a text string that crosswalks to or serves as a translation of an associated `Code` element. | xs:token
@ | Codeset | M | Describes the `OtherCode` element content as either a state/province code, a local code, other code, or text string. | values: StateProvince Local Other Text

Table 6.2.26-1: OtherCodeList
<OtherCodeList> <OtherCode Codeset="Local">S</OtherCode> <OtherCode Codeset="Text">Semester</OtherCode> </OtherCodeList>
Example 6.2.26-1: OtherCodeList

### 6.2.27 OtherNames

Previous, alternate or other names or aliases associated with a person.

Figure 6.2.27-1: OtherNames

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| OtherNames | O | Previous, alternate or other names or aliases associated with a person. | ActionList (Name/@Type)
| Name | MR | Name of the person. Note: Type value of `LGL` may not occur here. | OtherNameType
@ | SIF_Action | O | In a `Change` event, this flag can be used to indicate an element has been deleted from the parent list container. At a minimum the key for the list must also be present. | values: Delete

Table 6.2.27-1: OtherNames
<OtherNames> <Name Type="AKA"> <FamilyName>Anderson</FamilyName> <GivenName>Samuel</GivenName> <FullName>Samuel Anderson</FullName> </Name> <Name Type="PRF"> <FamilyName>Rowinski</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Rowinski </FullName> </Name> </OtherNames>
Example 6.2.27-1: OtherNames

### 6.2.28 PersonInfo

Figure 6.2.28-1: PersonInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PersonInfo |  |  |
| Name | M | The name of the person. Note: Type attribute value of LGL must be used here. | NameOfRecordType
| OtherNames | O | Previous, alternate or other names or aliases associated with the person. | OtherNames
| Demographics | O | Demographic information about the person. | Demographics
| AddressList | O | The person’s address(es). | AddressList
| PhoneNumberList | O | The person’s phone number(s). | PhoneNumberList
| EmailList | O | The person’s e-mail address(es). | EmailList

Table 6.2.28-1: PersonInfo
<PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> <OtherNames> <Name Type="AKA"> <FamilyName>Anderson</FamilyName> <GivenName>Samuel</GivenName> <FullName>Samuel Anderson</FullName> </Name> <Name Type="PRF"> <FamilyName>Rowinski</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Rowinski </FullName> </Name> </OtherNames> <Demographics> <IndigenousStatus>3</IndigenousStatus> <Sex>1</Sex> <BirthDate>1990-09-26</BirthDate> <BirthDateVerification>1004</BirthDateVerification> <PlaceOfBirth>Clayton</PlaceOfBirth> <StateOfBirth>VIC</StateOfBirth> <CountryOfBirth>1101</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>8104</CountryOfCitizenship> <CountryOfCitizenship>1101</CountryOfCitizenship> </CountriesOfCitizenship> <CountriesOfResidency> <CountryOfResidency>8104</CountryOfResidency> <CountryOfResidency>1101</CountryOfResidency> </CountriesOfResidency> <CountryArrivalDate>1990-09-26</CountryArrivalDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> <EnglishProficiency> <Code>1</Code> </EnglishProficiency> <LanguageList> <Language> <Code>0001</Code> <LanguageType>1</LanguageType> </Language> </LanguageList> <DwellingArrangement> <Code>1671</Code> </DwellingArrangement> <Religion> <Code>2013</Code> </Religion> <ReligiousEventList> <ReligiousEvent> <Type>Baptism</Type> <Date>2000-09-01</Date> </ReligiousEvent> <ReligiousEvent> <Type>Christmas</Type> <Date>2009-12-24</Date> </ReligiousEvent> </ReligiousEventList> <ReligiousRegion>The Religion Region</ReligiousRegion> <PermanentResident>P</PermanentResident> <VisaSubClass>101</VisaSubClass> <VisaStatisticalCode>05</VisaStatisticalCode> </Demographics> <AddressList> <Address Type="0123" Role="2382"> <Street> <Line1>Unit1/10</Line1> <Line2>Barkley Street</Line2> </Street> <City>Yarra Glenn</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> <Address Type="0123A" Role="013A"> <Street> <Line1>34 Term Address Street</Line1> </Street> <City>Home Town</City> <StateProvince>WA</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> </AddressList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2289</Number> <Extension>72289</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0437-765-234</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">fsmith@yahoo.com</Email> <Email Type="02">freddy@gmail.com</Email> </EmailList> </PersonInfo>
Example 6.2.28-1: PersonInfo

### 6.2.29 PhoneNumber

This element represents a phone number and occurs within objects such as StudentPersonal, StaffPersonal, etc.

Figure 6.2.29-1: PhoneNumber

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PhoneNumber |  | This element represents a phone number and occurs within objects such as StudentPersonal, StaffPersonal, etc. |
@ | Type | M | Code that specifies what type of phone number this is. Note: A subset of valid values may be specified in data objects. | AUCodeSetsTelephoneNumberTypeType
| Number | M | Phone number. Free-form, but typical Australian formats include: (###) ####-#### ####-#### +##### ### ### | xs:normalizedString
| Extension | O | Phone number extension. | xs:normalizedString
| ListedStatus | O | Indicates whether or not the phone number is available to the public. | AUCodeSetsYesOrNoCategoryType

Table 6.2.29-1: PhoneNumber
<PhoneNumber Type="0096"> <Number>(03) 9543 2000</Number> <Extension>245</Extension> </PhoneNumber>
Example 6.2.29-1: PhoneNumber

### 6.2.30 PhoneNumberList

Lists phone numbers associated with an entity.

Figure 6.2.30-1: PhoneNumberList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PhoneNumberList |  | Lists phone numbers associated with an entity. | ActionList (PhoneNumber/@Type)
| PhoneNumber | MR |  | PhoneNumber
@ | SIF_Action | O | In a `Change` event, this flag can be used to indicate an element has been deleted from the parent list container. At a minimum the key for the list must also be present. | values: Delete

Table 6.2.30-1: PhoneNumberList
<PhoneNumberList> <PhoneNumber Type="0096"> <Number>(03) 9543 2000</Number> </PhoneNumber> </PhoneNumberList>
Example 6.2.30-1: PhoneNumberList

### 6.2.31 PrincipalInfo

Information about the campus or school principal.

Figure 6.2.31-1: PrincipalInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PrincipalInfo | O | Information about the campus or school principal. |
| ContactName | M | The name of the principal. | NameOfRecordType
| ContactTitle | O | The principal's title. | xs:normalizedString
| PhoneNumberList | O | The principal’s phone number(s). | PhoneNumberList
| EmailList | O | The principal’s e-mail address(es). | EmailList

Table 6.2.31-1: PrincipalInfo
<PrincipalInfo> <ContactName Type="LGL"> <Title>Mr</Title> <FamilyName>Miller</FamilyName> <GivenName>James</GivenName> <MiddleName>Frank</MiddleName> <Suffix>Jr.</Suffix> <FullName>Mr James Frank Miller Jr.</FullName> </ContactName> <ContactTitle>School Principal</ContactTitle> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2000</Number> <Extension>72345</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">jmiller@lsc.vic.edu.au</Email> <Email Type="02">jmiller@yahoo.com.au</Email> </EmailList> </PrincipalInfo>
Example 6.2.31-1: PrincipalInfo

### 6.2.32 ProgramStatus

Figure 6.2.32-1: ProgramStatus

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ProgramStatus |  |  |
| Code | M | The current status of the student's program participation. | values: S001 Referred S002 Eligible S003 Not Eligible S004 Active S005 Exited S006 Withdrew/refused 9999 Other
| OtherCodeList | O |  | OtherCodeList

Table 6.2.32-1: ProgramStatus
<ProgramStatus> <Code>S004</Code> </ProgramStatus>
Example 6.2.32-1: ProgramStatus

### 6.2.33 ProjectedGraduationYear

Currently projected graduation year.

Figure 6.2.33-1: ProjectedGraduationYear

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ProjectedGraduationYear |  | Currently projected graduation year (CCYY). | xs:gYear

Table 6.2.33-1: ProjectedGraduationYear
<ProjectedGraduationYear>2006</ProjectedGraduationYear>
Example 6.2.33-1: ProjectedGraduationYear

### 6.2.34 PublishInDirectory

This is a common element used to specify whether or not information (e.g., contact information) should be published in a directory.

Figure 6.2.34-1: PublishInDirectory

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PublishInDirectory |  | Indicates whether or not information should be published in a directory. | AUCodeSetsYesOrNoCategoryType

Table 6.2.34-1: PublishInDirectory
<PublishInDirectory>Y</PublishInDirectory>
Example 6.2.34-1: PublishInDirectory

### 6.2.35 Relationship

Code that defines the relationship of one person to another.

Figure 6.2.35-1: Relationship

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Relationship |  | Code that defines the relationship of one person to another. |
| Code | M | Code representing the relationship. | AUCodeSetsRelationshipToStudentType
| OtherCodeList | O |  | OtherCodeList

Table 6.2.35-1: Relationship
<Relationship> <Code>01</Code> </Relationship>
Example 6.2.35-1: Relationship

### 6.2.36 SchoolContactList

A list of contact persons associated with a school.

Figure 6.2.36-1: SchoolContactList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SchoolContactList |  | A list of contact persons associated with a school. | List
| SchoolContact | MR | Information on contact persons for this school. |
| SchoolContact/PublishInDirectory | O | Indicates whether or not this school contact's information should be published in a directory of school information. | PublishInDirectory
| SchoolContact/ContactInfo | M |  | ContactInfo

Table 6.2.36-1: SchoolContactList
<SchoolContactList> <SchoolContact> <PublishInDirectory>Y</PublishInDirectory> <ContactInfo> <Name Type="LGL"> <FamilyName>Woodall</FamilyName> <GivenName>Charles</GivenName> <MiddleName>William</MiddleName> </Name> <PositionTitle>Superintendent</PositionTitle> <EmailList> <Email Type="01">drseuss@whoville.k12.state.us</Email> </EmailList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>(08) 8555-0102</Number> </PhoneNumber> </PhoneNumberList> </ContactInfo> </SchoolContact> </SchoolContactList>
Example 6.2.36-1: SchoolContactList

### 6.2.37 SchoolURL

URL for a school.

Figure 6.2.37-1: SchoolURL

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SchoolURL |  | URL for a school. | xs:anyURI

Table 6.2.37-1: SchoolURL
<SchoolURL>http://www.lincolnhs.edu</SchoolURL>
Example 6.2.37-1: SchoolURL

### 6.2.38 SchoolYear

Common element used to designate the academic school year to which an object relates.

Figure 6.2.38-1: SchoolYear

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SchoolYear |  | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | xs:gYear

Table 6.2.38-1: SchoolYear
<SchoolYear>2005</SchoolYear>
Example 6.2.38-1: SchoolYear

### 6.2.39 SIF_ExtendedElements

This element is supported at the end of all SIF objects. The element is used to extend existing SIF objects with locally-defined elements. Extended elements SHOULD NOT be used to duplicate data that can be obtained from other SIF objects.

Figure 6.2.39-1: SIF_ExtendedElements

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ExtendedElements |  | Allows an agent to include data not yet defined within a SIF data object as name/value pairs. | ActionList (SIF_ExtendedElement/@Name)
| SIF_ExtendedElement | OR | A name/value pair, the name being contained in the Name attribute, the value being the element content. | ExtendedContentType
@ | Name | M | The name of the extended element. As it is possible that names for extended elements may collide from agent to agent, it is recommended that the names of extended elements be configurable in an agent, or that agents use URIs for the names of extended elements. | xs:normalizedString
@ | xsi:type | O | Allows type of element to be explicitly communicated. |
@ | SIF_Action | O | In a `Change` event, this flag can be used to indicate an element has been deleted from the parent list container. At a minimum the key for the list must also be present. | values: Delete

Table 6.2.39-1: SIF_ExtendedElements
<SIF_ExtendedElements> <SIF_ExtendedElement Name="ApplicationSubmissionStatus">4</SIF_ExtendedElement> <SIF_ExtendedElement Name="DynamicXml"> <Parent xmlns="http://myapplication.com"> <Child n="1">one</Child> <Child n="2" /> <Child n="3">three</Child> </Parent> </SIF_ExtendedElement> <SIF_ExtendedElement Name="Note"> <xhtml:strong xmlns:xhtml="http://www.w3.org/1999/xhtml">Double</xhtml:strong>-check submission status. </SIF_ExtendedElement> </SIF_ExtendedElements>
Example 6.2.39-1: SIF_ExtendedElements

### 6.2.40 SIF_Metadata

Metadata is commonly referred to as data about data and includes information such as author, grade level, or keywords relating to a learning object, as examples. Metadata can be used to structure and contain any of this kind of information in a consistent manner. In the context of SIF, `SIF_Metadata` provides a consistent structure to appropriate SIF objects for the purpose of cataloging and object discovery, as well as other metadata functions and purposes. One recurring use case within the SIF data model is the requirement for some form of temporal constraints and tagging on objects (see `TimeElement`). Other metadata elements are based on needs brought to the Data Model Task Force.

IMPORTANT NOTE ON PERSISTENCE

This data is not designed to be permanent. It is designed to frame an object instance and could dissolve as soon as it leaves the SIF framework for the application space. A data warehouse could be used to store metadata for later tracking.

IMPORTANT NOTE ON USAGE

Any usage of metadata is optional unless made a requirement within individual SIF objects, or if a SIF or local profile or zone installation mandates it. SIF_Metadata allows for the usage of metadata in agents and applications that choose to support it.

This element is designed to operate much like SIF_ExtendedElements. It is an approved common element that is part of any data object.

Figure 6.2.40-1: SIF_Metadata

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_Metadata |  | A commonly defined container for metadata elements defined within SIF. |
| TimeElements | O |  | List
| TimeElements/TimeElement | OR |  | TimeElement
| LifeCycle | O |  | LifeCycle
| EducationFilter | O |  | EducationFilter

Table 6.2.40-1: SIF_Metadata

### 6.2.41 StateProvince

A state or province code. Note: When dealing with countries other than Australia, state/province codes/values other than those referenced here can be used.

Figure 6.2.41-1: StateProvince

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StateProvince |  | A state or province code. Note: When dealing with countries other than Australia, state/province codes/values other than those referenced here can be used. | union of: AUCodeSetsStateTerritoryCodeType xs:token

Table 6.2.41-1: StateProvince
<StateProvince>ACT</StateProvince>
Example 6.2.41-1: StateProvince

### 6.2.42 StateProvinceId

This is a common element used to define the state or province assigned identifier associated with an entity.

Figure 6.2.42-1: StateProvinceId

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StateProvinceId |  | The identifier for this entity as assigned by the state or province. | xs:normalizedString

Table 6.2.42-1: StateProvinceId
<StateProvinceId>L65432765</StateProvinceId>
Example 6.2.42-1: StateProvinceId

### 6.2.43 SubjectArea

Subject matter.

Figure 6.2.43-1: SubjectArea

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SubjectArea |  | Subject matter. |
| Code | M | The subject area details | xs:normalizedString
| OtherCodeList | O |  | OtherCodeList

Table 6.2.43-1: SubjectArea
<SubjectArea> <Code>05</Code> <OtherCodeList> <OtherCode Codeset="Text">Graphic Arts</OtherCode> </OtherCodeList> </SubjectArea>
Example 6.2.43-1: SubjectArea

### 6.2.44 SubjectAreaList

A list of subject areas.

Figure 6.2.44-1: SubjectAreaList

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SubjectAreaList |  | A list of subject areas. | List
| SubjectArea | MR | Subject matter. | SubjectArea

Table 6.2.44-1: SubjectAreaList
<SubjectAreaList> <SubjectArea> <Code>05</Code> <OtherCodeList> <OtherCode Codeset="Text">Graphic Arts</OtherCode> <OtherCode Codeset="Local">GRA</OtherCode> </OtherCodeList> </SubjectArea> <SubjectArea> <Code>06</Code> <OtherCodeList> <OtherCode Codeset="Text">Visual Arts</OtherCode> </OtherCodeList> </SubjectArea> </SubjectAreaList>
Example 6.2.44-1: SubjectAreaList

### 6.2.45 TimeElement

A common metadata element designed to contain time data, both self-defined and by type.

Figure 6.2.45-1: TimeElement

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| TimeElement |  | A common metadata element designed to contain time data, both self-defined and by type. |
| Type | M | This element is designed to contain the time period attached to an object. Very long periods (school year, quarter, etc.) and very small periods (second, millisecond, etc.) can be defined. This element provides a scoping description of the time metadata enclosed. Because the educational environment varies so greatly we are including here a suggested but not prescriptive list of values. Although there may be unique needs for values not covered here—and we may have missed a major one—a best practice would be to utilize the examples here to enhance interoperability. Examples Full school year Mini-term Long session Other Semester Trimester Quarter Spring Vacation Summer Term Intercession Holiday | xs:normalizedString
| Code | M | This element provides a place for the application to send structured data (code values, unique identifier, timestamps). This code value can, depending upon the use case agreement between agents, be used to qualify the data in the `Value` element. Examples 2007SY 2006.FallConferences | xs:token
| Name | M | Contains a human-readable description of the value in `Value`. Examples Class of '07 Fall 2007 Parent-Teacher Conferences | xs:normalizedString
| Value | M | Contains the human-readable value. Examples 2007 Evening of 10/12/06 | xs:normalizedString
| StartDateTime | O |  | xs:dateTime
| EndDateTime | O |  | xs:dateTime
| SpanGaps | O | A container element for holding multiple possible span gaps. | List
| SpanGaps/SpanGap | OR | This structure duplicates much of the structure of `TimeElement` and is designed to represent a gap in the parent time period defined by `StartDateTime` and `EndDateTime` above. |
| SpanGaps/SpanGap/Type | M |  | xs:normalizedString
| SpanGaps/SpanGap/Code | M |  | xs:token
| SpanGaps/SpanGap/Name | M |  | xs:normalizedString
| SpanGaps/SpanGap/Value | M |  | xs:normalizedString
| SpanGaps/SpanGap/StartDateTime | O |  | xs:dateTime
| SpanGaps/SpanGap/EndDateTime | O |  | xs:dateTime
| IsCurrent | M | This element allows for the system to tag an object as being explicitly current. Although the baseline assumption in SIF is that objects are always current (default value is typically `true`), there are use cases when that is not the case. | xs:boolean

Table 6.2.45-1: TimeElement
<TimeElement> <Type>Full school year</Type> <Code>01</Code> <Name>2004/2005 School Year</Name> <Value>2004-2005</Value> <StartDateTime>2004-09-01T08:00:00-05:00</StartDateTime> <EndDateTime>2005-06-30T15:00:00-05:00</EndDateTime> <SpanGaps> <SpanGap> <Type>Holiday</Type> <Code>02</Code> <Name>2005 Winter Break</Name> <Value>2005 Winter Break</Value> <StartDateTime>2005-02-21T15:00:00-05:00</StartDateTime> <EndDateTime>2005-02-25T08:00:00-05:00</EndDateTime> </SpanGap> </SpanGaps> <IsCurrent>true</IsCurrent> </TimeElement>
Example 6.2.45-1: TimeElement

### 6.2.46 YearLevel

Figure 6.2.46-1: YearLevel

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| YearLevel |  | Year or academic level. |
| Code | M | Code representing the year level. | AUCodeSetsYearLevelCodeType

Table 6.2.46-1: YearLevel
<YearLevel> <Code>8</Code> </YearLevel>
Example 6.2.46-1: YearLevel

### 6.2.47 YearLevels

List of year levels.

Figure 6.2.47-1: YearLevels

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| YearLevels |  | List of year levels. | List
| YearLevel | MR |  | YearLevel

Table 6.2.47-1: YearLevels
<YearLevels> <YearLevel> <Code>5</Code> </YearLevel> <YearLevel> <Code>6</Code> </YearLevel> <YearLevel> <Code>7</Code> </YearLevel> <YearLevel> <Code>8</Code> </YearLevel> </YearLevels>
Example 6.2.47-1: YearLevels

## 6.3 SIF AU

The introduction for the SIF AU data model.

### 6.3.1 AggregateCharacteristicInfo

This object defines the attribute of a group of objects that implicitly or explicitly defines a subset of the group.

SIF_Events are reported for this object.

Figure 6.3.1-1: AggregateCharacteristicInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AggregateCharacteristicInfo |  | This object defines the attribute of a group of objects that implicitly or explicitly defines a subset of the group. |
@ | RefId | M | Key for aggregate characteristic information. | RefIdType
| Description | O | Describes the supercategory of the characteristic described in the `Definition` element below. Examples Sex CulturalBackground YearLevel IndigenousStatus | xs:string
| Definition | M | Defines the aggregate characteristic information. Examples LBOTE Male | xs:token
| ElementName | O | Reference to SIF elements or external authority (e.g., `StudentPersonal/PersonInfo/Demographics/Sex`). Examples Dropout Status | xs:token
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.1-1: AggregateCharacteristicInfo
<AggregateCharacteristicInfo RefId="06AF1D69FB064AB388983505714F18FB"> <Description>Sex</Description> <ElementName>StudentPersonal/PersonInfo/Demographics/Sex</ElementName> </AggregateCharacteristicInfo>
Example 6.3.1-1: AggregateCharacteristicInfo

### 6.3.2 AggregateStatisticFact

This object is the actual value of the measurement. It is always associated with one statistic and one or more characteristics.

SIF_Events are reported for this object.

Figure 6.3.2-1: AggregateStatisticFact

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AggregateStatisticFact |  | This object is the actual value of the measurement. It is always associated with one statistic and one or more characteristics. |
@ | RefId | M |  | RefIdType
| AggregateStatisticInfoRefId | M | Reference to statistic defined by `AggregateStatisticInfo`. | IdRefType
| Characteristics | M | Reference to one or more `AggregateCharacteristicInfo` objects. | List
| Characteristics/AggregateCharacteristicInfoRefId | MR | Reference to an `AggregateCharacteristicInfo` object. | IdRefType
| Excluded | O |  | values: Yes No
| Value | M | Value of the fact. | xs:decimal
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.2-1: AggregateStatisticFact
<AggregateStatisticFact RefId="3A4E2822C696433B812B49DEAE557E41"> <AggregateStatisticInfoRefId>91A4209F7F4F4F4B9DC8D21CEFD1DC2F</AggregateStatisticInfoRefId> <Characteristics> <AggregateCharacteristicInfoRefId>0B972D8644EE4D7994F5FF1C3131772D</AggregateCharacteristicInfoRefId> </Characteristics> <Excluded>No</Excluded> <Value>27</Value> </AggregateStatisticFact>
Example 6.3.2-1: AggregateStatisticFact

### 6.3.3 AggregateStatisticInfo

This object defines the data that is being aggregated as well as the type of measurement that is being performed.

SIF_Events are reported for this object.

Figure 6.3.3-1: AggregateStatisticInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AggregateStatisticInfo |  | This object defines the data that is being aggregated as well as the type of measurement that is being performed. |
@ | RefId | M | Key | RefIdType
| StatisticName | M | Name of Aggregate Statistic Examples Total Enrollment Diploma Recipients | xs:token
| CalculationRule | O | Rule for calculating the aggregate statistic | xs:string
@ | Type | M |  | values: Description Formula URL Other
| ApprovalDate | O | Date for which the statistic is initially valid | xs:date
| ExpirationDate | O | Date after which the statistic is no longer valid | xs:date
| ExclusionRules | O | Rules for which statistic may not be reported. | List
| ExclusionRules/ExclusionRule | OR | Rule for which statistic may not be reported | xs:string
@ | Type | M |  | values: SampleSize Description
| Source | O | System providing the data: i.e., SIS, Transportation, | xs:token
| EffectiveDate | O | Effective date of the statistic | xs:date
| DiscontinueDate | O | Discontinue date of the statistic | xs:date
| Location | O | Location where the activity takes place. | Location
| Measure | O | Type of the statistic. | values: Count Minimum Maximum Percent Mean Median Mode Sum StandardDeviation UnduplicatedCount FTE Other
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.3-1: AggregateStatisticInfo
<AggregateStatisticInfo RefId="A5DECBD3161B4F5D9F46EBA64C87B002"> <StatisticName>Read Proficiency L1</StatisticName> <CalculationRule Type="Description">Number of students scoring at Reading Proficiency Level 1</CalculationRule> <ApprovalDate>2002-09-01</ApprovalDate> <ExpirationDate>2006-06-30</ExpirationDate> <ExclusionRules> <ExclusionRule Type="SampleSize">N less than 10</ExclusionRule> </ExclusionRules> <Source>SIS</Source> <Location Type="School"> <LocationName>Green River High School</LocationName> <LocationRefId SIF_RefObject="SchoolInfo">279BCEE5515E4C1AAC3A765D1F069BC3</LocationRefId> </Location> <Measure>Count</Measure> </AggregateStatisticInfo>
Example 6.3.3-1: AggregateStatisticInfo

### 6.3.4 Assessment

An assessment measures a student's progress and learning on specific academic standards.

SIF_Events are not reported for this object.

Figure 6.3.4-1: Assessment

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Assessment |  |  |
@ | RefId | M | The GUID that uniquely identifies this object. | RefIdType
| Name | M | Name of the test. | xs:normalizedString
| AssessmentId | O | The state, local or publisher unique Id for the assessment. | xs:normalizedString
| AssessmentPackageRefId | O |  | IdRefType
| AssessmentDescriptors | O | Describes what type of assessment this represents. | List
| AssessmentDescriptors/AssessmentDescriptor | OR |  | union of: AUCodeSetsAssessmentTypeType additional values: Statewide Formative Local Summative Diagnostic Benchmark
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.4-1: Assessment
<Assessment RefId="CC2834DE9138FAB032EF399BA72A8234"> <Name>TAKS Test</Name> <AssessmentId>TX48A</AssessmentId> <AssessmentPackageRefId>B8846EB83F0D4609A3299AC59410814E</AssessmentPackageRefId> <AssessmentDescriptors> <AssessmentDescriptor>Statewide</AssessmentDescriptor> </AssessmentDescriptors> <SIF_Metadata> <EducationFilter> <LearningStandardItems> <LearningStandardItemRefId>FA3023B26277CAD47105327F3A782BED</LearningStandardItemRefId> <LearningStandardItemRefId>DE937CB2627AAE872850E1F3A782BEDF</LearningStandardItemRefId> <LearningStandardItemRefId>BCFA143627AAE87E830E1F3AD92B4DA7</LearningStandardItemRefId> <LearningStandardItemRefId>DE840286ABB72198756E1F349CAE8273</LearningStandardItemRefId> <LearningStandardItemRefId>913DE839BA8329FCA938EF2709BC31A0</LearningStandardItemRefId> <LearningStandardItemRefId>A8930CD176EBB992714ACEB78492AE9C</LearningStandardItemRefId> <LearningStandardItemRefId>0264FFBA72C78ED903BE27CAA18905FB</LearningStandardItemRefId> </LearningStandardItems> </EducationFilter> </SIF_Metadata> </Assessment>
Example 6.3.4-1: Assessment

### 6.3.5 AssessmentAdministration

This object represents an assessment event. It includes information related to the time of administration, place of administration, and unusual events related to the administration.

SIF_Events are reported for this object.

Figure 6.3.5-1: AssessmentAdministration

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AssessmentAdministration |  | This object represents an assessment event. It includes information related to the time of administration, place of administration, and unusual events related to the administration. |
@ | RefId | M | The GUID that uniquely identifies an instance of the object. | RefIdType
| AssessmentFormRefId | M | The RefId of the assessment form used in the assessment administration. | IdRefType
| AdministrationName | O |  | xs:normalizedString
| SpecialConditions | O | Special conditions or unusual events related to the administration event. | ActionList (SpecialCondition/@Code)
| SpecialConditions/SpecialCondition | MR | A text description of the special condition. Examples Fire drill during test. Air conditioning broke during the request. Assessment was given over three days instead of in one sitting. | xs:string
@ | Code | M | This is the primary key for the list of special conditions. | xs:token
@ | SIF_Action | O | In a `Change` event, this flag can be used to indicate an element has been deleted from the parent list container. At a minimum the key for the list must also be present. | values: Delete
| AdministrationDateTime | M | Date and time the test is scheduled to be given. | xs:dateTime
| StartDateTime | O | Date and time testing begins. | xs:dateTime
| FinishDateTime | O | Date and time testing ends. | xs:dateTime
| DueDateTime | O | Date and time test is due. | xs:dateTime
| Address | O | Address of the location where the administration takes place. | Address
| StaffPersonalRefId | O | Optional reference to a staff person associated with the administration. | IdRefType
| LEAInfoRefId | O | Optional reference to a school district associated with the administration. | IdRefType
| SchoolInfoRefId | O | Optional reference to a school associated with the administration. | IdRefType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.5-1: AssessmentAdministration
<AssessmentAdministration RefId="E2E8045FD8884745AC588F1DDDBEE864"> <AssessmentFormRefId>78DA3F367AAE4E34995CE15530F531CC</AssessmentFormRefId> <SpecialConditions> <SpecialCondition Code="25B">Fire drill during test.</SpecialCondition> </SpecialConditions> <AdministrationDateTime>2006-03-06T14:30:00-05:00</AdministrationDateTime> <FinishDateTime>2006-03-06T15:30:00-05:00</FinishDateTime> </AssessmentAdministration>
Example 6.3.5-1: AssessmentAdministration

### 6.3.6 AssessmentForm

Represents the unique set of questions or stimuli given to a set of test takers. A physical correlate of the assessment form is the test booklet given to students during an assessment. However, this object does not contain the questions, it only contains elements that describe the form for use in scoring the questions.

SIF_Events are not reported for this object.

Figure 6.3.6-1: AssessmentForm

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AssessmentForm |  | Represents the unique set of questions or stimuli given to a set of test takers. A physical correlate of the assessment form is the test booklet given to students during an assessment. However, this object does not contain the questions, it only contains elements that describe the form for use in scoring the questions. |
@ | RefId | M | The GUID that uniquely identifies an instance of the object. | RefIdType
| AssessmentRefId | M | The RefId of the assessment related to this form. | IdRefType
| AssessmentType | O | Indicates whether this assessment (form) is a standard administration or alternate. | values: standard alternate
| FormName | M | Text description for this particular arrangement of questions, etc. | xs:normalizedString
| FormNumbers | O | Reference numbers for the form. | List
| FormNumbers/FormNumber | MR | Reference number for the form. | xs:token
| Level | O | Indicates the level of the form. Examples Year 3 Leveling System | xs:token
| Period | O | The time period in which the form is intended to be administered. | xs:token
| YearLevels | O | Year levels this assessment is designed to evaluate. | YearLevels
| AssessmentSubTestRefIds | O | Associated subtests (score types). Each form can provide scores in one or more subtest areas. | List
| AssessmentSubTestRefIds/AssessmentSubTestRefId | OR | A subtest identified by RefId. | IdRefType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.6-1: AssessmentForm
<AssessmentForm RefId="13F3C7AFF8464EE1862B0622A010883E"> <AssessmentRefId>77C5D8A7345B4BE883053228C9708512</AssessmentRefId> <AssessmentType>standard</AssessmentType> <FormName>Form A</FormName> <FormNumbers> <FormNumber>34</FormNumber> </FormNumbers> <Level>Year 3</Level> <Period>Spring</Period> <AssessmentSubTestRefIds> <AssessmentSubTestRefId>C356A7559EB144DE8B09097078A94F86</AssessmentSubTestRefId> </AssessmentSubTestRefIds> </AssessmentForm>
Example 6.3.6-1: AssessmentForm

### 6.3.7 AssessmentItem

This object is designed to allow software systems to provide item detail information such as the stem of the item, the distractors, the stimuli, etc. This initial version of the object does not deal with presentation aspects of the item. Instead it focuses on the item content and characteristics needed to enable interoperability and the usage of item-level information in the improvement of learning and instruction.

SIF_Events are not reported for this object.

Figure 6.3.7-1: AssessmentItem

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AssessmentItem |  | This object is designed to allow software systems to provide item detail information such as the stem of the item, the distractors, the stimuli, etc. This initial version of the object does not deal with presentation aspects of the item. Instead it focuses on the item content and characteristics needed to enable interoperability and the usage of item-level information in the improvement of learning and instruction. |
@ | RefId | M |  | RefIdType
| AssessmentFormRefId | M | This RefId points to the assessment form of which the item is a part. | IdRefType
| ResponseType | M | A value that indicates the response type for the item. Note: the multiple-multiple choice value means that there is a multiple choice question, for which more than one choice is acceptable. | values: multiple-choice multiple-multiple choice true-false fill-in-the-blank short-answer essay
| ItemLabel | M | An item number or other identifier for the item. It may be used to indicate the order or grouping of items. | xs:token
| ItemName | O | Name or short description of the item. | xs:string
| LearningStandardItems | O | This object contains information related to curriculum standards statements "standards" or "benchmarks" or the like within the document. Each `LearningStandardItemRefId` reflects an individual standard statement and may occur at several levels within a hierarchially structured document. | List
| LearningStandardItems/LearningStandardItemRefId | MR |  | IdRefType
| Stimulus | C | A piece of content to be used by the test taker in responding to the stem. Examples include a reading passage, a video, a diagram, or a picture. Note: The `Stimulus` element only is included when a `Stem` element exists. | AbstractContentElementType
| Stem | O | The question, task, or statement that prompts a response from the test taker. | AbstractContentElementType
| ResponseChoices | C | This complex element will not be included in the object if `@ResponseType` is: `fill-in-the-blank` `short-answer` `essay` Other cases will be added in the future. |
| ResponseChoices/Choice | MR |  |
| ResponseChoices/Choice/ChoiceLabel | O | A choice number or other identifier for the choice. It may be used to indicate the order or grouping of the choices. | xs:normalizedString
| ResponseChoices/Choice/ChoiceContent | M | The text of the choice, such as `true`, `27`, or `Important economic and social factors`. | AbstractContentElementType
| ResponseChoices/Choice/CreditValue | O | A numeric value that indicates the amount of credit awarded for choosing the choice. | xs:float
| ItemScoreMaximum | O | The maximum item score possible for this item. | xs:token
| ItemScoreMinimum | O | The minimum item score possible for this item. | xs:token
| PerformanceLevels | O | Performance Levels are an ordered set of categories that indicate the achievement level of a person on an assessment. | List
| PerformanceLevels/PerformanceLevel | OR | Defines cut scores for placing students in an appropriate performance level. |
@ | LevelName | M | The name of the performance level. | xs:normalizedString
| PerformanceLevels/PerformanceLevel/ CutScores | O | Score bounds for the performance level. |
@ | ScoreMetric | M | The metric or scale used to report the scores. | AUCodeSetsAssessmentReportingMethodType
| PerformanceLevels/PerformanceLevel/ CutScores/LowerCut | O | Lower bound for the performance level. | xs:token
| PerformanceLevels/PerformanceLevel/ CutScores/UpperCut | O | Upper bound for the performance level. | xs:token
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.7-1: AssessmentItem
<AssessmentItem RefId="C294F3E190F019AD8E1DFC8367537EC8"> <AssessmentFormRefId>9372CB8EA910FF87D5672CAEF01387AA</AssessmentFormRefId> <ResponseType>multiple-choice</ResponseType> <ItemLabel>5</ItemLabel> <ItemName>Geometry diagnostic</ItemName> <LearningStandardItems> <LearningStandardItemRefId>DE072A87EFAD4B778AF9FAF83C94839E</LearningStandardItemRefId> </LearningStandardItems> <Stimulus> <Reference MIMEType="image/jpeg" Description="triangle_1"> <URL>http://www.trianglezz.com/triangle.jpg</URL> </Reference> </Stimulus> <Stem> <TextData Description="Pythagorean Theorem"> Express the length of side C in terms of A and B. </TextData> </Stem> <ResponseChoices> <Choice> <ChoiceLabel>A</ChoiceLabel> <ChoiceContent> <TextData>A + B</TextData> </ChoiceContent> <CreditValue>0.0</CreditValue> </Choice> <Choice> <ChoiceLabel>B</ChoiceLabel> <ChoiceContent> <TextData>3PI*R</TextData> </ChoiceContent> <CreditValue>-0.1</CreditValue> </Choice> <Choice> <ChoiceLabel>C</ChoiceLabel> <ChoiceContent> <TextData>SQRT(A2 + B2)</TextData> </ChoiceContent> <CreditValue>1.0</CreditValue> </Choice> <Choice> <ChoiceLabel>D</ChoiceLabel> <ChoiceContent> <TextData>A2 + B2</TextData> </ChoiceContent> <CreditValue>0.5</CreditValue> </Choice> </ResponseChoices> </AssessmentItem>
Example 6.3.7-1: AssessmentItem - Example 1
<AssessmentItem RefId="C294F3E190F019AD8E1DFC8367537EC8"> <AssessmentFormRefId>9372CB8EA910FF87D5672CAEF01387AA</AssessmentFormRefId> <ResponseType>multiple-choice</ResponseType> <ItemLabel>5</ItemLabel> <ItemName>Geometry diagnostic</ItemName> <LearningStandardItems> <LearningStandardItemRefId>DE072A87EFAD4B778AF9FAF83C94839E</LearningStandardItemRefId> </LearningStandardItems> <Stimulus> <Reference MIMEType="image/jpeg" Description="triangle_1"> <URL>http://www.trianglezz.com/triangle.jpg</URL> </Reference> </Stimulus> <Stem> <TextData Description="Pythagorean Theorem"> Express the length of side C in terms of A and B. </TextData> </Stem> <ResponseChoices> <Choice> <ChoiceLabel>A</ChoiceLabel> <ChoiceContent> <TextData>A + B</TextData> </ChoiceContent> <CreditValue>0.0</CreditValue> </Choice> <Choice> <ChoiceLabel>B</ChoiceLabel> <ChoiceContent> <TextData>3PI*R</TextData> </ChoiceContent> <CreditValue>-0.1</CreditValue> </Choice> <Choice> <ChoiceLabel>C</ChoiceLabel> <ChoiceContent> <TextData>SQRT(A2 + B2)</TextData> </ChoiceContent> <CreditValue>1.0</CreditValue> </Choice> <Choice> <ChoiceLabel>D</ChoiceLabel> <ChoiceContent> <TextData>A2 + B2</TextData> </ChoiceContent> <CreditValue>0.5</CreditValue> </Choice> </ResponseChoices> <ItemScoreMaximum>1.0</ItemScoreMaximum> <ItemScoreMinimum>-.1</ItemScoreMinimum> <PerformanceLevels> <PerformanceLevel LevelName="Pass"> <CutScores ScoreMetric="0499"> <LowerCut>0</LowerCut> <UpperCut>0.5</UpperCut> </CutScores> </PerformanceLevel> </PerformanceLevels> </AssessmentItem>
Example 6.3.7-2: AssessmentItem - Example 2

### 6.3.8 AssessmentPackage

SIF_Events are not reported for this object.

Figure 6.3.8-1: AssessmentPackage

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AssessmentPackage |  | A wrapper for any external standard that can define or transmit the content of an assessment. |
@ | RefId | M | The GUID that uniquely identifies an object instance in a zone. | RefIdType
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). | xs:token
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.8-1: AssessmentPackage
<AssessmentPackage RefId="495A00194CA340E3A33777B42E59C4F2"> <XMLData Description="Assessment">...</XMLData> </AssessmentPackage>
Example 6.3.8-1: AssessmentPackage

### 6.3.9 AssessmentRegistration

This object represents the assignment of a specific assessment to be taken by a student.

SIF_Events are reported for this object.

Figure 6.3.9-1: AssessmentRegistration

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AssessmentRegistration |  | This object represents the assignment of a specific assessment to be taken by a student. |
@ | RefId | M | The GUID that uniquely identifies an instance of the object. | RefIdType
| StudentPersonalRefId | M | The student associated with the registration. | IdRefType
| AssessmentAdministrationRefId | M | The assessment administration associated with the registration. | IdRefType
| CreationDateTime | M | Date/time assignment is made. | xs:dateTime
| StudentSpecialConditions | O | Records student-specific special conditions during the test. | List
| StudentSpecialConditions/ StudentSpecialCondition | MR | A description of the special condition. Student special conditions are different from special conditions of the test. | xs:normalizedString
@ | Code | M | A code indicating the type of special condition. | xs:token
| StudentYearLevel | O | Year level of the student at the time of testing. | YearLevel
| AssessmentYearLevel | O | The Year or level at which the student is to be tested. This element should be omitted unless the student is being tested out-of-level. | YearLevel
| AssessmentStudentSnapshot | O | The status of the student at the time of testing. The source of this information is meant to be the assessment system and not the student information system. |
| AssessmentStudentSnapshot/ Sex | O | Person's gender. | AUCodeSetsSexCodeType
| AssessmentStudentSnapshot/ BirthDate | O | The person's date of birth. | BirthDate
| LEAInfoRefId | O | Optional reference to a district associated with the registration. | IdRefType
| SchoolInfoRefId | O | Optional reference to a school associated with the registration. | IdRefType
| StaffPersonalRefId | O | Optional reference to a staff person associated with the registration. | IdRefType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.9-1: AssessmentRegistration
<AssessmentRegistration RefId="84243B2716EA4A68889B57A07E3707C9"> <StudentPersonalRefId>0D015F74DAB645FD92EFA8F43F2D79C3</StudentPersonalRefId> <AssessmentAdministrationRefId>6B08DF6E158941D9B8206D16E1FA6219</AssessmentAdministrationRefId> <CreationDateTime>2006-03-05T09:30:00-05:00</CreationDateTime> <StudentSpecialConditions> <StudentSpecialCondition Code="45C">Student became ill during test.</StudentSpecialCondition> </StudentSpecialConditions> <StudentYearLevel> <Code>4</Code> </StudentYearLevel> <AssessmentYearLevel> <Code>3</Code> </AssessmentYearLevel> <AssessmentStudentSnapshot> <Sex>2</Sex> <BirthDate>1996-09-12</BirthDate> </AssessmentStudentSnapshot> <LEAInfoRefId>325335F330A24BCD85E263E5C1EAAF89</LEAInfoRefId> <SchoolInfoRefId>0578B825250649DE930BF8916175BBAB</SchoolInfoRefId> <StaffPersonalRefId>3CD4A20CE2D64C27AE977F02D2CE24B3</StaffPersonalRefId> </AssessmentRegistration>
Example 6.3.9-1: AssessmentRegistration

### 6.3.10 AssessmentSubTest

A psychological construct measured by the assessment. Operationally, a subtest is a class of scores on an assessment. Some assessments may have only one subtest or type of score but most assessments measure more than one psychological construct. The subtest can be based upon items in a section or items that are empirically related. Subtests can also be composites of other subtests that are combined using a particular algorithm. Examples of subtests of an assessment are math total, reading composite, total test, and English composition.

SIF_Events are not reported for this object.

Figure 6.3.10-1: AssessmentSubTest

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AssessmentSubTest |  | A psychological construct measured by the assessment. Operationally, a subtest is a class of scores on an assessment. Some assessments may have only one subtest or type of score but most assessments measure more than one psychological construct. The subtest can be based upon items in a section or items that are empirically related. Subtests can also be composites of other subtests that are combined using a particular algorithm. Examples of subtests of an assessment are math total, reading composite, total test, and English composition. |
@ | RefId | M | The GUID that uniquely identifies an instance of the object. | RefIdType
| Name | M | Text name of the subtest. | xs:normalizedString
| ScoreRange | O | The possible range of scores. |
@ | ScoreMetric | M | The metric or scale used to report the scores. | AUCodeSetsAssessmentReportingMethodType
| ScoreRange/Minimum | O | Lowest possible score value. | xs:token
| ScoreRange/Maximum | O | Highest possible score value. | xs:token
| PerformanceLevels | O | Container for performance level elements. | List
| PerformanceLevels/PerformanceLevel | OR | Defines cut scores for placing students in appropriate performance levels. |
@ | LevelName | M | The name of the performance level. | xs:token
| PerformanceLevels/PerformanceLevel/ CutScores | O | Score bounds for the performance level. |
@ | ScoreMetric | M | The metric or scale used to report the scores. | AUCodeSetsAssessmentReportingMethodType
| PerformanceLevels/PerformanceLevel/ CutScores/LowerCut | O | Lower bound for the performance level. | xs:token
| PerformanceLevels/PerformanceLevel/ CutScores/UpperCut | O | Upper bound for the performance level. | xs:token
| SubjectArea | O | Content area covered by the score. | xs:token
| YearLevels | O | Year levels for which the score is valid. | YearLevels
| AssessmentSubTestRefIds | O | References (possibly recursive) to other SIF AssessmentSubTests. This enables subtests or scores to be composites of other scores. If any references are given here, the score is a composite score. The list must be unique. | List
| AssessmentSubTestRefIds/AssessmentSubTestRefId | MR | A reference to an AssessmentSubTest by RefId. | IdRefType
| SubTestTier | O | An integer that defines the level or tier of the score in a multi-level arrangement of composite scores. Zero indicates the highest or root level. | xs:unsignedInt
| LearningStandardItemRefIds | O | References to LearningStandardItems. The list must be unique. | List
| LearningStandardItemRefIds/ LearningStandardItemRefId | MR | A reference to a LearningStandardItem by RefId. | IdRefType
| Abbreviation | O | This is the short version of the name of the assessment that is often used for quick reference and used in reports. | xs:token
| Description | O | The description element provides an opportunity to pass additional information about the assessment and also be used for describing elements in a test hierarchy. | xs:string
| NumberOfItems | O | This element records the number of items included on the assessment. This number may be different than the possible score. | xs:unsignedInt
| ContainerOnly | O | Indicator describing the purpose of an AssessmentSubTest as being that of a container for the child AssessmentSubTests. There will be no scores within this subtest. | xs:boolean
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.10-1: AssessmentSubTest
<AssessmentSubTest RefId="90E298F70E094EE2B8B52DFD88006AF2"> <Name>Reading Comprehension Subtest</Name> <ScoreRange ScoreMetric="0499"> <Minimum>0</Minimum> <Maximum>110</Maximum> </ScoreRange> <PerformanceLevels> <PerformanceLevel LevelName="Basic"> <CutScores ScoreMetric="0499"> <LowerCut>25</LowerCut> <UpperCut>50</UpperCut> </CutScores> </PerformanceLevel> </PerformanceLevels> <SubjectArea>Reading Comprehension</SubjectArea> <YearLevels> <YearLevel> <Code>3</Code> </YearLevel> </YearLevels> <AssessmentSubTestRefIds> <AssessmentSubTestRefId>4710A15C428C48EBBC17CF320B6DCF25</AssessmentSubTestRefId> </AssessmentSubTestRefIds> <SubTestTier>0</SubTestTier> <LearningStandardItemRefIds> <LearningStandardItemRefId>3E4BEBCA14E54A118051DFA239A65990</LearningStandardItemRefId> </LearningStandardItemRefIds> </AssessmentSubTest>
Example 6.3.10-1: AssessmentSubTest

### 6.3.11 CalendarDate

This object defines information related to a school calendar day in a given school calendar year. If both CalendarDate and CalendarSummary objects are supported, there must be an instance of this object for each date between CalendarSummary StartDate and EndDate, inclusive.

SIF_Events are reported for this object.

Figure 6.3.11-1: CalendarDate

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| CalendarDate |  | This object defines information related to a school calendar day in a given school calendar year. If both CalendarDate and CalendarSummary objects are supported, there must be an instance of this object for each date between CalendarSummary StartDate and EndDate, inclusive. |
@ | Date | M | A specific school day that occurs within the school year. | xs:date
@ | CalendarSummaryRefId | M | The ID (GUID) of the calendar summary in which this calendar date is. | IdRefType
| SchoolInfoRefId | M | The ID (GUID) of the school for which this calendar information is being reported. | IdRefType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | SchoolYear
| CalendarDateType | M | Calendar date type information. |
| CalendarDateType/Code | M | Code indicating the type of school day. | AUCodeSetsCalendarEventType
| CalendarDateType/OtherCodeList | O |  | OtherCodeList
| CalendarDateNumber | O | Order in which the calendar date falls within the school calendar. | xs:unsignedInt
| StudentAttendance | O | Information describing how the day relates to student attendance. |
| StudentAttendance/CountsTowardAttendance | M | Designates whether this date should be counted toward student attendance. | values: Yes No
| StudentAttendance/AttendanceValue | M | Amount of the school day in which the student should be in attendance (Format is x.x; a student who should be in attendance a full day would be represented as 1.0). If `CountsTowardAttendance` equals `Yes` then `AttendanceValue` must be greater than zero. | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 1
| TeacherAttendance | O | Information describing how the day relates to teacher attendance. |
| TeacherAttendance/CountsTowardAttendance | M | Designates whether this date should be counted toward teacher attendance. | values: Yes No
| TeacherAttendance/AttendanceValue | M | Amount of the school day in which the teacher should be in attendance (format is x.x; a teacher who should be in attendance a full day would be represented as 1.0). | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 1
| AdministratorAttendance | O | Information describing how the day relates to administrator attendance. |
| AdministratorAttendance/CountsTowardAttendance | M | Designates whether this date should be counted toward administrator attendance. | values: Yes No
| AdministratorAttendance/AttendanceValue | M | Amount of the school day in which the administrator should be in attendance (format is x.x; an administrator who should be in attendance a full day would be represented as 1.0). | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 1
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.11-1: CalendarDate
<CalendarDate Date="2007-08-31" CalendarSummaryRefId="B5739375800AC4CC63850BB2754114AA"> <SchoolInfoRefId>B7A34E561C97345C0A4E11BB112B2753</SchoolInfoRefId> <SchoolYear>2007</SchoolYear> <CalendarDateType> <Code>INST</Code> </CalendarDateType> <StudentAttendance> <CountsTowardAttendance>Yes</CountsTowardAttendance> <AttendanceValue>1.0</AttendanceValue> </StudentAttendance> <TeacherAttendance> <CountsTowardAttendance>Yes</CountsTowardAttendance> <AttendanceValue>1.0</AttendanceValue> </TeacherAttendance> </CalendarDate>
Example 6.3.11-1: CalendarDate

### 6.3.12 CalendarSummary

This object provides a summary of a school's calendar information for a given school year. A school may have more than one calendar per school year (e.g., one calendar for Kindergarten students, one for special education students, one for seniors, or one for each calendar track), and each may have different days in session, start and end dates, minutes per day, instructional minutes, etc.

SIF_Events are reported for this object.

Figure 6.3.12-1: CalendarSummary

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| CalendarSummary |  | This object provides a summary of a school's calendar information for a given school year. A school may have more than one calendar per school year (e.g., one calendar for Kindergarten students, one for special education students, one for seniors, or one for each calendar track), and each may have different days in session, start and end dates, minutes per day, instructional minutes, etc. |
@ | RefId | M | The ID (GUID) of the calendar to which this information relates. | RefIdType
| SchoolInfoRefId | M | The ID (GUID) of the school for which this calendar information is being reported. | IdRefType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2007"). | SchoolYear
| LocalId | M | The locally assigned identifier for this calendar. | LocalId
| Description | O | Textual description of the school calendar. | xs:string
| DaysInSession | M | The total number of days that the school was or is anticipated to be in session during the school year. Also included are days on which the education institution facility is closed and the student body as a whole is engaged in planned activities off-campus under the guidance and direction of staff members. | xs:unsignedInt
| StartDate | O | The first calendar date, whether or not instruction was provided. If both CalendarSummary and CalendarDate objects are supported, StartDate must be the date of the first chronological instance of CalendarDate for the school's calendar. | xs:date
| EndDate | O | The last calendar date, whether or not instruction was provided. If both CalendarSummary and CalendarDate objects are supported, EndDate must be the last chronological instance of CalendarDate for the school's calendar. | xs:date
| FirstInstructionDate | O | The first day of student instruction. | xs:date
| LastInstructionDate | O | The last day of student instruction (including days or times that students are present for purposes of testing and/or evaluation, but not including whole or part-days whose sole purposes is for distribution of report cards). | xs:date
| GraduationDate | O | Date of graduation ceremony. | GraduationDate
| InstructionalMinutes | O | The total number of instructional minutes for this calendar for the school year. | xs:unsignedInt
| MinutesPerDay | O | The number of minutes in the day in which the school is normally in session. | xs:unsignedInt
| YearLevels | O | Collection of year levels applicable to this school calendar. | YearLevels
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.12-1: CalendarSummary
<CalendarSummary RefId="B5739375800AC4CC63850BB2754114AA"> <SchoolInfoRefId>B7A34E561C97345C0A4E11BB112B2753</SchoolInfoRefId> <SchoolYear>2005</SchoolYear> <LocalId>123321A</LocalId> <Description>Elementary School Calendar</Description> <DaysInSession>180</DaysInSession> <StartDate>2009-01-01</StartDate> <EndDate>2009-12-31</EndDate> <FirstInstructionDate>2009-01-02</FirstInstructionDate> <LastInstructionDate>2009-12-20</LastInstructionDate> <GraduationDate>2009-12-10</GraduationDate> <InstructionalMinutes>64800</InstructionalMinutes> <MinutesPerDay>360</MinutesPerDay> <YearLevels> <YearLevel> <Code>10</Code> </YearLevel> <YearLevel> <Code>11</Code> </YearLevel> <YearLevel> <Code>12</Code> </YearLevel> </YearLevels> </CalendarSummary>
Example 6.3.12-1: CalendarSummary

### 6.3.13 Identity

This object allows a system that stores network identities and/or passwords to share them with other applications through SIF. The provider of the `Identity` object may only support providing an identity or a password, or it may support both.

SIF_Events are reported for this object.

Figure 6.3.13-1: Identity

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| Identity |  | This object allows a system that stores network identities and/or passwords to share them with other applications through SIF. The provider of the `Identity` object may only support providing an identity or a password, or it may support both. |
@ | RefId | M | The SIF RefId that uniquely identifies this object. | RefIdType
| SIF_RefId | M | The SIF RefId of a StudentPersonal, StaffPersonal, or StudentContactPersonal object. | IdRefType
@ | SIF_RefObject | M | The type of SIF object that the `SIF_RefId` attribute identifies. | values: StudentPersonal StaffPersonal StudentContactPersonal
| AuthenticationSource | M | The type of source system that produced this `Identity` object. See implementation notes for provider requirements. | values: AUAccessShibboleth MSActiveDirectory NovellNDS OpenDirectory OpenID Other
| IdentityAssertions | O | The list of identity assertions for this user. | ActionList (IdentityAssertion/@SchemaName)
| IdentityAssertions/IdentityAssertion | MR | The identification string for this user. | xs:normalizedString
@ | SchemaName | M | The name of the field. See implementation notes for details on required schema elements. Examples eduPersonPrincipalName sAmAccountName | xs:normalizedString
| PasswordList | O | Allows a provider or publisher to specify the same password using multiple algorithms, if supported. | List
| PasswordList/Password | MR | A representation of the user's password using the given algorithm. | xs:base64Binary
@ | Algorithm | M | The method used to encrypt the user's password. See the implementation details below. | values: MD5 SHA1 DES TripleDES RC2 AES RSA
@ | KeyName | M | The name of the key to be used for decryption of the password. Left blank for hash algorithms (MD5 and SHA1). | xs:normalizedString
| AuthenticationSourceGlobalUID | O | The globally unique person identifier that links together separate Identity objects which reference the same Person. | IdRefType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.13-1: Identity
<Identity RefId="4286194F43ED43C18EE2F0A27C4BEF86"> <SIF_RefId SIF_RefObject="StudentPersonal">23B08571E4D645C3B82A3E52E5349925</SIF_RefId> <AuthenticationSource>AUAccessShibboleth</AuthenticationSource> <IdentityAssertions> <IdentityAssertion SchemaName="eduPersonPrincipalName">john.doe@asdf.edu.au</IdentityAssertion> </IdentityAssertions> <AuthenticationSourceGlobalUID>A9A6CB2BC49344278C1FD6587D448B35</AuthenticationSourceGlobalUID> </Identity>
Example 6.3.13-1: Identity published by an Access Federation Shibboleth Provider
<Identity RefId="4286194F43ED43C18EE2F0A27C4BEF86"> <SIF_RefId SIF_RefObject="StudentPersonal">23B08571E4D645C3B82A3E52E5349925</SIF_RefId> <AuthenticationSource>MSActiveDirectory</AuthenticationSource> <IdentityAssertions> <IdentityAssertion SchemaName="sAmAccountName">user01</IdentityAssertion> <IdentityAssertion SchemaName="userPrincipalName">user01@asdf.edu.au</IdentityAssertion> <IdentityAssertion SchemaName="distinguishedName">cn=User01,cn=Users,dc=org</IdentityAssertion> </IdentityAssertions> <AuthenticationSourceGlobalUID>23A08571E4D645C3B82A3E52E5349925</AuthenticationSourceGlobalUID> </Identity>
Example 6.3.13-2: Identity published by Microsoft Active Directory
<Identity RefId="4286194F43ED43C18EE2F0A27C4BEF86"> <SIF_RefId SIF_RefObject="StudentPersonal">23B08571E4D645C3B82A3E52E5349925</SIF_RefId> <AuthenticationSource>OpenID</AuthenticationSource> <IdentityAssertions> <IdentityAssertion SchemaName="openid.identity">http://verisign.org/p/alice </IdentityAssertion> <IdentityAssertion SchemaName="openid.server">http://verisign.org </IdentityAssertion> </IdentityAssertions> <AuthenticationSourceGlobalUID>A9A6CB2BC49344278C1FD6587D448B35</AuthenticationSourceGlobalUID> </Identity>
Example 6.3.13-3: Identity published by an OpenID provider

### 6.3.14 LEAInfo

This object contains information about a school district or other Local Educational Agency (LEA).

SIF_Events are reported for this object.

Figure 6.3.14-1: LEAInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LEAInfo |  | This object contains information about a school district or other Local Educational Agency (LEA). |
@ | RefId | M | The GUID of the LEA whose information this is. | RefIdType
| LocalId | M | The locally-assigned identifier for this LEA. | LocalId
| StateProvinceId | O | The state-assigned identifier for this LEA. | StateProvinceId
| CommonwealthId | O | Commonwealth Identifier for this District (LEA). | xs:normalizedString
| LEAName | M | Name of LEA. | xs:normalizedString
| LEAURL | O | URL for the LEA. | xs:anyURI
| EducationAgencyType | O | The classification of the education agency within the geographic boundaries of a state according to the level of administrative and operational control. |
| EducationAgencyType/Code | M | Code indicating the operational/administrative level. | AUCodeSetsEducationAgencyTypeType
| EducationAgencyType/OtherCodeList | O |  | OtherCodeList
| LEAContactList | O |  | List
| LEAContactList/LEAContact | MR | Information on contact persons for this LEA. |
| LEAContactList/LEAContact/ PublishInDirectory | O | Indicates whether or not this LEA contact's information should be published in a directory of LEA information. | PublishInDirectory
| LEAContactList/LEAContact/ ContactInfo | M |  | ContactInfo
| PhoneNumberList | O | The LEA's phone number(s). | PhoneNumberList
| AddressList | O | The LEA's address(es). | AddressList
| OperationalStatus | O | Operational condition of a school. | OperationalStatus
| JurisdictionLowerHouse | O | Lower House area that the school/campus belongs to. | xs:normalizedString
| SLA | O | Statistical Local Area that the school/campus belongs to. | AUCodeSetsAustralianStandardGeographicalClassificationASGCType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.14-1: LEAInfo
<LEAInfo RefId="D3E34B359D75101A8C3D00AA001A1652"> <LocalId>EMR</LocalId> <StateProvinceId>EMR</StateProvinceId> <CommonwealthId>4215750</CommonwealthId> <LEAName>Eastern Metro School District</LEAName> <LEAURL>http://www.EMR.vic.edu.au</LEAURL> <EducationAgencyType> <Code>01</Code> </EducationAgencyType> <LEAContactList> <LEAContact> <PublishInDirectory>Y</PublishInDirectory> <ContactInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Theo</GivenName> <FullName>Theo Smith</FullName> </Name> <PositionTitle>Superintendent</PositionTitle> <EmailList> <Email Type="01">drseuss@edumail.vic.edu.au</Email> </EmailList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>(03) 9745 7455</Number> </PhoneNumber> </PhoneNumberList> </ContactInfo> </LEAContact> </LEAContactList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>(03) 9745 7455</Number> </PhoneNumber> </PhoneNumberList> <OperationalStatus>O</OperationalStatus> <JurisdictionLowerHouse>Unknown</JurisdictionLowerHouse> <SLA>205801452</SLA> </LEAInfo>
Example 6.3.14-1: LEAInfo

### 6.3.15 LearningResource

This object contains information related to learning resources that may be used in educational settings. These include textbooks, Internet content, educational software, videos and DVDs, supplemental print material, etc.

SIF_Events are reported for this object.

Figure 6.3.15-1: LearningResource

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LearningResource |  | This object contains information related to learning resources that may be used in educational settings. These include textbooks, Internet content, educational software, videos and DVDs, supplemental print material, etc. |
@ | RefId | M | GUID assigned to this LearningResource. | RefIdType
@ | xml:lang | M | The default language used in the LearningResource object. |
| Name | M | Name of learning resource. | xs:normalizedString
| Author | O | Name of organization or company that created the resource. | xs:normalizedString
| Contacts | O | Contains contact information about resource authors. | List
| Contacts/Contact | OR | Contains contact information about a resource author. |
| Contacts/Contact/Name | O | Name of contact person. Use the generic element Name. | Name
| Contacts/Contact/Address | O | Address of organization or company. | Address
| Contacts/Contact/PhoneNumber | O | Phone number of organization or company. | PhoneNumber
| Contacts/Contact/Email | O | The email of the organization or company. | Email
| Location | O | Description of location of resource, i.e. location in library or URL, community resource, outside resource supplier. | xs:string
@ | ReferenceType | M | A qualifying attribute for the Location payload. If ReferenceType is "URI", the payload contains a web address where the resource can be found. | xs:token
| Status | O | Describes availability status of resource, e.g. "checked out." | xs:normalizedString
| Description | O | Description of the resource, e.g., "This textbook is intended for year 4 social studies students and addresses..." | xs:string
| YearLevels | O |  | YearLevels
| SubjectAreas | O |  | List
| SubjectAreas/ACStrandSubjectArea | MR |  | ACStrandSubjectArea
| MediaTypes | O | Resource media types. | List
| MediaTypes/MediaType | OR | MIME type [MIME] based on IANA registration (see RFC2048) or 'non-digital'. | xs:token
| UseAgreement | O | Describes terms of use for resource. | xs:string
| AgreementDate | O | A date that defines the date of agreement. | xs:date
| Approvals | O | Authorizations to use this resource. For example, this resource may be included as part of the district's standard curriculum model. | List
| Approvals/Approval | OR | A sub-element containing an authorization to use this resource. For example, this resource may be included as part of the district's standard curriculum model. |
| Approvals/Approval/Organization | M | Name of agency that approved use of resource. | xs:normalizedString
| Approvals/Approval/Date | M | Date resource was approved. | xs:date
| Evaluations | O | Evaluations/review of the resource. | List
| Evaluations/Evaluation | OR | Evaluation/review of resource. |
@ | RefId | M | GUID assigned to an evaluation. | RefIdType
| Evaluations/Evaluation/Description | O | Description of evaluation of resource. | xs:string
| Evaluations/Evaluation/Date | O | Date evaluation was performed | xs:date
| Evaluations/Evaluation/Name | O | Name of individual who submitted evaluation. | Name
| Components | M | Lesson or activity-sized portions of a resource. | List
| Components/Component | MR | A lesson or activity-sized portion of a resource. |
| Components/Component/Name | M | Name of learning resource component within the resource, i.e. "Chapter 1, Section 4. | xs:normalizedString
| Components/Component/Reference | M | Description of where ResourceComponent is located within resource or in general, i.e. "Section 4, pages 32-38," or URL string, or whatever locator is appropriate for media. | xs:string
| Components/Component/Description | O | Description of ResourceComponent, i.e. "Discover how changing the scale of a map can either increase or decrease the level of detail you see." | xs:string
| Components/Component/Strategies | O | Teaching/learning strategies used in the learning resource. | List
| Components/Component/Strategies/ Strategy | OR | Teaching/learning strategy used in the learning resource. One per element. | xs:string
| Components/Component/AssociatedObjects | O | References from component to associated elements within another SIF object. | List
| Components/Component/AssociatedObjects/ AssociatedObject | OR | Reference from component to associated elements within another SIF object. | IdRefType
@ | SIF_RefObject | M | Attribute that identifies the type of SIF object being referenced. | ObjectNameType
| LearningStandards | O | References to LearningStandardItems. | List
| LearningStandards/LearningStandardItemRefId | OR | Reference to a LearningStandardItem. | IdRefType
| LearningResourcePackageRefId | O | Reference to a `LearningResourcePackage`, a transport envelope for teaching and learning object files. | IdRefType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.15-1: LearningResource
<LearningResource RefId="6938D88F82A37EFD88892429EC6AB1B5" xml:lang="en"> <Name>A World of Music (Teacher Reference Sheet)</Name> <Author>The Queensland Performing Arts Edge</Author> <Contacts> <Contact> <Address Type="0123" Role="012A"> <Street> <Line1>QPAC</Line1> <Line2>Southbank</Line2> </Street> <City>Brisbane</City> <StateProvince>QLD</StateProvince> <Country>1101</Country> <PostalCode>4002</PostalCode> </Address> <PhoneNumber Type="0096"> <Number>(555) 555-1234</Number> <ListedStatus>Y</ListedStatus> </PhoneNumber> <Email Type="01">info@QPAC.edu.au</Email> </Contact> </Contacts> <Location ReferenceType="URI">http://www.artsedge/QPAC/curric/86_u_dreams/489_words.pdf</Location> <Status>Available</Status> <Description>Teacher Reference Sheet</Description> <YearLevels> <YearLevel> <Code>3</Code> </YearLevel> <YearLevel> <Code>4</Code> </YearLevel> <YearLevel> <Code>5</Code> </YearLevel> </YearLevels> <SubjectAreas> <ACStrandSubjectArea> <ACStrand>NPA</ACStrand> <SubjectArea> <Code>Hist</Code> <OtherCodeList> <OtherCode Codeset="Text">PerformingArts</OtherCode> </OtherCodeList> </SubjectArea> </ACStrandSubjectArea> </SubjectAreas> <MediaTypes> <MediaType>x-application/pdf</MediaType> </MediaTypes> <UseAgreement>see http://www.artsedge.QPAC/teaching_materials/using/artsedge.html for the user aggreement</UseAgreement> <AgreementDate>2002-06-05</AgreementDate> <Approvals> <Approval> <Organization>QLD DET</Organization> <Date>2002-03-15</Date> </Approval> </Approvals> <Evaluations> <Evaluation RefId="F1BC63DFD02CCED654EF558E84904E01"> <Description>This resource references QLD curriculum standards</Description> <Date>2001-06-15</Date> <Name Type="LGL"> <FamilyName>Doe</FamilyName> <GivenName>Joan</GivenName> </Name> </Evaluation> </Evaluations> <Components> <Component> <Name>Vocabulary</Name> <Reference>http://www.artsedge.QPAC.org/teaching_materials/curricula/curric/86_u_dreams/489_vocab.html</Reference> <Description>Students learn about social contexts such as nationality, culture, etc.</Description> <Strategies> <Strategy>Inquiry</Strategy> </Strategies> <AssociatedObjects> <AssociatedObject SIF_RefObject="LearningResource">667A87E21B4B9470CE61568576DF921E</AssociatedObject> </AssociatedObjects> </Component> </Components> <LearningStandards> <LearningStandardItemRefId>D56D76D40F0B96916DA4CA2E230494E8</LearningStandardItemRefId> <LearningStandardItemRefId>DBCE64060B47E555A64AF7FCE6C1A4A9</LearningStandardItemRefId> </LearningStandards> <LearningResourcePackageRefId>6D254047C5E542CBB7921D03ED3BD894</LearningResourcePackageRefId> </LearningResource>
Example 6.3.15-1: LearningResource

### 6.3.16 LearningResourcePackage

Many instructional applications in a SIF zone need to share teaching and learning objects. Curriculum planning applications, content repositories, learning management systems, etc.—all of these systems need to share instructional content utilizing the `LearningResource` object.

The `LearningResourcePackage` object provides a transport envelope to move these files across the SIF zone.

Note: With SIF Implementation Specification version 2.4 the choice element depicted in the diagram below has changed. In the XSD files, the choice element used to be rendered as a sequence of optional elements. Now, in the XSD files, the choice element is rendered as an xs:choice. This may cause problems with agents that treat the choice element as two optional elements rather than a choice of one and only one of the choices.

SIF_Events are not reported for this object.

Figure 6.3.16-1: LearningResourcePackage

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LearningResourcePackage |  | A wrapper for any external learning content to be transmitted across a SIF Zone. | AbstractContentPackageType

Table 6.3.16-1: LearningResourcePackage
<LearningResourcePackage RefId="C7DE86685968459FBF9FED22A0E1EA6E"> <BinaryData MIMEType="text/html;charset=utf-16">...</BinaryData> </LearningResourcePackage>
Example 6.3.16-1: LearningResourcePackage

### 6.3.17 LearningStandardDocument

A curriculum standards document or the like published by a national, state, district, school site, professional association or other interested party. The LearningStandardDocument reflects an expectation of student work.

SIF_Events are reported for this object.

Figure 6.3.17-1: LearningStandardDocument

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LearningStandardDocument |  | A curriculum standards document or the like published by a national, state, district, school site, professional association or other interested party. The LearningStandardDocument reflects an expectation of student work. |
@ | RefId | M | Id for the standards document | RefIdType
@ | xml:lang | M | The default language of the text used for the content in the learning standard document. |
| Title | M | Name of curriculum document, i.e., "NSW History Curriculum K-10." | xs:normalizedString
| Description | O | Description of the standards document. | xs:string
| RichDescription | O | Description of the curriculum document that allows pictures as well as text.. | AbstractContentElementType
| Source | M | Defines source of standard document. This is the descriptive type of the organization listed in `Organization`. It serves to describe the type of the standards contained within the document. | values: National State Regional District Site Classroom Publisher
| Organizations | M |  | List
| Organizations/Organization | MR | Name of organization represented by the document, i.e., "National Council of Teachers of Mathematics (NCTM)," "ACARA"," NSW DET". | xs:normalizedString
| Authors | O |  | List
| Authors/Author | OR | Name of the organization that authored the curriculum document, i.e. "ACARA May be the same as "Organization" above. | xs:normalizedString
| OrganizationContactPoint | O | A brief description of how to contact the organization maintaining the standards. It could be a phone number, email address, or URL. | xs:string
| SubjectAreas | M |  | List
| SubjectAreas/ACStrandSubjectArea | MR |  | ACStrandSubjectArea
| DocumentStatus | M |  | values: Draft Adopted Archived Unknown
| DocumentDate | O | The date the current status was achieved. | xs:date
| LocalAdoptionDate | O | The date the local organization adopted this standard document | xs:date
| LocalArchiveDate | O | The date the local organization stopped using this standard document and superseded by a new document. | xs:date
| EndOfLifeDate | O | This is the date that the governing organization retired this document. | xs:date
| Copyright | O | Copyright for document. |
| Copyright/Date | C | Copyright date | xs:date
| Copyright/Holder | C | Name of the copyright holder | xs:normalizedString
| YearLevels | O | SIF common YearLevels element | YearLevels
| RepositoryDate | O | Date document data was added to the repository | xs:date
| LearningStandardItemRefId | M | Link to the first/top LearningStandardItem in the standard hierarchy | IdRefType
| RelatedLearningStandards | O |  | List
| RelatedLearningStandards/ LearningStandardDocumentRefId | OR | Links to related LearningStandardDocument | IdRefType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.17-1: LearningStandardDocument
<LearningStandardDocument RefId="A5A575C789175101B8E7F08ED123A823" xml:lang="en"> <Title>Australian National Curriculum: History</Title> <Description> AIMS: The aim of the History curriculum is to instill in students an appreciation in the diversity of the past and how they inform current developments etc etc. RATIONALE: History is essential for an informed citizenry and has always been a cornerstone of education. </Description> <Source>National</Source> <Organizations> <Organization>ACARA</Organization> </Organizations> <Authors> <Author>Joe Bloggs</Author> </Authors> <OrganizationContactPoint>http://www.acara.edu.au</OrganizationContactPoint> <SubjectAreas> <ACStrandSubjectArea> <ACStrand>H</ACStrand> <SubjectArea> <Code>Hist</Code> <OtherCodeList> <OtherCode Codeset="Text">History</OtherCode> </OtherCodeList> </SubjectArea> </ACStrandSubjectArea> </SubjectAreas> <DocumentStatus>Adopted</DocumentStatus> <DocumentDate>2010-04-15</DocumentDate> <LocalAdoptionDate>2011-01-06</LocalAdoptionDate> <EndOfLifeDate>2011-04-15</EndOfLifeDate> <Copyright> <Date>2010-06-05</Date> <Holder>ACARA</Holder> </Copyright> <YearLevels> <YearLevel> <Code>11</Code> </YearLevel> <YearLevel> <Code>12</Code> </YearLevel> </YearLevels> <RepositoryDate>2011-04-15</RepositoryDate> <LearningStandardItemRefId>B7D26D789139214A8C7F08EA123A8234</LearningStandardItemRefId> <RelatedLearningStandards> <LearningStandardDocumentRefId>B216162FC98D202E62A64D53C991A25A</LearningStandardDocumentRefId> </RelatedLearningStandards> </LearningStandardDocument>
Example 6.3.17-1: LearningStandardDocument

### 6.3.18 LearningStandardItem

This object contains information related to curriculum standards statements "standards" or "benchmarks" or the like within the document. Each LearningStandardItem reflects an individual standard statement and may occur at several levels within a hierarchially structured document.

SIF_Events are reported for this object.

Figure 6.3.18-1: LearningStandardItem

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| LearningStandardItem |  | This object contains information related to curriculum standards statements "standards" or "benchmarks" or the like within the document. Each LearningStandardItem reflects an individual standard statement and may occur at several levels within a hierarchially structured document. |
@ | RefId | M | GUID assigned to each statement at each level within the document hierarchy | RefIdType
@ | xml:lang | M | The default language of the text used for the content in the LearningStandardItem. |
| Resources | O | Container for related resources. | List
| Resources/LearningResourceRefId | OR | A relationship between the item and an attached resource (e.g. learning resource, work sample). | IdRefType
@ | ResourceType | M | Type of Resource. | values: LearningResource WorkSample AnnotatedWorkSample Other
| StandardSettingBody | O | The name of the state or organization that authored and manages updates to the curriculum document (i.e., ACARA, NSW DET). |
| StandardSettingBody/Country | M |  | Country
| StandardSettingBody/StateProvince | O |  | StateProvince
| StandardSettingBody/SettingBodyName | O | This is the text version of the organization's name. | xs:normalizedString
| StandardHierarchyLevel | M | Description of hierarchical level within standards tree. |
| StandardHierarchyLevel/Number | M | Integer assigned to each hierarchical level within standards tree. The top level is "1". | xs:unsignedInt
| StandardHierarchyLevel/Description | M | Used to describe what role this item is serving in the structure. Some documents describe their levels in terms of standard, strands, and topics. Others use standards, benchmarks, and indicators. In Australia, this is typically in terms of Course or Unit, Year Level, Outcomes. This attribute names the level of the item. | xs:string
| PredecessorItems | O |  | List
| PredecessorItems/LearningStandardItemRefId | OR | GUID assigned to the LearningStandardItem directly above it in the hierarchy tree. This is a repeatable element because a single granular item may relate to multiple parent levels of the hierarchy. If the object has no parent, the ParentRefId should be the same as the object's RefId. The RefId in LearningStandardDocumentRefId will always point to the parent's LearningStandardDocument object. | IdRefType
| StatementCodes | O |  | List
| StatementCodes/StatementCode | OR | An alphanumeric Id code as defined by the organization to identify the statement. | xs:token
| Statements | O |  | List
| Statements/Statement | MR | The text of the "outcome", "standard", or other element within the structured curriculum document | xs:string
| YearLevels | M |  | YearLevels
| ACStrandSubjectArea | O |  | ACStrandSubjectArea
| StandardIdentifier | O | This element describes the unique identifier for each LearningStandard. |
| StandardIdentifier/YearCreated | M | This represents the year that this specific learning standard was created. This is important to indicate as standards are updated to reflect the appropriate year it was created. This would be assigned and unique to the standard setting body. | xs:gYear
| StandardIdentifier/ACStrandSubjectArea | M | This represents the subject or content area this curriculum item addresses. This would be assigned and unique to the curriculum setting body. | ACStrandSubjectArea
| StandardIdentifier/StandardNumber | M | This is the specific number of the standard. For example, if the subject is mathematics and this standard is Patterns, Functions and Algebra, this would be StandardNumber 1. This would be assigned and unique to the standard setting body. | xs:normalizedString
| StandardIdentifier/YearLevels | M | This represents the grade level(s) this specific learning standard will address. This may be addressed in different ways. Some states have a grade level that covers several grades and others have just one grade. This would be assigned and unique to the standard setting body. | YearLevels
| StandardIdentifier/Benchmark | O | This is the next level within the hierarchy of the learning standard. For example, if the subject is mathematics and the standard is algebra, this would be the next delineation - Represent an unknown quantity as a variable using a symbol, including letters. This would be assigned and unique to the standard setting body. | xs:normalizedString
| StandardIdentifier/YearLevel | O | This is the specific year level. This is to be utilized if the YearLevel covers several years. This would be assigned and unique to the standard setting body. | YearLevel
| StandardIdentifier/IndicatorNumber | O | This would be the most granular level of the learning standard associated with the grade level. Following the same example, an indicator for Algebra YearLevel 5-7, the indicator for the benchmark above at Year 6 would be to Evaluate simple expressions by replacing variables with given values, and use formulas in problem-solving situations. This would be assigned and unique to the standard setting body. | xs:normalizedString
| StandardIdentifier/AlternateIdentificationCodes | O | This element is for an organization to utilize for an internal code. This may be used for an alignment schema or other purposes that are only internal for the organization. | List
| StandardIdentifier/AlternateIdentificationCodes/ AlternateIdentificationCode | MR | An alphanumeric Id code as defined by the organization to identify the statement. | xs:normalizedString
| StandardIdentifier/Organization | M | Name of organization represented by the document, i.e., "National Council of Teachers of Mathematics (NCTM)," "NSW," "ACARA." This is the name of the organization that has this AlternateIdentificationCode. This should be a text field. | xs:normalizedString
| LearningStandardDocumentRefId | M | The RefId of the item's parent LearningStandardDocument. | IdRefType
| RelatedLearningStandardItems | O | Container for external relationships. | List
| RelatedLearningStandardItems/ LearningStandardItemRefId | OR | A relationship between the current standard item and another standard item. | IdRefType
@ | RelationshipType | M | Type of the relationship between the current standard and the target standard. The value identifies the type of standard of the target item. The purpose of this information is to allow applications to sort/display these relationships in the appropriate context. | union of: AUCodeSetsLearningStandardItemRelationshipTypesType xs:token
| Level4 | O | This is the second to most granular level of the learning or performance standard associated with the grade level. | xs:normalizedString
| Level5 | O | This is the most granular level of the learning or performance standard associated with the grade level. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.18-1: LearningStandardItem
<LearningStandardItem RefId="A5D75F789175101B8C7E08EA123A8234" xml:lang="en"> <StandardSettingBody> <Country>1101</Country> <StateProvince>VIC</StateProvince> <SettingBodyName>DEECD</SettingBodyName> </StandardSettingBody> <StandardHierarchyLevel> <Number>3</Number> <Description>AchievementStandard</Description> </StandardHierarchyLevel> <PredecessorItems> <LearningStandardItemRefId>DE072A87EFAD4B778AF9FAF83C94839E</LearningStandardItemRefId> </PredecessorItems> <StatementCodes> <StatementCode>Mathematics.2.03.a</StatementCode> </StatementCodes> <Statements> <Statement>Counting from 0 to 100 using whole numbers</Statement> </Statements> <YearLevels> <YearLevel> <Code>4</Code> </YearLevel> <YearLevel> <Code>5</Code> </YearLevel> </YearLevels> <ACStrandSubjectArea> <ACStrand>M</ACStrand> <SubjectArea> <Code>Maths</Code> <OtherCodeList> <OtherCode Codeset="Text">Mathematics</OtherCode> </OtherCodeList> </SubjectArea> </ACStrandSubjectArea> <StandardIdentifier> <YearCreated>2003</YearCreated> <ACStrandSubjectArea> <ACStrand>M</ACStrand> <SubjectArea> <Code>Maths</Code> <OtherCodeList> <OtherCode Codeset="Text">Mathematics</OtherCode> </OtherCodeList> </SubjectArea> </ACStrandSubjectArea> <StandardNumber>04</StandardNumber> <YearLevels> <YearLevel> <Code>5</Code> </YearLevel> <YearLevel> <Code>6</Code> </YearLevel> <YearLevel> <Code>7</Code> </YearLevel> </YearLevels> <Organization>DEECD VIC</Organization> </StandardIdentifier> <LearningStandardDocumentRefId>8454189F6BBC26C6B97DDB4B6D0E3AC8</LearningStandardDocumentRefId> <RelatedLearningStandardItems> <LearningStandardItemRefId RelationshipType="Content">869670E8540A43509515AFB767FADD9A</LearningStandardItemRefId> <LearningStandardItemRefId RelationshipType="State">B14FDAB437CA4565A9765A5B824545C4</LearningStandardItemRefId> <LearningStandardItemRefId RelationshipType="ContentElaboration">D5440A11F5A44AC1920261ECBE5A29F6</LearningStandardItemRefId> </RelatedLearningStandardItems> </LearningStandardItem>
Example 6.3.18-1: LearningStandardItem

### 6.3.19 PersonPicture

This object contains information about the person's picture.

SIF_Events are reported for this object.

Figure 6.3.19-1: PersonPicture

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PersonPicture |  | This object contains information about the person's picture. |
@ | RefId | M | The ID (GUID) that uniquely identifies the picture. | IdRefType
| ParentObjectRefId | M | The GUID of the personal object to which this picture is linked | RefIdType
@ | SIF_RefObject | M | The name of the object reference. | values: StudentPersonal StaffPersonal StudentContactPersonal
| SchoolYear | M | School year for which this enrollment is applicable, expressed as the four-digit year in which the school year ends (e.g. `2007`). | SchoolYear
| PictureSource | M | This element defines the picture. If the Type attribute is URL, this is the location of the picture in [JPEG] format; if Type is JPEG, this is the [JPEG] image data encoded using the Base64 Content-Transfer-Encoding defined in Section 6.8 of [RFC 2045]. | URIOrBinaryType
@ | Type | M | The way the picture is specified. | AUCodeSetsPictureSourceType
| OKToPublish | O | Can the picture be published? | AUCodeSetsYesOrNoCategoryType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.19-1: PersonPicture
<PersonPicture RefId="D3E34B359D75101A8C3D00AA001A1652"> <ParentObjectRefId SIF_RefObject="StudentPersonal">AA648462888624AA5294BC638017320B</ParentObjectRefId> <SchoolYear>2007</SchoolYear> <PictureSource Type="01">http://www.schoolsite.com/pictures/2007/1234.jpg </PictureSource> <OKToPublish>Y</OKToPublish> </PersonPicture>
Example 6.3.19-1: PersonPicture

### 6.3.20 ReportAuthorityInfo

This object contains information on authorities that provide ReportManifest objects and/or collect SIF_ReportObject objects, such as state departments of education, regional service agencies, or other report collecting agencies.

SIF_Events are reported for this object.

Figure 6.3.20-1: ReportAuthorityInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportAuthorityInfo |  | This object contains information on authorities that provide ReportManifest objects and/or collect SIF_ReportObject objects, such as state departments of education, regional service agencies, or other report collecting agencies. |
@ | RefId | M | The unique identifier for this agency/report authority. | RefIdType
| AuthorityName | M | Name of the agency/report authority. | xs:normalizedString
| AuthorityId | M | The zone unique case-sensitive identifier for the authority. This will be the contents of the SIF_SourceId element in the header of requests for reports. | xs:token
| AuthorityDepartment | O | Department, office, or subdivision of the agency/report authority. | xs:normalizedString
| AuthorityLevel | M | Level of the authority. | values: Federal State LEA School Other
| ContactInfo | O | Information on the contact person in this agency. | ContactInfo
| Address | O |  | Address
| PhoneNumber | O |  | PhoneNumber
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.20-1: ReportAuthorityInfo
<ReportAuthorityInfo RefId="9746375937BB2A10AAB2758C46A12001"> <AuthorityName>XX State Department of Education</AuthorityName> <AuthorityId>StateDOEDataWarehouse</AuthorityId> <AuthorityDepartment>Bureau of Special Education</AuthorityDepartment> <AuthorityLevel>State</AuthorityLevel> <ContactInfo> <Name Type="LGL"> <Title>Mr</Title> <FamilyName>Miller</FamilyName> <GivenName>James</GivenName> <MiddleName>Frank</MiddleName> <Suffix>Jr.</Suffix> <FullName>Mr James Frank Miller Jr.</FullName> </Name> <PositionTitle>Business Manager</PositionTitle> <Role>School Information Contact Point</Role> <Address Type="0123" Role="012B"> <Street> <Line1>23 Nicholson Street</Line1> </Street> <City>Carnegie</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>3004</PostalCode> <GridLocation> <Latitude>23.9876</Latitude> <Longitude>-98.8765</Longitude> </GridLocation> </Address> <EmailList> <Email Type="01">jmiller@lsc.vic.edu.au</Email> <Email Type="02">jmiller@yahoo.com.au</Email> </EmailList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2000</Number> <Extension>72345</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> </PhoneNumberList> </ContactInfo> <Address Type="0123" Role="2382"> <Street> <Line1>6799 33rd Ave.</Line1> <StreetNumber>6799</StreetNumber> <StreetName>33rd</StreetName> <StreetType>Ave.</StreetType> </Street> <City>Chicago</City> <StateProvince>IL</StateProvince> <Country>1101</Country> <PostalCode>60660</PostalCode> </Address> <PhoneNumber Type="0096"> <Number>(555) 555-0000</Number> </PhoneNumber> </ReportAuthorityInfo>
Example 6.3.20-1: ReportAuthorityInfo

### 6.3.21 ReportManifest

This object provides a way to define a report within a SIF zone. It contains metadata about the report. This object represents a mutual agreement between senders and receivers of the report.

SIF_Events are reported for this object.

Figure 6.3.21-1: ReportManifest

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportManifest |  | This object provides a way to define a report within a SIF zone. It contains metadata about the report. This object represents a mutual agreement between senders and receivers of the report. |
@ | RefId | M | The unique identifier for this report manifest. | RefIdType
@ | ReportAuthorityInfoRefId | M | ID (GUID) of the authority providing this manifest. | IdRefType
| SIF_Version | M | Specifies which SIF Implementation Specification version should be used when returning the report data; wildcards are allowed. When a wildcard is specified, the responding agent SHOULD attempt to return the report data in the version specified by `SIF_Message/@Version`, if that version matches the wildcard version. If not, the responding agent can return the data in any version it chooses that matches the wildcard version. | VersionWithWildcardsType
| SIF_MaxBufferSize | M | Specifies the maximum size of a packet to be returned to the report authority. | xs:unsignedInt
| ReceivingAuthority | O | The GUID of the authority for whom the report is intended, usually the same authority that defines this manifest. | IdRefType
@ | SIF_RefObject | M | The name of the object referenced. | values: ReportAuthorityInfo
| ReportName | M | The authority's accepted name for the report. | xs:normalizedString
| Description | O | The description for the report. | xs:string
| ReportingPeriod | O | Information on the period of time over which the report spans. |
| ReportingPeriod/BeginReportDate | O | The first date for which the report contains information. | xs:date
| ReportingPeriod/EndReportDate | O | The last date for which the report contains information. May be the same as BeginReportDate for snapshot-type reports. | xs:date
| ReportingPeriod/BeginSubmitDate | O | The first date on which the report may be submitted to the authority. | xs:date
| ReportingPeriod/EndSubmitDate | O | The last date on which the report may be submitted to the authority. | xs:date
| ReportingPeriod/DueDate | O | The official due date of the report. | xs:date
| ReportDefinitionSource | M | Indicates where the report definition can be found. If Type is `Embedded` or `Base64Binary`, this element's value contains the report definition. If Type is `URL`, this element's value is the location of the external definition. A Type value of `SIF_Query` indicates that the SIF_QueryGroup element contains the definition. | xs:string
@ | Type | M | This attribute indicates the source of the report definition. | values: URL Embedded Base64Binary SIF_Query SIF_ExtendedQuery
@ | QueryLanguage | M | The vendor-defined query language used in the report definition (e.g. `SQL`, `ExampleObject`, `Description`, `com.vendor.format`, etc.). If the `Type` attribute is `SIF_Query`, then `QueryLanguage` should also be `SIF_Query`. If the `Type` attribute is `SIF_ExtendedQuery`, then `QueryLanguage` should also be `SIF_ExtendedQuery`. | xs:token
| ReportFormatList | O | An optional list of one or more third-party formats that describe the visual representation of the report data. If more than one report format is associated with a manifest, the implementation can choose the most applicable format by examining the ContentType attribute. | List
| ReportFormatList/ReportFormat | MR | A third-party format that describes the visual representation of the report data. | xs:string
@ | Type | M | This attribute indicates the encoding of the format reference. | values: URL Embedded Base64Binary
@ | ContentType | M | The vendor-defined content type (e.g. `com.vendor.format`, `PDF`, etc. | xs:normalizedString
| SIF_QueryGroup | C | Parent element containing the querying criteria for extracting the report information if `ReportDefinitionSource/@Type` is `SIF_Query`. | List
| SIF_QueryGroup/SIF_Query | MR |  | SIF_Query
| SIF_ExtendedQuery | C | Query criteria for extracting the report information if `ReportDefinitionSource/@Type` is `SIF_ExtendedQuery`. | SIF_ExtendedQuery
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.21-1: ReportManifest
<ReportManifest RefId="C234516384746B387459000F84723A00" ReportAuthorityInfoRefId="84756373645746363738484848484832"> <SIF_Version>2.3</SIF_Version> <SIF_MaxBufferSize>102400000</SIF_MaxBufferSize> <ReceivingAuthority SIF_RefObject="ReportAuthorityInfo">84756373645746363738484848484812</ReceivingAuthority> <ReportName>December 1 IDEA Students</ReportName> <Description> A report of all IDEA-eligible students receiving services on December 1 </Description> <ReportingPeriod> <BeginReportDate>2003-12-01</BeginReportDate> <EndReportDate>2003-12-01</EndReportDate> <BeginSubmitDate>2003-12-02</BeginSubmitDate> <EndSubmitDate>2004-01-15</EndSubmitDate> <DueDate>2004-01-15</DueDate> </ReportingPeriod> <ReportDefinitionSource Type="URL" QueryLanguage="Description">http://www.state.edu/IDEAEligible.html</ReportDefinitionSource> <SIF_QueryGroup> <SIF_Query> <SIF_QueryObject ObjectName="StudentPersonal" /> </SIF_Query> <SIF_Query> <SIF_QueryObject ObjectName="StudentSchoolEnrollment" /> <SIF_ConditionGroup Type="And"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>EntryDate</SIF_Element> <SIF_Operator>LE</SIF_Operator> <SIF_Value>20031201</SIF_Value> </SIF_Condition> </SIF_Conditions> <SIF_Conditions Type="Or"> <SIF_Condition> <SIF_Element>ExitDate</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>20040530</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element>ExitDate</SIF_Element> <SIF_Operator>GE</SIF_Operator> <SIF_Value>20031201</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> <SIF_Query> <SIF_QueryObject ObjectName="StudentParticipation" /> <SIF_ConditionGroup Type="And"> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>@Type</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>IDEA</SIF_Value> </SIF_Condition> </SIF_Conditions> <SIF_Conditions Type="None"> <SIF_Condition> <SIF_Element>ProgramPlacementDate</SIF_Element> <SIF_Operator>LE</SIF_Operator> <SIF_Value>20031201</SIF_Value> </SIF_Condition> </SIF_Conditions> <SIF_Conditions Type="Or"> <SIF_Condition> <SIF_Element>ProgramExitDate</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value /> </SIF_Condition> <SIF_Condition> <SIF_Element>ProgramExitDate</SIF_Element> <SIF_Operator>GE</SIF_Operator> <SIF_Value>20031201</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Query> </SIF_QueryGroup> </ReportManifest>
Example 6.3.21-1: ReportManifest

### 6.3.22 RoomInfo

This object contains all of the information about a school's room. This object may contain a reference to a room type so that it may represent anything from a gym, cafeteria, to a standard classroom. The StaffList element usually contains the homeroom teacher.

SIF_Events are reported for this object.

Figure 6.3.22-1: RoomInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| RoomInfo |  | This object contains all of the information about a school's room. This object may contain a reference to a room type so that it may represent anything from a gym, cafeteria, to a standard classroom. The StaffList element usually contains the homeroom teacher. |
@ | RefId | M | GUID that identifies this room. | RefIdType
| SchoolInfoRefId | M | GUID that identifies the school that this room belongs to. | IdRefType
| RoomNumber | M | Room number as presented to the user/application. | xs:normalizedString
| StaffList | O |  | List
| StaffList/StaffPersonalRefId | MR | GUID that identifies the staff person assigned to this room (e.g. the homeroom teacher). | IdRefType
| Description | O | Friendly name that can be assigned to the room (e.g. `Staff Cafeteria`). | xs:normalizedString
| Building | O | Extra building information. In the future Building could become its own object in which case this element will need to be changed to a RefId. Currently it is only required as a free text field. | xs:normalizedString
| HomeroomNumber | O | When a room is designated as a homeroom it may have a different number. Usually blank when room is not a homeroom. | xs:normalizedString
| Size | O | Size in square meters. | xs:decimal
| Capacity | O | Number of persons (usually students) that this room can hold. | xs:unsignedInt
| PhoneNumber | O | Phone number for the room | PhoneNumber
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.22-1: RoomInfo
<RoomInfo RefId="D3E34B359D75101A8C3D00AA001A1652"> <SchoolInfoRefId>A2E35B359D75101A8C3D00AA001A0000</SchoolInfoRefId> <RoomNumber>101</RoomNumber> <StaffList> <StaffPersonalRefId>A8C3A2E35B359D75101D00AA001A0000</StaffPersonalRefId> </StaffList> <Description>Room 101</Description> <Building>Main A</Building> <HomeroomNumber>10-HR-A</HomeroomNumber> <Size>400</Size> <Capacity>35</Capacity> <PhoneNumber Type="0096"> <Number>(02) 9555-1234</Number> </PhoneNumber> </RoomInfo>
Example 6.3.22-1: RoomInfo

### 6.3.23 SchoolCourseInfo

This object is for course information.

All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds.

SIF_Events are reported for this object.

Figure 6.3.23-1: SchoolCourseInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SchoolCourseInfo |  | This object is for course information. All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds. |
@ | RefId | M | The ID (GUID) that uniquely identifies the school course. | RefIdType
| SchoolInfoRefId | M | The ID (GUID) that identifies the school where the course is offered. | IdRefType
| SchoolLocalId | O | The locally-assigned identifier for this school/campus. | LocalId
| SchoolYear | C | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g. `2007`). | SchoolYear
| TermInfoRefId | C | The ID (GUID) that uniquely identifies this TermInfo (reportable time period). Either SchoolYear or TermInfoRefId must be provided. | IdRefType
| CourseCode | M | School-defined local code for the course. | xs:normalizedString
| StateCourseCode | O | State-defined standard course code used to report information about courses. | xs:normalizedString
| DistrictCourseCode | O | The corresponding district course code. | xs:normalizedString
| SubjectAreaList | O | Subject matter areas. | SubjectAreaList
| CourseTitle | M | Title of the course. | xs:normalizedString
| Description | O | Textual description of the course. | xs:normalizedString
| InstructionalLevel | O | An indication of the general nature and difficulty of instruction provided. | xs:normalizedString
| CourseCredits | O | The number of credits awarded upon course completion. | xs:normalizedString
| CoreAcademicCourse | O | Does the course meet the state definition of a core academic course? | AUCodeSetsYesOrNoCategoryType
| GraduationRequirement | O | Does the state require that the course be completed for graduation? | AUCodeSetsYesOrNoCategoryType
| Department | O | Department with jurisdiction over this course. | xs:normalizedString
| CourseContent | O | Description of course content. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.23-1: SchoolCourseInfo
<SchoolCourseInfo RefId="9D75101A8C3D00AA001A0000A2E35B35"> <SchoolInfoRefId>101A8C3D00AA001A0000A2E35B359D75</SchoolInfoRefId> <SchoolYear>2006</SchoolYear> <CourseCode>CS101</CourseCode> <StateCourseCode>08-001</StateCourseCode> <DistrictCourseCode>CS101</DistrictCourseCode> <SubjectAreaList> <SubjectArea> <Code>Graphic Arts</Code> </SubjectArea> </SubjectAreaList> <CourseTitle>Gif, JPeg, or Png: What's the Difference?</CourseTitle> <Description>Explore the various types of files related to graphic arts.</Description> <InstructionalLevel>0571</InstructionalLevel> <CourseCredits>2</CourseCredits> <CoreAcademicCourse>N</CoreAcademicCourse> <GraduationRequirement>N</GraduationRequirement> </SchoolCourseInfo>
Example 6.3.23-1: SchoolCourseInfo

### 6.3.24 SchoolInfo

This object contains information about the school.

SIF_Events are reported for this object.

Figure 6.3.24-1: SchoolInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SchoolInfo |  | This object contains information about the school. |
@ | RefId | M | The GUID that identifies this school. | RefIdType
| LocalId | O | The locally-assigned identifier for this school. | LocalId
| StateProvinceId | O | The state-assigned identifier for this school. | StateProvinceId
| CommonwealthId | O | Commonwealth identifier for this school/campus. | xs:normalizedString
| SchoolName | M | Name of school/campus. | xs:normalizedString
| LEAInfoRefId | O | The ID (GUID) that references the school district of which this school is a member. | RefIdType
| OtherLEA | O | The ID (GUID) of another related education agency, such as a regional service agency. | RefIdType
@ | SIF_RefObject | M | The name of the object reference. | values: LEAInfo
| SchoolDistrict | O | The school district of which this school/campus is a member. Equivalent to DEECD Region. | xs:normalizedString
| SchoolDistrictLocalId | O | The school district Local ID. This should be the same as the LocalId in the LEAInfo if LEAInfo details are supplied. | LocalId
| SchoolType | O | An indication of the level of the educational institution. | AUCodeSetsSchoolLevelType
| SchoolFocusList | O | List containing the education focus codes of the campus/school. | List
| SchoolFocusList/SchoolFocus | MR | The type of educational institution as classified by its focus. | AUCodeSetsSchoolFocusCodeType
| SchoolURL | O | URL for the school. | SchoolURL
| PrincipalInfo | O | Information about the campus or school principal. | PrincipalInfo
| SchoolContactList | O | A list of contact persons associated with a school. | SchoolContactList
| AddressList | O | The school's addresses. | AddressList
| PhoneNumberList | O | The school's phone numbers. | PhoneNumberList
| SessionType | O | Code that specifies the session type. | AUCodeSetsSessionTypeType
| YearLevels | O | List of year levels offered by the school. | YearLevels
| ARIA | O | Accessibility/Remoteness Indicator of Australia. | xs:decimal
| OperationalStatus | O | Operational condition of a school. | OperationalStatus
| FederalElectorate | O | Australian Federal Electorate. | AUCodeSetsFederalElectorateType
| Campus | O | Optional campus details. |
| Campus/SchoolCampusId | M | Campus ID - Needs to be considered as part of school. Different campus' have different addresses. | xs:normalizedString
| Campus/CampusType | O | Type of campus. | AUCodeSetsSchoolLevelType
| Campus/AdminStatus | M | Is this campus the Admin Campus? | AUCodeSetsYesOrNoCategoryType
| SchoolSector | M | (Government, or Non-Government). | AUCodeSetsSchoolSectorCodeType
| IndependentSchool | O | Indicator as to whether school is an independent school (as opposed to government or catholic school). | AUCodeSetsYesOrNoCategoryType
| NonGovSystemicStatus | O | Used to clarify a non-government school's systemic status. Either Systemic or Non-Systemic. | AUCodeSetsSystemicStatusType
| System | O | System if a systemic school. | AUCodeSetsSchoolSystemType
| ReligiousAffiliation | O | Religious affiliation (if any). | AUCodeSetsAustralianStandardClassificationOfReligiousGroupsASCRGType
| SchoolGeographicLocation | O | School Location from MCEETCYA. | AUCodeSetsSchoolLocationType
| LocalGovernmentArea | O | LocalGovernmentArea that that school/campus is located in. | xs:normalizedString
| JurisdictionLowerHouse | O | Lower House area that the school/campus belongs to. | xs:normalizedString
| SLA | O | Statistical Local Area that the school/campus belongs to. | AUCodeSetsAustralianStandardGeographicalClassificationASGCType
| SchoolCoEdStatus | O | Gender of student population. | AUCodeSetsSchoolCoEdStatusType
| BoardingSchoolStatus | O | Is this school a Boarding School? | AUCodeSetsYesOrNoCategoryType
| Entity_Open | O | Opening date of entity. | xs:date
| Entity_Close | O | Closing date of entity. This element is allowed to be omitted and/or null. | xs:date
| SchoolGroupList | O |  | List
| SchoolGroupList/SchoolGroup | MR | Repeatable element containing a local identifier to identify a loosely connected group of schools. eg. YarraValley Cluster | LocalId
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.24-1: SchoolInfo
<SchoolInfo RefId="D3E34B359D75101A8C3D00AA001A1652"> <LocalId>01011234</LocalId> <StateProvinceId>01011234</StateProvinceId> <CommonwealthId>012345</CommonwealthId> <SchoolName>Lincoln Secondary College</SchoolName> <LEAInfoRefId>73648462888624AA5294BC6380173276</LEAInfoRefId> <OtherLEA SIF_RefObject="LEAInfo">AA648462888624AA5294BC638017320B</OtherLEA> <SchoolDistrict> Southern Metropolitan Region</SchoolDistrict> <SchoolType>Pri/Sec</SchoolType> <SchoolFocusList> <SchoolFocus>01</SchoolFocus> <SchoolFocus>03</SchoolFocus> </SchoolFocusList> <SchoolURL>http://www.lincolnsc.edu.vic.au</SchoolURL> <PrincipalInfo> <ContactName Type="LGL"> <Title>Mr</Title> <FamilyName>Mason</FamilyName> <GivenName>Francis</GivenName> <MiddleName>Frank</MiddleName> <Suffix>Jr.</Suffix> <FullName>Mr Frank Mason Jr.</FullName> </ContactName> <ContactTitle>Senior School Principal</ContactTitle> </PrincipalInfo> <SchoolContactList> <SchoolContact> <PublishInDirectory>Y</PublishInDirectory> <ContactInfo> <Name Type="LGL"> <Title>Mr</Title> <FamilyName>Miller</FamilyName> <GivenName>James</GivenName> <MiddleName>Mark</MiddleName> <Suffix>Jr.</Suffix> <FullName>Mr James Mark Miller Jr.</FullName> </Name> <PositionTitle>Business Manager</PositionTitle> <Role>School Information Contact Point</Role> <Address Type="0123" Role="012B"> <Street> <Line1>23 Nicholson Street</Line1> </Street> <City>Carnegie</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>3004</PostalCode> <GridLocation> <Latitude>23.9876</Latitude> <Longitude>-98.8765</Longitude> </GridLocation> </Address> <EmailList> <Email Type="01">jmiller@lsc.vic.edu.au</Email> <Email Type="02">jmiller@yahoo.com.au</Email> </EmailList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2000</Number> <Extension>72345</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> </PhoneNumberList> </ContactInfo> </SchoolContact> </SchoolContactList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2000</Number> </PhoneNumber> </PhoneNumberList> <SessionType>0827</SessionType> <YearLevels> <YearLevel> <Code>6</Code> </YearLevel> <YearLevel> <Code>7</Code> </YearLevel> <YearLevel> <Code>8</Code> </YearLevel> <YearLevel> <Code>9</Code> </YearLevel> <YearLevel> <Code>10</Code> </YearLevel> <YearLevel> <Code>11</Code> </YearLevel> <YearLevel> <Code>12</Code> </YearLevel> </YearLevels> <ARIA>1.0</ARIA> <OperationalStatus>O</OperationalStatus> <FederalElectorate>216</FederalElectorate> <Campus> <SchoolCampusId>01</SchoolCampusId> <CampusType>Camp</CampusType> <AdminStatus>Y</AdminStatus> </Campus> <SchoolSector>NG</SchoolSector> <IndependentSchool>Y</IndependentSchool> <NonGovSystemicStatus>S</NonGovSystemicStatus> <System>0003</System> <ReligiousAffiliation>2171</ReligiousAffiliation> <SchoolGeographicLocation>1</SchoolGeographicLocation> <LocalGovernmentArea>Cardinia</LocalGovernmentArea> <JurisdictionLowerHouse>Unknown</JurisdictionLowerHouse> <SLA>205801452</SLA> <SchoolCoEdStatus>C</SchoolCoEdStatus> <SchoolGroupList> <SchoolGroup>YVC</SchoolGroup> <SchoolGroup>EastSec01</SchoolGroup> </SchoolGroupList> </SchoolInfo>
Example 6.3.24-1: SchoolInfo

### 6.3.25 SchoolPrograms

This object contains information about Programs offered by a school.

SIF_Events are reported for this object.

Figure 6.3.25-1: SchoolPrograms

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SchoolPrograms |  | This object contains information about Programs offered by a school. |
@ | RefId | M | GUID that uniquely identifies this instance of the object. | RefIdType
| SchoolInfoRefId | M | GUID that identifies the school offering this program. | IdRefType
| SchoolYear | O | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | SchoolYear
| SchoolProgramList | O | List of School Programs | List
| SchoolProgramList/Program | OR |  |
| SchoolProgramList/Program/ Category | O | Program Category | xs:normalizedString
| SchoolProgramList/Program/ Type | M | Program Type | xs:normalizedString
| SchoolProgramList/Program/ OtherCodeList | O |  | OtherCodeList
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.25-1: SchoolPrograms
<SchoolPrograms RefId="D3E34B359D75101A8C3D00AA001A1652"> <SchoolInfoRefId>73648462888624AA5294BC6380173276</SchoolInfoRefId> <SchoolYear>2009</SchoolYear> <SchoolProgramList> <Program> <Category>01</Category> <Type>Steiner program</Type> </Program> <Program> <Category>01</Category> <Type>Tournament of minds</Type> </Program> </SchoolProgramList> </SchoolPrograms>
Example 6.3.25-1: SchoolPrograms

### 6.3.26 SessionInfo

This object provides the link between Period Attendance and the school's timetable. It allows subject and teaching group information to be communicated to/from the attendance system.

This object provides information about the session the specific instance of a timetable cell for against which the attendance is recorded. (Please note, the TimeTableCell object represents a session scheduled in a timetable. There may be many SessionInfo objects for the same TimeTableCell each for a different week/fortnight, depending on the length of the timetable schedule. Attendance is recorded against the SessionInfo object.

SIF_Events are reported for this object.

Figure 6.3.26-1: SessionInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SessionInfo |  | This object provides the link between Period Attendance and the school's timetable. It allows subject and teaching group information to be communicated to/from the attendance system. This object provides information about the session the specific instance of a timetable cell for against which the attendance is recorded. (Please note, the TimeTableCell object represents a session scheduled in a timetable. There may be many SessionInfo objects for the same TimeTableCell each for a different week/fortnight, depending on the length of the timetable schedule. Attendance is recorded against the SessionInfo object. |
@ | RefId | M | The GUID of the Object | RefIdType
| SchoolInfoRefId | M | The ID (GUID) of the school for which this attendance information is being reported. | IdRefType
| TimeTableCellRefId | M | The (GUID) of the piece of Curriculum (TT Grid) scheduled | IdRefType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2007"). | SchoolYear
| LocalId | M | Session Local Identifier | LocalId
| TimeTableSubjectLocalId | M | TimeTableSubject Local Identifier | LocalId
| TeachingGroupLocalId | M | Teaching Group Local Identifier | LocalId
| SchoolLocalId | O | School Local Identifier | LocalId
| StaffPersonalLocalId | O | Staff Local Identifier | LocalId
| RoomNumber | C | Room number as presented to the user or application. Needs to be provided if changed from TimeTableCell. | xs:normalizedString
| DayId | M | Day Id | LocalId
| PeriodId | M | Period Id within the Day Id | LocalId
| SessionDate | M | Date of Session | xs:date
| StartTime | O | Optional Start Time | xs:time
| FinishTime | O | Optional End Time | xs:time
| RollMarked | O | Was the Roll Marked for this Period? | AUCodeSetsYesOrNoCategoryType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.26-1: SessionInfo
<SessionInfo RefId="98157AA013BA8C3D00AA012B359D7512"> <SchoolInfoRefId>11737EA4301CADCA75C87214A7C46BDB</SchoolInfoRefId> <TimeTableCellRefId>A75A00101A8C301D02E3A05B359D0A00</TimeTableCellRefId> <SchoolYear>2008</SchoolYear> <LocalId>2</LocalId> <TimeTableSubjectLocalId>10MA1</TimeTableSubjectLocalId> <SchoolLocalId>01991</SchoolLocalId> <StaffPersonalLocalId>SMI009</StaffPersonalLocalId> <RoomNumber>R08</RoomNumber> <DayId>1</DayId> <PeriodId>5</PeriodId> <SessionDate>2008-10-10</SessionDate> <StartTime>12:05:00</StartTime> <FinishTime>13:30:00</FinishTime> <RollMarked>Y</RollMarked> </SessionInfo>
Example 6.3.26-1: SessionInfo

### 6.3.27 SIF_ReportObject

This object is an envelope used to send other data objects, typically reports, to authorities such as state departments of education, district offices, other schools, etc. It is also used to signal a data collector agent that a report is compiled and ready to be requested. SIF_ReportObject contains a data object, which is either complete or partial (a partial data object is one that contains a subset of the elements for the data object). One or a series of SIF_ReportObjects contained within one or a series of related SIF_Response messages makes up a complete report.

SIF_Events are reported for this object.

Figure 6.3.27-1: SIF_ReportObject

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ReportObject |  | This object is an envelope used to send other data objects, typically reports, to authorities such as state departments of education, district offices, other schools, etc. It is also used to signal a data collector agent that a report is compiled and ready to be requested. SIF_ReportObject contains a data object, which is either complete or partial (a partial data object is one that contains a subset of the elements for the data object). One or a series of SIF_ReportObjects contained within one or a series of related SIF_Response messages makes up a complete report. |
@ | RefId | M | The ID (GUID) that uniquely identifies this instance of a report. | RefIdType
| ReportInfo | C | Identifies the manifest for the report and characteristics of the submission. This element is a conditional element. This element, the ReportData element, or the SIF_ExtendedQueryResults element is included but never more than one at the same time within an instance of this object. See examples of the usage of the object below. |
@ | ReportManifestRefId | M | The report manifest corresponding to this report. | IdRefType
| ReportInfo/CalculationDate | M | The date on which the report was calculated. | xs:date
| ReportInfo/SubmissionNumber | M | A number that identifies the submission; beginning at 1 and incremented each time a submission is done for a particular report; used to indicate resubmission(s). | xs:positiveInteger
| ReportInfo/SubmissionReason | M | Reason for the report submission. | values: Initial Correction Revision Addition
| ReportInfo/ReportSubmitterInfo | C | Identifies the submitter of the report. This element is conditional depending on the context in which the SIF_ReportObject is used. It must be present in the ReportInfo element when a SIF_ReportObject is sent to a report authority in a SIF_Event message. However, its presence is optional in SIF_ReportObject packets delivered to report authorities in SIF_Response messages. |
| ReportInfo/ReportSubmitterInfo/ SIF_RefId | O | If the submitter is described by another SIF data object such as a SchoolInfo or LEAInfo instance, this element references that object by RefId. | IdRefType
@ | SIF_RefObject | M | The name of a SIF data object. When used in the context of ReportSubmitterInfo, this attribute must have one of the following values. | values: LEAInfo The submitter of the SIF_ReportObject is the district or other agency referenced by a LEAInfo object SchoolInfo The submitter of the SIF_ReportObject is the school referenced by a SchoolInfo object
| ReportInfo/ReportSubmitterInfo/ SubmitterName | M | Name of the report submitter. This is a descriptive string that names the entity submitting the SIF_ReportObject to the report authority. It could be the name of an agency, a district, a school, the SIF_SourceId of the submitting agent, or any other string that a report authority could use to identify the submitter of a report. This element may be present regardless of the presence of the SIF_RefId and SIF_RefObject elements. When those elements are used, it is recommended that collector agents reproduce the name of the LEA or school here. | xs:normalizedString
| ReportInfo/ReportSubmitterInfo/ SubmitterDepartment | O | Department, office, or subdivision of the agency submitting the report. | xs:normalizedString
| ReportInfo/ReportSubmitterInfo/ ContactInfo | O | Information on the contact person in this agency submitting the report. | ContactInfo
| ReportInfo/ReportSubmitterInfo/ Address | O |  | Address
| ReportInfo/ReportSubmitterInfo/ PhoneNumber | O |  | PhoneNumber
| ReportInfo/ReportSubmitterInfo/ SubmitterNotes | O | Optional notes for the report authority, such as information about a district's reporting policies and procedures, instructions for contacting the district for technical support, etc. | xs:string
| ReportInfo/Description | O |  | xs:string
| ReportData | C | Container element for the report content; one valid SIF object can occur as a child here. This element is conditional. This element or `ReportInfo` or `SIF_ExtendedQueryResults` is included but never at the same time. See examples of the usage of the object below. | ReportDataObjectType
| SIF_ExtendedQueryResults | C | The report content resulting from a `SIF_ExtendedQuery`-based report. This element is conditional. This element or `ReportInfo` or `ReportData` is included but never at the same time. | SIF_ExtendedQueryResults
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.27-1: SIF_ReportObject
<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Response> <SIF_Header> <SIF_MsgId>FAE9D90A38F84B729C92F868CB63C9F3</SIF_MsgId> <SIF_Timestamp>2006-10-15T09:23:26-05:00</SIF_Timestamp> <SIF_SourceId>XXXX Agent</SIF_SourceId> <SIF_DestinationId>STATE</SIF_DestinationId> </SIF_Header> <SIF_RequestMsgId>EB79C3D1FF1911D785138B604A511DAD</SIF_RequestMsgId> <SIF_PacketNumber>1</SIF_PacketNumber> <SIF_MorePackets>No</SIF_MorePackets> <SIF_ObjectData> <SIF_ReportObject RefId="B234516384746B387459000F84723A00"> <ReportInfo ReportManifestRefId="B234516384746B387459000F84723A00"> <CalculationDate>2003-08-19</CalculationDate> <SubmissionNumber>1</SubmissionNumber> <SubmissionReason>Initial</SubmissionReason> <ReportSubmitterInfo> <SubmitterName>Wasatch School District 441</SubmitterName> <SubmitterDepartment>Central Data Services Center</SubmitterDepartment> <ContactInfo> <Name Type="LGL"> <Title>Mr</Title> <FamilyName>Miller</FamilyName> <GivenName>James</GivenName> <MiddleName>Frank</MiddleName> <Suffix>Jr.</Suffix> <FullName>Mr James Frank Miller Jr.</FullName> </Name> <PositionTitle>Business Manager</PositionTitle> <Role>School Information Contact Point</Role> <Address Type="0123" Role="012B"> <Street> <Line1>23 Nicholson Street</Line1> </Street> <City>Carnegie</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>3004</PostalCode> <GridLocation> <Latitude>23.9876</Latitude> <Longitude>-98.8765</Longitude> </GridLocation> </Address> <EmailList> <Email Type="01">jmiller@lsc.vic.edu.au</Email> <Email Type="02">jmiller@yahoo.com.au</Email> </EmailList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2000</Number> <Extension>72345</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> </PhoneNumberList> </ContactInfo> <PhoneNumber Type="0096"> <Number>(555) 555-1010</Number> </PhoneNumber> <SubmitterNotes>Wasatch School District's Vertical Reporting policies can be found on-line at http://www.wasatchsif.org/policies/vr.html. Please contact Patricia Reynolds, Central Data Services Center, at (555) 555-1010 for more information.</SubmitterNotes> </ReportSubmitterInfo> </ReportInfo> </SIF_ReportObject> <SIF_ReportObject RefId="B234516384746B387459000F84723A00"> <ReportData> <StudentPersonal RefId="5D1F2390F33F11D7B64CD17E020C45AB" /> </ReportData> </SIF_ReportObject> <SIF_ReportObject RefId="B234516384746B387459000F84723A00"> <ReportData> <StudentSchoolEnrollment RefId="5DF9A510F33F11D7B64C970DE3494F35" /> </ReportData> </SIF_ReportObject> <SIF_ReportObject RefId="B234516384746B387459000F84723A00"> <ReportData> <SchoolInfo RefId="56E86900F33F11D7B64CBCCE0CB2E03A" /> </ReportData> </SIF_ReportObject> </SIF_ObjectData> </SIF_Response> </SIF_Message>
Example 6.3.27-1: SIF_ReportObject

### 6.3.28 StaffAssignment

This object defines information related to a staff member's assignment(s); commonly, this will be a school assignment.

SIF_Events are reported for this object.

Figure 6.3.28-1: StaffAssignment

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StaffAssignment |  | This object defines information related to a staff member's assignment(s); commonly, this will be a school assignment. |
@ | RefId | M | The GUID that uniquely identifies a particular staff assignment. | RefIdType
| SchoolInfoRefId | M | The ID (GUID) that identifies the school where the staff member is assigned. | IdRefType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., `2007`). | SchoolYear
| StaffPersonalRefId | M | ID (GUID) of this staff member, as represented in the StaffPersonal object. | IdRefType
| Description | O | Short assignment description | xs:normalizedString
| PrimaryAssignment | M | Is this the staff member's primary assignment? Note: There must be one and only one instance of the object with a `Yes` value in this element per school year. | AUCodeSetsYesOrNoCategoryType
| JobStartDate | O | This is the date from which the staff assignment is valid (inclusive). | xs:date
| JobEndDate | O | This is the date through which the staff assignment is valid (inclusive). | xs:date
| JobFTE | O | Full-time job equivalent ratio for this assignment. (Format is x.xx; an employee who is full-time and who is 50% of their time on this assignment would be represented as 0.50) | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 2
| JobFunction | O | The purpose of the activities as related to students. | xs:string
| StaffSubjectList | O | Subject(s) Staff member is eligible to teach. | List
| StaffSubjectList/StaffSubject | MR | This element contains Staff subjects they are eligible to teach together with the teaching preference. |
| StaffSubjectList/StaffSubject/ PreferenceNumber | M | Priority of Subject to Teach. | xs:unsignedInt
| StaffSubjectList/StaffSubject/ SubjectLocalId | O | Local Subject Id | LocalId
| StaffSubjectList/StaffSubject/ TimeTableSubjectRefId | O | RefId of TimeTableSubject | RefIdType
| StaffActivity | O | The purpose of the Teacher's role as related to students. Equivalent to 'JobFunction' in US Object. |
| StaffActivity/Code | M | Code representing the type of staff activity undertaken. | AUCodeSetsStaffActivityType
| StaffActivity/OtherCodeList | O |  | OtherCodeList
| YearLevels | O | Year level(s) that the teacher is allowed to teach. | YearLevels
| CasualReliefTeacher | O | Is this teacher a casual relief teacher CRT? | AUCodeSetsYesOrNoCategoryType
| Homegroup | O | The name of the homegroup the staff member is assigned to. | xs:normalizedString
| House | O | The name of the house the staff member is assigned to. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.28-1: StaffAssignment
<StaffAssignment RefId="D3E34B359D75101A8C3D00AA001A1652"> <SchoolInfoRefId>A8C3D3E34B359D75101D00AA001A1652</SchoolInfoRefId> <SchoolYear>2008</SchoolYear> <StaffPersonalRefId>D3E34B359D75101A8C3D00AA001A1651</StaffPersonalRefId> <Description>VCE English Teacher</Description> <PrimaryAssignment>Y</PrimaryAssignment> <JobStartDate>2000-09-05</JobStartDate> <JobEndDate>2001-06-25</JobEndDate> <JobFTE>1.00</JobFTE> <JobFunction>Teacher</JobFunction> <StaffSubjectList> <StaffSubject> <PreferenceNumber>1</PreferenceNumber> <SubjectLocalId>English</SubjectLocalId> </StaffSubject> <StaffSubject> <PreferenceNumber>2</PreferenceNumber> <SubjectLocalId>Mathematics</SubjectLocalId> </StaffSubject> <StaffSubject> <PreferenceNumber>3</PreferenceNumber> <SubjectLocalId>Science</SubjectLocalId> </StaffSubject> </StaffSubjectList> <YearLevels> <YearLevel> <Code>11</Code> </YearLevel> <YearLevel> <Code>12</Code> </YearLevel> </YearLevels> <CasualReliefTeacher>N</CasualReliefTeacher> </StaffAssignment>
Example 6.3.28-1: StaffAssignment

### 6.3.29 StaffPersonal

This object contains all the personal information relating to a staff member, who might be a teacher or other employee of the school or district.

SIF_Events are reported for this object.

Figure 6.3.29-1: StaffPersonal

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StaffPersonal |  | This object contains all the personal information relating to a staff member, who might be a teacher or other employee of the school or district. |
@ | RefId | M | The GUID of the staff member. | RefIdType
| LocalId | M | The locally-assigned identifier for this staff member. | LocalId
| StateProvinceId | O | The state-assigned identifier for this staff member. | StateProvinceId
| ElectronicIdList | O | Electronic identifier(s) associated with this entity. | ElectronicIdList
| OtherIdList | O | Lists all "other" identifiers associated with the staff member. | List
| OtherIdList/OtherId | MR | Lists an "other" identifier associated with the staff member. | xs:normalizedString
@ | Type | M | Code that defines the type of this other ID. | xs:normalizedString
| PersonInfo | M | Personal Information | PersonInfo
| Title | O | The staff member's title. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.29-1: StaffPersonal
<StaffPersonal RefId="D3E34F419D75101A8C3D00AA001A1652"> <LocalId>946379881</LocalId> <StateProvinceId>C2345681</StateProvinceId> <ElectronicIdList> <ElectronicId Type="01">206655</ElectronicId> </ElectronicIdList> <OtherIdList> <OtherId Type="0004">333333333</OtherId> </OtherIdList> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> <OtherNames> <Name Type="AKA"> <FamilyName>Anderson</FamilyName> <GivenName>Samuel</GivenName> <FullName>Samuel Anderson</FullName> </Name> <Name Type="PRF"> <FamilyName>Rowinski</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Rowinski </FullName> </Name> </OtherNames> <Demographics> <IndigenousStatus>3</IndigenousStatus> <Sex>1</Sex> <BirthDate>1990-09-26</BirthDate> <BirthDateVerification>1004</BirthDateVerification> <PlaceOfBirth>Clayton</PlaceOfBirth> <StateOfBirth>VIC</StateOfBirth> <CountryOfBirth>1101</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>8104</CountryOfCitizenship> <CountryOfCitizenship>1101</CountryOfCitizenship> </CountriesOfCitizenship> <CountriesOfResidency> <CountryOfResidency>8104</CountryOfResidency> <CountryOfResidency>1101</CountryOfResidency> </CountriesOfResidency> <CountryArrivalDate>1990-09-26</CountryArrivalDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> <EnglishProficiency> <Code>1</Code> </EnglishProficiency> <LanguageList> <Language> <Code>0001</Code> <LanguageType>1</LanguageType> </Language> </LanguageList> <DwellingArrangement> <Code>1671</Code> </DwellingArrangement> <Religion> <Code>2013</Code> </Religion> <ReligiousEventList> <ReligiousEvent> <Type>Baptism</Type> <Date>2000-09-01</Date> </ReligiousEvent> <ReligiousEvent> <Type>Christmas</Type> <Date>2009-12-24</Date> </ReligiousEvent> </ReligiousEventList> <ReligiousRegion>The Religion Region</ReligiousRegion> <PermanentResident>P</PermanentResident> <VisaSubClass>101</VisaSubClass> <VisaStatisticalCode>05</VisaStatisticalCode> </Demographics> <AddressList> <Address Type="0123" Role="012A"> <Street> <Line1>Unit1/10</Line1> <Line2>Barkley Street</Line2> </Street> <City>Yarra Glenn</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> <Address Type="0123A" Role="1073"> <Street> <Line1>34 Term Address Street</Line1> </Street> <City>Home Town</City> <StateProvince>WA</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> </AddressList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2289</Number> <Extension>72289</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0437-765-234</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">fsmith@yahoo.com</Email> <Email Type="02">freddy@gmail.com</Email> </EmailList> </PersonInfo> <Title>Principal</Title> </StaffPersonal>
Example 6.3.29-1: StaffPersonal

### 6.3.30 StudentActivityInfo

Co-curricular or extra-curricular activities (e.g., student organizations, inter-school sports, athletics, publications, band, orchestra, and service activities) in which students may participate.

SIF_Events are reported for this object.

Figure 6.3.30-1: StudentActivityInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentActivityInfo |  | Co-curricular or extra-curricular activities (e.g., student organizations, inter-school sports, athletics, publications, band, orchestra, and service activities) in which students may participate. |
@ | RefId | M | The ID (GUID) that uniquely identifies the instance of the object. | RefIdType
| Title | M | Name of the co-curricular or extra-curricular activity. | xs:normalizedString
| Description | O | The description of the co-curricular or extra-curricular activity. | xs:normalizedString
| StudentActivityType | M | Information regarding the co-curricular or extra-curricular activity. |
| StudentActivityType/Code | M | Code identifying the co-curricular or extra-curricular activity. | AUCodeSetsActivityInvolvementCodeType
| StudentActivityType/OtherCodeList | O |  | OtherCodeList
| StudentActivityLevel | O | A description of the separation of level in the activity (e.g.,House, Inter-school, Club, State, National). | xs:normalizedString
| YearLevels | O | Collection of grade levels applicable to this co-curricular or extra-curricular activity. | YearLevels
| CurricularStatus | O | An indication of the degree to which an activity is related to a student's curriculum. | AUCodeSetsActivityTypeType
| Location | O | Location where the activity takes place. | Location
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.30-1: StudentActivityInfo
<StudentActivityInfo RefId="6472B2610947583A463DBB345291B001"> <Title>Book Club</Title> <Description>Group of middle school students promoting reading</Description> <StudentActivityType> <Code>6011</Code> <OtherCodeList> <OtherCode Codeset="Local">MBook</OtherCode> </OtherCodeList> </StudentActivityType> <StudentActivityLevel>Middle School</StudentActivityLevel> <YearLevels> <YearLevel> <Code>5</Code> </YearLevel> <YearLevel> <Code>6</Code> </YearLevel> <YearLevel> <Code>7</Code> </YearLevel> <YearLevel> <Code>8</Code> </YearLevel> </YearLevels> <CurricularStatus>0750</CurricularStatus> <Location Type="Classroom"> <LocationName>Beaconhills Middle School Library</LocationName> <LocationRefId SIF_RefObject="RoomInfo">947582610947583ACEB2BB345291BAAA</LocationRefId> </Location> </StudentActivityInfo>
Example 6.3.30-1: StudentActivityInfo

### 6.3.31 StudentActivityParticipation

This object provides information on a co-curricular or extra-curricular activity in which a student participates during a given school year.

SIF_Events are reported for this object.

Figure 6.3.31-1: StudentActivityParticipation

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentActivityParticipation |  | This object provides information on a co-curricular or extra-curricular activity in which a student participates during a given school year. |
@ | RefId | M | The ID (GUID) that uniquely identifies the instance of the object. | RefIdType
| StudentPersonalRefId | M | GUID that identifies the student participating in the activity. | IdRefType
| StudentActivityInfoRefId | M | GUID that identifies the activity in which the student participates. | IdRefType
| SchoolYear | O | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | SchoolYear
| ParticipationComment | O | Comment related to the student's participation in the activity. | xs:string
| StartDate | O | This is the date which the activity participation is valid (inclusive). | xs:date
| EndDate | O | This is the date through which the activity participation is valid (inclusive). If element is supported by the publisher/responder, should contain a date if the student withdraws from the activity before the end of the school year. | xs:date
| Role | O | Specific role the student plays in the activity (e.g., band leader, student body president). | xs:normalizedString
| RecognitionList | O | List of awards and other types of recognition given to the student for this activity. | List
| RecognitionList/Recognition | MR | The nature of recognition given to the student for the successful completion of work in a co-curricular or extra-curricular activity. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.31-1: StudentActivityParticipation
<StudentActivityParticipation RefId="9ECC96830E02406F926C1C4D3542D122"> <StudentPersonalRefId>646C5D4AC8294886A02B971695C7BC06</StudentPersonalRefId> <StudentActivityInfoRefId>6472B2610947583A463DBB345291B001</StudentActivityInfoRefId> <SchoolYear>2009</SchoolYear> <ParticipationComment>First year of participation</ParticipationComment> <StartDate>2008-09-01</StartDate> <Role>Team member</Role> <RecognitionList> <Recognition>0750</Recognition> </RecognitionList> </StudentActivityParticipation>
Example 6.3.31-1: StudentActivityParticipation

### 6.3.32 StudentAttendanceSummary

This object provides a summary of a student's daily attendance and membership information for a given school during the time period between the StartDate and EndDate, inclusive. As such, there may be multiple instances of this object for a student in a school over the course of a school year.

SIF_Events are not reported for this object.

Figure 6.3.32-1: StudentAttendanceSummary

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentAttendanceSummary |  | This object provides a summary of a student's daily attendance and membership information for a given school during the time period between the StartDate and EndDate, inclusive. As such, there may be multiple instances of this object for a student in a school over the course of a school year. |
@ | StudentPersonalRefId | M | The ID (GUID) of the student for whom this attendance information is being reported. | IdRefType
@ | SchoolInfoRefId | M | The ID (GUID) of the school for which this attendance information is being reported. | IdRefType
@ | SchoolYear | M | School year for which the information is applicable. | SchoolYear
@ | StartDate | M | Starting date of this attendance reporting period. | xs:date
@ | EndDate | M | Ending date of this attendance reporting period. | xs:date
| StartDay | O | Number of the school day represented in StartDate. | xs:unsignedInt
| EndDay | O | Number of the school day represented in EndDate. | xs:unsignedInt
| FTE | O | Full time equivalent numeric value of the student's course load during this attendance period, expressed in decimal form, where 1.00 represents a full time enrollment. | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 2
| DaysAttended | M | The number of days the student attended school when school was in session between the StartDate and EndDate, inclusive. | xs:decimal
| ExcusedAbsences | M | The number of days the student was absent from school with a valid excuse when school was in session between the StartDate and EndDate, inclusive. | xs:decimal
| UnexcusedAbsences | M | The number of days the student was absent from school without a valid excuse when school was in session between the StartDate and EndDate, inclusive. | xs:decimal
| DaysTardy | O | The number of days the student was tardy when school was in session between the StartDate and EndDate, inclusive. | xs:decimal
| DaysInMembership | M | The number of days the student was present plus the number of days the student was absent when school was in session during the period between the StartDate and EndDate, inclusive. | xs:decimal
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.32-1: StudentAttendanceSummary
<StudentAttendanceSummary StudentPersonalRefId="D3476FAE8647384BDA2431EDA3583211" SchoolInfoRefId="CA285746359D75101A8C36432A901A16" SchoolYear="2005" StartDate="2004-08-30" EndDate="2005-06-10"> <StartDay>1</StartDay> <EndDay>180</EndDay> <FTE>1.00</FTE> <DaysAttended>178</DaysAttended> <ExcusedAbsences>2</ExcusedAbsences> <UnexcusedAbsences>0</UnexcusedAbsences> <DaysTardy>3</DaysTardy> <DaysInMembership>180</DaysInMembership> </StudentAttendanceSummary>
Example 6.3.32-1: StudentAttendanceSummary

### 6.3.33 StudentContactPersonal

This object contains information about the people who are referenced as student contacts.

SIF_Events are reported for this object.

Figure 6.3.33-1: StudentContactPersonal

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentContactPersonal |  | This object contains information about the people who are referenced as student contacts. |
@ | RefId | M | The ID (GUID) that uniquely identifies the instance of the object. | RefIdType
| LocalId | O | The locally-assigned identifier for this person. Note: LocalId may be used as a unique person identifier rather than a unique contact identifier. In this case there may be more than one StudentContactPersonal instance with the same LocalId. | LocalId
| OtherIdList | O | Lists all "other" identifiers associated with the student. | List
| OtherIdList/OtherId | MR | Lists an "other" identifier associated with the student. | xs:normalizedString
@ | Type | M | Code that defines the type of this other ID. | xs:normalizedString
| PersonInfo | M | Personal Information | PersonInfo
| EmploymentType | O | Code that defines employment type. This is compulsory for Parents or Guardians of the Student. | AUCodeSetsEmploymentTypeType
| SchoolEducationalLevel | O | The highest level of education completed by the contact person. | EducationalLevel
| NonSchoolEducation | O | This reflects the level of the Contact’s Non-School Education. | AUCodeSetsNonSchoolEducationType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.33-1: StudentContactPersonal
<StudentContactPersonal RefId="7C834EA9EDA12090347F83297E1C290F"> <LocalId>P1234567</LocalId> <OtherIdList> <OtherId Type="Health Care Card">098765</OtherId> <OtherId Type="Seniors Card">123456789</OtherId> </OtherIdList> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> <OtherNames> <Name Type="AKA"> <FamilyName>Anderson</FamilyName> <GivenName>Samuel</GivenName> <FullName>Samuel Anderson</FullName> </Name> <Name Type="PRF"> <FamilyName>Rowinski</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Rowinski </FullName> </Name> </OtherNames> <Demographics> <IndigenousStatus>3</IndigenousStatus> <Sex>1</Sex> <BirthDate>1990-09-26</BirthDate> <BirthDateVerification>1004</BirthDateVerification> <PlaceOfBirth>Clayton</PlaceOfBirth> <StateOfBirth>VIC</StateOfBirth> <CountryOfBirth>1101</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>8104</CountryOfCitizenship> <CountryOfCitizenship>1101</CountryOfCitizenship> </CountriesOfCitizenship> <CountriesOfResidency> <CountryOfResidency>8104</CountryOfResidency> <CountryOfResidency>1101</CountryOfResidency> </CountriesOfResidency> <CountryArrivalDate>1990-09-26</CountryArrivalDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> <EnglishProficiency> <Code>1</Code> </EnglishProficiency> <LanguageList> <Language> <Code>0001</Code> <LanguageType>1</LanguageType> </Language> </LanguageList> <DwellingArrangement> <Code>1671</Code> </DwellingArrangement> <Religion> <Code>2013</Code> </Religion> <ReligiousEventList> <ReligiousEvent> <Type>Baptism</Type> <Date>2000-09-01</Date> </ReligiousEvent> <ReligiousEvent> <Type>Christmas</Type> <Date>2009-12-24</Date> </ReligiousEvent> </ReligiousEventList> <ReligiousRegion>The Religion Region</ReligiousRegion> <PermanentResident>P</PermanentResident> <VisaSubClass>101</VisaSubClass> <VisaStatisticalCode>05</VisaStatisticalCode> </Demographics> <AddressList> <Address Type="0123" Role="012B"> <Street> <Line1>Unit1/10</Line1> <Line2>Barkley Street</Line2> </Street> <City>Yarra Glenn</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> <Address Type="0123A" Role="013A"> <Street> <Line1>34 Term Address Street</Line1> </Street> <City>Home Town</City> <StateProvince>WA</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> </AddressList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2289</Number> <Extension>72289</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0437-765-234</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">fsmith@yahoo.com</Email> <Email Type="02">freddy@gmail.com</Email> </EmailList> </PersonInfo> <EmploymentType>4</EmploymentType> <SchoolEducationalLevel>3</SchoolEducationalLevel> <NonSchoolEducation>6</NonSchoolEducation> </StudentContactPersonal>
Example 6.3.33-1: StudentContactPersonal

### 6.3.34 StudentContactRelationship

This object defines a relationship between a contact person and a student.

SIF_Events are reported for this object.

Figure 6.3.34-1: StudentContactRelationship

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentContactRelationship |  | This object defines a relationship between a contact person and a student. |
@ | StudentPersonalRefId | M | GUID that identifies the student for the relationship. | RefIdType
@ | StudentContactPersonalRefId | M | GUID that identifies the contact person for the relationship. | RefIdType
| Relationship | M | Defines the relationship of the contact to the student. | Relationship
| ParentRelationshipStatus | O | Confirms whether or not this contact defined in the relationship is to be tracked for MCEEDYCA Data Implementation Manual Reporting. | values: Parent1 Parent2 NotForReporting
| HouseholdList | O |  | List
| HouseholdList/Household | MR | Repeatable element containing the ID of a household. | LocalId
| ContactFlags | C | Contains Yes/No characteristics of the contact person's role. Provide a `Yes` value for all that apply. At least one of the child elements of `ContactFlags` must have a `Yes` value. Do not publish the `StudentContactRelationship` instance if one of the child elements does not have a `Yes` value. |
| ContactFlags/ParentLegalGuardian | C | Does the individual have parental or legal guardianship responsibility for the student? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/PickupRights | C | This element tells whether or not the contact has pickup rights. | AUCodeSetsYesOrNoCategoryType
| ContactFlags/LivesWith | C | Does the student live with this contact? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/AccessToRecords | C | Does this contact have access to the student's records? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/EmergencyContact | C | Should this contact be notified in case of emergency? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/HasCustody | C | Does this contact have or share custody of the student? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/DisciplinaryContact | C | Is this person to be contacted in case of disciplinary action? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/PrimaryCareProvider | C | Does this person provide daily living or personal assistance to the student? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/FeesBilling | C | Is this the contact responsible for Payment of Fees? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/FamilyMail | C | Does this person receive family mail? | AUCodeSetsYesOrNoCategoryType
| ContactFlags/InterventionOrder | C | Is there an Intervention Order against this Contact? | AUCodeSetsYesOrNoCategoryType
| MainlySpeaksEnglishAtHome | O | Is English the main language spoken at home? | AUCodeSetsYesOrNoCategoryType
| ContactSequence | O | Number indicating the order in which the person should be contacted. | xs:unsignedInt
| ContactSequenceSource | O | Indicates the source who provided the contact sequence order. | AUCodeSetsSourceCodeTypeType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.34-1: StudentContactRelationship
<StudentContactRelationship StudentPersonalRefId="DEE34B359D75101A8C3D00AA001A1652" StudentContactPersonalRefId="6472B2610947583A463DBB345291B001"> <Relationship> <Code>01</Code> </Relationship> <HouseholdList> <Household>FamilyA</Household> <Household>FamilyB</Household> </HouseholdList> <ContactFlags> <ParentLegalGuardian>Y</ParentLegalGuardian> <PickupRights>Y</PickupRights> <LivesWith>N</LivesWith> <AccessToRecords>U</AccessToRecords> <EmergencyContact>Y</EmergencyContact> <HasCustody>N</HasCustody> <DisciplinaryContact>N</DisciplinaryContact> <PrimaryCareProvider>U</PrimaryCareProvider> <FeesBilling>Y</FeesBilling> <FamilyMail>Y</FamilyMail> <InterventionOrder>N</InterventionOrder> </ContactFlags> <MainlySpeaksEnglishAtHome>U</MainlySpeaksEnglishAtHome> <ContactSequence>1</ContactSequence> <ContactSequenceSource>P</ContactSequenceSource> </StudentContactRelationship>
Example 6.3.34-1: StudentContactRelationship

### 6.3.35 StudentDailyAttendance

This object provides daily attendance information for a particular student in a particular school on a particular date.

SIF_Events are reported for this object.

Figure 6.3.35-1: StudentDailyAttendance

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentDailyAttendance |  | This object provides daily attendance information for a particular student in a particular school on a particular date. |
@ | RefId | M | The ID (GUID) assigned to uniquely identify this attendance record. | RefIdType
| StudentPersonalRefId | M | The ID (GUID) of the student for whom this attendance information is being reported. | IdRefType
| SchoolInfoRefId | M | The ID (GUID) of the school for which this attendance information is being reported. | IdRefType
| Date | M | The calendar date to which this attendance information relates. | xs:date
| SchoolYear | M | School year for which this enrollment is applicable, expressed as the four-digit year in which the school year ends (e.g. `2007`). | SchoolYear
| DayValue | O | Value of a day this instance, represents. | AUCodeSetsDayValueCodeType
| AttendanceCode | M | Locally defined code for attendance. | AttendanceCode
| AttendanceStatus | M | Approved or Unapproved status of this attendance code. | AUCodeSetsAttendanceStatusType
| TimeIn | C | The time the student entered or returned to school. Must be provided if ‘Partial’ chosen for DayValue. | xs:time
| TimeOut | C | The time the student left school. Must be provided if ‘Partial’ chosen for DayValue.. | xs:time
| AbsenceValue | C | Must be provided if the DayValue is "Partial" or "Other". The amount of absence represented by AttendanceCode, up to three decimal places. | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
| AttendanceNote | O | Note related to this particular attendance. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.35-1: StudentDailyAttendance
<StudentDailyAttendance RefId="2FFB63B4CFEF48208501E7D1E54555CB"> <StudentPersonalRefId>D3E34B359D75101A8C3D00AA001A1652</StudentPersonalRefId> <SchoolInfoRefId>CA285746359D75101A8C36432A901A16</SchoolInfoRefId> <Date>2002-11-01</Date> <SchoolYear>2003</SchoolYear> <DayValue>Partial</DayValue> <AttendanceCode> <Code>200</Code> <OtherCodeList> <OtherCode Codeset="Local">S</OtherCode> <OtherCode Codeset="Text">C</OtherCode> </OtherCodeList> </AttendanceCode> <AttendanceStatus>01</AttendanceStatus> <TimeIn>13:30:00</TimeIn> <TimeOut>12:05:00</TimeOut> <AttendanceNote>Left for Orthodontist appt. and returned to school afterward</AttendanceNote> </StudentDailyAttendance>
Example 6.3.35-1: StudentDailyAttendance

### 6.3.36 StudentParticipation

This object contains information pertaining to student eligibility for and participation in an individualized special program such as special education, ESL, etc.

Multiple instances of this object may be transmitted for a particular student because the student may participate in multiple programs and because the details of a student's participation in a given program may change over time. A separate instance of this object must be generated for each program in which the student participates, and the `ProgramType` element is used to identify the particular program. In addition, each time the student's participation profile changes for a particular program, a new instance of this object must be generated with the appropriate value in the `ProgramType` element, the effective date of the new profile in `StudentParticipationAsOfDate`, and a new `RefId`.

SIF_Events are reported for this object.

Figure 6.3.36-1: StudentParticipation

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentParticipation |  | This object contains information pertaining to student eligibility for and participation in an individualized special program such as special education, ESL, etc. Multiple instances of this object may be transmitted for a particular student because the student may participate in multiple programs and because the details of a student's participation in a given program may change over time. A separate instance of this object must be generated for each program in which the student participates, and the `ProgramType` element is used to identify the particular program. In addition, each time the student's participation profile changes for a particular program, a new instance of this object must be generated with the appropriate value in the `ProgramType` element, the effective date of the new profile in `StudentParticipationAsOfDate`, and a new `RefId`. |
@ | RefId | M | This is the unique identification code | RefIdType
| StudentPersonalRefId | M | The GUID of the student that this object is linked to. | IdRefType
| StudentParticipationAsOfDate | M | Effective date (NOT the entry date) of this `StudentParticipation` instance for the identified student and program. Each time there is a change to the student's program participation profile, a new instance of this object is to be generated with the appropriate `StudentParticipationAsOfDate` and a new `RefId`. | xs:date
| ProgramType | O | Identifies the individualised program for which the student's participation is described in this instance | AUCodeSetsStudentFamilyProgramTypeType
| ProgramFundingSources | O | List of funding sources | List
| ProgramFundingSources/ProgramFundingSource | MR | Funding source of the special program |
| ProgramFundingSources/ProgramFundingSource/ Code | M | Funding source for the program, may be more than one. | AUCodeSetsProgramFundingSourceCodeType
| ProgramFundingSources/ProgramFundingSource/ OtherCodeList | O |  | OtherCodeList
| ManagingSchool | M | The GUID of the school responsible for coordinating the student's program participation. | IdRefType
@ | SIF_RefObject | M |  | values: SchoolInfo
| ReferralDate | O | Date student was referred for evaluation/program participation. | xs:date
| ReferralSource | O |  |
| ReferralSource/Code | M | The method by which a student was identified for referral to a particular program. | AUCodeSets0792IdentificationProcedureType
| ReferralSource/OtherCodeList | O |  | OtherCodeList
| ProgramStatus | O |  | ProgramStatus
| GiftedEligibilityCriteria | O | Eligible for Gifted / Talented program? | AUCodeSetsYesOrNoCategoryType
| EvaluationParentalConsentDate | O | Date parent(s) consented to completion of evaluation of child for program participation. | xs:date
| EvaluationDate | O | Date the evaluation/assessment process for student was completed. | xs:date
| EvaluationExtensionDate | O | Actual date by which evaluation must be completed (for state use in determining timeliness in event that parent and LEA agreed to an extension beyond normal state deadline). | xs:date
| ExtensionComments | O | Contains any comments on the extension. Optional even if an EvaluationExtensionDate is present. | xs:string
| ReevaluationDate | O | Date students will be reevaluated for continued placement in a support program(s). | xs:date
| ProgramEligibilityDate | O | Date student is eligible for beginning the support program(s). | xs:date
| ProgramPlanDate | O | Date the most recent program plan was completed and approved by the team responsible for developing it. The date the parent consented to placement is NOREPDate. | xs:date
| ProgramPlanEffectiveDate | O | Date by which the plan must be implemented for the student. | xs:date
| NOREPDate | O | Date the Notice of Recommended Educational Placement was signed and approved by the parent / guardian of the student. | xs:date
| PlacementParentalConsentDate | O | Date the parent(s) consented to the proposed placement. | xs:date
| ProgramPlacementDate | O | Date student began the support program. | xs:date
| ExtendedSchoolYear | O | For special education, indicates whether Extended School Year (ESY) / summer services have been determined as necessary | xs:boolean
| ExtendedDay | O | For special education, indicates whether Extended School Day (ESD) services have been determined as necessary. | xs:boolean
| ProgramAvailability | O |  |
| ProgramAvailability/Code | M | Describes the availability of the program. | AUCodeSets0211ProgramAvailabilityType
| ProgramAvailability/OtherCodeList | O |  | OtherCodeList
| EntryPerson | O | Identification / name of the person who created the transaction that led to the creation of this instance of the object. | xs:normalizedString
| StudentSpecialEducationFTE | O | Calculated ratio of time the student is in a special ed setting. Values range from 0.00 to 1.00. If the student is in a special ed setting 25% of the time, the value is .25; if 100% of the time, the value is 1.00. | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 2
| ParticipationContact | O | Primary contact for this record. | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.36-1: StudentParticipation
<StudentParticipation RefId="D3E34B359D75101A8C3D00AA001A1652"> <StudentPersonalRefId>A2E34F59A742C1A4B3D11CC002B163A2</StudentPersonalRefId> <StudentParticipationAsOfDate>2006-07-13</StudentParticipationAsOfDate> <ProgramType>0240</ProgramType> <ProgramFundingSources> <ProgramFundingSource> <Code>1</Code> </ProgramFundingSource> </ProgramFundingSources> <ManagingSchool SIF_RefObject="SchoolInfo">D93F4D183A42C1A4B3D11CC002B163A2</ManagingSchool> <ParticipationContact>John Mason</ParticipationContact> </StudentParticipation>
Example 6.3.36-1: StudentParticipation

### 6.3.37 StudentPeriodAttendance

This object allows recording of period level attendance a student. The Australian StudentPeriodAttendance object differs to the US StudentPeriodAttendance object in the following ways:

- Student Period Attendance object is usually linked to a SessionInfo object (see below), but it is possible, for simple period attendance packages, to not link period attendance to a session or timetable.
- There will be one provider of the StudentPeriodAttendance within a SIF Zone in Australia. The US, in contrast, has specified objects and events to allow for multiple providers of the StudentPeriodAttendance object in a zone.

SIF_Events are reported for this object.

Figure 6.3.37-1: StudentPeriodAttendance

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentPeriodAttendance |  | This object allows recording of period level attendance a student. The Australian StudentPeriodAttendance object differs to the US StudentPeriodAttendance object in the following ways: Student Period Attendance object is usually linked to a SessionInfo object (see below), but it is possible, for simple period attendance packages, to not link period attendance to a session or timetable. There will be one provider of the StudentPeriodAttendance within a SIF Zone in Australia. The US, in contrast, has specified objects and events to allow for multiple providers of the StudentPeriodAttendance object in a zone. |
@ | RefId | M | The ID (GUID) assigned to uniquely identify this attendance record. | RefIdType
| StudentPersonalRefId | M | The GUID of the student that this attendance applies to. | IdRefType
| SchoolInfoRefId | M | The school where the attendance was recorded. Somewhat redundant, needed for requests. | IdRefType
| Date | M | The date of the attendance event. | xs:date
| SessionInfoRefId | O | The GUID of the session that this attendance applies to. | IdRefType
| TimetablePeriod | O | The period within which attendance is being reported, e.g. "4D". | xs:normalizedString
| TimeIn | O | The time the student entered or returned to this class. | xs:time
| TimeOut | O | The time the student left this class. | xs:time
| AttendanceCode | M | Code that describes the absence or attendance | AttendanceCode
| AttendanceStatus | M | Approved or Unapproved status of this attendance code. | AUCodeSetsAttendanceStatusType
| SchoolYear | O | School year for which this enrollment is applicable, expressed as the four-digit year in which the school year ends (e.g. `2007`). | SchoolYear
| AuditInfo | O | An audit trail to help determine who entered this attendance event and when. |
| AuditInfo/CreationUser | M | Information about which staff member created this attendance record. |
@ | Type | M | The role of the staff member for that created this attendance record. | values: Office Staff School Admin Parent Nurse Teacher Other
| AuditInfo/CreationUser/UserId | M | Unique identifier of the user that created the attendance record. This will depend on the user and the source. The preferred identifier would be a RefId for a StaffPersonal, StudentContact, or StudentPersonal Object. However, the user may not be associated with any of these SIF objects. In that case a unique Id given by the source should be used. | xs:normalizedString
| AuditInfo/CreationDateTime | M | The date and time of this attendance record was created. | xs:dateTime
| AttendanceComment | O | This element contains the comments that are relevant to this attendance record. | xs:string
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.37-1: StudentPeriodAttendance
<StudentPeriodAttendance RefId="98157AA013BA8C3D00AA012B359D7512"> <StudentPersonalRefId>A75A00101A8C301D02E3A05B359D0A00</StudentPersonalRefId> <SchoolInfoRefId>11737EA4301CADCA75C87214A7C46BDB</SchoolInfoRefId> <Date>2001-03-05</Date> <TimetablePeriod>P4</TimetablePeriod> <AttendanceCode> <Code>802</Code> </AttendanceCode> <AttendanceStatus>01</AttendanceStatus> </StudentPeriodAttendance>
Example 6.3.37-1: StudentPeriodAttendance

### 6.3.38 StudentPersonal

This object contains all the personal information related to the student.

SIF_Events are reported for this object.

Figure 6.3.38-1: StudentPersonal

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentPersonal |  | This object contains all the personal information related to the student. |
@ | RefId | M | The GUID of the student. | RefIdType
| AlertMessages | O |  | List
| AlertMessages/AlertMessage | MR | This is an alert message that is associated with the student. | xs:string
@ | Type | M | This attribute specifies what type of alert message this is. | values: Legal Custody, guardian, court orders (e.g. must attend school), lawsuits, etc. Discipline Student is suspended, expelled, on probation, etc. Educational academic probation, etc. Other
| MedicalAlertMessages | O |  | List
| MedicalAlertMessages/MedicalAlertMessage | MR | Medical alert associated with the student. | xs:string
@ | Severity | M | The level of severity of this medical alert. | values: Low Moderate High Severe Unknown
| LocalId | M | The locally-assigned identifier for this student. | LocalId
| StateProvinceId | O | The state-assigned identifier for this student. | StateProvinceId
| ElectronicIdList | O | Electronic identifier(s) associated with this entity. | ElectronicIdList
| OtherIdList | O | Lists all "other" identifiers associated with the student. | List
| OtherIdList/OtherId | MR | Lists an "other" identifier associated with the student. | xs:normalizedString
@ | Type | M | Code that defines the type of this other ID. | xs:normalizedString
| PersonInfo | M | Personal Information | PersonInfo
| ProjectedGraduationYear | O | Currently projected graduation year. | ProjectedGraduationYear
| OnTimeGraduationYear | O | First projected graduation year, usually determined when student is accepted into 9th grade. | OnTimeGraduationYear
| GraduationDate | O | Date student officially graduated from secondary education. | GraduationDate
| MostRecent | O | Container for elements reflecting the most recent enrollment of a student. If the student is currently enrolled in the district, the elements contain current information. |
| MostRecent/SchoolLocalId | O | Local identifier representing the school in which the student is or was most recently enrolled in the district. | LocalId
| MostRecent/HomeroomLocalId | O | Local identifier representing the current or most recent homeroom in which the student is or was most recently assigned in the district. Use the value from `RoomInfo/HomeroomNumber` if supported. If not supported, use the value from `RoomInfo/RoomNumber`. If neither is supported, use the most appropriate value from the agent’s application. | LocalId
| MostRecent/YearLevel | O | The current or most recent grade level of the student in the district. | YearLevel
| AcceptableUsePolicy | O | Does the student have a current signed Acceptable Use Policy document for system access? | AUCodeSetsYesOrNoCategoryType
| GiftedTalented | O |  | AUCodeSetsYesOrNoCategoryType
| EconomicDisadvantage | O | Does the student meet the State criteria for classification as having an economic disadvantage? | AUCodeSetsYesOrNoCategoryType
| ESL | O | Does the student meet ‘English as a Second Language Criteria’? | AUCodeSetsYesOrNoCategoryType
| YoungCarersRole | O | Is the student a carer of other family members? | AUCodeSetsYesOrNoCategoryType
| Disability | O | Does the student have funding for disability? | AUCodeSetsYesOrNoCategoryType
| IntegrationAide | O | Does the Student require an Integration Aide? | AUCodeSetsYesOrNoCategoryType
| PrePrimaryEducation | O | Care prior to kinder enrolment (eg. Family day care/home/extended care etc). | xs:normalizedString
| FirstAUSchoolEnrollment | O | Date of the first enrolment in an Australian School | xs:date
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.38-1: StudentPersonal
<StudentPersonal RefId="7C834EA9EDA12090347F83297E1C290C"> <AlertMessages> <AlertMessage Type="Legal">Mother is legal guardian</AlertMessage> </AlertMessages> <MedicalAlertMessages> <MedicalAlertMessage Severity="Severe">Student has Peanut Allergy</MedicalAlertMessage> <MedicalAlertMessage Severity="Moderate">Student has Diabetes</MedicalAlertMessage> </MedicalAlertMessages> <LocalId>S1234567</LocalId> <StateProvinceId>ABC1234</StateProvinceId> <ElectronicIdList> <ElectronicId Type="03">ZZZZZZ21</ElectronicId> <ElectronicId Type="03">ZZZZZZ22</ElectronicId> </ElectronicIdList> <OtherIdList> <OtherId Type="freetext">888rdgf</OtherId> <OtherId Type="Disability ID">1234</OtherId> </OtherIdList> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> <OtherNames> <Name Type="AKA"> <FamilyName>Anderson</FamilyName> <GivenName>Samuel</GivenName> <FullName>Samuel Anderson</FullName> </Name> <Name Type="PRF"> <FamilyName>Rowinski</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Rowinski </FullName> </Name> </OtherNames> <Demographics> <IndigenousStatus>3</IndigenousStatus> <Sex>1</Sex> <BirthDate>1990-09-26</BirthDate> <BirthDateVerification>1004</BirthDateVerification> <PlaceOfBirth>Clayton</PlaceOfBirth> <StateOfBirth>VIC</StateOfBirth> <CountryOfBirth>1101</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>8104</CountryOfCitizenship> <CountryOfCitizenship>1101</CountryOfCitizenship> </CountriesOfCitizenship> <CountriesOfResidency> <CountryOfResidency>8104</CountryOfResidency> <CountryOfResidency>1101</CountryOfResidency> </CountriesOfResidency> <CountryArrivalDate>1990-09-26</CountryArrivalDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> <EnglishProficiency> <Code>1</Code> </EnglishProficiency> <LanguageList> <Language> <Code>0001</Code> <LanguageType>1</LanguageType> </Language> </LanguageList> <DwellingArrangement> <Code>1671</Code> </DwellingArrangement> <Religion> <Code>2013</Code> </Religion> <ReligiousEventList> <ReligiousEvent> <Type>Baptism</Type> <Date>2000-09-01</Date> </ReligiousEvent> <ReligiousEvent> <Type>Christmas</Type> <Date>2009-12-24</Date> </ReligiousEvent> </ReligiousEventList> <ReligiousRegion>The Religion Region</ReligiousRegion> <PermanentResident>P</PermanentResident> <VisaSubClass>101</VisaSubClass> <VisaStatisticalCode>05</VisaStatisticalCode> </Demographics> <AddressList> <Address Type="0123" Role="2382"> <Street> <Line1>Unit1/10</Line1> <Line2>Barkley Street</Line2> </Street> <City>Yarra Glenn</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> <Address Type="0123A" Role="013A"> <Street> <Line1>34 Term Address Street</Line1> </Street> <City>Home Town</City> <StateProvince>WA</StateProvince> <Country>1101</Country> <PostalCode>9999</PostalCode> </Address> </AddressList> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2289</Number> <Extension>72289</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0437-765-234</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">fsmith@yahoo.com</Email> <Email Type="02">freddy@gmail.com</Email> </EmailList> </PersonInfo> <ProjectedGraduationYear>2014</ProjectedGraduationYear> <OnTimeGraduationYear>2012</OnTimeGraduationYear> <MostRecent> <SchoolLocalId>S1234567</SchoolLocalId> <HomeroomLocalId>hr12345</HomeroomLocalId> <YearLevel> <Code>P</Code> </YearLevel> </MostRecent> <AcceptableUsePolicy>Y</AcceptableUsePolicy> <EconomicDisadvantage>N</EconomicDisadvantage> <ESL>U</ESL> <YoungCarersRole>N</YoungCarersRole> <Disability>N</Disability> <IntegrationAide>N</IntegrationAide> </StudentPersonal>
Example 6.3.38-1: StudentPersonal

### 6.3.39 StudentSchoolEnrollment

This object defines information related to a student's enrollment. StudentSchoolEnrollment instances must not span multiple school years.

Note there is only one current home enrollment at a time per student. Only one instance of the `StudentSchoolEnrollment` object must exist for a given student with `MembershipType`=`01` (Home School) and `TimeFrame`=`C` (Current) for the time interval between `EntryDate` and `ExitDate`, inclusive.

Agents are required to re-publish a `StudentSchoolEnrollment` object `Change` event when the `TimeFrame` attribute changes, regardless of when the data entry is done. This is in addition to the practice of publishing the object `Change` event at the time the data changes in the corresponding application.

When the object is re-published, it must contain all the data in the object that is supported by the publisher.

SIF_Events are reported for this object.

Figure 6.3.39-1: StudentSchoolEnrollment

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentSchoolEnrollment |  | This object defines information related to a student's enrollment. StudentSchoolEnrollment instances must not span multiple school years. Note there is only one current home enrollment at a time per student. Only one instance of the `StudentSchoolEnrollment` object must exist for a given student with `MembershipType`=`01` (Home School) and `TimeFrame`=`C` (Current) for the time interval between `EntryDate` and `ExitDate`, inclusive. Agents are required to re-publish a `StudentSchoolEnrollment` object `Change` event when the `TimeFrame` attribute changes, regardless of when the data entry is done. This is in addition to the practice of publishing the object `Change` event at the time the data changes in the corresponding application. When the object is re-published, it must contain all the data in the object that is supported by the publisher. |
@ | RefId | M | The ID (GUID) that uniquely identifies a particular enrollment. | RefIdType
| StudentPersonalRefId | M | The ID (GUID) of the student to whom this information is linked. | IdRefType
| SchoolInfoRefId | M | The ID (GUID) of the school to which this enrollment applies. | IdRefType
| MembershipType | M | The type of this enrollment as it relates to the school identified in SchoolInfoRefId. | AUCodeSetsSchoolEnrollmentTypeType
| TimeFrame | M | The timeframe of the enrollment based on the `SIF_Date` in the `SIF_Header` of the message. For events, it is determined as of the date the event is generated. For requests and responses, it is calculated based on the date of the request. | AUCodeSetsEnrollmentTimeFrameType
| SchoolYear | M | School year for which this enrollment is applicable, expressed as the four-digit year in which the school year ends (e.g. `2007`). StudentSchoolEnrollment instances must not span multiple school years. | SchoolYear
| EntryDate | M | The date from when this enrollment is valid. | xs:date
| EntryType | O | Container elements for EntryType information |
| EntryType/Code | M | Code indicating the type of entry for this enrollment | AUCodeSetsEntryTypeType
| EntryType/OtherCodeList | O | List of other codes or strings that crosswalk to or serve as translations of the Code element paired with this common element. If Code changes and OtherCodes are supported, both Code and all associated OtherCode elements must be present. | OtherCodeList
| YearLevel | O | Year or academic level of student. | YearLevel
| Homeroom | O | Homeroom for this enrollment. | IdRefType
@ | SIF_RefObject | M | The name of the object referenced. | values: RoomInfo
| Advisor | O | Staff member assigned as an advisor. | IdRefType
@ | SIF_RefObject | M | The name of the object referenced. | values: StaffPersonal
| Counselor | O | Staff member assigned as an advisor. | IdRefType
@ | SIF_RefObject | M | The name of the object referenced. | values: StaffPersonal
| Homegroup | O | The name of the homegroup the student enrollment belongs to. | xs:normalizedString
| House | O | The name of the house the student belongs to. | xs:normalizedString
| IndividualLearningPlan | O | Does this student have an individual learning plan in place? | AUCodeSetsYesOrNoCategoryType
| Calendar | O | The calendar assigned to this enrollment. | IdRefType
@ | SIF_RefObject | M | The name of the object referenced. | values: CalendarSummary
| ExitDate | C | The last school calendar day of this enrollment. If the student has exited the school or the enrollment has a `RecordClosureReason`, `ExitDate` must have a value. | xs:date
| ExitStatus | O | Container element for exit status codes. |
| ExitStatus/Code | M | Code indicating the closure status for this enrollment. | AUCodeSetsExitWithdrawalStatusType
| ExitStatus/OtherCodeList | O |  | OtherCodeList
| ExitType | O |  |
| ExitType/Code | M | Code indicating the type of exit for this enrollment. | AUCodeSetsExitWithdrawalTypeType
| ExitType/OtherCodeList | O |  | OtherCodeList
| FTE | O | Full-time equivalent numeric value of the student's course load during this enrollment, expressed in decimal form, where 1.00 represents a full-time enrollment. | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 2
| FTPTStatus | O | An indication of whether the student is enrolled full time or part time. | AUCodeSetsFTPTStatusCodeType
| CatchmentStatus | O | Container element for location of an individual's legal residence relative to (within or outside) the boundaries of the school for this enrolment. Enrolment Catchment Status. |
| CatchmentStatus/Code | M | Code indicating the residency status for this enrollment. Code indicating Enrollment Catchment Status. | AUCodeSetsPublicSchoolCatchmentStatusType
| CatchmentStatus/OtherCodeList | O | List of other codes or strings that crosswalk to or serve as translations of the Code element paired with this common element. If Code changes and OtherCodes are supported, both Code and all associated OtherCode elements must be present. | OtherCodeList
| RecordClosureReason | O | The reason why this enrollment was closed. The EndOfYear option must be used to convey status change due to rollover activity. | values: SchoolExit TimeDependentDataChange EndOfYear
| PromotionInfo | O | Information on a student’s promotion, retention, or demotion related to this enrollment instance. |
| PromotionInfo/PromotionStatus | O | This value should be set if this enrollment instance is closed for an end-of-year closeout or a mid-year promotion or demotion. A value other than NA should be specified when the enrollment instance represents an end-of-year closeout or mid-year promotion/demotion. | values: Promoted Demoted Retained NA
| PreviousSchool | O | If the student has previously been enrolled at a school, i.e. student is transferring, the previous school number. | LocalId
| DestinationSchool | O | If the student has exited the school, the local id of the school to which the student has transferred to. | LocalId
| StudentSubjectChoiceList | O | List of Student Subject Choices where available. | List
| StudentSubjectChoiceList/ StudentSubjectChoice | MR | Subjects Students Choose |
| StudentSubjectChoiceList/ StudentSubjectChoice/PreferenceNumber | O | Subject Priority | xs:unsignedInt
| StudentSubjectChoiceList/ StudentSubjectChoice/SubjectLocalId | M | Local Subject Id | LocalId
| StudentSubjectChoiceList/ StudentSubjectChoice/StudyDescription | O | Description about Study Mode. | SubjectArea
| StudentSubjectChoiceList/ StudentSubjectChoice/OtherSchoolLocalId | O | Localid of a school where the student studies this subject if not at the home school. | LocalId
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.39-1: StudentSchoolEnrollment
<StudentSchoolEnrollment RefId="A8C3D3E34B359D75101D00AA001A1652"> <StudentPersonalRefId>D3E34B359D75101A8C3D00AA001A1652</StudentPersonalRefId> <SchoolInfoRefId>D3E34B359D75101A8C3D00AA001A1651</SchoolInfoRefId> <MembershipType>01</MembershipType> <TimeFrame>C</TimeFrame> <SchoolYear>2004</SchoolYear> <EntryDate>2004-01-29</EntryDate> <EntryType> <Code>1838</Code> </EntryType> <YearLevel> <Code>10</Code> </YearLevel> <Homeroom SIF_RefObject="RoomInfo">D7510D3E34B3591A8C3D00AA001A1651</Homeroom> <Advisor SIF_RefObject="StaffPersonal">B359D3E34D75101A8C3D00AA001A1652</Advisor> <FTE>1.00</FTE> <FTPTStatus>01</FTPTStatus> </StudentSchoolEnrollment>
Example 6.3.39-1: StudentSchoolEnrollment

### 6.3.40 StudentScoreSet

The scored results from an assessment.

SIF_Events are reported for this object.

Figure 6.3.40-1: StudentScoreSet

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentScoreSet |  | The scored results from an assessment. |
@ | RefId | M | The GUID that uniquely identifies an instance of the object. | RefIdType
| ScoreMetric | M | The metric or scale used to report the score. | AUCodeSetsAssessmentReportingMethodType
| AssessmentAdministrationRefId | M | The administration associated with this score set. | IdRefType
| StudentPersonalRefId | M | The student associated with this score set. | IdRefType
| AssessmentRegistrationRefId | O | The registration associated with this score set. | IdRefType
| Scores | M | Container for score elements. | List
| Scores/Score | OR | The score with other information related to the score. |
@ | AssessmentSubTestRefId | M | References the AssessmentSubTest that defines the score. | IdRefType
| Scores/Score/ScoreValue | M | The value of the score. | xs:normalizedString
| Scores/Score/DiagnosticStatement | O | Comment created by any logical analysis of this score. | xs:string
| Scores/Score/Description | O | This is further qualification of a Student Score. | xs:string
| Scores/Score/NumberOfResponses | O | This is the number of responses that are included with the StudentScoreSet. | xs:unsignedInt
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.40-1: StudentScoreSet
<StudentScoreSet RefId="5810E283E928459CBBA76EFE1963F784"> <ScoreMetric>0512</ScoreMetric> <AssessmentAdministrationRefId>1F971F3D414E4146932566638290E6C1</AssessmentAdministrationRefId> <StudentPersonalRefId>8F0934CC2F0448F8BBD788AA1ADE691B</StudentPersonalRefId> <Scores> <Score AssessmentSubTestRefId="E5EDAE63A04D47E49D0224A32956B074"> <ScoreValue>25</ScoreValue> <DiagnosticStatement>Shows ability to identify symmetry.</DiagnosticStatement> </Score> </Scores> </StudentScoreSet>
Example 6.3.40-1: StudentScoreSet

### 6.3.41 StudentSDTN

This object has been developed to cater for the SDTN – Student Data Transfer Note. http://www.mceecdya.edu.au/verve/_resources/ISDTN_Form_3_Transfer_Note_Oct_06.pdf The elements in this object have been developed to support the LIMF recommendations and allow two or more jurisdictions to exchange this data. http://www.aictec.edu.au/aictec/go/home/about/pid/289

SIF_Events are reported for this object.

Figure 6.3.41-1: StudentSDTN

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentSDTN |  | This object has been developed to cater for the SDTN – Student Data Transfer Note. http://www.mceecdya.edu.au/verve/_resources/ISDTN_Form_3_Transfer_Note_Oct_06.pdf The elements in this object have been developed to support the LIMF recommendations and allow two or more jurisdictions to exchange this data. http://www.aictec.edu.au/aictec/go/home/about/pid/289 |
@ | RefId | M | The GUID that uniquely identifies this SDTN Object. | RefIdType
| SnapDate | M | The date that this object was sent. | xs:date
| StudentPersonalRefId | M | The RefId of the StudentPersonal object at the sending school. | IdRefType
| PersonInfo | M | Personal Information. | PersonInfo
| SchoolInfoRefId | M | GUID that identifies the school that provided the SDTN. | IdRefType
| SchoolLocalId | O | The locally-assigned identifier for the school in the original database (sender) | LocalId
| SchoolName | M | Name of school/campus. | xs:normalizedString
| AddressList | O | The school's addresses. | AddressList
| PrincipalInfo | O | Information about the campus or school principal. | PrincipalInfo
| FurtherInformation | O |  |
| FurtherInformation/ContactName | O | The name of the person to contact for further information on this student. | NameOfRecordType
| FurtherInformation/PhoneNumberList | O | The further contact person’s phone number(s). | PhoneNumberList
| FurtherInformation/EmailList | O | The further contact person’s e-mail address(es). | EmailList
| EnrollmentDate | O | The date when the student first attended the school. | xs:date
| DepartureDate | O | The last school calendar day the student attended or sign-out date if departure is before end of school year. | xs:date
| YearLevel | O | School Year or academic level of student at departure date. | YearLevel
| ReasonForLeaving | O |  | xs:normalizedString
| PreviousSchoolsList | O | List of Previous Schools if known (other than the provider school) | List
| PreviousSchoolsList/PreviousSchool | MR | Repeatable element of previous schools information if known. (other than the provider school) |
| PreviousSchoolsList/PreviousSchool/ SchoolName | M | Previous School Name | xs:normalizedString
| PreviousSchoolsList/PreviousSchool/ ReasonLeft | O | Reason for leaving previous school if known. | xs:normalizedString
| AttendanceConcerns | O | Indicator of whether the Student had attendance concerns worth noting. | AUCodeSetsYesOrNoCategoryType
| HealthNeeds | O | Indicator of whether the Student has any Health Care Needs. | AUCodeSetsYesOrNoCategoryType
| AreasOfInterestList | O |  | List
| AreasOfInterestList/ActivityInfo | MR | Repeatable element containing activities student has an interest in or participates in. |
| AreasOfInterestList/ActivityInfo/ StudentActivityInfoRefId | O | GUID that identifies the activity in which the student participates. | IdRefType
| AreasOfInterestList/ActivityInfo/ StudentActivityDescription | M | Description of Activity Info in the Previous Schools’ zone. | xs:normalizedString
| NegotiatedCurriculumPlan | O | Does the student have a negotiated curriculum plan? | AUCodeSetsYesOrNoCategoryType
| AdjustedEducationProgram | O | Does the student have an adjusted education program? | AUCodeSetsYesOrNoCategoryType
| CareerGuidanceFileHeld | O | Does the student have a career guidance file? | AUCodeSetsYesOrNoCategoryType
| SchoolCounsellorFileHeld | O | Is there a School counsellor/psychologist file held? | AUCodeSetsYesOrNoCategoryType
| OtherLearningSupport | O | Comments describing any other required learning support, eg ESL needs. | xs:string
| AcceleratedProgram | O | Did the student participate in an accelerated learning program? | AUCodeSetsYesOrNoCategoryType
| YoungCarersRole | O | Is the student a carer of other family members? | AUCodeSetsYesOrNoCategoryType
| Literacy | O | Progress in Literacy or English according to the National Standard. | AUCodeSetsProgressLevelType
| Numeracy | O | Progress in Numeracy or Maths according to the National Standard. | AUCodeSetsProgressLevelType
| OtherLearningAreasList | O |  | List
| OtherLearningAreasList/OtherLearningArea | MR | Repeatable element of progress in other learning areas. |
| OtherLearningAreasList/OtherLearningArea/ Description | M | Description of Other Learning Area. | xs:normalizedString
| OtherLearningAreasList/OtherLearningArea/ Result | O | Progress in other learning area according to the National Standard. | AUCodeSetsProgressLevelType
| LatestStudentReportAvailable | O | Is the latest student report available? | AUCodeSetsYesOrNoCategoryType
| PastoralCare | O | Pastoral care and behaviour management |
| PastoralCare/DisciplinaryAbsences | O | Have there been any school disciplinary absences (in or out of school) in the last 12 months | AUCodeSetsYesOrNoCategoryType
| PastoralCare/IndividualBehaviourPlan | O | Is there an individual behaviour management plan | AUCodeSetsYesOrNoCategoryType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.41-1: StudentSDTN
<StudentSDTN RefId="9ECC96830E02406F926C1C4D3542D122"> <SnapDate>2009-03-01</SnapDate> <StudentPersonalRefId>646C5D4AC8294886A02B971695C7BC06</StudentPersonalRefId> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> <OtherNames> <Name Type="AKA"> <FamilyName>Anderson</FamilyName> <GivenName>Samuel</GivenName> <FullName>Samuel Anderson</FullName> </Name> <Name Type="PRF"> <FamilyName>Rowinski</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Rowinski </FullName> </Name> </OtherNames> <Demographics> <Sex>1</Sex> <BirthDate>1995-09-26</BirthDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> </Demographics> </PersonInfo> <SchoolInfoRefId>476C5D4AC8294886A02B971695C7BC06</SchoolInfoRefId> <SchoolLocalId>01011234</SchoolLocalId> <SchoolName>Lincoln Secondary College</SchoolName> <AddressList> <Address Type="0123" Role="012B"> <Street> <Line1>23 Nicholson Street</Line1> </Street> <City>Carnegie</City> <StateProvince>VIC</StateProvince> <Country>1101</Country> <PostalCode>3004</PostalCode> <GridLocation> <Latitude>23.9876</Latitude> <Longitude>-98.8765</Longitude> </GridLocation> </Address> </AddressList> <PrincipalInfo> <ContactName Type="LGL"> <Title>Mr</Title> <FamilyName>Miller</FamilyName> <GivenName>James</GivenName> <MiddleName>Frank</MiddleName> <Suffix>Jr.</Suffix> <FullName>Mr James Frank Miller Jr.</FullName> </ContactName> <ContactTitle>School Principal</ContactTitle> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2000</Number> <Extension>72345</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">jmiller@lsc.vic.edu.au</Email> <Email Type="02">jmiller@yahoo.com.au</Email> </EmailList> </PrincipalInfo> <FurtherInformation> <ContactName Type="LGL"> <Title>Mr</Title> <FamilyName>Knudson</FamilyName> <GivenName>Raymond</GivenName> <FullName>Mr Raymond Knudson</FullName> </ContactName> <PhoneNumberList> <PhoneNumber Type="0096"> <Number>03 9637-2200</Number> <Extension>72348</Extension> <ListedStatus>Y</ListedStatus> </PhoneNumber> <PhoneNumber Type="0888"> <Number>0416 123 785</Number> <ListedStatus>N</ListedStatus> </PhoneNumber> </PhoneNumberList> <EmailList> <Email Type="01">rknudson@lsc.vic.edu.au</Email> <Email Type="02">rknudson@hotmail.com</Email> </EmailList> </FurtherInformation> <EnrollmentDate>2005-01-31</EnrollmentDate> <DepartureDate>2008-12-18</DepartureDate> <YearLevel> <Code>7</Code> </YearLevel> <ReasonForLeaving>Family re-location</ReasonForLeaving> <PreviousSchoolsList> <PreviousSchool> <SchoolName>Lincoln Primary School</SchoolName> <ReasonLeft>Graduated</ReasonLeft> </PreviousSchool> </PreviousSchoolsList> <AttendanceConcerns>N</AttendanceConcerns> <HealthNeeds>N</HealthNeeds> <AreasOfInterestList> <ActivityInfo> <StudentActivityInfoRefId>6472B2610947583A463DBB345291B001</StudentActivityInfoRefId> <StudentActivityDescription>Athletics</StudentActivityDescription> </ActivityInfo> </AreasOfInterestList> <NegotiatedCurriculumPlan>N</NegotiatedCurriculumPlan> <AdjustedEducationProgram>N</AdjustedEducationProgram> <CareerGuidanceFileHeld>N</CareerGuidanceFileHeld> <SchoolCounsellorFileHeld>N</SchoolCounsellorFileHeld> <OtherLearningSupport>ESL Support Given</OtherLearningSupport> <AcceleratedProgram>N</AcceleratedProgram> <YoungCarersRole>N</YoungCarersRole> <Literacy>Below</Literacy> <Numeracy>At</Numeracy> <OtherLearningAreasList> <OtherLearningArea> <Description>Language</Description> <Result>At</Result> </OtherLearningArea> </OtherLearningAreasList> <LatestStudentReportAvailable>Y</LatestStudentReportAvailable> <PastoralCare> <DisciplinaryAbsences>N</DisciplinaryAbsences> <IndividualBehaviourPlan>N</IndividualBehaviourPlan> </PastoralCare> </StudentSDTN>
Example 6.3.41-1: StudentSDTN

### 6.3.42 StudentSnapshot

This object provides a snapshot of a student's record on a given day. All information reported in the object is reported as it appeared in the responding system on the date specified in SnapDate. It can be used for synching data across applications, for periodically loading a data warehouse, or for vertical reporting of data to a requesting authority, such as a state department of education.

SIF_Events are not reported for this object.

Figure 6.3.42-1: StudentSnapshot

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| StudentSnapshot |  | This object provides a snapshot of a student's record on a given day. All information reported in the object is reported as it appeared in the responding system on the date specified in SnapDate. It can be used for synching data across applications, for periodically loading a data warehouse, or for vertical reporting of data to a requesting authority, such as a state department of education. |
@ | SnapDate | M | The date the data snapshot was taken. Some elements are provided/calculated as of the SnapDate, and some are provided as of the date the object is requested (i.e., some can be historical and some will represent the last information available/last known value). In a SIS the following elements are provided/calculated as of the SnapDate: Age, HomeEnrollment and all its child elements. Other applications (e.g., data warehouses) may be able to provide values for other elements on various snap dates. | xs:date
@ | StudentPersonalRefId | M | The ID (GUID) of the student to whom this information relates. | IdRefType
| SchoolYear | M | School year in which the SnapDate falls, and for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g. `2007`). | SchoolYear
| Name | M | The name of the student. | Name
| LocalId | M | The locally-defined identifier for this student. | LocalId
| StateProvinceId | O | The state-assigned identifier for this student. | StateProvinceId
| Sex | O | 'Sex' is the distinction 'male' and 'female', as reported by the person. | AUCodeSetsSexCodeType
| BirthDate | O | The person's date of birth. | BirthDate
| Age | O | The age (in years) of the student on the date in SnapDate. | xs:unsignedInt
| ProjectedGraduationYear | O | Currently projected graduation year. | ProjectedGraduationYear
| OnTimeGraduationYear | O | First projected graduation year, usually determined when student is accepted into ninth grade. | OnTimeGraduationYear
| StudentSubjectChoiceList | O | List of Student Subject Choices where available. | List
| StudentSubjectChoiceList/ StudentSubjectChoice | MR | Subjects Students Choose |
| StudentSubjectChoiceList/ StudentSubjectChoice/PreferenceNumber | O | Subject Priority | xs:unsignedInt
| StudentSubjectChoiceList/ StudentSubjectChoice/SubjectLocalId | M | Local Subject Id | LocalId
| StudentSubjectChoiceList/ StudentSubjectChoice/StudyDescription | O | Description about Study Mode. | SubjectArea
| StudentSubjectChoiceList/ StudentSubjectChoice/OtherSchoolLocalId | O | Localid of a school where the student studies this subject if not at the home school. | LocalId
| HomeEnrollment | M | Enrollment-related information for the school that is responsible for reporting the student's membership/child accounting information. This is most likely the primary enrollment site for the student. |
| HomeEnrollment/StudentSchoolEnrollmentRefId | O | The ID (GUID) of the StudentSchoolEnrollment object from which the enrollment information is derived. | IdRefType
| HomeEnrollment/SchoolName | O | Name of the school. | xs:normalizedString
| HomeEnrollment/SchoolInfoRefId | C | The ID (GUID) of the school. Provide both the HomeEnrollment/SchoolInfoRefId and HomeEnrollment/LocalId elements if possible. If not, one or the other must be provided. | IdRefType
| HomeEnrollment/LocalId | C | The locally-defined identifier for this school. Provide both the HomeEnrollment/LocalId and HomeEnrollment/SchoolId elements if possible. If not, one or the other must be provided. | LocalId
| HomeEnrollment/SchoolNo | O | The state or province defined identifier for this school. | LocalId
| HomeEnrollment/YearLevel | O | Year or academic level of student. | YearLevel
| HomeEnrollment/Homeroom | O | HomeGroup this student belongs to | IdRefType
@ | SIF_RefObject | M | The name of the SIF object referenced. | values: RoomInfo
| HomeEnrollment/HomeroomNumber | O | The locally-defined identifier of that room | HomeroomNumber
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.42-1: StudentSnapshot
<StudentSnapshot SnapDate="2003-10-01" StudentPersonalRefId="A15484ED564995254A4568EFFC5100BD"> <SchoolYear>2004</SchoolYear> <Name Type="LGL"> <FamilyName>Woodall</FamilyName> <GivenName>Charles</GivenName> <MiddleName>William</MiddleName> </Name> <LocalId>1089543</LocalId> <StateProvinceId>A50321</StateProvinceId> <Sex>1</Sex> <BirthDate>1988-03-02</BirthDate> <Age>15</Age> <ProjectedGraduationYear>2007</ProjectedGraduationYear> <OnTimeGraduationYear>2006</OnTimeGraduationYear> <HomeEnrollment> <StudentSchoolEnrollmentRefId>0847987235489729AAA73011BB365EC3</StudentSchoolEnrollmentRefId> <SchoolName>Academy HS</SchoolName> <SchoolInfoRefId>834787627836AC74B05EE3066ABC9231</SchoolInfoRefId> <LocalId>ACAD</LocalId> <YearLevel> <Code>9</Code> </YearLevel> <Homeroom SIF_RefObject="RoomInfo">9475683579BA648E0548DDA8365700F4</Homeroom> <HomeroomNumber>B024</HomeroomNumber> </HomeEnrollment> </StudentSnapshot>
Example 6.3.42-1: StudentSnapshot

### 6.3.43 SummaryEnrollmentInfo

A key Australian business requirement is the ability to publish a complete student status update on demand. This status may include multiple school enrolments.

This object supports the publishing of a consolidated student update containing all school enrollments and the student’s classes at each school.

SIF_Events are reported for this object.

Figure 6.3.43-1: SummaryEnrollmentInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SummaryEnrollmentInfo |  | A key Australian business requirement is the ability to publish a complete student status update on demand. This status may include multiple school enrolments. This object supports the publishing of a consolidated student update containing all school enrollments and the student’s classes at each school. |
@ | RefId | M | The ID (GUID) that uniquely identifies the enrollment. | RefIdType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | SchoolYear
| ParentObjectRefId | M | The GUID of the related parent object | RefIdType
@ | SIF_RefObject | M |  | values: StudentPersonal StaffPersonal
| LocalId | M | The locally-defined identifier for this student/teacher. | LocalId
| StateProvinceId | O | The state-assigned identifier for this student/teacher. | StateProvinceId
| PersonInfo | M | Personal Information. | PersonInfo
| SchoolEnrollmentList | M | List of school enrollments for a Student or assignments for a Staff member. There must be at least one. | List
| SchoolEnrollmentList/SchoolEnrollment | MR | School information for the Student enrollment or Staff assignment. There must be at least one. |
| SchoolEnrollmentList/SchoolEnrollment/ SchoolName | M | Name of school/campus. | xs:normalizedString
| SchoolEnrollmentList/SchoolEnrollment/ SchoolInfoRefId | C | The ID (GUID) of the school. Provide both the SchoolInfo RefId and LocalId elements if possible. If not, one or the other must be provided. | RefIdType
| SchoolEnrollmentList/SchoolEnrollment/ SchoolLocalId | C | The locally-defined identifier for this school. Provide both the LocalId and SchoolId elements if possible. If not, one or the other must be provided. | LocalId
| SchoolEnrollmentList/SchoolEnrollment/ SchoolStateProvinceId | O | The state or province defined identifier for this school. | StateProvinceId
| SchoolEnrollmentList/SchoolEnrollment/ Student | C | Either the Staff or Student must be provided. |
| SchoolEnrollmentList/SchoolEnrollment/ Student/StudentSchoolEnrollmentRefId | M | The ID (GUID) of the StudentSchoolEnrollment object from which the enrollment information is derived. | RefIdType
| SchoolEnrollmentList/SchoolEnrollment/ Student/StudentLocalId | O | The locally-defined identifier for this Student. | LocalId
| SchoolEnrollmentList/SchoolEnrollment/ Staff | C | Either the Staff or Student must be provided. |
| SchoolEnrollmentList/SchoolEnrollment/ Staff/StaffAssignmentRefId | M | The ID (GUID) of the StaffAssignment object from which the enrollment information is derived. | RefIdType
| SchoolEnrollmentList/SchoolEnrollment/ Staff/StaffLocalId | O | The locally-defined identifier for this Staff. | LocalId
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList | O | A List of enrolments. Note these are enrolments at a class level rather than at a school level. | List
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment | MR | Enrollment at the class level. |
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ TeachingGroupRefId | O | GUID that identifies this Class as a Teaching Group. | IdRefType
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ SchoolCourseInfoRefId | O | GUID that identifies this Course for this class. | IdRefType
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ TimeTableSubjectRefId | O | GUID that identifies this Subject/Offering for this class. | IdRefType
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ LocalId | M | Local Class ID for this enrolment. Should be the same as the LocalId in the TeachingGroup | LocalId
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ ShortName | O | Short free format label that describes the class. Should be the same as the ShortName in the TeachingGroup | xs:normalizedString
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ SchoolYear | O | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | SchoolYear
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ SubjectLocalId | O | The local subject/offering code for this class. | LocalId
| SchoolEnrollmentList/SchoolEnrollment/ EnrollmentList/Enrollment/ CourseLocalId | O | The local course code for this class. | LocalId
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.43-1: SummaryEnrollmentInfo
<SummaryEnrollmentInfo RefId="9ECC96830E02406F926C1C4D3542D122"> <SchoolYear>2009</SchoolYear> <ParentObjectRefId SIF_RefObject="StudentPersonal">646C5D4AC8294886A02B971695C7BC06</ParentObjectRefId> <LocalId>01011234</LocalId> <StateProvinceId>012456M</StateProvinceId> <PersonInfo> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Fred</GivenName> <FullName>Fred Smith</FullName> </Name> <OtherNames> <Name Type="PRF"> <FamilyName>Smith</FamilyName> <GivenName>Sam</GivenName> <FullName>Sam Smith</FullName> </Name> </OtherNames> <Demographics> <Sex>1</Sex> <BirthDate>1995-09-26</BirthDate> <AustralianCitizenshipStatus>1</AustralianCitizenshipStatus> </Demographics> </PersonInfo> <SchoolEnrollmentList> <SchoolEnrollment> <SchoolName>Lilyput High School</SchoolName> <SchoolInfoRefId>9ECC96830E02406F926C1C4D3542D124</SchoolInfoRefId> <SchoolLocalId>012359</SchoolLocalId> <Student> <StudentSchoolEnrollmentRefId>99F3CC9B5CCE49EEBDEBA82CE52AC4FB</StudentSchoolEnrollmentRefId> <StudentLocalId>SMI00123</StudentLocalId> </Student> <EnrollmentList> <Enrollment> <TeachingGroupRefId>B1A081420BBB486590ABC919447C4379</TeachingGroupRefId> <LocalId>YR10 Commerce</LocalId> </Enrollment> <Enrollment> <TeachingGroupRefId>7B5542C664D94DB4B3386B3B4A8EACF3</TeachingGroupRefId> <LocalId>YR10 Core</LocalId> <SchoolYear>2009</SchoolYear> </Enrollment> </EnrollmentList> </SchoolEnrollment> <SchoolEnrollment> <SchoolName>Lily Language School</SchoolName> <SchoolInfoRefId>9DCC94830E02406F926C1C4D3542D124</SchoolInfoRefId> <SchoolLocalId>012345</SchoolLocalId> <Student> <StudentSchoolEnrollmentRefId>CC0ACB4FAD6E485FBAC07EAD8BE5E38F</StudentSchoolEnrollmentRefId> <StudentLocalId>SMI00456</StudentLocalId> </Student> <EnrollmentList> <Enrollment> <TeachingGroupRefId>74557C466A524E8D9085EB215B80865D</TeachingGroupRefId> <LocalId>YR10 French</LocalId> </Enrollment> </EnrollmentList> </SchoolEnrollment> </SchoolEnrollmentList> </SummaryEnrollmentInfo>
Example 6.3.43-1: SummaryEnrollmentInfo

### 6.3.44 SystemRole

The SystemRole Object defines the systems that a user has access to, the roles they perform within those systems, and the scope of those roles within the particular system.

The RoleScopeList is used to list the entities over which the user has access rights.

SIF_Events are reported for this object.

Figure 6.3.44-1: SystemRole

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SystemRole |  | The SystemRole Object defines the systems that a user has access to, the roles they perform within those systems, and the scope of those roles within the particular system. The RoleScopeList is used to list the entities over which the user has access rights. |
@ | RefId | M | The SIF RefId that uniquely identifies this object. | RefIdType
| SIF_RefId | M | The SIF RefId that provides the source Object for this SystemRole Object. | IdRefType
@ | SIF_RefObject | M | The type of SIF object that the SIF_RefId attribute identifies. | values: Identity StudentPersonal StaffPersonal StudentContactPersonal
| SystemContextList | M | At least one SystemContext must be provided. | List
| SystemContextList/SystemContext | MR | Details about enterprise roles for an Identity/Personal Object for subscribing systems |
@ | SystemId | M | Id of the system that this SystemContext relates to. |
| SystemContextList/SystemContext/ RoleList | O | List of Roles. | List
| SystemContextList/SystemContext/ RoleList/Role | MR | Role of the entity this object describes in the SystemContext. |
@ | RoleId | M | Role of the entity this object describes in the SystemContext. Examples Admin User | xs:normalizedString
| SystemContextList/SystemContext/ RoleList/Role/RoleScopeList | O |  | List
| SystemContextList/SystemContext/ RoleList/Role/RoleScopeList/ RoleScope | MR | Container |
| SystemContextList/SystemContext/ RoleList/Role/RoleScopeList/ RoleScope/RoleScopeName | C | The group/OU this role is applicable to. One of RoleScopeName or associated RefId must be provided. | xs:normalizedString
| SystemContextList/SystemContext/ RoleList/Role/RoleScopeList/ RoleScope/RoleScopeRefId | C | The SIF_RefId that provides the source Object for this RoleScope. One of RoleScopeName or associated RefId must be provided. | IdRefType
@ | SIF_RefObject | M | The type of SIF object that the SIF_RefId attribute identifies. | values: SchoolInfo TeachingGroup StudentActivityParticipation
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.44-1: SystemRole
<SystemRole RefId="4286194F43ED43C18EE2F0A27C4BEF86"> <SIF_RefId SIF_RefObject="Identity">23B08571E4D645C3B82A3E52E5349925</SIF_RefId> <SystemContextList> <SystemContext SystemId="LearningPlatformSystem1"> <RoleList> <Role RoleId="Admin"> <RoleScopeList> <RoleScope> <RoleScopeName>SchoolGroupName1</RoleScopeName> <RoleScopeRefId SIF_RefObject="SchoolInfo">23B08571E4D645C3B82A3E52E5349912</RoleScopeRefId> </RoleScope> <RoleScope> <RoleScopeName>ClassName1</RoleScopeName> <RoleScopeRefId SIF_RefObject="TeachingGroup">23B08571E4D645C3B82A3E52E5349945</RoleScopeRefId> </RoleScope> </RoleScopeList> </Role> </RoleList> </SystemContext> <SystemContext SystemId="ContentManagement"> <RoleList> <Role RoleId="User"> <RoleScopeList> <RoleScope> <RoleScopeName>SchoolName1</RoleScopeName> <RoleScopeRefId SIF_RefObject="StudentActivityParticipation">23B08571E4D645C3B82A3E52E5349923</RoleScopeRefId> </RoleScope> </RoleScopeList> </Role> </RoleList> </SystemContext> </SystemContextList> </SystemRole>
Example 6.3.44-1: SystemRole

### 6.3.45 TeachingGroup

This object identifies a particular Teaching Group or class in a particular a time table.

The proposed object is based on the UK B1: TeachingGroup object. For the Australian object, a subject being taught at any one year level can have more than one teaching group in any one time table. Also a teaching group can be brought together for more than one subject.

All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds.

SIF_Events are reported for this object.

Figure 6.3.45-1: TeachingGroup

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| TeachingGroup |  | This object identifies a particular Teaching Group or class in a particular a time table. The proposed object is based on the UK B1: TeachingGroup object. For the Australian object, a subject being taught at any one year level can have more than one teaching group in any one time table. Also a teaching group can be brought together for more than one subject. All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds. |
@ | RefId | M | The GUID of the TeachingGroup | RefIdType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2007"). | SchoolYear
| LocalId | M | LocalId of the Teaching Group (previously ClassIndicator). | LocalId
| ShortName | M | Short free format label that describes the group. | xs:normalizedString
| LongName | O | Longer description of required | xs:normalizedString
| Set | O | Set Number (UK) | xs:normalizedString
| Block | O | Block (UK) | xs:normalizedString
| CurriculumLevel | O | Assessment Stage eg VELS Level | xs:normalizedString
| SchoolInfoRefId | O | GUID of SchoolInfo object this teaching group belongs to. | RefIdType
| SchoolLocalId | O | Local School Id. | LocalId
| SchoolCourseInfoRefId | O | GUID of SchoolCourseInfo object this teaching group is part of. | RefIdType
| SchoolCourseLocalId | O | Local Course Id. | LocalId
| TimeTableSubjectRefId | O | GUID of TimeTableSubject object this teaching group belongs to. | RefIdType
| TimeTableSubjectLocalId | O | Local subject Id. | LocalId
| StudentList | O | List of Students in this Teaching Group | List
| StudentList/TeachingGroupStudent | MR | Students who belong to the TeachingGroup |
| StudentList/TeachingGroupStudent/ StudentPersonalRefId | O | GUID from the StudentPersonal or StudentSnapshot Object (if known), that identifies the student. | IdRefType
| StudentList/TeachingGroupStudent/ StudentLocalId | M | Local Id of the Student | LocalId
| StudentList/TeachingGroupStudent/ Name | M | Name of student | NameOfRecordType
| TeacherList | O | A List of teachers associated with the group – may or maynot include the teacher timetabled in the schedule. | List
| TeacherList/TeachingGroupTeacher | MR | Teacher associated with the Teaching group – may or may not be the teacher timetabled in the schedule |
| TeacherList/TeachingGroupTeacher/ StaffPersonalRefId | O | GUID from the StaffPersonal Object that identifies the Staff member | IdRefType
| TeacherList/TeachingGroupTeacher/ StaffLocalId | M | LocalId of the Staff member | LocalId
| TeacherList/TeachingGroupTeacher/ Name | M |  | NameOfRecordType
| TeacherList/TeachingGroupTeacher/ Association | M | Association with the Teaching Group (free format for this release) | xs:normalizedString
| MinClassSize | O | Minimum class size. | xs:integer
| MaxClassSize | O | Maximum class size | xs:integer
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.45-1: TeachingGroup
<TeachingGroup RefId="64A309DA063A2E35B359D75101A8C3D1"> <SchoolYear>2008</SchoolYear> <LocalId>20087ASPN</LocalId> <ShortName>7A SPN</ShortName> <LongName>Year 7A Maths – Space and Numbers</LongName> <Set>4</Set> <Block>6</Block> <CurriculumLevel>VELS Level 5</CurriculumLevel> <StudentList> <TeachingGroupStudent> <StudentPersonalRefId>9897466F200E4BC1B9AED1507DA15CEF</StudentPersonalRefId> <StudentLocalId>SMI001</StudentLocalId> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Peter</GivenName> </Name> </TeachingGroupStudent> <TeachingGroupStudent> <StudentPersonalRefId>7C834EA9EDA12090347F83297E1C290D</StudentPersonalRefId> <StudentLocalId>SMI002</StudentLocalId> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Jennifer</GivenName> </Name> </TeachingGroupStudent> <TeachingGroupStudent> <StudentPersonalRefId>7C834EA9EDA12090347F83297E1C290E</StudentPersonalRefId> <StudentLocalId>SMI003</StudentLocalId> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Terence</GivenName> </Name> </TeachingGroupStudent> </StudentList> <TeacherList> <TeachingGroupTeacher> <StaffPersonalRefId>A8C3A2E35B359D75101D00AA001A0000</StaffPersonalRefId> <StaffLocalId>SMI1</StaffLocalId> <Name Type="LGL"> <FamilyName>Smith</FamilyName> <GivenName>Thomas</GivenName> </Name> <Association>Class Teacher</Association> </TeachingGroupTeacher> <TeachingGroupTeacher> <StaffPersonalRefId>A8CCCCE35B359D75101D00AA001A0000</StaffPersonalRefId> <StaffLocalId>LONG2</StaffLocalId> <Name Type="LGL"> <FamilyName>Long</FamilyName> <GivenName>Tamara</GivenName> </Name> <Association>Integration Aide</Association> </TeachingGroupTeacher> </TeacherList> </TeachingGroup>
Example 6.3.45-1: TeachingGroup

### 6.3.46 TermInfo

This object provides information about a term; i.e., a reportable period of time.

SIF_Events are reported for this object.

Figure 6.3.46-1: TermInfo

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| TermInfo |  | This object provides information about a term; i.e., a reportable period of time. |
@ | RefId | M | The ID (GUID) that uniquely identifies this TermInfo entity. | RefIdType
| SchoolInfoRefId | M | The ID (GUID) that identifies the school where the term is used. | IdRefType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009"). | SchoolYear
| StartDate | M | Starting date of the term. | xs:date
| EndDate | M | Ending date of the term. | xs:date
| Description | O | Text-based description of the term. | xs:normalizedString
| RelativeDuration | O | Portion of the school year represented by this term, expressed in decimal form precise to 4 decimal places (e.g., 0.1333). | xs:decimal
xs:minInclusive | 0
xs:maxInclusive | 1
xs:fractionDigits | 4
| TermCode | O | Locally-defined code. | xs:normalizedString
| Track | O | The name, description, or code of the track that contains this term. This is used when there are multiple tracks within a school. For instance, kindergarten commonly has a different set of terms than other grades within the school. | xs:normalizedString
| TermSpan | O | What sort of Session this TermSpan equates to. | AUCodeSetsSessionTypeType
| MarkingTerm | O | Does this TermInfo represent a marking period? | AUCodeSetsYesOrNoCategoryType
| SchedulingTerm | O | Does this TermInfo represent a scheduling term? | AUCodeSetsYesOrNoCategoryType
| AttendanceTerm | O | Does this TermInfo represent an attendance term? | AUCodeSetsYesOrNoCategoryType
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.46-1: TermInfo
<TermInfo RefId="7E59D75101A80A70016375DE097A0726"> <SchoolInfoRefId>A2E35B359D75101A8C3D00AA001A0000</SchoolInfoRefId> <SchoolYear>2004</SchoolYear> <StartDate>2003-01-05</StartDate> <EndDate>2004-04-01</EndDate> <Description>Spring Semester 2004</Description> <RelativeDuration>0.1333</RelativeDuration> <TermCode>Sp2004</TermCode> <Track>PreK</Track> <TermSpan>0833</TermSpan> </TermInfo>
Example 6.3.46-1: TermInfo

### 6.3.47 TimeTable

The purpose of this object is to define a schedule or Time Table structure/skeleton for the school. The Time Table is produced by the Time Tabling software. Once the Time Table is produced, the time tabling software creates the schedule based on business rules and constraints to fit into the time table structure.

The proposed Time Table object is based on a combination of the proposed UK B6 – Timetable Cycle Object and Timetable Scope Object.

The Time Table is identified uniquely in the SIF Zone by its' GUID, School and School Year. A Time Table is linked to a particular school.

All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds.

SIF_Events are reported for this object.

Figure 6.3.47-1: TimeTable

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| TimeTable |  | The purpose of this object is to define a schedule or Time Table structure/skeleton for the school. The Time Table is produced by the Time Tabling software. Once the Time Table is produced, the time tabling software creates the schedule based on business rules and constraints to fit into the time table structure. The proposed Time Table object is based on a combination of the proposed UK B6 – Timetable Cycle Object and Timetable Scope Object. The Time Table is identified uniquely in the SIF Zone by its' GUID, School and School Year. A Time Table is linked to a particular school. All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds. |
@ | RefId | M | GUID that identifies this TimeTable object. | RefIdType
| SchoolInfoRefId | O | Optional the GUID of the SchoolInfo Object if this object is known in the zone. | IdRefType
| SchoolYear | M | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2007"). | SchoolYear
| LocalId | O | Local TimeTable ID | LocalId
| Title | M | Unique Name of the proposed Time Table | xs:normalizedString
| DaysPerCycle | M | Max Number of days per Time Table cycle | xs:unsignedInt
| PeriodsPerDay | M | Max Number of periods per Time Table Day | xs:unsignedInt
| TeachingPeriodsPerDay | O | Teaching periods per day if different to PeriodsPerDay | xs:unsignedInt
| SchoolLocalId | O | Optional Local School Id | LocalId
| SchoolName | O | The school name in plain text. | xs:normalizedString
| TimeTableCreationDate | O | Date Schedule was created or last edited. | xs:date
| StartDate | O | First day of TimeTable. | xs:date
| EndDate | O | Last day of the TimeTable. | xs:date
| TimeTableDayList | M | Container for TimeTableDays in Schedule | List
| TimeTableDayList/TimeTableDay | MR | This element identifies a ‘day’ in a TimeTable. |
| TimeTableDayList/TimeTableDay/ DayId | M | Local Time Table Identifier | LocalId
| TimeTableDayList/TimeTableDay/ DayTitle | M |  | xs:normalizedString
| TimeTableDayList/TimeTableDay/ TimeTablePeriodList | M | Title of Day eg. Monday or Day 1 | List
| TimeTableDayList/TimeTableDay/ TimeTablePeriodList/TimeTablePeriod | MR | Container for TimeTablePeriods in a Time Table Day |
| TimeTableDayList/TimeTableDay/ TimeTablePeriodList/TimeTablePeriod/ PeriodId | M | Period in Day Identifier | LocalId
| TimeTableDayList/TimeTableDay/ TimeTablePeriodList/TimeTablePeriod/ PeriodTitle | M | Title of Period eg. Session 1 or Period 1 | xs:normalizedString
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.47-1: TimeTable
<TimeTable RefId="64A309DA063A2E35B359D75101A8C3D0"> <SchoolInfoRefId>F2256EE2B67F47D6AB4794D4DEE0D0AD</SchoolInfoRefId> <SchoolYear>2008</SchoolYear> <LocalId>2008S1</LocalId> <Title>2008 Semester 1</Title> <DaysPerCycle>5</DaysPerCycle> <PeriodsPerDay>6</PeriodsPerDay> <TeachingPeriodsPerDay>5</TeachingPeriodsPerDay> <SchoolLocalId>01011234</SchoolLocalId> <SchoolName>Newest Secondary College</SchoolName> <TimeTableCreationDate>2008-02-01</TimeTableCreationDate> <StartDate>2008-01-30</StartDate> <EndDate>2008-06-20</EndDate> <TimeTableDayList> <TimeTableDay> <DayId>1</DayId> <DayTitle>Monday</DayTitle> <TimeTablePeriodList> <TimeTablePeriod> <PeriodId>1</PeriodId> <PeriodTitle>P1</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>2</PeriodId> <PeriodTitle>P2</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>3</PeriodId> <PeriodTitle>P3</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>4</PeriodId> <PeriodTitle>P4</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>5</PeriodId> <PeriodTitle>P5</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>6</PeriodId> <PeriodTitle>P6</PeriodTitle> </TimeTablePeriod> </TimeTablePeriodList> </TimeTableDay> <TimeTableDay> <DayId>2</DayId> <DayTitle>Tuesday</DayTitle> <TimeTablePeriodList> <TimeTablePeriod> <PeriodId>1</PeriodId> <PeriodTitle>P1</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>2</PeriodId> <PeriodTitle>P2</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>3</PeriodId> <PeriodTitle>P3</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>4</PeriodId> <PeriodTitle>P4</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>5</PeriodId> <PeriodTitle>P5</PeriodTitle> </TimeTablePeriod> <TimeTablePeriod> <PeriodId>6</PeriodId> <PeriodTitle>P6</PeriodTitle> </TimeTablePeriod> </TimeTablePeriodList> </TimeTableDay> </TimeTableDayList> </TimeTable>
Example 6.3.47-1: TimeTable

### 6.3.48 TimeTableCell

The purpose of this object is to identify a specific cell within a particular TimeTable. A time table is a structure that represents all the available days and times (periods) for which a particular teaching group, or subject can be scheduled.

A TimeTableCell is uniquely identified in the ZIF zone by its' GUID.

And the following must be provided at object creation:

- the timetable it belongs to,
- the subject that is being scheduled,
- the teaching group (representing the students, teachers and subject),
- the room that is allocated,
- the allocated teacher.

All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds.

SIF_Events are reported for this object.

Figure 6.3.48-1: TimeTableCell

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| TimeTableCell |  | The purpose of this object is to identify a specific cell within a particular TimeTable. A time table is a structure that represents all the available days and times (periods) for which a particular teaching group, or subject can be scheduled. A TimeTableCell is uniquely identified in the ZIF zone by its' GUID. And the following must be provided at object creation: the timetable it belongs to, the subject that is being scheduled, the teaching group (representing the students, teachers and subject), the room that is allocated, the allocated teacher. All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds. |
@ | RefId | M | The GUID of the TimeTableCell | RefIdType
| TimeTableRefId | M | The GUID of the TimeTable to which this Cell belongs | IdRefType
| TimeTableSubjectRefId | M | The GUID of the Subject that this Cell is scheduling | IdRefType
| TeachingGroupRefId | M | The GUID of the TeachingGroup being scheduled | IdRefType
| RoomInfoRefId | M | The GUID of the Resource being Scheduled | IdRefType
| StaffPersonalRefId | M | The GUID of the Staff Member being Scheduled | IdRefType
| TimeTableLocalId | O | Time Table Local Identifier | LocalId
| SubjectLocalId | O | Subject Local Id | LocalId
| TeachingGroupLocalId | O | Teaching Group | LocalId
| RoomNumber | M | Room number as presented to the user/application. | HomeroomNumber
| StaffLocalId | O | Staff LocalId | LocalId
| DayId | M | Day Id | LocalId
| PeriodId | M | Period Id within the Day Id | LocalId
| CellType | M | Type of Lesson/Session eg Teaching, Lunch etc | xs:normalizedString
| SchoolInfoRefId | O | Optional the GUID of the SchoolInfo Object if this object is known in the zone | IdRefType
| SchoolLocalId | O | Optional Local School Id | LocalId
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.48-1: TimeTableCell
<TimeTableCell RefId="64A309DA063A2E35B359D75101A8C3D1"> <TimeTableRefId>64A309DA063A2E35B359D75101A8C3D0</TimeTableRefId> <TimeTableSubjectRefId>22860091719245B4AB0CF5B9DC19DE5C</TimeTableSubjectRefId> <TeachingGroupRefId>64A309DA063A2E35B359D75101A8C3D1</TeachingGroupRefId> <RoomInfoRefId>D3E34B359D75101A8C3D00AA001A1652</RoomInfoRefId> <StaffPersonalRefId>D3E34F419D75101A8C3D00AA001A1652</StaffPersonalRefId> <TimeTableLocalId>2008S1</TimeTableLocalId> <SubjectLocalId>07AR</SubjectLocalId> <TeachingGroupLocalId>20087ASPN 2008S1</TeachingGroupLocalId> <RoomNumber>101</RoomNumber> <StaffLocalId>946379881</StaffLocalId> <DayId>1</DayId> <PeriodId>1</PeriodId> <CellType>T</CellType> <SchoolInfoRefId>D3E34B359D75101A8C3D00AA001A1652</SchoolInfoRefId> <SchoolLocalId>01011234</SchoolLocalId> </TimeTableCell>
Example 6.3.48-1: TimeTableCell

### 6.3.49 TimeTableSubject

This purpose of this object is to define and communicate the subject or distinct piece of curriculum that needs to be scheduled by the time table generator. This is a new object proposed to meet SIF-AU needs. Reviews of the existing specifications identified two relevant objects – SchoolCourseInfo, defined in SIF US 2.2 specification and SchoolGroup, defined within the SIF UK 1.1 specification. These objects appear to have some similar context but seem overly complex considering that Australian requirements, which are limited to the Student Administration System or Curriculum Delivery System providing base information to the Time Tabling application about what curriculum offerings are being proposed. When this data is sent in a Request/Response only those subjects that are relevant to be scheduled (or active), should be sent to the TimeTabling application.

All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds.

SIF_Events are reported for this object.

Figure 6.3.49-1: TimeTableSubject

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| TimeTableSubject |  | This purpose of this object is to define and communicate the subject or distinct piece of curriculum that needs to be scheduled by the time table generator. This is a new object proposed to meet SIF-AU needs. Reviews of the existing specifications identified two relevant objects – SchoolCourseInfo, defined in SIF US 2.2 specification and SchoolGroup, defined within the SIF UK 1.1 specification. These objects appear to have some similar context but seem overly complex considering that Australian requirements, which are limited to the Student Administration System or Curriculum Delivery System providing base information to the Time Tabling application about what curriculum offerings are being proposed. When this data is sent in a Request/Response only those subjects that are relevant to be scheduled (or active), should be sent to the TimeTabling application. All local ids in non-authoritative objects are optional. It is therefore up to the provider and the actual agent's design and choreography to determine whether or not to use or local ids from parent objects. There are cases in some subscribing systems where it might not possible to add RefId columns and therefore the RefId of related objects cannot be stored. For example a target system that listens to TimeTableSubject events and updates them may not be able to store the associated SchoolCourseInfoRefId with that object. The only way it can link the TimeTableSubject object with the appropriate course might be through its local course id. Having local ids that link the parent objects with the child object can simplify the agent design. Generally it is suggested to use the appropriate RefIds whenever possible and only use local ids if there is no other way to use RefIds. |
@ | RefId | M | GUID that identifies this TimeTableSubject. | RefIdType
| SubjectLocalId | M | SubjectLocalID - Distinct piece of curriculum that is to be scheduled. | LocalId
| AcademicYear | C | Subject Year Level. Either AcademicYear or AcademicYearRange must be provided. | YearLevel
| AcademicYearRange | C | Range of Academic Years subject spans. Either AcademicYear or AcademicYearRange must be provided. |
| AcademicYearRange/Start | M | Lowest year in range. | YearLevel
| AcademicYearRange/End | M | Highest year in range | YearLevel
| CourseLocalId | O | Local Course Id, if associated with a Course. | LocalId
| SchoolCourseInfoRefId | O | The GUID of the SchoolCourseInfo object. | RefIdType
| Faculty | O | Faculty | xs:normalizedString
| SubjectShortName | O | SubjectShortName | xs:normalizedString
| SubjectLongName | M | SubjectLongName | xs:normalizedString
| SubjectType | O | Core or Elective or ? | xs:normalizedString
| ProposedMaxClassSize | O | Suggested maximum class size for this subject. | xs:decimal
| ProposedMinClassSize | O | Suggested minimum class size for this subject. | xs:decimal
| SchoolInfoRefId | O | Optional the GUID of the SchoolInfo Object if this object is known in the zone. | IdRefType
| SchoolLocalId | O | Optional Local School Id | LocalId
| Semester | O | Semester, Term, or Quarter subject offered. | xs:unsignedInt
| SchoolYear | O | School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2007"). | SchoolYear
| OtherCodeList | O | Any other codes this subject is known by; eg VASS code for VCE in Vic. | OtherCodeList
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table 6.3.49-1: TimeTableSubject
<TimeTableSubject RefId="D3E34B359D75101A8C3D00AA001A1652"> <SubjectLocalId>07AR</SubjectLocalId> <AcademicYear> <Code>7</Code> </AcademicYear> <SubjectShortName>7 ART</SubjectShortName> <SubjectLongName>Year 7 Art</SubjectLongName> <SubjectType>E</SubjectType> <SchoolYear>2009</SchoolYear> </TimeTableSubject>
Example 6.3.49-1: TimeTableSubject

# Appendix A: Common Types

Common and supporting types referenced in this specification are included here as a reference.

## A.1 AbstractContentElementType

`AbstractContentPackageType` used as an element rather than an object, omitting `RefId`, `SIF_Metadata` and `SIF_ExtendedElements`.

Figure A.1-1: AbstractContentElementType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AbstractContentElementType |  | `AbstractContentPackageType` used as an element rather than an object, omitting `RefId`, `SIF_Metadata` and `SIF_ExtendedElements`. |
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| TextData | C | Contains arbitrary text, encoded in UTF-8. | xs:string
@ | MIMEType | O | Optional MIME type to specifically indicate the text type. Otherwise `text/plain` can be assumed. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| BinaryData | C | Contains the base64Binary encoding of binary or text data not encoded in UTF-8. | xs:base64Binary
@ | MIMEType | M | MIME type to indicate the content type. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference | C | References external content via a URL. |
@ | MIMEType | M | MIME type to indicate the content type to be expected when retrieving the external content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference/URL | M | Location of external content. | xs:anyURI

Table A.1-1: AbstractContentElementType

## A.2 AbstractContentPackageType

An abstract type for derived content package types, elements and objects. This structure may be used verbatim, optionally extending with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML contained in `XMLData`. Only one instance of `XMLData`, `TextData`, `BinaryData` or `Reference` can occur in a single instance.

Figure A.2-1: AbstractContentPackageType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AbstractContentPackageType |  | An abstract type for derived content package types, elements and objects. This structure may be used verbatim, optionally extending with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML contained in `XMLData`. Only one instance of `XMLData`, `TextData`, `BinaryData` or `Reference` can occur in a single instance. |
@ | RefId | M | The GUID that uniquely identifies an instance of the package. | RefIdType
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| TextData | C | Contains arbitrary text, encoded in UTF-8. | xs:string
@ | MIMEType | O | Optional MIME type to specifically indicate the text type. Otherwise `text/plain` can be assumed. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| BinaryData | C | Contains the base64Binary encoding of binary or text data not encoded in UTF-8. | xs:base64Binary
@ | MIMEType | M | MIME type to indicate the content type. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference | C | References external content via a URL. |
@ | MIMEType | M | MIME type to indicate the content type to be expected when retrieving the external content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference/URL | M | Location of external content. | xs:anyURI
| SIF_Metadata | O |  | SIF_Metadata
| SIF_ExtendedElements | O |  | SIF_ExtendedElements

Table A.2-1: AbstractContentPackageType

## A.3 BaseNameType

Base type, without attributes, for `Name` elements, primarily to allow structure to be leveraged with different `Type` attribute values.

Figure A.3-1: BaseNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| BaseNameType |  | Base type, without attributes, for `Name` elements, primarily to allow structure to be leveraged with different `Type` attribute values. |
| Title | O | A title or prefix associated with the name. If any of: Mr, Mrs, Ms, Miss, Rev, Fr, Dr, Prof, Hon, Sir, Lord, Lady - these must be as shown, otherwise free text. Note that title is not applicable to learners. | xs:normalizedString
| FamilyName | C | Family name. That part of the person's name which is used to describe family, clan, tribal group, or marital association. Note that this element is required when known. However, it may not be possible to know the family name in which case you should add the available information to the FullName element. | xs:normalizedString
| GivenName | C | Given name of the person. Note that this element is required if known. However, it may not be possible to know the given name in which case you should add the available information to the FullName element. | xs:normalizedString
| MiddleName | O | All other given or middle names, each separated with a single space character. | xs:normalizedString
| FamilyNameFirst | O | An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. | AUCodeSetsYesOrNoCategoryType
| PreferredFamilyName | O | The family name preferred most by the person (as written). | xs:normalizedString
| PreferredFamilyNameFirst | O | An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. | AUCodeSetsYesOrNoCategoryType
| PreferredGivenName | O | The given name preferred most by the person (as written). | xs:normalizedString
| Suffix | O | Textual suffix like PHD, JP, BSc. | xs:normalizedString
| FullName | C | A free text field for the complete name for display purposes. If this is associated with a StudentPersonal,StaffPersonal or StudentContactPersonal record and the FamilyName and GivenName are not both specified, then this becomes mandatory. | xs:normalizedString

Table A.3-1: BaseNameType
<Name Type="LGL"> <FamilyName>Wesson</FamilyName> <GivenName>Melanie</GivenName> <MiddleName>Joan</MiddleName> <FamilyNameFirst>N</FamilyNameFirst> <PreferredFamilyName>Wesson</PreferredFamilyName> <PreferredFamilyNameFirst>N</PreferredFamilyNameFirst> <PreferredGivenName>Mel</PreferredGivenName> </Name>
Example A.3-1: BaseNameType

## A.4 DefinedProtocolsType

The transport protocols defined in SIF.
Figure A.4-1: DefinedProtocolsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| DefinedProtocolsType |  | The transport protocols defined in SIF. | values: HTTPS HTTP

Table A.4-1: DefinedProtocolsType

## A.5 ExtendedContentType

Allows for any mixed XML in an element.
Figure A.5-1: ExtendedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ExtendedContentType |  | Allows for any mixed XML in an element. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.5-1: ExtendedContentType

## A.6 GUIDType

SIF format for a GUID.
Figure A.6-1: GUIDType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| GUIDType |  | SIF format for a GUID. | xs:token
xs:pattern | [0-9A-F]{32}

Table A.6-1: GUIDType

## A.7 IdRefType

A reference to a RefId.
Figure A.7-1: IdRefType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| IdRefType |  | A reference to a RefId. | RefIdType

Table A.7-1: IdRefType

## A.8 MonetaryAmountType

A monetary amount.

Figure A.8-1: MonetaryAmountType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| MonetaryAmountType |  | A monetary amount. | xs:decimal
@ | Currency | O | Currency code. Where omitted, defaults to implementation-defined local currency, typically `USD` in the United States. | ISO4217CurrencyNamesAndCodeElementsType

Table A.8-1: MonetaryAmountType

## A.9 MsgIdType

A message identifier.
Figure A.9-1: MsgIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| MsgIdType |  | A message identifier. | GUIDType

Table A.9-1: MsgIdType

## A.10 NameOfRecordType

Extends `BaseNameType` to allow for one `Type` attribute value, indicating the name is the name of record; serves as the primary name in some SIF objects, including `StudentPersonal`.

Figure A.10-1: NameOfRecordType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| NameOfRecordType |  | Extends `BaseNameType` to allow for one `Type` attribute value, indicating the name is the name of record; serves as the primary name in some SIF objects, including `StudentPersonal`. | BaseNameType
@ | Type | M | Code that specifies what type of name this is. Note that type “LGL” must be used here. | values: LGL Name of Record

Table A.10-1: NameOfRecordType

## A.11 ObjectNameType

An unenumerated SIF object name.

Figure A.11-1: ObjectNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ObjectNameType |  | An unenumerated SIF object name. | xs:NCName
xs:maxLength | 64

Table A.11-1: ObjectNameType

## A.12 OtherNameType

Extends `BaseNameType` to allow for `Type` attribute values excluding "name of record." Used for other names to be included in addition to the name of record in objects.

Figure A.12-1: OtherNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| OtherNameType |  | Extends `BaseNameType` to allow for `Type` attribute values excluding "name of record." Used for other names to be included in addition to the name of record in objects. | BaseNameType
@ | Type | M | Code that specifies what type of name this is. Note that type “LGL” is NOT to be used here. | AUCodeSetsNameUsageTypeType

Table A.12-1: OtherNameType

## A.13 PartialDateType

A year, with an optional month/day, or an optional month by itself.

Figure A.13-1: PartialDateType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PartialDateType |  | A year, with an optional month/day, or an optional month by itself. | union of: xs:date xs:gYearMonth xs:gYear

Table A.13-1: PartialDateType

## A.14 RefIdType

An object or element identifier.
Figure A.14-1: RefIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| RefIdType |  | An object or element identifier. | GUIDType

Table A.14-1: RefIdType

## A.15 ReportDataObjectType

The SIF objects that can be included in `SIF_ReportObject/ReportData`, plus `ReportPackage`. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.15-1: ReportDataObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportDataObjectType |  | The SIF objects that can be included in `SIF_ReportObject/ReportData`, plus `ReportPackage`. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | choice of: AggregateCharacteristicInfo AggregateStatisticFact AggregateStatisticInfo Assessment AssessmentAdministration AssessmentForm AssessmentItem AssessmentPackage AssessmentRegistration AssessmentSubTest CalendarDate CalendarSummary Identity LEAInfo LearningResource LearningResourcePackage LearningStandardDocument LearningStandardItem PersonPicture ReportAuthorityInfo ReportManifest RoomInfo SchoolCourseInfo SchoolInfo SchoolPrograms SessionInfo SIF_AgentACL SIF_LogEntry SIF_ReportObject SIF_ZoneStatus StaffAssignment StaffPersonal StudentActivityInfo StudentActivityParticipation StudentAttendanceSummary StudentContactPersonal StudentContactRelationship StudentDailyAttendance StudentParticipation StudentPeriodAttendance StudentPersonal StudentSchoolEnrollment StudentScoreSet StudentSDTN StudentSnapshot SummaryEnrollmentInfo SystemRole TeachingGroup TermInfo TimeTable TimeTableCell TimeTableSubject ReportPackage

Table A.15-1: ReportDataObjectType

## A.16 ReportPackageType

This package has exactly the same structure as `AbstractContentPackageType`. `ReportPackage` can be used in addition to SIF objects specifically in reporting situations within `SIF_ReportObject`. At this time, it is not a SIF object. It cannot be requested via `SIF_Query` or `SIF_ExtendedQuery` in a `ReportManifest`. It may be included in `SIF_ReportObject` as part of an external report definition.
Figure A.16-1: ReportPackageType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportPackageType |  | This package has exactly the same structure as `AbstractContentPackageType`. `ReportPackage` can be used in addition to SIF objects specifically in reporting situations within `SIF_ReportObject`. At this time, it is not a SIF object. It cannot be requested via `SIF_Query` or `SIF_ExtendedQuery` in a `ReportManifest`. It may be included in `SIF_ReportObject` as part of an external report definition. | AbstractContentPackageType

Table A.16-1: ReportPackageType

## A.17 SelectedContentType

Allows an XML fragment selected from an object to be used in an element with XML validation skipped.
Figure A.17-1: SelectedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SelectedContentType |  | Allows an XML fragment selected from an object to be used in an element with XML validation skipped. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.17-1: SelectedContentType

## A.18 SIF_EventObjectType

The SIF objects that can be included in a `SIF_Event` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.18-1: SIF_EventObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_EventObjectType |  | The SIF objects that can be included in a `SIF_Event` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | choice of: AggregateCharacteristicInfo AggregateStatisticFact AggregateStatisticInfo AssessmentAdministration AssessmentRegistration CalendarDate CalendarSummary Identity LEAInfo LearningResource LearningStandardDocument LearningStandardItem PersonPicture ReportAuthorityInfo ReportManifest RoomInfo SchoolCourseInfo SchoolInfo SchoolPrograms SessionInfo SIF_AgentACL SIF_LogEntry SIF_ReportObject SIF_ZoneStatus StaffAssignment StaffPersonal StudentActivityInfo StudentActivityParticipation StudentContactPersonal StudentContactRelationship StudentDailyAttendance StudentParticipation StudentPeriodAttendance StudentPersonal StudentSchoolEnrollment StudentScoreSet StudentSDTN SummaryEnrollmentInfo SystemRole TeachingGroup TermInfo TimeTable TimeTableCell TimeTableSubject

Table A.18-1: SIF_EventObjectType

## A.19 SIF_ExampleObjectType

The SIF objects that can be included in `SIF_Query/SIF_Example`. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.19-1: SIF_ExampleObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ExampleObjectType |  | The SIF objects that can be included in `SIF_Query/SIF_Example`. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | EMPTY

Table A.19-1: SIF_ExampleObjectType

## A.20 SIF_LogEntryExtendedContentType

Allows for any mixed XML in an element. XSD content processing is set to skip.
Figure A.20-1: SIF_LogEntryExtendedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_LogEntryExtendedContentType |  | Allows for any mixed XML in an element. XSD content processing is set to skip. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.20-1: SIF_LogEntryExtendedContentType

## A.21 SIF_ProvideObjectNamesType

The SIF object names that can be specified in a `SIF_Provide` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.21-1: SIF_ProvideObjectNamesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ProvideObjectNamesType |  | The SIF object names that can be specified in a `SIF_Provide` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | values: AggregateCharacteristicInfo AggregateStatisticFact AggregateStatisticInfo Assessment AssessmentAdministration AssessmentForm AssessmentItem AssessmentPackage AssessmentRegistration AssessmentSubTest CalendarDate CalendarSummary Identity LEAInfo LearningResource LearningResourcePackage LearningStandardDocument LearningStandardItem PersonPicture ReportAuthorityInfo ReportManifest RoomInfo SchoolCourseInfo SchoolInfo SchoolPrograms SessionInfo SIF_LogEntry SIF_ReportObject StaffAssignment StaffPersonal StudentActivityInfo StudentActivityParticipation StudentAttendanceSummary StudentContactPersonal StudentContactRelationship StudentDailyAttendance StudentParticipation StudentPeriodAttendance StudentPersonal StudentSchoolEnrollment StudentScoreSet StudentSDTN StudentSnapshot SummaryEnrollmentInfo SystemRole TeachingGroup TermInfo TimeTable TimeTableCell TimeTableSubject

Table A.21-1: SIF_ProvideObjectNamesType

## A.22 SIF_RequestObjectNamesType

The SIF object names that can be specified in a `SIF_Request` message, or every SIF object name. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.22-1: SIF_RequestObjectNamesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_RequestObjectNamesType |  | The SIF object names that can be specified in a `SIF_Request` message, or every SIF object name. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | values: AggregateCharacteristicInfo AggregateStatisticFact AggregateStatisticInfo Assessment AssessmentAdministration AssessmentForm AssessmentItem AssessmentPackage AssessmentRegistration AssessmentSubTest CalendarDate CalendarSummary Identity LEAInfo LearningResource LearningResourcePackage LearningStandardDocument LearningStandardItem PersonPicture ReportAuthorityInfo ReportManifest RoomInfo SchoolCourseInfo SchoolInfo SchoolPrograms SessionInfo SIF_AgentACL SIF_LogEntry SIF_ReportObject SIF_ZoneStatus StaffAssignment StaffPersonal StudentActivityInfo StudentActivityParticipation StudentAttendanceSummary StudentContactPersonal StudentContactRelationship StudentDailyAttendance StudentParticipation StudentPeriodAttendance StudentPersonal StudentSchoolEnrollment StudentScoreSet StudentSDTN StudentSnapshot SummaryEnrollmentInfo SystemRole TeachingGroup TermInfo TimeTable TimeTableCell TimeTableSubject

Table A.22-1: SIF_RequestObjectNamesType

## A.23 SIF_ResponseObjectsType

The SIF objects that can be included, repeated, in a `SIF_Response` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.23-1: SIF_ResponseObjectsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ResponseObjectsType |  | The SIF objects that can be included, repeated, in a `SIF_Response` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | <xs:choice minOccurs="0"> <xs:sequence> <xs:element ref="sif:AggregateCharacteristicInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AggregateStatisticFact" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AggregateStatisticInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:Assessment" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AssessmentAdministration" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AssessmentForm" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AssessmentItem" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AssessmentPackage" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AssessmentRegistration" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:AssessmentSubTest" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:CalendarDate" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:CalendarSummary" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:Identity" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:LEAInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:LearningResource" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:LearningResourcePackage" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:LearningStandardDocument" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:LearningStandardItem" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:PersonPicture" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:ReportAuthorityInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:ReportManifest" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:RoomInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SchoolCourseInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SchoolInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SchoolPrograms" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SessionInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SIF_AgentACL" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SIF_LogEntry" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SIF_ReportObject" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SIF_ZoneStatus" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StaffAssignment" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StaffPersonal" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentActivityInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentActivityParticipation" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentAttendanceSummary" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentContactPersonal" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentContactRelationship" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentDailyAttendance" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentParticipation" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentPeriodAttendance" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentPersonal" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentSchoolEnrollment" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentScoreSet" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentSDTN" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:StudentSnapshot" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SummaryEnrollmentInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:SystemRole" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:TeachingGroup" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:TermInfo" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:TimeTable" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:TimeTableCell" maxOccurs="unbounded" /> </xs:sequence> <xs:sequence> <xs:element ref="sif:TimeTableSubject" maxOccurs="unbounded" /> </xs:sequence> </xs:choice>

Table A.23-1: SIF_ResponseObjectsType

## A.24 SIF_ResponseObjectType

The SIF objects that can be included in a `SIF_Response` message, or every SIF object. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.24-1: SIF_ResponseObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_ResponseObjectType |  | The SIF objects that can be included in a `SIF_Response` message, or every SIF object. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | choice of: AggregateCharacteristicInfo AggregateStatisticFact AggregateStatisticInfo Assessment AssessmentAdministration AssessmentForm AssessmentItem AssessmentPackage AssessmentRegistration AssessmentSubTest CalendarDate CalendarSummary Identity LEAInfo LearningResource LearningResourcePackage LearningStandardDocument LearningStandardItem PersonPicture ReportAuthorityInfo ReportManifest RoomInfo SchoolCourseInfo SchoolInfo SchoolPrograms SessionInfo SIF_AgentACL SIF_LogEntry SIF_ReportObject SIF_ZoneStatus StaffAssignment StaffPersonal StudentActivityInfo StudentActivityParticipation StudentAttendanceSummary StudentContactPersonal StudentContactRelationship StudentDailyAttendance StudentParticipation StudentPeriodAttendance StudentPersonal StudentSchoolEnrollment StudentScoreSet StudentSDTN StudentSnapshot SummaryEnrollmentInfo SystemRole TeachingGroup TermInfo TimeTable TimeTableCell TimeTableSubject

Table A.24-1: SIF_ResponseObjectType

## A.25 SIF_SubscribeObjectNamesType

The SIF object names that can be specified in a `SIF_Subscribe` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model.
Figure A.25-1: SIF_SubscribeObjectNamesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SIF_SubscribeObjectNamesType |  | The SIF object names that can be specified in a `SIF_Subscribe` message. When this infrastructure type is implemented with a data model, the enumeration will contain the appropriate objects from that data model. | values: AggregateCharacteristicInfo AggregateStatisticFact AggregateStatisticInfo AssessmentAdministration AssessmentRegistration CalendarDate CalendarSummary Identity LEAInfo LearningResource LearningStandardDocument LearningStandardItem PersonPicture ReportAuthorityInfo ReportManifest RoomInfo SchoolCourseInfo SchoolInfo SchoolPrograms SessionInfo SIF_AgentACL SIF_LogEntry SIF_ReportObject SIF_ZoneStatus StaffAssignment StaffPersonal StudentActivityInfo StudentActivityParticipation StudentContactPersonal StudentContactRelationship StudentDailyAttendance StudentParticipation StudentPeriodAttendance StudentPersonal StudentSchoolEnrollment StudentScoreSet StudentSDTN SummaryEnrollmentInfo SystemRole TeachingGroup TermInfo TimeTable TimeTableCell TimeTableSubject

Table A.25-1: SIF_SubscribeObjectNamesType

## A.26 URIOrBinaryType

Allows for a URL or a Base-64 encoding.
Figure A.26-1: URIOrBinaryType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| URIOrBinaryType |  | Allows for a URL or a Base-64 encoding. | union of: xs:anyURI xs:base64Binary

Table A.26-1: URIOrBinaryType

## A.27 VersionType

A SIF version number.
Figure A.27-1: VersionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| VersionType |  | A SIF version number. | xs:token
xs:pattern | [0-9]+[.][0-9]+(r[0-9]+)?
xs:maxLength | 12

Table A.27-1: VersionType

## A.28 VersionWithWildcardsType

A SIF version number, with wildcards for matching multiple versions.
Figure A.28-1: VersionWithWildcardsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| VersionWithWildcardsType |  | A SIF version number, with wildcards for matching multiple versions. | xs:token
xs:pattern | \*|([0-9]+[.]\*)|([0-9]+[.][0-9]+r\*)|([0-9]+[.][0-9]+(r[0-9]+)?)
xs:maxLength | 12

Table A.28-1: VersionWithWildcardsType

# Appendix B: Code Sets

Select shared and named code sets defined in SIF are included here for reference.

## AU Code Sets

### 0211 Program Availability

`0231` | During school
`0234` | Weekend
`0235` | Before school
`0236` | After school
`0237` | Summer Holidays
`0238` | In-school service day
`0239` | Evenings
`9998` | Other School Holidays
`9999` | Other

### 0792 Identification Procedure

`2147` | Education assessment
`2148` | Health assessment/screening
`2149` | Parent/guardian referral
`2151` | Self-report/survey
`2152` | Special education assessment/evaluation
`2153` | Teacher referral
`9999` | Other

### ACStrand

`E` | English
`G` | Geography
`H` | History
`M` | Mathematics
`NPA` | Arts
`NPL` | Languages other than English
`NPP` | Health and Physical Education
`NPT` | Technology
`NPV` | Studies of society and environment
`S` | Science

### Activity Involvement Code

`1010` | Exercise, n.f.d.
`1011` | Exercise biking
`1012` | Fitness centre activities
`1013` | Gymnasium workouts
`1014` | Aerobics/exercising (other)
`1015` | Circuits
`1020` | Air sports, n.f.d.
`1021` | Aerobatics
`1022` | Ballooning
`1023` | Gliding
`1024` | Gyroplane flying
`1025` | Hang gliding
`1026` | Ultralight flying
`1027` | Air sport ( other )
`1031` | Aquarobics
`1041` | Archery
`1051` | Athletics, track & field
`1061` | Australian rules football
`1071` | Badminton
`1081` | Baseball
`1091` | Basketball (indoor & outdoor)
`1101` | Beach volleyball
`1110` | Cue Sports, n.f.d.
`1111` | Billiards
`1112` | Pool
`1113` | Snooker
`1121` | Bocce
`1122` | Boules
`1123` | Petanque
`1131` | Boxing
`1141` | Bush walking
`1151` | Canoeing
`1152` | Kayaking
`1161` | Carpet bowls
`1171` | Cricket (Indoor)
`1181` | Cricket (Outdoor)
`1191` | Croquet
`1201` | Cross country running
`1210` | Bike sports, n.f.d.
`1211` | Bike riding
`1212` | Cycling
`1213` | BMXing
`1214` | Mountain biking
`1220` | Dance Sports, n.f.d.
`1221` | Boot scooting
`1222` | Classical Ballet
`1223` | Jazz Ballet
`1224` | Ballroom Dancing
`1225` | Dance team
`1229` | Dancing (other)
`1231` | Darts
`1241` | Dog racing
`1250` | Dog competitions, n.f.d.
`1251` | Dog shows
`1252` | Sheepdog trials
`1261` | Fencing
`1271` | Angling
`1272` | Fishing
`1280` | Throwing, n.f.d.
`1281` | Ultimate frisbee
`1282` | Boomerang throwing
`1291` | Gaelic football
`1301` | Golf
`1311` | Gridiron (USA football )
`1321` | Gymnastics
`1322` | Circus acrobatics
`1323` | Callisthenics
`1324` | Trampolining
`1331` | Handball
`1341` | Harness racing/Trotting
`1351` | Hockey (Indoor)
`1352` | Hockey (Outdoor)
`1362` | Horse racing
`1371` | Horse riding/Equestrian activities
`1372` | Polo
`1373` | Polo cross
`1374` | Show jumping
`1380` | Ice/Snow Sports, n.f.d.
`1381` | Ice hockey
`1383` | Ice/Snow sport (other)
`1384` | Snow skiing
`1385` | Snow boarding
`1391` | Korfball
`1392` | Ice skating
`1401` | Lacrosse
`1402` | Softcrosse
`1411` | Lawn bowls
`1421` | Marching
`1430` | Martial arts, n.f.d.
`1431` | Chi Kung
`1432` | Judo/Jujitsu
`1433` | Karate
`1434` | Kickboxing
`1435` | Taekwondo
`1436` | Tai Chi
`1439` | Martial arts (other)
`1441` | Minigolf
`1442` | Putt-putt golf
`1450` | Motor sports, n.f.d.
`1451` | Go-Karting (motor sports)
`1452` | Track motor sport
`1459` | Motor sport (other)
`1461` | Netball (Indoor and outdoor)
`1471` | Orienteering
`1472` | Rogaining
`1481` | Pilates
`1490` | Outdoor rock activities, n.f.d.
`1491` | Abseiling
`1492` | Caving
`1493` | Rock climbing
`1501` | Rodeos
`1510` | Roller sports, n.f.d.
`1511` | Roller-blading
`1512` | Skateboarding
`1513` | Inline hockey
`1514` | Roller sport (other)
`1521` | Rowing
`1531` | Royal Tennis
`1541` | Rugby league (football)
`1551` | Rugby union (football)
`1561` | Jogging
`1562` | Running
`1571` | Sailing
`1581` | Scuba diving
`1590` | Shooting sports, n.f.d.
`1591` | Hunting
`1592` | Paintball shooting
`1593` | Pistol shooting
`1594` | Shooting sport (other)
`1595` | Target shooting
`1601` | Soccer (Indoor)
`1612` | Soccer (Outdoor)
`1621` | Softball
`1622` | Tee ball (T ball)
`1631` | Squash
`1632` | Racquet ball
`1641` | Surf Lifesaving/Royal Lifesaving
`1651` | Surfing
`1652` | Surf sport (other)
`1660` | Indoor water sports, n.f.d.
`1661` | Diving (board)
`1662` | Swimming
`1663` | Synchronized Swimming
`1671` | Table tennis
`1681` | Tennis (Indoor and outdoor)
`1691` | Tenpin bowling
`1701` | Touch football
`1711` | Trail biking (motor sports)
`1712` | Dirt bike riding (motor sports)
`1721` | Triathlons
`1731` | Volleyball (Indoor and outdoor)
`1741` | Walking for exercise
`1751` | Water polo
`1760` | Motorised water sports, n.f.d.
`1761` | Jet skiing
`1762` | Powerboating
`1763` | Water-skiing
`1770` | Non-motorised outdoor water sports, n.f.d.
`1771` | Canoe polo
`1772` | Water volleyball
`1773` | Underwater hockey
`1774` | White water rafting
`1781` | Competition weight-lifting
`1791` | Bodybuilding
`1792` | Weight training (for fitness - other)
`1800` | Board sports, n.f.d.
`1801` | Wind surfing
`1802` | Sailboarding
`1811` | Wood chopping
`1821` | Wrestling
`1831` | Yoga
`1840` | Other sporting activities, n.f.d.
`1841` | Pigeon racing
`1842` | Playing
`1843` | Multidisciplinary events
`1844` | Radio controlled model car/boat/plane racing
`1845` | Cheerleading
`1849` | Other sporting activities
`2010` | Leadership Actvities
`2011` | Team captain
`2012` | Student representative council president
`2013` | Class captain
`2014` | Class officer
`2015` | Student representative council officer
`2016` | School captain
`2017` | Duke of Edinburugh Award
`2019` | Other student leadership
`3010` | Youth Development, n.f.d.
`3011` | Army Cadets
`3012` | Airforce Cadets
`3013` | Other Cadets
`3014` | Boy Scouts
`3015` | Girl Scouts
`3019` | Other youth development group
`4011` | Music - vocal
`4012` | Choir
`4019` | Other vocal ensemble
`4021` | Music - instrumental
`4022` | Concert Band
`4023` | Orchestra
`4024` | Jazz ensemble
`4025` | Chamber ensemble
`4029` | Other instrumental ensemble
`4031` | Music - theory and composition
`4039` | Other Music
`4041` | Theatre/drama
`4042` | Eisteddfod
`4043` | Annual music production
`4044` | Other performing arts
`5010` | Arts activites, n.f.d.
`5011` | Art and graphic design
`5012` | Painting
`5013` | Embroidery
`5019` | Other arts activity
`5020` | Communications, nf.d.
`5021` | Journalism
`5022` | Broadcasting
`5023` | School Year book
`5024` | Literary publications
`5025` | Speech/debate
`5029` | Other communications
`6011` | Book Club
`6012` | Drama club
`6013` | Language club
`6014` | Art club
`6019` | Other Cultural club
`6021` | Technology Students
`6022` | Computer club
`6023` | Science Club
`6029` | Other Technology Club
`6031` | Health Occupations Students
`6032` | Chess club
`6039` | Other club or organization
`7011` | Peer counseling
`7012` | Tutoring
`7013` | Formal/Social/Debutante Ball
`7019` | Other general activity

### Activity Type

`0750` | Co-curricular activity
`0751` | Extra-curricular Activity
`9999` | Other

### Address Role

`012A` | Term Address
`012B` | Home Address
`012C` | Home Stay Address
`013A` | Overseas Address
`1073` | Other home address
`1074` | Employer's address
`1075` | Employment address
`2382` | Other organisation address
`9999` | Other Address

### Address Type

`0123` | Mailing address
`0123A` | Alternate Mailing address
`0124` | Shipping address
`0124A` | Alternate Shipping address
`0765` | Physical location address
`0765A` | Alternate Physical location address
`9999` | Other
`9999A` | Alternate Other address

### Assessment Reporting Method

`0144` | Letter grade/mark
`0490` | Age score
`0492` | Tertiary admission examination score
`0493` | Year equivalent or year-level indicator
`0497` | Normal curve equivalent
`0498` | Normalized standard score
`0499` | Number score
`0500` | Pass-fail
`0502` | Percentile rank
`0503` | Proficiency level
`0504` | Ranking
`0506` | Standard age score
`0512` | Achievement/proficiency level
`0513` | Mastery level
`3473` | Graduation score
`3474` | Growth/value-added/indexing
`3475` | International Baccalaureate score
`3476` | Percentile
`3478` | Raw score
`3479` | Scale score
`3480` | Workplace readiness score
`9999` | Other

### Assessment Type

`0075` | Achievement test
`0076` | Advanced placement test
`0077` | Alternate assessment/year-level standards
`0079` | Attitudinal test
`0081` | Cognitive and perceptual skills test
`0082` | Developmental observation
`0083` | Interest inventory
`0084` | Language proficiency test
`0087` | Manual dexterity test
`0088` | Mental ability (intelligence) test
`0089` | Performance assessment
`0090` | Personality test
`0092` | Portfolio assessment
`0093` | Psychological test
`0094` | Psychomotor test
`0095` | Reading readiness test
`3461` | Alternatve assessment/modified standards
`3462` | Alternate assessment/ELL
`3463` | Aptitude test
`9999` | Other

### Attendance Code

`0` | Not Marked
`100` | Present
`101` | Absent - General
`111` | Late arrival at School
`112` | Early departure from School
`113` | Late arrival unexplained
`114` | Early departure unexplained
`116` | Late arrival to Class
`117` | Early leaver from Class
`118` | Late Class Unexplained
`119` | Early Class Unexplained
`200` | Medical
`201` | Illness
`202` | Accident
`203` | Counselling
`204` | Sick Bay
`205` | Medical Appointment
`206` | Hospitalised
`207` | Quarantine
`208` | Refusal
`209` | Dentist
`210` | Medical/Welfare
`211` | Bereavement
`300` | Truancy
`400` | Suspension
`401` | Suspension - External
`500` | Unexplained
`600` | Educational
`601` | Group Activity
`602` | Community Service
`603` | Duty Student
`604` | Excursion
`605` | Special Event
`606` | Camp
`607` | Other Educational Activity
`608` | Off-Site Learning Program (eg. TAFE)
`609` | Work Experience
`610` | School Production
`611` | Sports
`612` | Study Leave
`700` | Flags
`701` | Exit
`702` | Transferred
`800` | Parent Choice
`801` | Parental Arrangement
`802` | Exempt
`803` | Parental Acknowledgement
`804` | Extended Family Holidays
`805` | Religious/Cultural Observance
`900` | School Choice
`901` | Industrial Action
`902` | Facility Damage
`903` | Weather
`904` | Staff Meeting
`999` | Other

### Attendance Status

`01` | Excused
`02` | Unexcused
`99` | Unknown
`NA` | Not Applicable

### Australian Citizenship Status

`1` | Australian Citizen
`2` | New Zealand Citizen
`3` | Permanent Resident
`4` | Temporary Entry Permit
`5` | Other Overseas
`8` | Permanent Humanitarian Visa
`X` | Not Provided

### Australian Standard Classification of Cultural and Ethnic Groups (ASCCEG)

ABS 1249.0 - Australian Standard Classification of Cultural and Ethnic Groups (ASCCEG), 2005-06

`0000` | Inadequately described
`0001` | Not stated
`0901` | Eurasian, so described
`0902` | Asian, so described
`0903` | African, so described
`0904` | European, so described
`0905` | Caucasian, so described
`0906` | Creole, so described
`1000` | Oceanian, n.f.d.
`1100` | Australian Peoples, n.f.d.
`1101` | Australian
`1102` | Australian Aboriginal
`1103` | Australian South Sea Islander
`1104` | Torres Strait Islander
`1200` | New Zealand Peoples, n.f.d.
`1201` | Maori
`1202` | New Zealander
`1300` | Melanesian and Papuan, n.f.d.
`1301` | New Caledonian
`1302` | Ni-Vanuatu
`1303` | Papua New Guinean
`1304` | Solomon Islander
`1399` | Melanesian and Papuan, n.e.c. (includes Bisorio, Bougainvillian, Huli)
`1400` | Micronesian, n.f.d.
`1401` | I-Kiribati
`1402` | Nauruan
`1499` | Micronesian, n.e.c. (includes Marianas Islander, Marshallese, Palauan)
`1500` | Polynesian, n.f.d.
`1501` | Cook Islander
`1502` | Fijian
`1503` | Niuean
`1504` | Samoan
`1505` | Tongan
`1506` | Hawaiian
`1507` | Tahitian
`1508` | Tokelauan
`1511` | Tuvaluan
`1599` | Polynesian, n.e.c. (includes French Polynesian, Pitcairn Islander, Wallisian)
`2000` | North-West European, n.f.d.
`2100` | British, n.f.d.
`2101` | English
`2102` | Scottish
`2103` | Welsh
`2104` | Channel Islander
`2105` | Manx
`2199` | British, n.e.c. (includes Falkland Islander)
`2201` | Irish
`2300` | Western European, n.f.d.
`2301` | Austrian
`2303` | Dutch
`2304` | Flemish
`2305` | French
`2306` | German
`2307` | Swiss
`2311` | Belgian
`2312` | Frisian
`2313` | Luxembourg
`2399` | Western European, n.e.c. (includes Alsatian, Breton, Walloon)
`2400` | Northern European, n.f.d.
`2401` | Danish
`2402` | Finnish
`2403` | Icelandic
`2404` | Norwegian
`2405` | Swedish
`2499` | Northern European, n.e.c. (includes Faeroese, Greenlandic, Saami)
`3000` | Southern and Eastern European, n.f.d.
`3100` | Southern European, n.f.d.
`3101` | Basque
`3102` | Catalan
`3103` | Italian
`3104` | Maltese
`3105` | Portuguese
`3106` | Spanish
`3107` | Gibraltarian
`3199` | Southern European, n.e.c. (includes Andorran, Galician, Ladin)
`3200` | South Eastern European, n.f.d.
`3201` | Albanian
`3202` | Bosnian
`3203` | Bulgarian
`3204` | Croatian
`3205` | Greek
`3206` | Macedonian
`3207` | Moldovan
`3208` | Montenegrin
`3211` | Romanian
`3212` | Roma/Gypsy
`3213` | Serbian
`3214` | Slovene
`3215` | Cypriot
`3216` | Vlach
`3299` | South Eastern European, n.e.c. (includes Aromani, Karakachani)
`3300` | Eastern European, n.f.d.
`3301` | Belarusan
`3302` | Czech
`3303` | Estonian
`3304` | Hungarian
`3305` | Latvian
`3306` | Lithuanian
`3307` | Polish
`3308` | Russian
`3311` | Slovak
`3312` | Ukrainian
`3313` | Sorb/Wend
`3399` | Eastern European, n.e.c. (includes Adygei, Khanty, Nenets)
`4000` | North African and Middle Eastern, n.f.d.
`4100` | Arab, n.f.d.
`4101` | Algerian
`4102` | Egyptian
`4103` | Iraqi
`4104` | Jordanian
`4105` | Kuwaiti
`4106` | Lebanese
`4107` | Libyan
`4108` | Moroccan
`4111` | Palestinian
`4112` | Saudi Arabian
`4113` | Syrian
`4114` | Tunisian
`4115` | Yemeni
`4199` | Arab, n.e.c. (includes Baggara, Bedouin, Omani)
`4201` | Jewish
`4900` | Other North African and Middle Eastern, n.f.d.
`4901` | Assyrian/Chaldean
`4902` | Berber
`4903` | Coptic
`4904` | Iranian
`4905` | Kurdish
`4906` | Sudanese
`4907` | Turkish
`4999` | Other North African and Middle Eastern, n.e.c. (includes Azande, Madi, Nubian)
`5000` | South-East Asian, n.f.d.
`5100` | Mainland South-East Asian, n.f.d.
`5101` | Anglo-Burmese
`5102` | Burmese
`5103` | Hmong
`5104` | Khmer
`5105` | Lao
`5106` | Thai
`5107` | Vietnamese
`5108` | Karen
`5111` | Mon
`5199` | Mainland South-East Asian, n.e.c. (includes Arakanese, Chin, Shan)
`5200` | Maritime South-East Asian, n.f.d.
`5201` | Filipino
`5202` | Indonesian
`5203` | Javanese
`5204` | Madurese
`5205` | Malay
`5206` | Sundanese
`5207` | Timorese
`5208` | Acehnese
`5211` | Balinese
`5212` | Bruneian
`5213` | Kadazan
`5214` | Singaporean
`5215` | Temoq
`5299` | Maritime South-East Asian, n.e.c. (includes Iban, Irian Jayan, Sumatran)
`6000` | North-East Asian, n.f.d.
`6100` | Chinese Asian, n.f.d.
`6101` | Chinese
`6102` | Taiwanese
`6199` | Chinese Asian, n.e.c. (includes Hui, Manchu, Yi)
`6900` | Other North-East Asian, n.f.d.
`6901` | Japanese
`6902` | Korean
`6903` | Mongolian
`6904` | Tibetan
`6999` | Other North-East Asian, n.e.c. (includes Ainu, Menba, Xiareba)
`7000` | Southern and Central Asian, n.f.d.
`7100` | Southern Asian, n.f.d.
`7101` | Anglo-Indian
`7102` | Bengali
`7103` | Burgher
`7104` | Gujarati
`7106` | Indian
`7107` | Malayali
`7111` | Nepalese
`7112` | Pakistani
`7113` | Punjabi
`7114` | Sikh
`7115` | Sinhalese
`7116` | Tamil
`7117` | Maldivian
`7199` | Southern Asian, n.e.c. (includes Gurkha, Kashmiri, Marathi)
`7200` | Central Asian, n.f.d.
`7201` | Afghan
`7202` | Armenian
`7203` | Georgian
`7204` | Kazakh
`7205` | Pathan
`7206` | Uzbek
`7207` | Azeri
`7208` | Hazara
`7211` | Tajik
`7212` | Tatar
`7213` | Turkmen
`7214` | Uighur
`7299` | Central Asian, n.e.c. (includes Chechen, Circassian, Ingush)
`8000` | People of the Americas, n.f.d.
`8100` | North American, n.f.d.
`8101` | African American
`8102` | American
`8103` | Canadian
`8104` | French Canadian
`8105` | Hispanic (North American)
`8106` | Native North American Indian
`8107` | Bermudan
`8199` | North American, n.e.c. (includes Aleut, Inuit, Metis)
`8200` | South American, n.f.d.
`8201` | Argentinian
`8202` | Bolivian
`8203` | Brazilian
`8204` | Chilean
`8205` | Colombian
`8206` | Ecuadorian
`8207` | Guyanese
`8208` | Peruvian
`8211` | Uruguayan
`8212` | Venezuelan
`8213` | Paraguayan
`8299` | South American, n.e.c. (includes Arawak, Carib, Surinamese)
`8300` | Central American, n.f.d.
`8301` | Mexican
`8302` | Nicaraguan
`8303` | Salvadoran
`8304` | Costa Rican
`8305` | Guatemalan
`8306` | Mayan
`8399` | Central American, n.e.c. (includes Belizean, Honduran, Panamanian)
`8400` | Caribbean Islander, n.f.d.
`8401` | Cuban
`8402` | Jamaican
`8403` | Trinidadian (Tobagonian)
`8404` | Barbadian
`8405` | Puerto Rican
`8499` | Caribbean Islander, n.e.c. (includes Bahamian, Grenadian, Haitian)
`9000` | Sub-Saharan African, n.f.d.
`9100` | Central and West African, n.f.d.
`9101` | Akan
`9103` | Ghanaian
`9104` | Nigerian
`9105` | Yoruba
`9106` | Ivorean
`9107` | Liberian
`9108` | Sierra Leonean
`9199` | Central and West African, n.e.c. (includes Fang, Fulani, Kongo)
`9200` | Southern and East African, n.f.d.
`9201` | Afrikaner
`9202` | Angolan
`9203` | Eritrean
`9204` | Ethiopian
`9205` | Kenyan
`9206` | Malawian
`9207` | Mauritian
`9208` | Mozambican
`9212` | Oromo
`9213` | Seychellois
`9214` | Somali
`9215` | South African
`9216` | Tanzanian
`9217` | Ugandan
`9218` | Zambian
`9221` | Zimbabwean
`9222` | Amhara
`9223` | Batswana
`9224` | Dinka
`9225` | Hutu
`9226` | Masai
`9227` | Nuer
`9228` | Tigrayan
`9231` | Tigre
`9232` | Zulu
`9299` | Southern and East African, n.e.c. (includes Afar, Namibian, Tutsi)

### Australian Standard Classification of Languages (ASCL)

ABS 1267.0 - Australian Standard Classification of Languages (ASCL), 2005-06

`0000` | Inadequately Described
`0` | Not Stated
`0001` | Non Verbal, so described
`0002` | Not Stated
`0003` | Swiss, so described
`0004` | Cypriot, so described
`0005` | Creole, nfd
`0006` | French Creole, nfd
`0007` | Spanish Creole, nfd
`0008` | Portuguese Creole, nfd
`0009` | Pidgin, nfd
`1000` | Northern European Languages, nfd
`1100` | Celtic, nfd
`1101` | Gaelic (Scotland)
`1102` | Irish
`1103` | Welsh
`1199` | Celtic, nec
`1201` | English
`1300` | German and Related Languages, nfd
`1301` | German
`1302` | Letzeburgish
`1303` | Yiddish
`1400` | Dutch and Related Languages, nfd
`1401` | Dutch
`1402` | Frisian
`1403` | Afrikaans
`1500` | Scandinavian, nfd
`1501` | Danish
`1502` | Icelandic
`1503` | Norwegian
`1504` | Swedish
`1599` | Scandinavian, nec
`1600` | Finnish and Related Languages, nfd
`1601` | Estonian
`1602` | Finnish
`1699` | Finnish and Related Languages, nec
`2000` | Southern European Languages, nfd
`2101` | French
`2201` | Greek
`2300` | Iberian Romance, nfd
`2301` | Catalan
`2302` | Portuguese
`2303` | Spanish
`2399` | Iberian Romance, nec
`2401` | Italian
`2501` | Maltese
`2900` | Other Southern European Languages, nfd
`2901` | Basque
`2902` | Latin
`2999` | Other Southern European Languages, nec
`3000` | Eastern European Languages, nfd
`3100` | Baltic, nfd
`3101` | Latvian
`3102` | Lithuanian
`3301` | Hungarian
`3400` | East Slavic, nfd
`3401` | Belorussian
`3402` | Russian
`3403` | Ukrainian
`3500` | South Slavic, nfd
`3501` | Bosnian
`3502` | Bulgarian
`3503` | Croatian
`3504` | Macedonian
`3505` | Serbian
`3506` | Slovene
`3507` | Serbo-Croatian/Yugoslavian, so described
`3600` | West Slavic, nfd
`3601` | Czech
`3602` | Polish
`3603` | Slovak
`3900` | Other Eastern European Languages, nfd
`3901` | Albanian
`3903` | Aromunian (Macedo-Romanian)
`3904` | Romanian
`3905` | Romany
`3999` | Other Eastern European Languages, nec
`4000` | Southwest and Central Asian Languages, nfd
`4100` | Iranic, nfd
`4101` | Kurdish
`4102` | Pashto
`4104` | Balochi
`4105` | Dari
`4106` | Persian (excluding Dari)
`4199` | Iranic, nec
`4200` | Middle Eastern Semitic Languages, nfd
`4202` | Arabic
`4203` | Assyrian
`4204` | Hebrew
`4299` | Middle Eastern Semitic Languages, nec
`4300` | Turkic, nfd
`4301` | Turkish
`4302` | Azeri
`4303` | Tatar
`4304` | Turkmen
`4305` | Uygur
`4306` | Uzbek
`4399` | Turkic, nec
`4900` | Other Southwest and Central Asian Languages, nfd
`4901` | Armenian
`4902` | Georgian
`4999` | Other Southwest and Central Asian Languages, nec
`5000` | Southern Asian Languages, nfd
`5100` | Dravidian, nfd
`5101` | Kannada
`5102` | Malayalam
`5103` | Tamil
`5104` | Telugu
`5105` | Tulu
`5199` | Dravidian, nec
`5200` | Indo-Aryan, nfd
`5201` | Bengali
`5202` | Gujarati
`5203` | Hindi
`5204` | Konkani
`5205` | Marathi
`5206` | Nepali
`5207` | Punjabi
`5208` | Sindhi
`5211` | Sinhalese
`5212` | Urdu
`5213` | Assamese
`5214` | Dhivehi
`5215` | Kashmiri
`5216` | Oriya
`5299` | Indo-Aryan, nec
`5999` | Other Southern Asian Languages
`6000` | Southeast Asian Languages, nfd
`6100` | Burmese and Related Languages, nfd
`6101` | Burmese
`6102` | Haka
`6103` | Karen
`6199` | Burmese and Related Languages, nec
`6200` | Hmong-Mien, nfd
`6201` | Hmong
`6299` | Hmong-Mien, nec
`6300` | Mon-Khmer, nfd
`6301` | Khmer
`6302` | Vietnamese
`6303` | Mon
`6399` | Mon-Khmer, nec
`6400` | Tai, nfd
`6401` | Lao
`6402` | Thai
`6499` | Tai, nec
`6500` | Southeast Asian Austronesian Languages, nfd
`6501` | Bisaya
`6502` | Cebuano
`6503` | IIokano
`6504` | Indonesian
`6505` | Malay
`6507` | Tetum
`6508` | Timorese
`6511` | Tagalog
`6512` | Filipino
`6513` | Acehnese
`6514` | Balinese
`6515` | Bikol
`6516` | Iban
`6517` | Ilonggo (Hiligaynon)
`6518` | Javanese
`6521` | Pampangan
`6599` | Southeast Asian Austronesian Languages, nec
`6999` | Other Southeast Asian Languages
`7000` | Eastern Asian Languages, nfd
`7100` | Chinese, nfd
`7101` | Cantonese
`7102` | Hakka
`7103` | Hokkien
`7104` | Mandarin
`7105` | Teochew
`7106` | Wu
`7199` | Chinese, nec
`7201` | Japanese
`7301` | Korean
`7900` | Other Eastern Asian Languages, nfd
`7901` | Tibetan
`7902` | Mongolian
`7999` | Other Eastern Asian Languages, nec
`8000` | Australian Indigenous Languages, nfd
`8100` | Arnhem Land and Daly River Region Languages, nfd
`8101` | Anindilyakwa
`8102` | Burarra
`8108` | Kunwinjku
`8111` | Maung
`8113` | Ngan'gikurunggurr
`8114` | Nunggubuyu
`8115` | Rembarrnga
`8117` | Tiwi
`8121` | Alawa
`8122` | Dalabon
`8123` | Gudanji
`8124` | Gundjeihmi
`8125` | Gun-nartpa
`8126` | Gurr-goni
`8127` | Iwaidja
`8128` | Jaminjung
`8131` | Jawoyn
`8132` | Jingulu
`8133` | Kunbarlang
`8134` | Kune
`8135` | Kuninjku
`8136` | Larrakiya
`8137` | Malak Malak
`8138` | Mangarrayi
`8141` | Maringarr
`8142` | Marra
`8143` | Marrithiyel
`8144` | Matngala
`8145` | Mayali
`8146` | Murrinh Patha
`8147` | Na-kara
`8148` | Ndjébbana (Gunavidji)
`8151` | Ngalakgan
`8152` | Ngaliwurru
`8153` | Nungali
`8154` | Wambaya
`8155` | Wardaman
`8199` | Arnhem Land and Daly River Region Languages, nec
`8200` | Yongu Matha, nfd
`8210` | Dhangu, nfd
`8211` | Galpu
`8212` | Golumala
`8213` | Wangurri
`8219` | Dhangu, nec
`8220` | Dhay'yi, nfd
`8221` | Dhalwangu
`8222` | Djarrwark
`8229` | Dhay'yi, nec
`8230` | Dhuwal, nfd
`8231` | Djambarrpuyngu
`8232` | Djapu
`8233` | Daatiwuy
`8234` | Marrangu
`8235` | Liyagalawumirr
`8239` | Dhuwal, nec
`8240` | Dhuwala, nfd
`8241` | Dhuwaya
`8242` | Gumatj
`8243` | Gupapuyngu
`8244` | Guyamirrilili
`8245` | Madarrpa
`8246` | Manggalili
`8247` | Wubulkarra
`8249` | Dhuwala, nec
`8250` | Djinang, nfd
`8251` | Wurlaki
`8259` | Djinang, nec
`8260` | Djinba, nfd
`8261` | Ganalbingu
`8269` | Djinba, nec
`8270` | Yakuy, nfd
`8271` | Ritharrngu
`8279` | Yakuy, nec
`8281` | Nhangu
`8299` | Other Yolngu Matha
`8300` | Cape York Peninsula Languages, nfd
`8301` | Kuku Yalanji
`8302` | Guugu Yimidhirr
`8303` | Kuuku-Ya'u
`8304` | Wik Mungkan
`8305` | Djabugay
`8306` | Dyirbal
`8307` | Girramay
`8308` | Koko-Bera
`8311` | Kuuk Thayorre
`8312` | Lamalama
`8313` | Yidiny
`8314` | Wik Ngathan
`8399` | Cape York Peninsula Languages, nec
`8400` | Torres Strait Island Languages, nfd
`8401` | Kalaw Kawaw Ya/Kalaw Lagaw Ya
`8402` | Meriam Mir
`8403` | Torres Strait Creole
`8500` | Northern Desert Fringe Area Languages, nfd
`8504` | Bilinarra
`8505` | Gurindji
`8506` | Gurindji Kriol
`8507` | Jaru
`8508` | Light Warlpiri
`8511` | Malngin
`8512` | Mudburra
`8513` | Ngandi
`8514` | Ngardi
`8515` | Ngarinyman
`8516` | Walmajarri
`8517` | Wanyjirra
`8518` | Warlmanpa
`8521` | Warlpiri
`8522` | Warumungu
`8599` | Northern Desert Fringe Area Languages, nec
`8600` | Arandic, nfd
`8603` | Alyawarr
`8604` | Anmatyerr
`8605` | Arrernte
`8606` | Kaytetye
`8699` | Arandic, nec
`8700` | Western Desert Language, nfd
`8703` | Antikarinya
`8704` | Kartujarra
`8705` | Kukatha
`8706` | Kukatja
`8707` | Luritja
`8708` | Manyjilyjarra
`8711` | Martu Wangka
`8712` | Ngaanyatjarra
`8713` | Pintupi
`8714` | Pitjantjatjara
`8715` | Wangkajunga
`8716` | Wangkatha
`8717` | Warnman
`8718` | Yankunytjatjara
`8721` | Yulparija
`8799` | Western Desert Language, nec
`8800` | Kimberley Area Languages, nfd
`8801` | Bardi
`8802` | Bunuba
`8803` | Gooniyandi
`8804` | Miriwoong
`8805` | Ngarinyin
`8806` | Nyikina
`8807` | Worla
`8808` | Worrorra
`8811` | Wunambal
`8812` | Yawuru
`8899` | Kimberley Area Languages, nec
`8900` | Other Australian Indigenous Languages, nfd
`8901` | Adnymathanha
`8902` | Arabana
`8903` | Bandjalang
`8904` | Banyjima
`8905` | Batjala
`8906` | Bidjara
`8907` | Dhanggatti
`8908` | Diyari
`8911` | Gamilaraay
`8912` | Garrwa
`8913` | Garuwali
`8914` | Githabul
`8915` | Gumbaynggir
`8916` | Kanai
`8917` | Karajarri
`8918` | Kariyarra
`8921` | Kaurna
`8922` | Kayardild
`8923` | Kija
`8924` | Kriol
`8925` | Lardil
`8926` | Mangala
`8927` | Muruwari
`8928` | Narungga
`8931` | Ngarluma
`8932` | Ngarrindjeri
`8933` | Nyamal
`8934` | Nyangumarta
`8935` | Nyungar
`8936` | Paakantyi
`8937` | Palyku/Nyiyaparli
`8938` | Wajarri
`8941` | Wiradjuri
`8942` | Yanyuwa
`8943` | Yindjibarndi
`8944` | Yinhawangka
`8945` | Yorta Yorta
`8998` | Aboriginal English, so described
`8999` | Other Australian Indigenous Languages, nec
`9000` | Other Languages, nfd
`9101` | American Languages
`9200` | African Languages, nfd
`9201` | Acholi
`9203` | Akan
`9205` | Mauritian Creole
`9206` | Oromo
`9207` | Shona
`9208` | Somali
`9211` | Swahili
`9212` | Yoruba
`9213` | Zulu
`9214` | Amharic
`9215` | Bemba
`9216` | Dinka
`9217` | Ewe
`9218` | Ga
`9221` | Harari
`9222` | Hausa
`9223` | Igbo
`9224` | Kikuyu
`9225` | Krio
`9226` | Luganda
`9227` | Luo
`9228` | Ndebele
`9231` | Nuer
`9232` | Nyanja (Chichewa)
`9233` | Shilluk
`9234` | Tigré
`9235` | Tigrinya
`9236` | Tswana
`9237` | Xhosa
`9238` | Seychelles Creole
`9299` | African Languages, nec
`9300` | Pacific Austronesian Languages, nfd
`9301` | Fijian
`9302` | Gilbertese
`9303` | Maori (Cook Island)
`9304` | Maori (New Zealand)
`9305` | Motu
`9306` | Nauruan
`9307` | Niue
`9308` | Samoan
`9311` | Tongan
`9312` | Rotuman
`9313` | Tokelauan
`9314` | Tuvaluan
`9315` | Yapese
`9399` | Pacific Austronesian Languages, nec
`9400` | Oceanian Pidgins and Creoles, nfd
`9401` | Tok Pisin
`9402` | Bislama
`9403` | Hawaiian English
`9404` | Pitcairnese
`9405` | Solomon Islands Pijin
`9499` | Oceanian Pidgins and Creoles, nec
`9500` | Papua New Guinea Papuan Languages, nfd
`9502` | Kiwai
`9599` | Papua New Guinea Papuan Languages, nec
`9601` | Invented Languages
`9700` | Sign Languages, nfd
`9701` | Auslan
`9702` | Makaton
`9799` | Sign Languages, nec

### Australian Standard Classification of Religious Groups (ASCRG)

ABS 1266.0 - Australian Standard Classification of Religious Groups, 2005

`0001` | Not Stated
`0002` | Religious Belief, nfd
`0003` | Not Defined
`0004` | New Age, so described
`0005` | Theism
`1011` | Buddhism
`2000` | Christian, nfd
`2001` | Apostolic Church, so described
`2002` | Church of God, so described
`2003` | Australian Christian Churches, so described
`2004` | New Church Alliance, so described
`2010` | Anglican, nfd
`2012` | Anglican Church of Australia
`2013` | Anglican Catholic Church
`2031` | Baptist
`2051` | Brethren
`2071` | Western Catholic
`2072` | Maronite Catholic
`2073` | Melkite Catholic
`2074` | Ukrainian Catholic
`2075` | Chaldean Catholic
`2079` | Catholic, nec
`2110` | Churches of Christ, nfd
`2111` | Churches of Christ (Conference)
`2112` | Church of Christ (Nondenominational)
`2113` | International Church of Christ
`2131` | Jehovah's Witnesses
`2150` | Church of Jesus Christ of Latter Day Saints, nfd
`2151` | Church of Jesus Christ of LDS (Mormons)
`2152` | Community of Christ
`2171` | Lutheran
`2210` | Oriental Orthodox, nfd
`2212` | Armenian Apostolic
`2214` | Coptic Orthodox Church
`2215` | Syrian Orthodox Church
`2216` | Ethiopian Orthodox Church
`2219` | Oriental Orthodox, nec
`2220` | Assyrian Apostolic, nfd
`2221` | Assyrian Church of the East
`2222` | Ancient Church of the East
`2229` | Assyrian Apostolic, nec
`2230` | Eastern Orthodox, nfd
`2231` | Albanian Orthodox
`2232` | Antiochian Orthodox
`2233` | Greek Orthodox
`2234` | Macedonian Orthodox
`2235` | Romanian Orthodox
`2236` | Russian Orthodox
`2237` | Serbian Orthodox
`2238` | Ukrainian Orthodox
`2239` | Eastern Orthodox, nec
`2250` | Presbyterian and Reformed, nfd
`2251` | Presbyterian
`2252` | Reformed
`2253` | Free Reformed
`2271` | Salvation Army
`2311` | Seventh-day Adventist
`2331` | Uniting Church
`2400` | Pentecostal, nfd
`2401` | Apostolic Church (Australia)
`2402` | Assemblies of God
`2403` | Bethesda Churches
`2404` | Christian City Church
`2405` | Christian Life Churches International
`2406` | Christian Outreach Centres
`2407` | Christian Revival Crusade
`2408` | Faith Churches
`2411` | Foursquare Gospel Church
`2412` | Full Gospel Church
`2413` | Revival Centres
`2414` | Rhema Family Church
`2415` | United Pentecostal
`2499` | Pentecostal, nec
`2800` | Other Protestant, nfd
`2801` | Aboriginal Evangelical Missions
`2802` | Born Again Christian
`2803` | Christian and Missionary Alliance
`2804` | Church of the Nazarene
`2805` | Congregational
`2806` | Ethnic Evangelical Churches
`2807` | Independent Evangelical Churches
`2808` | Wesleyan Methodist Church
`2899` | Other Protestant, nec
`2900` | Other Christian, nfd
`2901` | Apostolic Church of Queensland
`2902` | Christadelphians
`2903` | Christian Science
`2904` | Gnostic Christians
`2905` | Liberal Catholic Church
`2906` | New Apostolic Church
`2907` | New Churches (Swedenborgian)
`2908` | Ratana (Maori)
`2911` | Religious Science
`2912` | Religious Society of Friends (Quakers)
`2913` | Temple Society
`2914` | Unitarian
`2915` | Worldwide Church of God
`2999` | Other Christian, nec
`3011` | Hinduism
`4011` | Islam
`5011` | Judaism
`6011` | Australian Aboriginal Traditional Religions
`6031` | Baha'i
`6050` | Chinese Religions, nfd
`6051` | Ancestor Veneration
`6052` | Confucianism
`6053` | Taoism
`6059` | Chinese Religions, nec
`6071` | Druse
`6110` | Japanese Religions, nfd
`6111` | Shinto
`6112` | Sukyo Mahikari
`6113` | Tenrikyo
`6119` | Japanese Religions, nec
`6130` | Nature Religions, nfd
`6131` | Animism
`6132` | Druidism
`6133` | Paganism
`6134` | Pantheism
`6135` | Wiccan/Witchcraft
`6139` | Nature Religions, nec
`6151` | Sikhism
`6171` | Spiritualism
`6991` | Caodaism
`6992` | Church of Scientology
`6993` | Eckankar
`6994` | Rastafarianism
`6995` | Satanism
`6996` | Theosophy
`6997` | Jainism
`6998` | Zoroastrianism
`6999` | Religious Groups, nec
`7010` | No Religion, nfd
`7011` | Agnosticism
`7012` | Atheism
`7013` | Humanism
`7014` | Rationalism

### Australian Standard Geographical Classification (ASGC)

ABS 1216.0 - Australian Standard Geographical Classification (ASGC), Jul 2008

Statistical Local Area (from ASGC)

`105051100` | Botany Bay (C)
`105054800` | Leichhardt (A)
`105055200` | Marrickville (A)
`105057201` | Sydney (C) - Inner
`105057204` | Sydney (C) - East
`105057205` | Sydney (C) - South
`105057206` | Sydney (C) - West
`105106550` | Randwick (C)
`105108050` | Waverley (A)
`105108500` | Woollahra (A)
`105154150` | Hurstville (C)
`105154450` | Kogarah (A)
`105156650` | Rockdale (C)
`105157151` | Sutherland Shire (A) - East
`105157152` | Sutherland Shire (A) - West
`105200351` | Bankstown (C) - North-East
`105200353` | Bankstown (C) - North-West
`105200355` | Bankstown (C) - South
`105201550` | Canterbury (C)
`105252851` | Fairfield (C) - East
`105252854` | Fairfield (C) - West
`105254901` | Liverpool (C) - East
`105254904` | Liverpool (C) - West
`105301450` | Camden (A)
`105301501` | Campbelltown (C) - North
`105301504` | Campbelltown (C) - South
`105308400` | Wollondilly (A)
`105350150` | Ashfield (A)
`105351300` | Burwood (A)
`105351521` | Canada Bay (A) - Concord
`105351524` | Canada Bay (A) - Drummoyne
`105357100` | Strathfield (A)
`105400200` | Auburn (A)
`105403950` | Holroyd (C)
`105406251` | Parramatta (C) - Inner
`105406252` | Parramatta (C) - North-East
`105406253` | Parramatta (C) - North-West
`105406254` | Parramatta (C) - South
`105450900` | Blue Mountains (C)
`105453800` | Hawkesbury (C)
`105456351` | Penrith (C) - East
`105456354` | Penrith (C) - West
`105530751` | Blacktown (C) - North
`105530752` | Blacktown (C) - South-East
`105530753` | Blacktown (C) - South-West
`105554100` | Hunters Hill (A)
`105554700` | Lane Cove (A)
`105555350` | Mosman (A)
`105555950` | North Sydney (A)
`105556700` | Ryde (C)
`105558250` | Willoughby (C)
`105600501` | Baulkham Hills (A) - Central
`105600503` | Baulkham Hills (A) - North
`105600505` | Baulkham Hills (A) - South
`105604001` | Hornsby (A) - North
`105604004` | Hornsby (A) - South
`105604500` | Ku-ring-gai (A)
`105655150` | Manly (A)
`105656370` | Pittwater (A)
`105658000` | Warringah (A)
`105703101` | Gosford (C) - East
`105703104` | Gosford (C) - West
`105708551` | Wyong (A) - North-East
`105708554` | Wyong (A) - South and West
`110051720` | Cessnock (C)
`110054651` | Lake Macquarie (C) - East
`110054653` | Lake Macquarie (C) - North
`110054655` | Lake Macquarie (C) - West
`110055050` | Maitland (C)
`110055903` | Newcastle (C) - Inner City
`110055904` | Newcastle (C) - Outer West
`110055905` | Newcastle (C) - Throsby
`110056400` | Port Stephens (A)
`110102700` | Dungog (A)
`110103050` | Gloucester (A)
`110103400` | Great Lakes (A)
`110105650` | Muswellbrook (A)
`110107000` | Singleton (A)
`110107620` | Upper Hunter Shire (A)
`115054400` | Kiama (A)
`115056900` | Shellharbour (C)
`115058451` | Wollongong (C) - Inner
`115058454` | Wollongong (C) Bal
`115076951` | Shoalhaven (C) - Pt A
`115106952` | Shoalhaven (C) - Pt B
`115108350` | Wingecarribee (A)
`120057554` | Tweed (A) - Tweed-Heads
`120057556` | Tweed (A) - Tweed Coast
`120074851` | Lismore (C) - Pt A
`120100250` | Ballina (A)
`120101350` | Byron (A)
`120104550` | Kyogle (A)
`120104854` | Lismore (C) - Pt B
`120106611` | Richmond Valley (A) - Casino
`120106612` | Richmond Valley (A) Bal
`120107558` | Tweed (A) - Pt B
`125011801` | Coffs Harbour (C) - Pt A
`125036381` | Port Macquarie-Hastings (A) - Pt A
`125050600` | Bellingen (A)
`125051736` | Clarence Valley (A) - Coast
`125051737` | Clarence Valley (A) - Grafton
`125051738` | Clarence Valley (A) Bal
`125051804` | Coffs Harbour (C) - Pt B
`125055700` | Nambucca (A)
`125103350` | Greater Taree (C)
`125104350` | Kempsey (A)
`125106385` | Port Macquarie-Hastings (A) - Pt B
`125108859` | Lord Howe Island
`130057311` | Tamworth Regional (A) - Pt A
`130103550` | Gunnedah (A)
`130103660` | Gwydir (A)
`130104201` | Inverell (A) - Pt A
`130104920` | Liverpool Plains (A)
`130107314` | Tamworth Regional (A) - Pt B
`130150111` | Armidale Dumaresq (A) - City
`130150112` | Armidale Dumaresq (A) Bal
`130153010` | Glen Innes Severn (A)
`130153650` | Guyra (A)
`130154202` | Inverell (A) - Pt B
`130157400` | Tenterfield (A)
`130157650` | Uralla (A)
`130157850` | Walcha (A)
`130205300` | Moree Plains (A)
`130205750` | Narrabri (A)
`135012601` | Dubbo (C) - Pt A
`135052604` | Dubbo (C) - Pt B
`135052950` | Gilgandra (A)
`135055271` | Mid-Western Regional (A) - Pt A
`135055850` | Narromine (A)
`135058020` | Warrumbungle Shire (A)
`135058150` | Wellington (A)
`135100950` | Bogan (A)
`135102150` | Coonamble (A)
`135107900` | Walgett (A)
`135107950` | Warren (A)
`135151150` | Bourke (A)
`135151200` | Brewarrina (A)
`135151750` | Cobar (A)
`140030471` | Bathurst Regional (A) - Pt A
`140070473` | Bathurst Regional (A) - Pt B
`140070850` | Blayney (A)
`140071400` | Cabonne (A)
`140074870` | Lithgow (C)
`140075274` | Mid-Western Regional (A) - Pt B
`140076100` | Oberon (A)
`140150800` | Bland (A)
`140152350` | Cowra (A)
`140152900` | Forbes (A)
`140154600` | Lachlan (A)
`140156200` | Parkes (A)
`140158100` | Weddin (A)
`140206150` | Orange (C)
`145056181` | Palerang (A) - Pt A
`145056470` | Queanbeyan (C)
`145101050` | Boorowa (A)
`145103311` | Goulburn Mulwaree (A) - Goulburn
`145103314` | Goulburn Mulwaree (A) Bal
`145103700` | Harden (A)
`145106184` | Palerang (A) - Pt B
`145107640` | Upper Lachlan Shire (A)
`145108710` | Yass Valley (A)
`145108750` | Young (A)
`145150550` | Bega Valley (A)
`145152750` | Eurobodalla (A)
`145201000` | Bombala (A)
`145202050` | Cooma-Monaro (A)
`145207050` | Snowy River (A)
`150057751` | Wagga Wagga (C) - Pt A
`150102000` | Coolamon (A)
`150102200` | Cootamundra (A)
`150103500` | Gundagai (A)
`150104300` | Junee (A)
`150104950` | Lockhart (A)
`150105800` | Narrandera (A)
`150107350` | Temora (A)
`150107500` | Tumut Shire (A)
`150107754` | Wagga Wagga (C) - Pt B
`150151600` | Carrathool (A)
`150153450` | Griffith (C)
`150153850` | Hay (A)
`150154750` | Leeton (A)
`150155550` | Murrumbidgee (A)
`155050050` | Albury (C)
`155053371` | Greater Hume Shire (A) - Pt A
`155102300` | Corowa Shire (A)
`155103374` | Greater Hume Shire (A) - Pt B
`155107450` | Tumbarumba (A)
`155107700` | Urana (A)
`155150650` | Berrigan (A)
`155151860` | Conargo (A)
`155152500` | Deniliquin (A)
`155154250` | Jerilderie (A)
`155155500` | Murray (A)
`155157800` | Wakool (A)
`155200300` | Balranald (A)
`155208200` | Wentworth (A)
`160101250` | Broken Hill (C)
`160101700` | Central Darling (A)
`160108809` | Unincorp. Far West
`185019779` | Off-Shore Areas and Migratory
`205054601` | Melbourne (C) - Inner
`205054605` | Melbourne (C) - S'bank-D'lands
`205054608` | Melbourne (C) - Remainder
`205055901` | Port Phillip (C) - St Kilda
`205055902` | Port Phillip (C) - West
`205056351` | Stonnington (C) - Prahran
`205057351` | Yarra (C) - North
`205057352` | Yarra (C) - Richmond
`205101181` | Brimbank (C) - Keilor
`205101182` | Brimbank (C) - Sunshine
`205103111` | Hobsons Bay (C) - Altona
`205103112` | Hobsons Bay (C) - Williamstown
`205104330` | Maribyrnong (C)
`205105063` | Moonee Valley (C) - Essendon
`205105065` | Moonee Valley (C) - West
`205204651` | Melton (S) - East
`205204654` | Melton (S) Bal
`205207261` | Wyndham (C) - North
`205207264` | Wyndham (C) - South
`205207267` | Wyndham (C) - West
`205255251` | Moreland (C) - Brunswick
`205255252` | Moreland (C) - Coburg
`205255253` | Moreland (C) - North
`205300661` | Banyule (C) - Heidelberg
`205300662` | Banyule (C) - North
`205301891` | Darebin (C) - Northcote
`205301892` | Darebin (C) - Preston
`205353271` | Hume (C) - Broadmeadows
`205353274` | Hume (C) - Craigieburn
`205353275` | Hume (C) - Sunbury
`205405713` | Nillumbik (S) - South
`205405715` | Nillumbik (S) - South-West
`205405718` | Nillumbik (S) Bal
`205407071` | Whittlesea (C) - North
`205407075` | Whittlesea (C) - South-East
`205407076` | Whittlesea (C) - South-West
`205451111` | Boroondara (C) - Camberwell N.
`205451112` | Boroondara (C) - Camberwell S.
`205451113` | Boroondara (C) - Hawthorn
`205451114` | Boroondara (C) - Kew
`205504211` | Manningham (C) - East
`205504214` | Manningham (C) - West
`205504971` | Monash (C) - South-West
`205504974` | Monash (C) - Waverley East
`205504975` | Monash (C) - Waverley West
`205506981` | Whitehorse (C) - Box Hill
`205506984` | Whitehorse (C) - Nunawading E.
`205506985` | Whitehorse (C) - Nunawading W.
`205553672` | Knox (C) - North-East
`205553673` | Knox (C) - North-West
`205553674` | Knox (C) - South
`205554411` | Maroondah (C) - Croydon
`205554412` | Maroondah (C) - Ringwood
`205607451` | Yarra Ranges (S) - Central
`205607452` | Yarra Ranges (S) - Dandenongs
`205607453` | Yarra Ranges (S) - Lilydale
`205607454` | Yarra Ranges (S) - North
`205607456` | Yarra Ranges (S) - Seville
`205650911` | Bayside (C) - Brighton
`205650912` | Bayside (C) - South
`205652311` | Glen Eira (C) - Caulfield
`205652314` | Glen Eira (C) - South
`205653431` | Kingston (C) - North
`205653434` | Kingston (C) - South
`205656352` | Stonnington (C) - Malvern
`205752671` | Gr. Dandenong (C) - Dandenong
`205752674` | Gr. Dandenong (C) Bal
`205801452` | Cardinia (S) - North
`205801453` | Cardinia (S) - Pakenham
`205801454` | Cardinia (S) - South
`205801612` | Casey (C) - Berwick
`205801613` | Casey (C) - Cranbourne
`205801616` | Casey (C) - Hallam
`205801618` | Casey (C) - South
`205852171` | Frankston (C) - East
`205852174` | Frankston (C) - West
`205905341` | Mornington P'sula (S) - East
`205905344` | Mornington P'sula (S) - South
`205905345` | Mornington P'sula (S) - West
`210052751` | Bellarine - Inner
`210052752` | Corio - Inner
`210052753` | Geelong
`210052754` | Geelong West
`210052755` | Newtown
`210052756` | South Barwon - Inner
`210102757` | Greater Geelong (C) - Pt B
`210106080` | Queenscliffe (B)
`210106493` | Surf Coast (S) - East
`210106495` | Surf Coast (S) - West
`210151751` | Colac-Otway (S) - Colac
`210151754` | Colac-Otway (S) - North
`210151755` | Colac-Otway (S) - South
`210152491` | Golden Plains (S) - North-West
`210152492` | Golden Plains (S) - South-East
`210152758` | Greater Geelong (C) - Pt C
`215016730` | Warrnambool (C)
`215051831` | Corangamite (S) - North
`215051832` | Corangamite (S) - South
`215055491` | Moyne (S) - North-East
`215055493` | Moyne (S) - North-West
`215055496` | Moyne (S) - South
`215058469` | Lady Julia Percy Island
`215102411` | Glenelg (S) - Heywood
`215102412` | Glenelg (S) - North
`215102413` | Glenelg (S) - Portland
`215106261` | S. Grampians (S) - Hamilton
`215106264` | S. Grampians (S) - Wannon
`215106265` | S. Grampians (S) Bal
`220050571` | Ballarat (C) - Central
`220050572` | Ballarat (C) - Inner North
`220050573` | Ballarat (C) - North
`220050574` | Ballarat (C) - South
`220102911` | Hepburn (S) - East
`220102912` | Hepburn (S) - West
`220105151` | Moorabool (S) - Bacchus Marsh
`220105154` | Moorabool (S) - Ballan
`220105155` | Moorabool (S) - West
`220150260` | Ararat (RC)
`220155991` | Pyrenees (S) - North
`220155994` | Pyrenees (S) - South
`225053191` | Horsham (RC) - Central
`225053194` | Horsham (RC) Bal
`225055811` | N. Grampians (S) - St Arnaud
`225055814` | N. Grampians (S) - Stawell
`225056890` | West Wimmera (S)
`225102980` | Hindmarsh (S)
`225107631` | Yarriambiack (S) - North
`225107632` | Yarriambiack (S) - South
`230054781` | Mildura (RC) - Pt A
`230101271` | Buloke (S) - North
`230101272` | Buloke (S) - South
`230104782` | Mildura (RC) - Pt B
`230152250` | Gannawarra (S)
`230156611` | Swan Hill (RC) - Central
`230156614` | Swan Hill (RC) - Robinvale
`230156616` | Swan Hill (RC) Bal
`235052621` | Gr. Bendigo (C) - Central
`235052622` | Gr. Bendigo (C) - Eaglehawk
`235052623` | Gr. Bendigo (C) - Inner East
`235052624` | Gr. Bendigo (C) - Inner North
`235052625` | Gr. Bendigo (C) - Inner West
`235052626` | Gr. Bendigo (C) - S'saye
`235101671` | C. Goldfields (S) - M'borough
`235101674` | C. Goldfields (S) Bal
`235102628` | Gr. Bendigo (C) - Pt B
`235103943` | Loddon (S) - North
`235103945` | Loddon (S) - South
`235105431` | Mount Alexander (S) - C'maine
`235105434` | Mount Alexander (S) Bal
`235204131` | Macedon Ranges (S) - Kyneton
`235204134` | Macedon Ranges (S) - Romsey
`235204135` | Macedon Ranges (S) Bal
`240052831` | Gr. Shepparton (C) - Pt A
`240101371` | Campaspe (S) - Echuca
`240101374` | Campaspe (S) - Kyabram
`240101375` | Campaspe (S) - Rochester
`240101376` | Campaspe (S) - South
`240102834` | Gr. Shepparton (C) - Pt B East
`240102835` | Gr. Shepparton (C) - Pt B West
`240104901` | Moira (S) - East
`240104904` | Moira (S) - West
`240151011` | Benalla (RC) - Benalla
`240151014` | Benalla (RC) Bal
`240154250` | Mansfield (S)
`240156430` | Strathbogie (S)
`240158249` | Mount Buller Alpine Resort
`240158349` | Mount Stirling Alpine Resort
`240204851` | Mitchell (S) - North
`240204854` | Mitchell (S) - South
`240205621` | Murrindindi (S) - East
`240205622` | Murrindindi (S) - West
`240208149` | Lake Mountain Alpine Resort
`245053351` | Indigo (S) - Pt A
`245056671` | Towong (S) - Pt A
`245057170` | Wodonga (RC)
`245103352` | Indigo (S) - Pt B
`245106701` | Wangaratta (RC) - Central
`245106704` | Wangaratta (RC) - North
`245106705` | Wangaratta (RC) - South
`245150111` | Alpine (S) - East
`245150112` | Alpine (S) - West
`245156672` | Towong (S) - Pt B
`245158109` | Falls Creek Alpine Resort
`245158309` | Mount Hotham Alpine Resort
`250052111` | E. Gippsland (S) - Bairnsdale
`250052113` | E. Gippsland (S) - Orbost
`250052115` | E. Gippsland (S) - South-West
`250052117` | E. Gippsland (S) Bal
`250156811` | Wellington (S) - Alberton
`250156812` | Wellington (S) - Avon
`250156813` | Wellington (S) - Maffra
`250156814` | Wellington (S) - Rosedale
`250156815` | Wellington (S) - Sale
`255050831` | Baw Baw (S) - Pt A
`255053811` | Latrobe (C) - Moe
`255053814` | Latrobe (C) - Morwell
`255053815` | Latrobe (C) - Traralgon
`255053818` | Latrobe (C) Bal
`255100834` | Baw Baw (S) - Pt B East
`255100835` | Baw Baw (S) - Pt B West
`255107458` | Yarra Ranges (S) - Pt B
`255108209` | Mount Baw Baw Alpine Resort
`255200741` | Bass Coast (S) - Phillip Is.
`255200744` | Bass Coast (S) Bal
`255206171` | South Gippsland (S) - Central
`255206174` | South Gippsland (S) - East
`255206175` | South Gippsland (S) - West
`255208529` | French Island
`255208649` | Bass Strait Islands
`285019779` | Off-Shore Areas and Migratory
`305011067` | Bowen Hills
`305011143` | City - Inner
`305011146` | City - Remainder
`305011187` | Dutton Park
`305011227` | Fortitude Valley
`305011274` | Herston
`305011277` | Highgate Hill
`305011304` | Kangaroo Point
`305011315` | Kelvin Grove
`305011378` | Milton
`305011421` | New Farm
`305011427` | Newstead
`305011454` | Paddington
`305011481` | Red Hill
`305011525` | South Brisbane
`305011528` | Spring Hill
`305011607` | West End
`305011631` | Woolloongabba
`305031004` | Albion
`305031007` | Alderley
`305031026` | Ascot
`305031031` | Ashgrove
`305031048` | Bardon
`305031132` | Chelmer
`305031151` | Clayfield
`305031162` | Corinda
`305031206` | Enoggera
`305031241` | Graceville
`305031244` | Grange
`305031255` | Hamilton
`305031271` | Hendra
`305031293` | Indooroopilly
`305031312` | Kedron
`305031345` | Lutwyche
`305031424` | Newmarket
`305031446` | Nundah
`305031506` | St Lucia
`305031522` | Sherwood
`305031533` | Stafford
`305031536` | Stafford Heights
`305031558` | Taringa
`305031574` | Toowong
`305031618` | Wilston
`305031623` | Windsor
`305031634` | Wooloowin
`305071018` | Anstead
`305071034` | Aspley
`305071037` | Bald Hills
`305071045` | Banyo
`305071053` | Bellbowrie
`305071064` | Boondall
`305071072` | Bracken Ridge
`305071075` | Bridgeman Downs
`305071078` | Brighton
`305071084` | Brookfield (incl. Brisbane Forest Park)
`305071121` | Carseldine
`305071127` | Chapel Hill
`305071135` | Chermside
`305071138` | Chermside West
`305071167` | Darra-Sumner
`305071173` | Deagon
`305071176` | Doolandella-Forest Lake
`305071184` | Durack
`305071203` | Ellen Grove
`305071211` | Everton Park
`305071217` | Ferny Grove
`305071222` | Fig Tree Pocket
`305071236` | Geebung
`305071288` | Inala
`305071296` | Jamboree Heights
`305071301` | Jindalee
`305071306` | Karana Downs-Lake Manchester
`305071318` | Kenmore
`305071323` | Kenmore Hills
`305071326` | Keperra
`305071353` | McDowall
`305071375` | Middle Park
`305071383` | Mitchelton
`305071386` | Moggill
`305071408` | Mount Ommaney
`305071435` | Northgate
`305071442` | Nudgee
`305071451` | Oxley
`305071465` | Pinjarra Hills
`305071467` | Pinkenba-Eagle Farm
`305071473` | Pullenvale
`305071484` | Richlands
`305071487` | Riverhills
`305071514` | Sandgate
`305071517` | Seventeen Mile Rocks
`305071556` | Taigum-Fitzgibbon
`305071567` | The Gap
`305071585` | Upper Kedron
`305071593` | Virginia
`305071596` | Wacol
`305071604` | Wavell Heights
`305071612` | Westlake
`305071653` | Zillmere
`305091015` | Annerley
`305091042` | Balmoral
`305091086` | Bulimba
`305091097` | Camp Hill
`305091102` | Cannon Hill
`305091108` | Carindale
`305091113` | Carina
`305091116` | Carina Heights
`305091157` | Coorparoo
`305091195` | East Brisbane
`305091214` | Fairfield
`305091247` | Greenslopes
`305091258` | Hawthorne
`305091282` | Holland Park
`305091285` | Holland Park West
`305091391` | Moorooka
`305091397` | Morningside
`305091432` | Norman Park
`305091563` | Tarragindi
`305091645` | Yeerongpilly
`305091648` | Yeronga
`305111001` | Acacia Ridge
`305111012` | Algester
`305111023` | Archerfield
`305111057` | Belmont-Mackenzie
`305111091` | Burbank
`305111094` | Calamvale
`305111123` | Chandler-Capalaba West
`305111154` | Coopers Plains
`305111198` | Eight Mile Plains
`305111251` | Gumdale-Ransome
`305111265` | Hemmant-Lytton
`305111331` | Kuraby
`305111337` | Lota
`305111356` | MacGregor
`305111364` | Manly
`305111367` | Manly West
`305111372` | Mansfield
`305111394` | Moreton Island
`305111402` | Mount Gravatt
`305111405` | Mount Gravatt East
`305111413` | Murarrie
`305111416` | Nathan
`305111456` | Pallara-Heathwood-Larapinta
`305111463` | Parkinson-Drewvale
`305111492` | Robertson
`305111495` | Rochedale
`305111498` | Rocklea
`305111503` | Runcorn
`305111511` | Salisbury
`305111541` | Stretton-Karawatha
`305111547` | Sunnybank
`305111552` | Sunnybank Hills
`305111571` | Tingalpa
`305111588` | Upper Mount Gravatt
`305111601` | Wakerley
`305111615` | Willawong
`305111626` | Wishart
`305111637` | Wynnum
`305111642` | Wynnum West
`305205019` | Bribie Island
`305205021` | Burpengary-Narangba
`305205023` | Caboolture Central
`305205025` | Caboolture East
`305205027` | Caboolture Hinterland
`305205028` | Caboolture Midwest
`305205039` | Deception Bay
`305205056` | Morayfield
`305253962` | Ipswich (C) - Central
`305253965` | Ipswich (C) - East
`305253966` | Ipswich (C) - North
`305253971` | Ipswich (C) - South-West
`305253976` | Ipswich (C) - West
`305304595` | Beenleigh
`305304597` | Bethania-Waterford
`305304601` | Browns Plains
`305304603` | Carbrook-Cornubia
`305304605` | Daisy Hill-Priestdale
`305304606` | Eagleby
`305304607` | Edens Landing-Holmview
`305304608` | Greenbank-Boronia Heights
`305304611` | Jimboomba-Logan Village
`305304612` | Kingston
`305304615` | Loganholme
`305304618` | Loganlea
`305304623` | Marsden
`305304626` | Mt Warren Park
`305304627` | Park Ridge-Logan Reserve
`305304631` | Rochedale South
`305304634` | Shailer Park
`305304637` | Slacks Creek
`305304642` | Springwood
`305304645` | Tanah Merah
`305304651` | Underwood
`305304654` | Waterford West
`305304655` | Wolffdene-Bahrs Scrub
`305304656` | Woodridge
`305405013` | Albany Creek
`305405016` | Bray Park
`305405033` | Central Pine West
`305405037` | Dakabin-Kallangur-M. Downs
`305405043` | Griffin-Mango Hill
`305405047` | Hills District
`305405051` | Lawnton
`305405058` | Petrie
`305405067` | Strathpine-Brendale
`305405068` | Moreton Bay (R) Bal
`305455035` | Clontarf
`305455053` | Margate-Woody Point
`305455063` | Redcliffe-Scarborough
`305455065` | Rothwell-Kippa-Ring
`305506251` | Alexandra Hills
`305506254` | Birkdale
`305506257` | Capalaba
`305506262` | Cleveland
`305506264` | Ormiston
`305506265` | Redland Bay
`305506267` | Sheldon-Mt Cotton
`305506268` | Thorneside
`305506271` | Thornlands
`305506273` | Victoria Point
`305506276` | Wellington Point
`305506283` | Redland (C) Bal
`307103508` | Biggera Waters-Labrador
`307103511` | Bilinga-Tugun
`307103514` | Broadbeach-Mermaid Beach
`307103515` | Broadbeach Waters
`307103517` | Bundall
`307103521` | Burleigh Heads
`307103523` | Burleigh Waters
`307103527` | Coolangatta
`307103533` | Currumbin
`307103555` | Main Beach-South Stradbroke
`307103562` | Mermaid Wtrs-Clear Is. Wtrs
`307103563` | Miami
`307103573` | Palm Beach
`307103576` | Paradise Point-Runaway Bay
`307103585` | Southport
`307103587` | Surfers Paradise
`307153502` | Ashmore-Benowa
`307153525` | Carrara-Merrimac
`307153531` | Coombabah
`307153534` | Currumbin Valley-Tallebudgera
`307153535` | Currumbin Waters
`307153537` | Elanora
`307153543` | Helensvale
`307153547` | Hope Island
`307153552` | Jacobs Well-Alberton
`307153556` | Kingsholme-Upper Coomera
`307153564` | Molendinar
`307153566` | Mudgeeraba-Reedy Creek
`307153567` | Nerang
`307153568` | Oxenford-Maudsland
`307153572` | Pacific Pines-Gaven
`307153574` | Ormeau-Yatala
`307153578` | Parkwood-Arundel
`307153581` | Pimpama-Coomera
`307153582` | Robina
`307153592` | Varsity Lakes
`307153593` | Worongary-Tallai
`307203538` | Guanaba-Springbrook
`309056713` | Buderim
`309056718` | Caloundra North
`309056721` | Caloundra South
`309056723` | Coolum-Mudjimba
`309056728` | Kawana
`309056738` | Maroochydore
`309056744` | Mooloolaba
`309056748` | Nambour
`309056755` | Noosa-Noosaville
`309056761` | Paynter-Petrie Creek
`309056763` | Sunshine-Peregian
`309056772` | Tewantin
`309106716` | Caloundra Hinterland
`309106725` | Glass House Country
`309106733` | Maroochy Hinterland
`309106753` | Noosa Hinterland
`312056582` | Somerset (R) - Esk
`312056584` | Somerset (R) - Kilcoy
`312104582` | Lockyer Valley (R) - Gatton
`312104584` | Lockyer Valley (R) - Laidley
`312106512` | Scenic Rim (R) - Beaudesert
`312106514` | Scenic Rim (R) - Boonah
`312106516` | Scenic Rim (R) - Tamborine-Canungra
`315051822` | Bundaberg (R) - Bundaberg
`315051824` | Bundaberg (R) - Burnett Pt A
`315073222` | Fraser Coast (R) - Hervey Bay Pt A
`315101825` | Bundaberg (R) - Burnett Pt B
`315101827` | Bundaberg (R) - Isis
`315101828` | Bundaberg (R) - Kolan
`315102330` | Cherbourg (S)
`315103223` | Fraser Coast (R) - Hervey Bay Pt B
`315103225` | Fraser Coast (R) - Maryborough
`315103227` | Fraser Coast (R) - Woocoo-Tiaro
`315103622` | Gympie (R) - Cooloola
`315103624` | Gympie (R) - Gympie
`315103626` | Gympie (R) - Kilkivan
`315105761` | North Burnett (R) - Biggenden
`315105762` | North Burnett (R) - Eidsvold
`315105763` | North Burnett (R) - Gayndah
`315105764` | North Burnett (R) - Monto
`315105765` | North Burnett (R) - Mundubbera
`315105766` | North Burnett (R) - Perry
`315106632` | South Burnett (R) - Kingaroy
`315106634` | South Burnett (R) - Murgon
`315106636` | South Burnett (R) - Nanango
`315106638` | South Burnett (R) - Wondai
`320016912` | Cambooya
`320016921` | Gowrie
`320016926` | Highfields
`320016937` | Toowoomba Central
`320016941` | Toowoomba North-East
`320016943` | Toowoomba North-West
`320016945` | Toowoomba South-East
`320016946` | Toowoomba West
`320016947` | Westbrook
`320052662` | Dalby (R) - Chinchilla
`320052663` | Dalby (R) - Dalby
`320052665` | Dalby (R) - Murilla-Wandoan
`320052666` | Dalby (R) - Tara
`320052668` | Dalby (R) - Wambo
`320053612` | Goondiwindi (R) - Goondiwindi
`320053614` | Goondiwindi (R) - Inglewood
`320053616` | Goondiwindi (R) - Waggamba
`320056662` | Southern Downs (R) - Allora
`320056665` | Southern Downs (R) - Killarney
`320056666` | Southern Downs (R) - Stanthorpe
`320056667` | Southern Downs (R) - Warwick
`320056668` | Southern Downs (R) - West
`320056914` | Clifton
`320056916` | Crow's Nest
`320056923` | Greenmount
`320056928` | Jondaryan
`320056931` | Millmerran
`320056933` | Pittsworth
`320056935` | Rosalie
`325050300` | Balonne (S)
`325051750` | Bulloo (S)
`325055600` | Murweh (S)
`325055800` | Paroo (S)
`325056150` | Quilpie (S)
`325056412` | Roma (R) - Bendemere
`325056414` | Roma (R) - Booringa
`325056415` | Roma (R) - Bungil
`325056417` | Roma (R) - Roma
`325056418` | Roma (R) - Warroo
`330056362` | Rockhampton (R) - Fitzroy Pt A
`330056365` | Rockhampton (R) - Livingstone Pt A
`330056368` | Rockhampton (R) - Rockhampton
`330103362` | Gladstone (R) - Calliope Pt A
`330103366` | Gladstone (R) - Gladstone
`330150370` | Banana (S)
`330152272` | Central Highlands (R) - Bauhinia
`330152274` | Central Highlands (R) - Duaringa
`330152276` | Central Highlands (R) - Emerald
`330152278` | Central Highlands (R) - Peak Downs
`330153364` | Gladstone (R) - Calliope Pt B
`330153368` | Gladstone (R) - Miriam Vale
`330156363` | Rockhampton (R) - Fitzroy Pt B
`330156366` | Rockhampton (R) - Livingstone Pt B
`330156367` | Rockhampton (R) - Mount Morgan
`330157550` | Woorabinda (S)
`335050412` | Barcaldine (R) - Aramac
`335050416` | Barcaldine (R) - Barcaldine
`335050418` | Barcaldine (R) - Jericho
`335050450` | Barcoo (S)
`335050762` | Blackall Tambo (R) - Blackall
`335050765` | Blackall Tambo (R) - Tambo
`335050900` | Boulia (S)
`335052750` | Diamantina (S)
`335054712` | Longreach (R) - Ilfracombe
`335054714` | Longreach (R) - Isisford
`335054716` | Longreach (R) - Longreach
`335057400` | Winton (S)
`340054772` | Mackay (R) - Mackay Pt A
`340103982` | Isaac (R) - Belyando
`340103984` | Isaac (R) - Broadsound
`340103986` | Isaac (R) - Nebo
`340104773` | Mackay (R) - Mackay Pt B
`340104775` | Mackay (R) - Mirani
`340104777` | Mackay (R) - Sarina
`340107342` | Whitsunday (R) - Bowen
`340107345` | Whitsunday (R) - Whitsunday
`345057001` | Aitkenvale
`345057003` | City
`345057007` | Cranbrook
`345057012` | Currajong
`345057014` | Douglas
`345057015` | Garbutt
`345057018` | Gulliver
`345057023` | Heatley
`345057026` | Hermit Park
`345057027` | Hyde Park-Mysterton
`345057031` | Magnetic Island
`345057033` | Mt Louisa-Mt St John-Bohle
`345057034` | Mundingburra
`345057038` | Murray
`345057041` | North Ward-Castle Hill
`345057044` | Oonoonba-Idalia-Cluden
`345057047` | Pallarenda-Shelley Beach
`345057051` | Pimlico
`345057054` | Railway Estate
`345057058` | Rosslea
`345057062` | Rowes Bay-Belgian Gardens
`345057065` | South Townsville
`345057068` | Stuart-Roseneath
`345057071` | Vincent
`345057074` | West End
`345057078` | Wulguru
`345107005` | Condon-Rasmussen-Bohle Basin
`345107028` | Kelso
`345107030` | Kirwan
`345151900` | Burdekin (S)
`345152312` | Charters Towers (R) - Charters Towers
`345152314` | Charters Towers (R) - Dalrymple
`345153800` | Hinchinbrook (S)
`345155790` | Palm Island (S)
`345157043` | Northern Beaches-Pinnacles
`345157076` | Woodstock-Cleveland-Ross
`350052062` | Cairns (R) - Barron
`350052065` | Cairns (R) - Central Suburbs
`350052066` | Cairns (R) - City
`350052068` | Cairns (R) - Mt Whitfield
`350052072` | Cairns (R) - Northern Suburbs
`350052074` | Cairns (R) - Trinity
`350052076` | Cairns (R) - Western Suburbs
`350100250` | Aurukun (S)
`350102067` | Cairns (R) - Douglas
`350102078` | Cairns (R) - Pt B
`350102262` | Cassowary Coast (R) - Cardwell
`350102264` | Cassowary Coast (R) - Johnstone
`350102500` | Cook (S)
`350102600` | Croydon (S)
`350103100` | Etheridge (S)
`350103830` | Hope Vale (S)
`350104420` | Kowanyama (S)
`350104570` | Lockhart River (S)
`350104830` | Mapoon (S)
`350105670` | Napranum (S)
`350105781` | Northern Peninsula Area (R) - Bamaga
`350105783` | Northern Peninsula Area (R) - Injinoo
`350105784` | Northern Peninsula Area (R) - New Mapoon
`350105786` | Northern Peninsula Area (R) - Seisia
`350105788` | Northern Peninsula Area (R) - Umagico
`350106070` | Pormpuraaw (S)
`350106812` | Tablelands (R) - Atherton
`350106814` | Tablelands (R) - Eacham
`350106816` | Tablelands (R) - Herberton
`350106818` | Tablelands (R) - Mareeba
`350106950` | Torres (S)
`350106963` | Torres Strait Island (R) - Badu
`350106965` | Torres Strait Island (R) - Boigu
`350106968` | Torres Strait Island (R) - Dauan
`350106972` | Torres Strait Island (R) - Erub
`350106974` | Torres Strait Island (R) - Hammond
`350106976` | Torres Strait Island (R) - Iama
`350106978` | Torres Strait Island (R) - Kubin
`350106982` | Torres Strait Island (R) - Mabuiag
`350106984` | Torres Strait Island (R) - Mer
`350106986` | Torres Strait Island (R) - Poruma
`350106992` | Torres Strait Island (R) - Saibai
`350106993` | Torres Strait Island (R) - St Pauls
`350106995` | Torres Strait Island (R) - Ugar
`350106996` | Torres Strait Island (R) - Warraber
`350106998` | Torres Strait Island (R) - Yorke
`350107300` | Weipa (T)
`350107570` | Wujal Wujal (S)
`350107600` | Yarrabah (S)
`355051950` | Burke (S)
`355052250` | Carpentaria (S)
`355052450` | Cloncurry (S)
`355052770` | Doomadgee (S)
`355053200` | Flinders (S)
`355054800` | McKinlay (S)
`355055250` | Mornington (S)
`355055300` | Mount Isa (C)
`355056300` | Richmond (S)
`385019779` | Off-Shore Areas and Migratory
`405052030` | Gawler (T)
`405055681` | Playford (C) - East Central
`405055683` | Playford (C) - Elizabeth
`405055684` | Playford (C) - Hills
`405055686` | Playford (C) - West
`405055688` | Playford (C) - West Central
`405055891` | Port Adel. Enfield (C) - East
`405055894` | Port Adel. Enfield (C) - Inner
`405057141` | Salisbury (C) - Central
`405057143` | Salisbury (C) - Inner North
`405057144` | Salisbury (C) - North-East
`405057146` | Salisbury (C) - South-East
`405057148` | Salisbury (C) Bal
`405057701` | Tea Tree Gully (C) - Central
`405057704` | Tea Tree Gully (C) - Hills
`405057705` | Tea Tree Gully (C) - North
`405057708` | Tea Tree Gully (C) - South
`405101061` | Charles Sturt (C) - Coastal
`405101064` | Charles Sturt (C) - Inner East
`405101065` | Charles Sturt (C) - Inner West
`405101068` | Charles Sturt (C) - North-East
`405105895` | Port Adel. Enfield (C) - Coast
`405105896` | Port Adel. Enfield (C) - Park
`405105897` | Port Adel. Enfield (C) - Port
`405108411` | West Torrens (C) - East
`405108414` | West Torrens (C) - West
`405108899` | Unincorp. Western
`405150070` | Adelaide (C)
`405150121` | Adelaide Hills (DC) - Central
`405150124` | Adelaide Hills (DC) - Ranges
`405150701` | Burnside (C) - North-East
`405150704` | Burnside (C) - South-West
`405150911` | Campbelltown (C) - East
`405150914` | Campbelltown (C) - West
`405155291` | Norw. P'ham St Ptrs (C) - East
`405155294` | Norw. P'ham St Ptrs (C) - West
`405156510` | Prospect (C)
`405157981` | Unley (C) - East
`405157984` | Unley (C) - West
`405158260` | Walkerville (M)
`405202601` | Holdfast Bay (C) - North
`405202604` | Holdfast Bay (C) - South
`405204061` | Marion (C) - Central
`405204064` | Marion (C) - North
`405204065` | Marion (C) - South
`405204341` | Mitcham (C) - Hills
`405204344` | Mitcham (C) - North-East
`405204345` | Mitcham (C) - West
`405205341` | Onkaparinga (C) - Hackham
`405205342` | Onkaparinga (C) - Hills
`405205343` | Onkaparinga (C) - Morphett
`405205344` | Onkaparinga (C) - North Coast
`405205345` | Onkaparinga (C) - Reservoir
`405205346` | Onkaparinga (C) - South Coast
`405205347` | Onkaparinga (C) - Woodcroft
`410050311` | Barossa (DC) - Angaston
`410050314` | Barossa (DC) - Barossa
`410050315` | Barossa (DC) - Tanunda
`410053650` | Light (RegC)
`410053920` | Mallala (DC)
`410102750` | Kangaroo Island (DC)
`410150125` | Adelaide Hills (DC) - North
`410150128` | Adelaide Hills (DC) Bal
`410154551` | Mount Barker (DC) - Central
`410154554` | Mount Barker (DC) Bal
`410200221` | Alexandrina (DC) - Coastal
`410200224` | Alexandrina (DC) - Strathalbyn
`410208050` | Victor Harbor (C)
`410208750` | Yankalilla (DC)
`415050430` | Barunga West (DC)
`415051560` | Copper Coast (DC)
`415058831` | Yorke Peninsula (DC) - North
`415058834` | Yorke Peninsula (DC) - South
`415058969` | Unincorp. Yorke
`415101140` | Clare and Gilbert Valleys (DC)
`415102110` | Goyder (DC)
`415108130` | Wakefield (DC)
`420050521` | Berri and Barmera (DC) - Barmera
`420050524` | Berri and Barmera (DC) - Berri
`420053791` | Loxton Waikerie (DC) - East
`420053794` | Loxton Waikerie (DC) - West
`420054210` | Mid Murray (DC)
`420056671` | Renmark Paringa (DC) - Paringa
`420056674` | Renmark Paringa (DC) - Renmark
`420059039` | Unincorp. Riverland
`420103080` | Karoonda East Murray (DC)
`420105040` | Murray Bridge (RC)
`420107290` | Southern Mallee (DC)
`420107800` | The Coorong (DC)
`420109109` | Unincorp. Murray Mallee
`425053360` | Kingston (DC)
`425055090` | Naracoorte and Lucindale (DC)
`425056860` | Robe (DC)
`425057630` | Tatiara (DC)
`425102250` | Grant (DC)
`425104620` | Mount Gambier (C)
`425108341` | Wattle Range (DC) - East
`425108344` | Wattle Range (DC) - West
`430051190` | Cleve (DC)
`430051750` | Elliston (DC)
`430051960` | Franklin Harbour (DC)
`430053220` | Kimba (DC)
`430053570` | Le Hunte (DC)
`430053710` | Lower Eyre Peninsula (DC)
`430056300` | Port Lincoln (C)
`430057910` | Tumby Bay (DC)
`430059179` | Unincorp. Lincoln
`430101010` | Ceduna (DC)
`430107490` | Streaky Bay (DC)
`430109249` | Unincorp. West Coast
`435058540` | Whyalla (C)
`435059389` | Unincorp. Whyalla
`435155120` | Northern Areas (DC)
`435155400` | Orroroo/Carrieton (DC)
`435155540` | Peterborough (DC)
`435156451` | Port Pirie C Dists (M) - City
`435156454` | Port Pirie C Dists (M) Bal
`435159459` | Unincorp. Pirie
`435201830` | Flinders Ranges (DC)
`435204830` | Mount Remarkable (DC)
`435206090` | Port Augusta (C)
`435209529` | Unincorp. Flinders Ranges
`435250250` | Anangu Pitjantjatjara (AC)
`435251330` | Coober Pedy (DC)
`435254000` | Maralinga Tjarutja (AC)
`435256970` | Roxby Downs (M)
`435259589` | Unincorp. Far North
`485019779` | Off-Shore Areas & Migratory
`505051310` | Cambridge (T)
`505051750` | Claremont (T)
`505052170` | Cottesloe (T)
`505055740` | Mosman Park (T)
`505056580` | Nedlands (C)
`505056930` | Peppermint Grove (S)
`505057081` | Perth (C) - Inner
`505057082` | Perth (C) - Remainder
`505057980` | Subiaco (C)
`505058570` | Vincent (T)
`505100350` | Bassendean (T)
`505100420` | Bayswater (C)
`505104200` | Kalamunda (S)
`505106090` | Mundaring (S)
`505108050` | Swan (C)
`505154171` | Joondalup (C) - North
`505154174` | Joondalup (C) - South
`505157914` | Stirling (C) - Central
`505157915` | Stirling (C) - Coastal
`505157916` | Stirling (C) - South-Eastern
`505158761` | Wanneroo (C) - North-East
`505158764` | Wanneroo (C) - North-West
`505158767` | Wanneroo (C) - South
`505201820` | Cockburn (C)
`505203150` | East Fremantle (T)
`505203431` | Fremantle (C) - Inner
`505203432` | Fremantle (C) - Remainder
`505204830` | Kwinana (T)
`505205320` | Melville (C)
`505207490` | Rockingham (C)
`505250210` | Armadale (C)
`505250490` | Belmont (C)
`505251330` | Canning (C)
`505253780` | Gosnells (C)
`505257700` | Serpentine-Jarrahdale (S)
`505257840` | South Perth (C)
`505258510` | Victoria Park (T)
`510015110` | Mandurah (C)
`510016230` | Murray (S)
`510031190` | Bunbury (C)
`510031401` | Capel (S) - Pt A
`510032661` | Dardanup (S) - Pt A
`510033991` | Harvey (S) - Pt A
`510100630` | Boddington (S)
`510101404` | Capel (S) - Pt B
`510101890` | Collie (S)
`510102664` | Dardanup (S) - Pt B
`510102870` | Donnybrook-Balingup (S)
`510103994` | Harvey (S) - Pt B
`510108820` | Waroona (S)
`510150280` | Augusta-Margaret River (S)
`510151260` | Busselton (S)
`510200770` | Boyup Brook (S)
`510200840` | Bridgetown-Greenbushes (S)
`510205180` | Manjimup (S)
`510206300` | Nannup (S)
`515051080` | Broomehill-Tambellup (S)
`515053640` | Gnowangerup (S)
`515054130` | Jerramungup (S)
`515054340` | Katanning (S)
`515054480` | Kent (S)
`515054550` | Kojonup (S)
`515059380` | Woodanilling (S)
`515100081` | Albany (C) - Central
`515100084` | Albany (C) Bal
`515102240` | Cranbrook (S)
`515102730` | Denmark (S)
`515107210` | Plantagenet (S)
`520050910` | Brookton (S)
`520052310` | Cuballing (S)
`520053010` | Dumbleyung (S)
`520056440` | Narrogin (T)
`520056510` | Narrogin (S)
`520057140` | Pingelly (S)
`520058610` | Wagin (S)
`520058680` | Wandering (S)
`520058890` | West Arthur (S)
`520059100` | Wickepin (S)
`520059170` | Williams (S)
`520102100` | Corrigin (S)
`520104620` | Kondinin (S)
`520104760` | Kulin (S)
`520104900` | Lake Grace (S)
`525051680` | Chittering (S)
`525052590` | Dandaragan (S)
`525053570` | Gingin (S)
`525055600` | Moora (S)
`525058540` | Victoria Plains (S)
`525100560` | Beverley (S)
`525102450` | Cunderdin (S)
`525102520` | Dalwallinu (S)
`525102940` | Dowerin (S)
`525103710` | Goomalling (S)
`525104690` | Koorda (S)
`525106732` | Northam
`525106735` | Northam Town
`525107350` | Quairading (S)
`525108190` | Tammin (S)
`525108330` | Toodyay (S)
`525109310` | Wongan-Ballidu (S)
`525109450` | Wyalkatchem (S)
`525109730` | York (S)
`525151120` | Bruce Rock (S)
`525154410` | Kellerberrin (S)
`525155460` | Merredin (S)
`525155880` | Mount Marshall (S)
`525155950` | Mukinbudin (S)
`525156370` | Narembeen (S)
`525156860` | Nungarin (S)
`525158400` | Trayning (S)
`525159030` | Westonia (S)
`525159660` | Yilgarn (S)
`530014281` | Kalgoorlie/Boulder (C) - Pt A
`530051960` | Coolgardie (S)
`530054284` | Kalgoorlie/Boulder (C) - Pt B
`530054970` | Laverton (S)
`530055040` | Leonora (S)
`530055390` | Menzies (S)
`530056620` | Ngaanyatjarraku (S)
`530103080` | Dundas (S)
`530103290` | Esperance (S)
`530107420` | Ravensthorpe (S)
`535033522` | Geraldton
`535033524` | Greenough - Pt A
`535051540` | Carnarvon (S)
`535053360` | Exmouth (S)
`535057770` | Shark Bay (S)
`535058470` | Upper Gascoyne (S)
`535102380` | Cue (S)
`535105250` | Meekatharra (S)
`535105810` | Mount Magnet (S)
`535106160` | Murchison (S)
`535107630` | Sandstone (S)
`535109250` | Wiluna (S)
`535109590` | Yalgoo (S)
`535151470` | Carnamah (S)
`535151610` | Chapman Valley (S)
`535152030` | Coorow (S)
`535153526` | Greenough - Pt B
`535154060` | Irwin (S)
`535155530` | Mingenew (S)
`535155670` | Morawa (S)
`535156020` | Mullewa (S)
`535156790` | Northampton (S)
`535157000` | Perenjori (S)
`535158260` | Three Springs (S)
`540053220` | East Pilbara (S)
`540057280` | Port Hedland (T)
`540100250` | Ashburton (S)
`540107560` | Roebourne (S)
`545053920` | Halls Creek (S)
`545059520` | Wyndham-East Kimberley (S)
`545100980` | Broome (S)
`545102800` | Derby-West Kimberley (S)
`585019779` | Off-Shore Areas & Migratory
`605050410` | Brighton (M)
`605051410` | Clarence (C)
`605051511` | Derwent Valley (M) - Pt A
`605052610` | Glenorchy (C)
`605052811` | Hobart (C) - Inner
`605052812` | Hobart (C) - Remainder
`605053611` | Kingborough (M) - Pt A
`605054811` | Sorell (M) - Pt A
`610051010` | Central Highlands (M)
`610051512` | Derwent Valley (M) - Pt B
`610052410` | Glamorgan/Spring Bay (M)
`610053010` | Huon Valley (M)
`610053612` | Kingborough (M) - Pt B
`610054812` | Sorell (M) - Pt B
`610055010` | Southern Midlands (M)
`610055210` | Tasman (M)
`615052211` | George Town (M) - Pt A
`615054011` | Launceston (C) - Inner
`615054012` | Launceston (C) - Pt B
`615054211` | Meander Valley (M) - Pt A
`615054611` | Northern Midlands (M) - Pt A
`615055811` | West Tamar (M) - Pt A
`615102212` | George Town (M) - Pt B
`615104013` | Launceston (C) - Pt C
`615104212` | Meander Valley (M) - Pt B
`615104612` | Northern Midlands (M) - Pt B
`615105812` | West Tamar (M) - Pt B
`615150210` | Break O'Day (M)
`615151810` | Dorset (M)
`615152010` | Flinders (M)
`620050611` | Burnie (C) - Pt A
`620050811` | Central Coast (M) - Pt A
`620051610` | Devonport (C)
`620053811` | Latrobe (M) - Pt A
`620055411` | Waratah/Wynyard (M) - Pt A
`620100612` | Burnie (C) - Pt B
`620100812` | Central Coast (M) - Pt B
`620101210` | Circular Head (M)
`620103210` | Kentish (M)
`620103410` | King Island (M)
`620103812` | Latrobe (M) - Pt B
`620105412` | Waratah/Wynyard (M) - Pt B
`620155610` | West Coast (M)
`685019779` | Off-Shore Areas & Migratory
`705051004` | Alawa
`705051008` | Anula
`705051011` | Bayview-Woolner
`705051014` | Brinkin
`705051018` | City - Inner
`705051024` | Coconut Grove
`705051028` | Fannie Bay
`705051034` | Jingili
`705051038` | Karama
`705051044` | Larrakeyah
`705051048` | Leanyer
`705051052` | Lee Point-Leanyer Swamp
`705051054` | Ludmilla
`705051058` | Malak
`705051064` | Marrara
`705051068` | Millner
`705051074` | Moil
`705051078` | Nakara
`705051084` | Narrows
`705051088` | Nightcliff
`705051094` | Parap
`705051098` | Rapid Creek
`705051104` | Stuart Park
`705051108` | The Gardens
`705051114` | Tiwi
`705051118` | Wagaman
`705051124` | Wanguri
`705051128` | Winnellie
`705051134` | Wulagi
`705051138` | City - Remainder
`705101169` | East Arm
`705102802` | Bakewell
`705102804` | Driver
`705102806` | Durack
`705102808` | Gray
`705102811` | Gunn-Palmerston City
`705102814` | Moulden
`705102818` | Woodroffe
`705102824` | Palmerston (C) Bal
`705202304` | Litchfield (S) - Pt A
`705202308` | Litchfield (S) - Pt B
`710050540` | Belyuen (S)
`710050700` | Coomalie (S)
`710051509` | Finniss-Mary
`710054560` | Wagait (S)
`710104050` | Tiwi Islands (S)
`710154663` | West Arnhem (S) - Jabiru
`710154666` | West Arnhem (S) Bal
`710250419` | Alyangula
`710251300` | East Arnhem (S)
`710252409` | Nhulunbuy
`710302200` | Katherine (T)
`710303600` | Roper Gulf (S)
`710304505` | Victoria-Daly (S) - Wadeye and OS
`710304508` | Victoria-Daly (S) Bal
`710350422` | Barkly (S) - Tennant Creek
`710350425` | Barkly (S) Bal
`710400201` | Alice Springs (T) - Charles
`710400203` | Alice Springs (T) - Heavitree
`710400205` | Alice Springs (T) - Larapinta
`710400207` | Alice Springs (T) - Ross
`710400208` | Alice Springs (T) - Stuart
`710400620` | Central Desert (S)
`710402330` | MacDonnell (S)
`710406059` | Yulara
`785019779` | Off-Shore Areas & Migratory
`805050089` | Acton
`805050189` | Ainslie
`805050639` | Braddon
`805050909` | Campbell
`805051449` | City
`805051889` | Dickson
`805051989` | Downer
`805052169` | Duntroon
`805053609` | Hackett
`805055049` | Kowen
`805055229` | Lyneham
`805055769` | Majura
`805056389` | O'Connor
`805057209` | Reid
`805057479` | Russell
`805058289` | Turner
`805058559` | Watson
`805100279` | Aranda
`805100459` | Belconnen Town Centre
`805100549` | Belconnen - SSD Bal
`805100729` | Bruce
`805101179` | Charnwood
`805101629` | Cook
`805102139` | Dunlop
`805102259` | Evatt
`805102619` | Florey
`805102709` | Flynn
`805102889` | Fraser
`805103249` | Giralang
`805103879` | Hawker
`805103969` | Higgins
`805104149` | Holt
`805104779` | Kaleen
`805105139` | Latham
`805105409` | McKellar
`805105589` | Macgregor
`805105679` | Macquarie
`805105949` | Melba
`805106669` | Page
`805107569` | Scullin
`805107659` | Spence
`805108649` | Weetangera
`805151269` | Chifley
`805151719` | Curtin
`805152439` | Farrer
`805153069` | Garran
`805154239` | Hughes
`805154419` | Isaacs
`805155319` | Lyons
`805155859` | Mawson
`805156489` | O'Malley
`805156849` | Pearce
`805156939` | Phillip
`805158109` | Torrens
`805201089` | Chapman
`805202079` | Duffy
`805202529` | Fisher
`805204059` | Holder
`805207389` | Rivett
`805207749` | Stirling
`805207839` | Stromlo
`805208469` | Waramanga
`805208739` | Weston
`805208829` | Weston Creek-Stromlo - SSD Bal
`805250339` | Banks
`805250609` | Bonython
`805250819` | Calwell
`805251359` | Chisholm
`805251549` | Conder
`805252349` | Fadden
`805253159` | Gilmore
`805253289` | Gordon
`805253339` | Gowrie
`805253379` | Greenway
`805254509` | Isabella Plains
`805254869` | Kambah
`805255489` | Macarthur
`805256129` | Monash
`805256579` | Oxley
`805257289` | Richardson
`805258019` | Theodore
`805258189` | Tuggeranong - SSD Bal
`805258379` | Wanniassa
`805350369` | Barton
`805351809` | Deakin
`805352789` | Forrest
`805352979` | Fyshwick
`805353429` | Griffith
`805353789` | Harman
`805354329` | Hume
`805354589` | Jerrabomberra
`805354959` | Kingston
`805356219` | Narrabundah
`805356309` | Oaks Estate
`805356759` | Parkes
`805357029` | Pialligo
`805357119` | Red Hill
`805357929` | Symonston
`805358919` | Yarralumla
`805400239` | Amaroo
`805400589` | Bonner
`805400939` | Casey
`805401649` | Crace
`805402779` | Forde
`805402919` | Franklin
`805403519` | Gungahlin
`805403529` | Gungahlin-Hall - SSD Bal
`805403689` | Hall
`805403819` | Harrison
`805406039` | Mitchell
`805406249` | Ngunnawal
`805406279` | Nicholls
`805406719` | Palmerston
`810059009` | Remainder of ACT
`910051009` | Jervis Bay Territory
`910052009` | Territory of Christmas Island
`910053009` | Territory of Cocos (Keeling) Islands
`985019779` | Off-Shore Areas & Migratory

### Birthdate Verification

`1004` | Birth certificate
`1006` | Hospital certificate
`1008` | Passport
`1009` | Physician's certificate
`1010` | Previously verified school records
`1011` | State-issued ID
`1012` | Driver's license
`1013` | Immigration document/visa
`3423` | Other official document
`3424` | Other non-official document
`9999` | Other
`N` | Birthdate NOT Verified
`Y` | Documentation Sighted, type not recorded

### Calendar Event

A code indicating the type of school day

`0845` | Teacher only day
`0846` | Holiday
`0848` | Student late arrival/early dismissal
`0849` | Emergency day
`3421` | Strike
`9999` | Other
`INST` | Instructional School Day
`MKUP` | Instructional day that is scheduled solely to make up for emergency days or early dismissal days.

### Day Value Code

`AM` | Morning
`Full` | All Day
`N/A` | Not Applicable
`Partial` | Partial Day
`PM` | Afternoon

### Dwelling Arrangement

`1669` | Boarding house
`1670` | Cooperative house
`1671` | Crisis shelter
`1672` | Disaster shelter
`1673` | Residential school/dormitory
`1674` | Family residence - Both Parents/Guardians
`1675` | Foster home
`1676` | Institution
`1677` | Prison or juvenile detention center
`1678` | Rooming house
`1679` | Transient shelter
`167I` | Independent
`167o` | Family residence - One Parent/Guardian
`1680` | No home (Homeless Youth)
`1681` | Other dormitory
`168A` | Arranged by State - Out of Home Care
`3425` | Group home/halfway house
`4000` | Boarder
`9999` | Other

### Education Agency Type

`01` | Jurisdictional agency
`02` | Cross-jurisdictional agency
`03` | Intra-jurisdictional agency
`99` | Other

### Electronic Id Type

`01` | Barcode
`02` | Magstripe
`03` | PIN
`04` | RFID

### Email Type

`01` | Primary
`02` | Alternate 1
`03` | Alternate 2
`04` | Alternate 3
`05` | Alternate 4

### Employment Type

`1` | Senior management in large business organisation, government administration and defence and qualified professionals.
`2` | Other business manages, arts/media/sportspersons and associate professionals
`3` | Tradsesmen/women, clerks and skilled office, sales and service staff
`4` | Machine Operators, hospitality staff, assistants, labourers and related workers
`8` | Out of employed work for 12 months or more (If less use previous occupational group.)
`9` | Unknown

### English Proficiency

`0` | Not Stated/Inadequately described
`1` | Very well
`2` | Well
`3` | Not well
`4` | Not at all
`9` | Not Applicable - English is 'first language spoken' and do not 'speak a language other than English at home'.

### Enrollment Time Frame

`C` | Current
`F` | Future
`H` | Historical

### Entry Type

`0998` | Temporary enrolment
`1821` | Transfer from a public school in the same district
`1822` | Transfer from a public school in a different district in the same jurisdiction
`1823` | Transfer from a public school in a different jurisdication
`1824` | Transfer from a private, non-religiously-affiliated school in the same district
`1825` | Transfer from a private, non-religiously-affiliated school in a different district
`1826` | Transfer from a private, non-religiously-affiliated school in a different jurisdiction
`1827` | Transfer from a private, religiously-affiliated school in the same district
`1828` | Transfer from a private, religiously-affiliated school in a different district in the same jurisdiction
`1829` | Transfer from a private, religiously-affiliated school in a different jurisdiction
`1830` | Transfer from a school outside of the country
`1831` | Transfer from an institution
`1833` | Transfer from home schooling
`1835` | Re-entry from the same school with no interruption of schooling
`1836` | Re-entry after a voluntary withdrawal
`1837` | Re-entry after an involuntary withdrawal
`1838` | Original entry into an Australian school
`1839` | Original entry into an Australian school from a foreign country with no interruption in schooling
`1840` | Original entry into an Australian school from a foreign country with an interruption in schooling
`9999` | Other

### Exit/Withdrawal Status

`1905` | Permanent exit/withdrawal
`1906` | Temporary exit/withdrawal
`9999` | Unknown

### Exit/Withdrawal Type

`1907` | Student is in a different public school in the same district
`1908` | Transferred to a public school in a different local education agency in the same jurisdiction
`1909` | Transferred to a public school in a different jurisdiction
`1910` | Transferred to a private, non-religiously-affiliated school in the district
`1911` | Transferred to a private, non-religiously-affiliated school in a different district the same jurisdiction
`1912` | Transferred to a private, non-religiously-affiliated school in a different jurisdiction
`1913` | Transferred to a private, religiously-affiliated school in the same district
`1914` | Transferred to a private, religiously-affiliated school in a different district in the same jurisdiction
`1915` | Transferred to a private, religiously-affiliated school in a different jurisdiction
`1916` | Transferred to a school outside of the country
`1917` | Transferred to an institution
`1918` | Transferred to home schooling
`1919` | Transferred to a charter school
`1921` | Graduated with regular, advanced, International Baccalaureate, or other type of diploma
`1922` | Completed school with other credentials
`1923` | Died or is permanently incapacitated
`1924` | Withdrawn due to illness
`1925` | Expelled or involuntarily withdrawn
`1926` | Reached maximum age for services
`1927` | Discontinued schooling
`1928` | Completed grade 12, but did not meet all graduation requirements
`1930` | Enrolled in a postsecondary early admission program, eligible to return
`1931` | Not enrolled, unknown status
`3499` | Student is in the same local education agency and receiving education services, but is not assigned
`3500` | Enrolled in an adult education or training program
`3501` | Completed a state-recognized vocational education program
`3502` | Not enrolled, eligible to return
`3503` | Enrolled in a foreign exchange program, eligible to return
`3504` | Withdrawn from school, under the age for compulsory attendance; eligible to return
`3505` | Exited
`3509` | Completed with a state-recognized equivalency certificate
`9999` | Other

### Federal Electorate

Federal Electorates from the Australian Electoral Commission

`101` | Banks
`102` | Barton
`103` | Bennelong
`104` | Berowra
`105` | Blaxland
`106` | Bradfield
`107` | Calare
`108` | Charlton
`109` | Chifley
`110` | Cook
`111` | Cowper
`112` | Cunningham
`113` | Dobell
`114` | Eden-Monaro
`115` | Farrer
`116` | Fowler
`117` | Gilmore
`118` | Grayndler
`119` | Greenway
`120` | Gwydir
`121` | Hughes
`122` | Hume
`123` | Hunter
`124` | Kingsford Smith
`125` | Lindsay
`126` | Lowe
`127` | Lyne
`128` | Macarthur
`129` | Mackellar
`130` | Macquarie
`131` | itchell
`132` | New England
`133` | Newcastle
`134` | North Sydney
`135` | Page
`136` | Parkes
`137` | Parramatta
`138` | Paterson
`139` | Prospect
`140` | Reid
`141` | Richmond
`142` | Riverina
`143` | Robertson
`144` | Shortland
`145` | Sydney
`146` | Throsby
`147` | Warringah
`148` | Watson
`149` | Wentworth
`150` | Werriwa
`199` | Not Applicable (NSW)
`201` | Aston
`202` | Ballarat
`203` | Batman
`204` | Bendigo
`205` | Bruce
`206` | Calwell
`207` | Casey
`208` | Chisholm
`209` | Corangamite
`210` | Corio
`211` | Deakin
`212` | Dunkley
`213` | Flinders
`214` | Gellibrand
`215` | Gippsland
`216` | Goldstein
`217` | Gorton
`218` | Higgins
`219` | Holt
`220` | Hotham
`221` | Indi
`222` | Isaacs
`223` | Jagajaga
`224` | Kooyong
`225` | La Trobe
`226` | Lalor
`227` | Mallee
`228` | Maribyrnong
`229` | McEwen
`230` | McMillan
`231` | Melbourne
`232` | Melbourne Ports
`233` | Menzies
`234` | Murray
`235` | Scullin
`236` | Wannon
`237` | Wills
`299` | Not Applicable (VIC)
`301` | Blair
`302` | Bonner
`303` | Bowman
`304` | Brisbane
`305` | Capricornia
`306` | Dawson
`307` | Dickson
`308` | Fadden
`309` | Fairfax
`310` | Fisher
`311` | Forde
`312` | Griffith
`313` | Groom
`314` | Herbert
`315` | Hinkler
`316` | Kennedy
`317` | Leichhardt
`318` | Lilley
`319` | Longman
`320` | Maranoa
`321` | McPherson
`322` | Moncrieff
`323` | Moreton
`324` | Oxley
`325` | Petrie
`326` | Rankin
`327` | Ryan
`328` | Wide Bay
`399` | Not Applicable (QLD)
`401` | Adelaide
`402` | Barker
`403` | Boothby
`404` | Grey
`405` | Hindmarsh
`406` | Kingston
`407` | Makin
`408` | Mayo
`409` | Port Adelaide
`410` | Sturt
`411` | Wakefield
`499` | Not Applicable (SA)
`501` | Brand
`502` | Canning
`503` | Cowan
`504` | Curtin
`505` | Forrest
`506` | Fremantle
`507` | Hasluck
`508` | Kalgoorlie
`509` | Moore
`510` | O'Connor
`511` | Pearce
`512` | Perth
`513` | Stirling
`514` | Swan
`515` | Tangney
`599` | Not Applicable (WA)
`601` | Bass
`602` | Braddon
`603` | Denison
`604` | Franklin
`605` | Lyons
`699` | Not Applicable (TAS)
`701` | Lingiari
`702` | Solomon
`799` | Not Applicable (NT)
`801` | Canberra
`802` | Fraser
`899` | Not Applicable (ACT)
`999` | Not Applicable

### FTPT Status Code

`01` | Full Time
`02` | Part Time

### Immunisation Certificate Status

`C` | Complete
`I` | Incomplete
`N` | Not Sighted

### Indigenous Status

`1` | Aboriginal but not Torres Strait Islander Origin
`2` | Torres Strait Islander but Not Aboriginal Origin
`3` | Both Torres Strait and Aboriginal Origin
`4` | Neither Aboriginal or Torres Strait Origin
`9` | Not Stated/Unknown

### Language Type

`1` | Main Language Spoken at Home
`2` | Main Language Other Than English Spoken at Home,
`3` | First Language Spoken
`4` | Language Spoken at Home
`5` | Language of Greatest Competency
`6` | Preferred Language
`9` | Other

### LearningStandardItem Relationship Types

`Content` | A link to another state or school content standard.
`PD` |
`State` | A link to a standard from another state. The purpose of this is to express relationships between state standards.

### Marital Status AIHW

MaritalStatus - AIHW

http://meteor.aihw.gov.au/content/index.phtml/itemId/291045

From Meteor – Australian Institute of Health and Welfare

`1` | Never Married
`2` | Widowed
`3` | Divorced
`4` | Separated
`5` | Married (registered and de facto)
`6` | Not stated/inadequately described

### Name Usage Type

`AKA` | Also known as or alias
`BTH` | Name at Birth
`LGL` | Legal Name of the client as defined by the organisation which collects it (legal not defined in this standard)
`MDN` | Maiden Name
`NEW` | New born identification name
`OTH` | Non specific name usage type
`PRF` | Preferred name
`PRV` | Previous name
`STG` | Stage name
`TRB` | Tribal Name

### Non-School Education

`0` | Not stated/Unknown
`5` | Certificate I to IV (including trade certificate)
`6` | Advanced diploma/Diploma
`7` | Bachelor degree or above
`8` | No non-school qualification

### Operational Status

`B` | Building or Construction Started
`C` | Closed
`O` | Open
`P` | Pending
`S` | Site
`U` | Unstaffed

### Permanent Resident Status

`99` | Unknown
`N` | Not a Resident
`P` | Permanent Resident
`T` | Temporary Resident

### Picture Source

`01` | URL
`02` | JPG
`03` | Bitmap
`04` | Gif
`05` | PIF
`06` | PDF
`09` | Other
`10` | MIME

### Program Funding Source Code

`1` | State/Jurisdiction
`2` | Commonwealth Initiative
`3` | School Source
`4` | Director's Discretion
`5` | Community Sponsored
`9` | Other

### Progress Level

`Above` | Above level
`At` | At level
`Below` | Below level

### Public School Catchment Status

`1652` | Resident of usual school catchment area
`1653` | Resident of another school catchment area
`9999` | Unknown

### Relationship To Student

`01` | Parent
`02` | Step-Parent
`03` | Adoptive Parent
`04` | Foster Parent
`05` | Host Family
`06` | Relative
`07` | Friend
`08` | Self
`09` | Other
`10` | Sibling
`11` | Grandparent
`12` | Aunt/Uncle
`13` | Nephew/Niece
`99` | Not provided

### School Co-Ed Status

`C` | Co-Educational
`F` | Female
`M` | Male

### School Education Level Type

`0` | Not stated/Unknown
`1` | Year 9 or equivalent or below
`2` | Year 10 or equivalent
`3` | Year 11 or equivalent
`4` | Year 12 or equivalent

### School Enrollment Type

`01` | Home School
`02` | Other School
`03` | Concurrent Enrolment

### School Focus Code

`01` | Regular
`02` | Special Ed
`03` | Alternate
`04` | Vocational
`98` | Other
`99` | Not Provided

### School Level

`Camp` | Camp
`Commty` | Community College
`EarlyCh` | Early Childhood
`JunPri` | Junior Primary
`Kgarten` | Kindergarten only
`Kind` | Preschool/Kindergarten
`Lang` | Language
`MCH` | Maternal Child Health Centre
`Middle` | Middle School
`Other` | Other
`PreSch` | PreSchool only
`Pri/Sec` | Primary/Seconday Combined
`Prim` | Primary
`Sec` | Secondary
`Senior` | Senior Secondary School
`Special` | Special
`Specif` | Specific Purpose
`Supp` | SupportCentre
`Unknown` | Unknown

### School Location

`1` | Metropolitan Zone
`1.1` | State Capital regions - State Capitals (except Hobart, Darwin)
`1.2` | Major urban Statistical Districts (Pop >=100 000)
`2` | Provincial Zone
`2.1.1` | Provincial City Statistical Districts (Pop 50 000 - 99 999)
`2.1.2` | Provincial City Statistical Districts (Pop 25 000 - 49 999)
`2.2.1` | Inner Provincial areas (CD ARIA Plus score <= 2.4)
`2.2.2` | Outer Provincial areas (CD ARIA Plus score > 2.4 and <= 5.92)
`3` | Remote Zone
`3.1` | Remote areas (CD ARIA Plus score > 5.92 and <= 10.53)
`3.2` | Very Remote areas (CD ARIA Plus score > 10.53)

### School Sector Code

`Gov` | Government School
`NG` | Non-Government School

### School System

Codes provided by DEEWR

`0001` | Catholic
`0002` | Anglican
`0003` | Lutheran
`0004` | Seventh Day Adventist
`9999` | Other

### Session Type

`0827` | Full school year
`0828` | Semester
`0829` | Trimester
`0830` | Quarter
`0832` | Mini-term
`0833` | Summer term
`0837` | Twelve month
`9999` | Other

### Sex Code

`1` | Male
`2` | Female
`9` | Not Stated/Inadequately Described

### Source Code Type

`C` | Provided by the child (ie pupil)
`O` | Other
`P` | Provided by the parent
`S` | Ascribed by the current school
`T` | Ascribed by a previous school

### Staff Activity

Describes the Activity of a Staff Member in a StaffAssignment

Proposed by SIF AU for 1.1

`1100` | Teacher in school n.f.d.
`1101` | Primary Teacher
`1102` | Secondary teacher
`1103` | Principal
`1104` | Special School Teacher
`1105` | Assistant Principal
`1106` | Teacher Librarian
`1199` | Other Teacher In School
`1200` | Specialist support in school n.f.d.
`1201` | Nurse
`1202` | Physiotherapist
`1203` | Speech Therapist
`1204` | Guidance Officer
`1205` | Psychologist
`1206` | Social worker
`1207` | Student welfare worker
`1208` | Indigenous Education Worker
`1299` | Other Specialist support in school
`1300` | Administration and clerical in school n.f.d.
`1301` | Teacher Aide
`1302` | Librarian - in school Administration
`1303` | Office Manager
`1304` | Clerical/Administrative officer
`1305` | Clerical/Administrative assistant
`1306` | Laboratory assistant
`1307` | ICT Officer
`1399` | Other Administration and clerical in school
`1400` | Building in school n.f.d.
`1401` | Building maintenance worker - in school
`1402` | Gardener - in school
`1403` | Canteen assistant - in school
`1404` | Farm Worker - in school
`1405` | Bus Driver - in school
`1406` | Caretaker - in school
`1499` | Other Building Operations and general maintenance - In
`1999` | In School Staff out of scope
`2100` | Executive n.f.d.
`2101` | Chief Executive
`2102` | Deputy Chief Executive
`2103` | General Manager
`2198` | Prinicipal and other School Executive out of school
`2199` | Other Executive
`2200` | Specialist support out of scope n.f.d.
`2201` | Community Participation Officer
`2202` | Computer Support Officer
`2203` | Coordinator - out of school Specialist Support
`2204` | Curriculum Officer
`2205` | Curriculum Program Manager
`2206` | Education Officer - out of school Specialist Support
`2207` | Education Program Manager
`2208` | Home Liaison Officer
`2209` | Learning Support Leader
`2210` | Librarian - out of school Specialist Support
`2211` | Moderator
`2212` | Occupational Therapist
`2213` | On-line Education Officer
`2214` | Policy Officer - out of school Specialist Support
`2215` | Principal Education Officer
`2216` | Professional Services Officer
`2217` | Project Coordinator
`2218` | Registered Nurse
`2219` | Senior Education Officer
`2220` | Social Welfare Officer
`2221` | Speech Language Pathologist
`2222` | Sports Coordinator
`2223` | Staff Development Officer
`2224` | Training Officer - out of school Specialist Support
`2298` | Teachers - out of school Specialist Support
`2299` | Other specialist support out of school
`2300` | Administration and clerical out of school n.f.d.
`2301` | Accounts Certifying Officer
`2302` | Administrative and Clerical officer
`2303` | Administrative Assistant
`2304` | Administrative Officer
`2305` | Budget Officer
`2306` | Clerk
`2307` | Finance and Administration Officer
`2308` | Finance Officer
`2309` | General Ledger Officer
`2310` | Receptionist
`2311` | Senior Auditor
`2312` | Services Clerk
`2313` | Aboriginal Education Coordinator
`2314` | Aboriginal Education Worker
`2315` | Assistant Manager
`2316` | Client Services Officer
`2317` | Coordinator - out of school Administration
`2318` | District Officer
`2319` | Education Officer - out of school Administration
`2320` | Enrolment Officer
`2321` | Examiner
`2322` | Liaison Officer
`2323` | Librarian - out of school Administration
`2324` | Library Technician
`2325` | Manager
`2326` | Operational Services Officer
`2327` | Professional Officers
`2328` | Program Coordinator
`2329` | Project Manager
`2330` | Project Officer
`2331` | Project Support Officer
`2332` | Public Servant
`2333` | School Services Officer
`2334` | School Support Officer
`2335` | Senior Investigator
`2336` | Senior Professional Officers
`2337` | Senior Project Officer/Project Officer
`2338` | Student Services co ordinator
`2339` | Student Support Officer
`2340` | Assistant Editor
`2341` | Communications Officer
`2342` | Corporate Services Officer
`2343` | Designer
`2344` | Desktop Publisher
`2345` | Editor
`2346` | Graphic Designer
`2347` | Journalist/Media and Marketing
`2348` | Photographer
`2349` | Printer
`2350` | Production Officer/Coordinator
`2351` | Public Relations Officer
`2352` | Advisor
`2353` | Executive Assistant
`2354` | Executive Officer
`2355` | Executive Secretary
`2356` | Personal Assistant
`2357` | Secretary
`2358` | Human Resources Services Officer
`2359` | Personnel (and Payroll) Officer
`2360` | Personnel Officer
`2361` | Recruitment Officer
`2362` | Training Officer - out of school Administration
`2363` | Workers Compensation Officer
`2364` | Workforce Management Officer
`2365` | Audio Visual Communications Program Officer
`2366` | Business Systems Analyst
`2367` | Computer Systems Officer
`2368` | Computer Technician
`2369` | Data Management Officer
`2370` | Information Analyst
`2371` | Information Manager
`2372` | Information Officer
`2373` | Information Technology Officers
`2374` | Network Administrator
`2375` | Policy Officer n.f.d.
`2376` | Performance Measurement Officer
`2377` | Policy Officer - out of school Administration
`2378` | Research Officer
`2379` | Review Officer
`2380` | Senior Research Officer/Research Officer
`2381` | Other policy officer
`2382` | Despatch Officer
`2383` | Driver
`2384` | Facilities Services Officer
`2385` | Housing and Transport Officer
`2386` | Indexer
`2387` | Legal Officer
`2388` | Store Person
`2389` | Store Supervisor
`2390` | Supply Officer
`2391` | Team Leader
`2392` | Technical Officer - out of school Administration
`2393` | Technician
`2394` | Transport Officer
`2397` | Public service officers n.f.d.
`2398` | Teachers - Out of School Administration
`2399` | Other Administration and clerical out of school
`2400` | Building out of school n.f.d.
`2401` | Building maintenance worker - out of school
`2402` | Bus Driver - out of school
`2403` | Canteen assistant - out of school
`2404` | Caretaker - out of school
`2405` | Cook
`2406` | Courier
`2407` | Farm Worker - out of school
`2408` | Gardener - out of school
`2409` | Greenkeeper
`2410` | Groundsman
`2411` | Handyman
`2412` | House Officer
`2413` | Janitor
`2414` | Kitchen Hand
`2415` | Maintenance Officer
`2416` | School Attendant
`2417` | Security Officer
`2418` | Technical Officer - out of school Building Operations
`2499` | Other Building Operations and general maintenance out of school
`2999` | Out of School Staff out of scope

### Standard Australian Classification of Countries (SACC)

ABS 1269.0 - Standard Australian Classification of Countries (SACC), Second Edition

`0000` | Inadequately Described
`0001` | At Sea
`0003` | Not Stated
`0911` | Europe, nfd
`0912` | Former USSR, nfd
`0913` | Former Yugoslavia, nfd
`0914` | Former Czechoslovakia, nfd
`0915` | Kurdistan, nfd
`0916` | East Asia, nfd
`0917` | Asia, nfd
`0918` | Africa, nfd
`0921` | Serbia and Montenegro, nfd
`0922` | Channel Islands, nfd
`0923` | United Kingdom, nfd
`1000` | Oceania and Antarctica, nfd
`1100` | Australia (includes External Territories), nfd
`1101` | Australia
`1102` | Norfolk Island
`1199` | Australian External Territories, nec
`1201` | New Zealand
`1300` | Melanesia, nfd
`1301` | New Caledonia
`1302` | Papua New Guinea
`1303` | Solomon Islands
`1304` | Vanuatu
`1400` | Micronesia, nfd
`1401` | Guam
`1402` | Kiribati
`1403` | Marshall Islands
`1404` | Micronesia, Federated States of
`1405` | Nauru
`1406` | Northern Mariana Islands
`1407` | Palau
`1500` | Polynesia (excludes Hawaii), nfd
`1501` | Cook Islands
`1502` | Fiji
`1503` | French Polynesia
`1504` | Niue
`1505` | Samoa
`1506` | Samoa, American
`1507` | Tokelau
`1508` | Tonga
`1511` | Tuvalu
`1512` | Wallis and Futuna
`1513` | Pitcairn Islands
`1599` | Polynesia (excludes Hawaii), nec
`1600` | Antarctica, nfd
`1601` | Adélie Land (France)
`1602` | Argentinian Antarctic Territory
`1603` | Australian Antarctic Territory
`1604` | British Antarctic Territory
`1605` | Chilean Antarctic Territory
`1606` | Queen Maud Land (Norway)
`1607` | Ross Dependency (New Zealand)
`2000` | North-West Europe, nfd
`2100` | United Kingdom, Channel Islands and Isle of Man, nfd
`2102` | England
`2103` | Isle of Man
`2104` | Northern Ireland
`2105` | Scotland
`2106` | Wales
`2107` | Guernsey
`2108` | Jersey
`2201` | Ireland
`2300` | Western Europe, nfd
`2301` | Austria
`2302` | Belgium
`2303` | France
`2304` | Germany
`2305` | Liechtenstein
`2306` | Luxembourg
`2307` | Monaco
`2308` | Netherlands
`2311` | Switzerland
`2400` | Northern Europe, nfd
`2401` | Denmark
`2402` | Faroe Islands
`2403` | Finland
`2404` | Greenland
`2405` | Iceland
`2406` | Norway
`2407` | Sweden
`2408` | Aland Islands
`3000` | Southern and Eastern Europe, nfd
`3100` | Southern Europe, nfd
`3101` | Andorra
`3102` | Gibraltar
`3103` | Holy See
`3104` | Italy
`3105` | Malta
`3106` | Portugal
`3107` | San Marino
`3108` | Spain
`3200` | South Eastern Europe, nfd
`3201` | Albania
`3202` | Bosnia and Herzegovina
`3203` | Bulgaria
`3204` | Croatia
`3205` | Cyprus
`3206` | Former Yugoslav Republic of Macedonia (FYROM)
`3207` | Greece
`3208` | Moldova
`3211` | Romania
`3212` | Slovenia
`3214` | Montenegro
`3215` | Serbia
`3216` | Kosovo
`3300` | Eastern Europe, nfd
`3301` | Belarus
`3302` | Czech Republic
`3303` | Estonia
`3304` | Hungary
`3305` | Latvia
`3306` | Lithuania
`3307` | Poland
`3308` | Russian Federation
`3311` | Slovakia
`3312` | Ukraine
`4000` | North Africa and the Middle East, nfd
`4100` | North Africa, nfd
`4101` | Algeria
`4102` | Egypt
`4103` | Libya
`4104` | Morocco
`4105` | Sudan
`4106` | Tunisia
`4107` | Western Sahara
`4108` | Spanish North Africa
`4200` | Middle East, nfd
`4201` | Bahrain
`4202` | Gaza Strip and West Bank
`4203` | Iran
`4204` | Iraq
`4205` | Israel
`4206` | Jordan
`4207` | Kuwait
`4208` | Lebanon
`4211` | Oman
`4212` | Qatar
`4213` | Saudi Arabia
`4214` | Syria
`4215` | Turkey
`4216` | United Arab Emirates
`4217` | Yemen
`5000` | South-East Asia, nfd
`5100` | Mainland South-East Asia, nfd
`5101` | Burma (Myanmar)
`5102` | Cambodia
`5103` | Laos
`5104` | Thailand
`5105` | Vietnam
`5200` | Maritime South-East Asia, nfd
`5201` | Brunei Darussalam
`5202` | Indonesia
`5203` | Malaysia
`5204` | Philippines
`5205` | Singapore
`5206` | East Timor
`6000` | North-East Asia, nfd
`6100` | Chinese Asia (includes Mongolia), nfd
`6101` | China (excludes SARs and Taiwan)
`6102` | Hong Kong (SAR of China)
`6103` | Macau (SAR of China)
`6104` | Mongolia
`6105` | Taiwan
`6200` | Japan and the Koreas, nfd
`6201` | Japan
`6202` | Korea, Democratic People's Republic of (North)
`6203` | Korea, Republic of (South)
`7000` | Southern and Central Asia, nfd
`7100` | Southern Asia, nfd
`7101` | Bangladesh
`7102` | Bhutan
`7103` | India
`7104` | Maldives
`7105` | Nepal
`7106` | Pakistan
`7107` | Sri Lanka
`7200` | Central Asia, nfd
`7201` | Afghanistan
`7202` | Armenia
`7203` | Azerbaijan
`7204` | Georgia
`7205` | Kazakhstan
`7206` | Kyrgyzstan
`7207` | Tajikistan
`7208` | Turkmenistan
`7211` | Uzbekistan
`8000` | Americas, nfd
`8100` | Northern America, nfd
`8101` | Bermuda
`8102` | Canada
`8103` | St Pierre and Miquelon
`8104` | United States of America
`8200` | South America, nfd
`8201` | Argentina
`8202` | Bolivia
`8203` | Brazil
`8204` | Chile
`8205` | Colombia
`8206` | Ecuador
`8207` | Falkland Islands
`8208` | French Guiana
`8211` | Guyana
`8212` | Paraguay
`8213` | Peru
`8214` | Suriname
`8215` | Uruguay
`8216` | Venezuela
`8299` | South America, nec
`8300` | Central America, nfd
`8301` | Belize
`8302` | Costa Rica
`8303` | El Salvador
`8304` | Guatemala
`8305` | Honduras
`8306` | Mexico
`8307` | Nicaragua
`8308` | Panama
`8400` | Caribbean, nfd
`8401` | Anguilla
`8402` | Antigua and Barbuda
`8403` | Aruba
`8404` | Bahamas
`8405` | Barbados
`8406` | Cayman Islands
`8407` | Cuba
`8408` | Dominica
`8411` | Dominican Republic
`8412` | Grenada
`8413` | Guadeloupe
`8414` | Haiti
`8415` | Jamaica
`8416` | Martinique
`8417` | Montserrat
`8418` | Netherlands Antilles
`8421` | Puerto Rico
`8422` | St Kitts and Nevis
`8423` | St Lucia
`8424` | St Vincent and the Grenadines
`8425` | Trinidad and Tobago
`8426` | Turks and Caicos Islands
`8427` | Virgin Islands, British
`8428` | Virgin Islands, United States
`8431` | St Barthelemy
`8432` | St Martin (French part)
`9000` | Sub-Saharan Africa, nfd
`9100` | Central and West Africa, nfd
`9101` | Benin
`9102` | Burkina Faso
`9103` | Cameroon
`9104` | Cape Verde
`9105` | Central African Republic
`9106` | Chad
`9107` | Congo
`9108` | Congo, Democratic Republic of
`9111` | Côte d'Ivoire
`9112` | Equatorial Guinea
`9113` | Gabon
`9114` | Gambia
`9115` | Ghana
`9116` | Guinea
`9117` | Guinea-Bissau
`9118` | Liberia
`9121` | Mali
`9122` | Mauritania
`9123` | Niger
`9124` | Nigeria
`9125` | Sao Tomé and Principe
`9126` | Senegal
`9127` | Sierra Leone
`9128` | Togo
`9200` | Southern and East Africa, nfd
`9201` | Angola
`9202` | Botswana
`9203` | Burundi
`9204` | Comoros
`9205` | Djibouti
`9206` | Eritrea
`9207` | Ethiopia
`9208` | Kenya
`9211` | Lesotho
`9212` | Madagascar
`9213` | Malawi
`9214` | Mauritius
`9215` | Mayotte
`9216` | Mozambique
`9217` | Namibia
`9218` | Réunion
`9221` | Rwanda
`9222` | St Helena
`9223` | Seychelles
`9224` | Somalia
`9225` | South Africa
`9226` | Swaziland
`9227` | Tanzania
`9228` | Uganda
`9231` | Zambia
`9232` | Zimbabwe
`9299` | Southern and East Africa, nec

### State Territory Code

`ACT` | Australian Capital Teritory
`NSW` | New South Wales
`NT` | Northern Territory
`QLD` | Queensland
`SA` | South Australia
`TAS` | Tasmania
`VIC` | Victoria
`WA` | Western Australia
`XXX` | Not Provided

### Student/Family Program Type

`0100` | Agricultural
`0240` | Regular prekindergarten program
`0241` | Infant and toddlers program
`0242` | Special education services for Birth-Age 2
`0244` | Special education services for preschoolers
`0245` | Migrant early childhood program
`0246` | Head Start
`0247` | Day care
`0248` | After school child care
`0249` | Alternative education program
`0250` | Before school child care
`0251` | Bilingual education
`0252` | Community service projects
`0253` | Compensatory education
`0255` | Counseling
`0256` | English as a second language
`0257` | Free and reduced price school meals programs
`0260` | Hearing or vision screening
`0261` | Higher order thinking skills
`0262` | Medical services
`0263` | Programs for migrants during the school year
`0265` | Programs for migrants during the summer
`0267` | Reading/literacy
`0268` | School supplies
`0269` | Services for out-of-school youth
`0270` | Special education program
`0271` | Special (one-time) events
`0272` | Student assistance programs such as counseling, mentoring, identification and referral
`0273` | Summer child care
`0277` | Transportation
`0278` | Tutoring/remedial instruction
`0279` | Academic/instructional program in regular education
`0280` | Adult basic education/remedial instruction
`0281` | Child care so that parents can attend school meetings
`0282` | Continuing professional education
`0283` | Health or social services
`0284` | Literacy
`0285` | Occupational education
`0286` | Orientation to school setting for new families
`0287` | Parent training/involvement
`0288` | Parenting education
`0289` | Recreational/advocational program
`0342` | Technology
`0875` | After school enrichment
`0876` | Before school enrichment
`2381` | Gifted and talented (Accelerated)
`2389` | Even Start
`2393` | Magnet program
`9999` | Other

### Systemic Status

Codes provided by DEEWR

`N` | Non-Systemic
`S` | Systemic

### Telephone Number Type

`0096` | Main telephone number
`0350` | Alternate telephone number
`0359` | Answering service
`0370` | Beeper number
`0400` | Appointment telephone number
`0426` | Telex number
`0437` | Telemail
`0448` | Voice mail
`0478` | Instant messaging number
`0486` | Media conferencing number
`0888` | Mobile
`2364` | Facsimile number

### Visa Sub Class

`10` | Bridging Visa Class A
`20` | Bridging Visa Class B
`30` | Bridging Visa Class C
`40` | Bridging Visa (Prospective Applicant)
`41` | Bridging Visa (Non-Applicant)
`42` | Bridging Visa Class A
`50` | Bridging Visa (General)
`51` | Bridging Visa (Protection Visa Applicant)
`70` | Removal Pending Bridging Visa
`100` | Spouse
`101` | Child
`102` | Adoption
`103` | Parent
`104` | Preferential family
`105` | Skilled - Australian Linked
`106` | Regional-linked
`110` | Interdependency
`113` | Aged Parent
`114` | Aged Dependent Relative
`115` | Remaining Relative
`116` | Carer
`117` | Orphan Relative
`118` | Designated Parent
`119` | Regional Sponsored Migration Scheme
`120` | Labour Agreement
`121` | Employer nomination
`124` | Distinguished talent
`125` | Distinguished talent and special service - independent
`126` | Independent
`127` | Business Owner (No longer issued)
`128` | Senior Executive (No longer issued)
`129` | State/Territory sponsored business owner (NLI)
`130` | State/Territory Sponsored Senior Executive (NLI)
`131` | Investment-linked (No longer issued)
`132` | Business Talent (No longer issued)
`134` | Skill Matching
`135` | State/Territory nominated independent
`136` | Skilled - Independent
`137` | Skilled - State/Territory nominated independent
`138` | Skilled - Australian sponsored
`139` | Skilled Designated Area-sponsored (No longer issued)
`143` | Contributory Parent
`150` | Former citizen
`151` | Former resident
`152` | Family of NZ citizen
`154` | Resident Return
`155` | Five year resident return
`156` | One Year Resident Return (No longer Issued)
`157` | Three month resident return
`159` | Provisional resident return
`160` | Business Owner (Provisional)
`161` | Senior Executive (Provisional)
`162` | Investor (Provisional)
`163` | State/Territory Sponsored Business Owner (Prov.)
`164` | State/Territory Sponsored Senior Executive (Prov.)
`165` | State/Territory Sponsored Investor (Provisional)
`173` | Contributory Parent (Temporary)
`175` | Skilled - independent
`176` | Skilled - sponsored
`200` | Refugee
`201` | In-country special humanitarian
`202` | Global special humanitarian
`203` | Emergency rescue
`204` | Woman at risk
`205` | Camp clearance
`208` | East Timorese in Portugal,Macau or Mozambique
`209` | Citizen of former Yugoslavia - displaced person
`210` | Minorities of former USSR
`211` | Burmese in Burma
`212` | Sudanese
`213` | Burmese in Thailand
`214` | Cambodian
`215` | Sri Lankan - special assistance
`216` | Ahmadi
`217` | Vietnamese
`300` | Prospective marriage
`302` | Emergency (Permanent Visa Applicant)
`303` | Emergency (Temporary Visa Applicant)
`309` | Spouse (provisional)
`310` | Interdependency (provisional)
`410` | Retirement
`411` | Exchange
`412` | Independent Executive
`413` | Business Executive
`414` | Business Specialist
`415` | Foreign government agency
`416` | Special program
`417` | Working holiday
`418` | Educational
`419` | Visiting academic
`420` | Entertainment
`421` | Sport
`422` | Medical practitioner
`423` | Media and film staff
`424` | Public lecturer
`425` | Family relationship
`426` | Domestic worker - diplomatic or consular
`427` | Domestic worker - executive
`428` | Religious worker
`430` | Supported dependant
`432` | Expatriate
`435` | Sri Lankan
`442` | Occupational Trainee
`443` | Citizens of former Yugoslavia
`444` | Special Category
`445` | Dependent Child
`446` | Confirmatory (Temporary)
`447` | Secondary Movement Offshore Entry (Temporary)
`448` | Kosovar Safe Haven
`449` | Humanitarian Stay (Temporary)
`450` | Resolution of Status - Family member (Temporary)
`451` | Secondary Movement Relocation (Temporary)
`456` | Business - Short Stay
`457` | Business - long stay
`459` | Sponsored Business Visitor (short stay)
`461` | New Zealand Citizen Family Relationship
`462` | Work and Holiday
`470` | Professional Development
`471` | Trade Skills Training
`475` | Skilled Regional Sponsored
`485` | Skilled - Graduate
`487` | Skilled - Regional Sponsored
`495` | Skilled Independent Regional (Temporary)
`496` | Skilled - Designated Area Sponsored (Provisional)
`497` | Graduate - Skilled
`499` | Olympic (Support) (No longer issued)
`560` | Student (No longer issued)
`562` | Iranian Postgraduate Student
`563` | Iranian Postgraduate Student Dependent
`570` | Student - ELICOS
`571` | Student - Schools
`572` | Student - VET
`573` | Student - Higher Education
`574` | Student - Masters & Doctorate
`575` | Student - Non-Award Foundation
`576` | Student - AusAID & Defence
`580` | Student Guardian Visa
`675` | Medical treatment - short stay
`676` | Tourist - short stay
`679` | Sponsored Family Visitor (short stay)
`685` | Medical treatment - Long Stay
`686` | Tourist - Long Stay
`695` | Temporary Provisional - Pending return
`771` | Transit
`773` | Border
`785` | Temporary Protection
`786` | Temporary (Humanitarian Concern)
`800` | Territorial Asylum
`801` | Spouse
`802` | Child
`804` | Aged Parent
`805` | Skilled
`806` | Family
`808` | Confirmatory Residence
`814` | Interdependency
`819` | Aged Parent
`820` | Spouse
`826` | Interdependency
`831` | Prospective marriage spouse
`832` | Close Ties
`833` | Certain unlawful non-citizens
`834` | Permanent resident of Norfolk Island
`835` | Remaining Relative
`836` | Carer
`837` | Orphan Relative
`838` | Aged Dependant Relative
`840` | Business Owner
`841` | Senior Executive
`842` | State/Territory sponsored business owner
`843` | State/Territory sponsored senior executive
`844` | Investment-linked
`845` | Established Business in Australia
`846` | State/Territory Sponsored Regional Established Busin
`850` | Resolution Status (Temporary)
`851` | Resolution of Status
`852` | Witness Protection
`855` | Labour Agreement
`856` | Employer Nomination Scheme
`857` | Regional Sponsored Migration Scheme
`858` | Distinguished Talent
`859` | Designated Parent
`861` | Skilled - Onshore Independent New Zealand Citizen
`862` | Skilled Australian-sponsored New Zealand Citizen
`863` | Skilled Designated Area-sponsored N. Zealand Citizen
`864` | Contributory Aged Parent (Residence)
`866` | Protection
`880` | Skilled - Independent Overseas Student
`881` | Skilled - Australian-sponsored Overseas Student
`882` | Skilled - Designated Area-sponsored Overseas Student
`883` | Skilled Designated Area Sponsored (Residence) visa
`884` | Contributory Aged Parent (Temporary)
`885` | Skilled - Independent
`886` | Skilled - Sponsored
`887` | Skilled - Regional
`890` | Business Owner
`891` | Investor
`892` | State/Territory sponsored business owner
`893` | State/Territory sponsored senior executive
`956` | Electronic Travel Authority - Business - Long
`976` | Electronic Travel Authority - Visitor
`977` | Electronic Travel Authority - Business - Short
`995` | Diplomatic (Temporary)
`998` | Declaratory

### Year Level Code

`1` | Year 1
`2` | Year 2
`3` | Year 3
`4` | Year 4
`5` | Year 5
`6` | Year 6
`7` | Year 7
`8` | Year 8
`9` | Year 9
`10` | Year 10
`11` | Year 11
`12` | Year 12
`13` | Year 13
`K` | Kindergarten
`P` | Prep
`PS` | Pre-School
`UG` | Ungraded

### Yes Or No Category

`N` | No
`U` | Unknown
`X` | Not Provided
`Y` | Yes

## Infrastructure

### Status Code

`0` | Success (ZIS ONLY). SIF_Status/SIF_Data may contain additional data.
`1` | Immediate SIF_Ack (AGENT ONLY). Message is persisted or processing is complete. Discard the referenced message.
`2` | Intermediate SIF_Ack (AGENT ONLY). Only valid in response to SIF_Event delivery. Invokes Selective Message Blocking. The event referenced must still be persisted, and no other events must be delivered, until the agent sends a "Final" SIF_Ack at a later time.
`3` | Final SIF_Ack (AGENT ONLY). Sent (a SIF_Ack with this value is never returned by an agent in response to a delivered message) by an agent to the ZIS to end Selective Message Blocking. Discard the referenced event and allow for delivery of other events.
`7` | Already have a message with this SIF_MsgId from you.
`8` | Receiver is sleeping.
`9` | No messages available. This is returned when an agent is trying to pull messages from a ZIS and there are no messages available.

### Error Category

The following table describes the functional areas where an error may occur in SIF. When a `SIF_Error` element is returned within a `SIF_Ack` message, the `SIF_Error/SIF_Category` element MUST contain one of the values from the table.

The next tables present the error codes that must be used when constructing a `SIF_Error` element. The value of `SIF_Error/SIF_Code` must come from these lists unless the functional category is `System` where error codes not defined in these tables can be included.

`0` | Unknown (This should NEVER be used if possible)
`1` | XML Validation
`2` | Encryption
`3` | Authentication
`4` | Access and Permissions
`5` | Registration
`6` | Provision
`7` | Subscription
`8` | Request and Response
`9` | Event Reporting and Processing
`10` | Transport
`11` | System (OS, Database, Vendor localized, etc.)
`12` | Generic Message Handling
`13` | SMB Handling

### XML Validation Error

`1` | Generic error
`2` | Message is not well-formed
`3` | Generic validation error
`4` | Invalid value for element/attribute
`6` | Missing mandatory element/attribute

### Encryption Error

`1` | Generic error

### Authentication Error

`1` | Generic error
`2` | Generic authentication error (with signature)
`3` | Missing sender's certificate
`4` | Invalid certificate
`5` | Sender's certificate is not trusted
`6` | Expired certificate
`7` | Invalid signature
`8` | Invalid encryption algorithm (only accepts MD4)
`9` | Missing public key of the receiver (when decrypting message)
`10` | Missing receiver's private key (when decrypting message)

### Access and Permission Error

`1` | Generic error
`2` | No permission to register
`3` | No permission to provide this object
`4` | No permission to subscribe to this SIF_Event
`5` | No permission to request this object
`6` | No permission to respond to this object request
`7` | No permission to publish SIF_Event
`8` | No permission to administer policies
`9` | SIF_SourceId is not registered
`10` | No permission to publish SIF_Event Add
`11` | No permission to publish SIF_Event Change
`12` | No permission to publish SIF_Event Delete

### Registration Error

`1` | Generic error
`2` | The SIF_SourceId is invalid
`3` | Requested transport protocol is unsupported
`4` | Requested SIF_Version(s) not supported.
`6` | Requested SIF_MaxBufferSize is too small
`7` | ZIS requires a secure transport
`9` | Agent is registered for push mode (returned when a push-mode agent sends a SIF_GetMessage).
`10` | ZIS does not support the requested Accept-Encoding value.

### Provision Error

`1` | Generic error
`3` | Invalid object
`4` | Object already has a provider (SIF_Provide message)

### Subscription Error

`1` | Generic error
`3` | Invalid object

### Request and Response Error

`1` | Generic error
`3` | Invalid object
`4` | No provider
`7` | Responder does not support requested SIF_Version
`8` | Responder does not support requested SIF_MaxBufferSize
`9` | Unsupported query in request
`10` | Invalid SIF_RequestMsgId specified in SIF_Response
`11` | SIF_Response is larger than requested SIF_MaxBufferSize
`12` | SIF_PacketNumber is invalid in SIF_Response
`13` | SIF_Response does not match any SIF_Version from SIF_Request
`14` | SIF_DestinationId does not match SIF_SourceId from SIF_Request
`15` | No support for SIF_ExtendedQuery
`16` | SIF_RequestMsgId deleted from cache due to timeout
`17` | SIF_RequestMsgId deleted from cache by administrator
`18` | SIF_Request cancelled by requesting agent

### Event Reporting and Processing Error

`1` | Generic error
`3` | Invalid event

### Transport Error

`1` | Generic error
`2` | Requested protocol is not supported
`3` | Secure channel requested and no secure path exists
`4` | Unable to establish connection

### System Error

`1` | Generic error

### Generic Message Handling Error

`1` | Generic error
`2` | Message not supported
`3` | Version not supported
`4` | Context not supported
`5` | Protocol error
`6` | No such message (as identified by SIF_OriginalMsgId)
`7` | Multiple contexts not supported

### SMB Error

`1` | Generic error
`2` | SMB can only be invoked during a SIF_Event acknowledgement
`3` | Final SIF_Ack expected from Push-Mode Agent
`4` | Incorrect SIF_MsgId in final SIF_Ack

## SIF_LogEntry

### Agent Error Condition

`1` | An exception has occurred in the agent (generic error)

### Data Issues with Failure Result

`1` | Insufficient information in message
`2` | Cannot process change due to business rule
`3` | Related information unavailable

### Data Issues with Success Result

`1` | Data was changed to complete request successfully
`2` | Data was added to complete request successfully

### Success Category

`1` | Success

### ZIS Error Condition

`1` | An exception has occurred in the ZIS (generic error)
`2` | Message could not be delivered due to buffer size limitations
`3` | Message could not be delivered due to minimum security requirements
`4` | Message could not be delivered due to destination agent not supporting SIF_Version
`5` | Message could not be delivered due to SIF_Response validation

# Appendix C: External Code Sets

All code sets defined by external bodies and referenced within SIF are included here for reference. The left column in each table contains the individual code values that are used in SIF elements and attributes that reference these code sets. These sets of code values are closed and normative for a given version of this specification. Including codes not provided here in corresponding SIF elements and attributes can lead to XML validation errors in installations where the zone integration server or any agent is validating XML messages; the SIF data model allows for locally-defined codes, where deemed appropriate, in the `OtherCodeList` element. The right column of each table may provide a textual equivalent or description of the corresponding code, and is provided for informational purposes only. The referenced sources for these code sets serve as the authorities for all descriptions and semantics, and for the definition and maintenance of the code set values themselves. In each release of this specification the SIF Association endeavors to synchronize referenced code sets with updates from external sources.

## International Standards Organization (ISO)

### 4217 Currency names and code elements

`AED` | UAE Dirham
`AFN` | Afghani
`ALL` | Lek
`AMD` | Armenian Dram
`ANG` | Netherlands Antillian Guikder
`AOA` | Kwanza
`ARS` | Argentine Peso
`AUD` | Australian Dollar
`AWG` | Aruban Guilder
`AZN` | Azerbaijanian Manat
`BAM` | Convertible Marks
`BBD` | Barbados Dollar
`BDT` | Taka
`BGN` | Bulgarian Lev
`BHD` | Bahraini Dinar
`BIF` | Burundi Franc
`BMD` | Bermudian Dollar (customarily known as Bermuda Dollar)
`BND` | Brunei Dollar
`BOB` | Boliviano
`BOV` | Mvdol
`BRL` | Brazilian Real
`BSD` | Bahamian Dollar
`BTN` | Ngultrum
`BWP` | Pula
`BYR` | Belarussian Ruble
`BZD` | Belize Dollar
`CAD` | Canadian Dollar
`CDF` | Franc Congolais
`CHE` | WIR Euro
`CHF` | Swiss Franc
`CHW` | WIR Franc
`CLF` | Unidades de formento
`CLP` | Chilean Peso
`CNY` | Yuan Renminbi
`COP` | Colombian Peso
`COU` | Unidad de Valor Real
`CRC` | Costa Rican Colon
`CSD` | Serbian Dinar
`CUP` | Cuban Peso
`CVE` | Cape Verde Escudo
`CYP` | Cyprus Pound
`CZK` | Czech Koruna
`DJF` | Djibouti Franc
`DKK` | Danish Krone
`DOP` | Dominican Peso
`DZD` | Algerian Dinar
`EEK` | Kroon
`EGP` | Egyptian Pound
`ERN` | Nakfa
`ETB` | Ethiopian Birr
`EUR` | Euro
`FJD` | Fiji Dollar
`FKP` | Falkland Islands Pound
`GBP` | Pound Sterling
`GEL` | Lari
`GHC` | Cedi
`GIP` | Gibraltar Pound
`GMD` | Dalasi
`GNF` | Guinea Franc
`GTQ` | Quetzal
`GWP` | Guinea-Bissau Peso
`GYD` | Guyana Dollar
`HKD` | Hong Kong Dollar
`HNL` | Lempira
`HRK` | Croatian Kuna
`HTG` | Gourde
`HUF` | Forint
`IDR` | Rupiah
`ILS` | New Israeli Sheqel
`INR` | Indian Rupee
`IQD` | Iraqi Dinar
`IRR` | Iranian Rial
`ISK` | Iceland Krona
`JMD` | Jamaican Dollar
`JOD` | Jordanian Dinar
`JPY` | Yen
`KES` | Kenyan Shilling
`KGS` | Som
`KHR` | Riel
`KMF` | Comoro Franc
`KPW` | North Korean Won
`KRW` | Won
`KWD` | Kuwaiti Dinar
`KYD` | Cayman Islands Dollar
`KZT` | Tenge
`LAK` | Kip
`LBP` | Lebanese Pound
`LKR` | Sri Lanka Rupee
`LRD` | Liberian Dollar
`LSL` | Loti
`LTL` | Lithuanian Litas
`LVL` | Latvian Lats
`LYD` | Libyan Dinar
`MAD` | Moroccan Dirham
`MDL` | Moldovan Leu
`MGA` | Malagascy Ariary
`MKD` | Denar
`MMK` | Kyat
`MNT` | Tugrik
`MOP` | Pataca
`MRO` | Ouguiya
`MTL` | Maltese Lira
`MUR` | Mauritius Rupee
`MVR` | Rufiyaa
`MWK` | Kwacha
`MXN` | Mexican Peso
`MXV` | Mexican Unidad de Inversion (UID)
`MYR` | Malaysian Ringgit
`MZN` | Metical
`NAD` | Namibian Dollar
`NGN` | Naira
`NIO` | Cordoba Oro
`NOK` | Norwegian Krone
`NPR` | Nepalese Rupee
`NZD` | New Zealand Dollar
`OMR` | Rial Omani
`PAB` | Balboa
`PEN` | Nuevo Sol
`PGK` | Kina
`PHP` | Philippine Peso
`PKR` | Pakistan Rupee
`PLN` | Zloty
`PYG` | Guarani
`QAR` | Qatari Rial
`ROL` | Old Leu
`RON` | New Leu
`RUB` | Russian Ruble
`RWF` | Rwanda Franc
`SAR` | Saudi Riyal
`SBD` | Solomon Islands Dollar
`SCR` | Seychelles Rupee
`SDD` | Sudanese Dinar
`SEK` | Swedish Krona
`SGD` | Singapore Dollar
`SHP` | Saint Helena Pound
`SIT` | Tolar
`SKK` | Slovak Koruna
`SLL` | Leone
`SOS` | Somali Shilling
`SRD` | Surinam Dollar
`STD` | Dobra
`SVC` | El Salvador Colon
`SYP` | Syrian Pound
`SZL` | Lilangeni
`THB` | Baht
`TJS` | Somoni
`TMM` | Manat
`TND` | Tunisian Dinar
`TOP` | Pa'anga
`TRY` | New Turkish Lira
`TTD` | Trinidad and Tobago Dollar
`TWD` | New Taiwan Dollar
`TZS` | Tanzanian Shilling
`UAH` | Hryvnia
`UGX` | Uganda Shilling
`USD` | US Dollar
`USN` | US Dollar (Next day)
`USS` | US Dollar (Same day)
`UYU` | Peso Uruguayo
`UZS` | Uzbekistan Sum
`VEB` | Bolivar
`VND` | Dong
`VUV` | Vatu
`WST` | Tala
`XAF` | CFA Franc BEAC
`XAG` | Silver
`XAU` | Gold
`XBA` | Bond Markets Units European Composite Unit (EURCO)
`XBB` | European Monetary Unit (E.M.U.-6)
`XBC` | European Unit of Account 9 (E.U.A.-9)
`XBD` | European Unit of Account 17 (E.U.A.-17)
`XCD` | East Caribbean Dollar
`XDR` | SDR
`XFO` | Gold-Franc
`XFU` | UIC-Franc
`XOF` | CFA Franc BCEAO
`XPD` | Palladium
`XPF` | CFP Franc
`XPT` | Platinum
`XTS` | Code specifically reserved for testing purposes
`XXX` | Code assigned for transactions where no currency is involved
`YER` | Yemeni Rial
`ZAR` | Rand
`ZMK` | Kwacha
`ZWN` | Zimbabwe Dollar

# Appendix D: Notes on Related Technologies

This partially normative appendix highlights technologies leveraged within SIF or related to SIF, either in their entirety or as a subset. It points out specifics casual readers of referenced documents on these technologies must not ignore when implementing SIF Zone Integration Servers and Agents.

## D.1 SIF and HTTP(S)

SIF uses a small subset of HTTP 1.1 (SIF HTTP), as defined in Infrastructure Transport Layer , to promote interoperability. This section also defines a secure transport for SIF HTTP, SIF HTTPS, the required and default transport layer for use in SIF.

## D.2 SIF and URLs

Zone Integration Servers and Push-mode Agents, when using SIF HTTPS or SIF HTTP, are addressable by an `http` or `https` Uniform Resource Locator (URL). As far as HTTP is concerned, these are simply formatted strings; no assumptions should be made about their format (e.g. that all ZIS URLs consist of a host, port and Zone ID, or that all agent URLs consist of a host, port and Agent ID) beyond the `http` and `https` schemes and the consituent parts from the generic URI (Uniform Resource Identifier) syntax [RFC 2396].

`http://`host[`:`port][abs_path[`?`query]]
`http://`host[`:`port][abs_path[`?`query]]

Just because one Zone Integration Server seems to follow a certain convention with regard to its URLs, e.g.:

`http://www.YourZIS.com/YourZone`

does not imply another Zone Integration Server will not have a completely different format for a URL, for instance:

`http://www.ZISesAreUs.com:8080/applications/ZIS;version=2.3.1?zone=ZoneA&cust=2A9823B2`

or that a vendor's product might not change its URL conventions.

The same applies to URLs that address Push-mode Agents; conventions for URLs, within the general formatting that applies to URLs, can and do vary widely.

Zone Integration Servers and Agents MUST treat SIF HTTPS and SIF HTTP URLs as whole strings, whose only format rules stem from associated standards. This promotes interoperability as Zone administrators deploy Zone Integration Servers and Agents with different Zone configurations and products from different vendors.

## D.3 SIF and XML

With its use in both Infrastructure and the SIF Data Model, SIF is greatly dependent on the structure and syntax of XML 1.0 [XML]. SIF excludes the use of the `doctypedecl` syntax from the optional `prolog` with which every XML document may begin. This implies that Zone Integration Servers and Agents MUST NOT reference an external DTD or internal DTD subset using the `doctypedecl` production (e.g. `<!DOCTYPE SIF_Message ... !>`).

This should not be construed to imply that the rest of the XML `prolog` may not preface a SIF message, even though it never occurs in examples within this specification, being superfluous within SIF. As SIF mandates the use of XML 1.0, the character encoding of `UTF-8` (contained in the HTTP `Content-Type` header), and all SIF messages are `standalone` due to the exclusion of `doctypedecl` above, the values that can be communicated in the XML `prolog` are fixed within SIF. This implies that if a Zone Integration Server or Agent includes an XML `prolog` before a SIF message, it MUST take one of the following or equivalent forms (equivalent including case-insensitive character encoding names, XML's choice with regard to single or double quotes and optional spacing):

`<?xml version="1.0"?>`
`<?xml version="1.0" encoding="UTF-8"?>`
`<?xml version="1.0" standalone="yes"?>`
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>`

## D.4 SIF and Unicode

The character set supported in XML 1.0 is Unicode/ISO 10646, a character set designed to be universal in nature with regard to its support for previously used character sets in the computer industry, ability to represent most human languages, numbers, commonly used symbols, etc. Thus the character set supported in SIF is Unicode/ISO 10646. If a Zone Integration Server or SIF-enabled application does not support Unicode/ISO 10646 internally, it MUST map Unicode/ISO 10646 to its local character set upon receipt of a SIF message and MUST map its local character set to Unicode/ISO 10646 when sending or responding to a SIF message. To promote interoperability and prevent loss of data in these conversions, it is RECOMMENDED that all Zone Integration Servers and SIF-enabled applications support Unicode/ISO 10646.

SIF HTTP further requires that the Unicode/ISO 10646 character set be encoded using the UTF-8 character encoding; Zone Integration Servers and Agents MUST encode SIF XML messages using UTF-8. To further promote interoperability, when the SIF Infrastructure or Data Model specifies that an octet/byte-based transformation of a text/string value be stored in a given element or attribute (e.g. Base64 encoding, hash value, encrypted form), Zone Integration Servers and Agents MUST convert the local character set of the value to Unicode/ISO 10646 if necessary, encode the resulting value using UTF-8, then apply the specified transformation.

## D.5 SIF and XPath

SIF uses a small subset of XPath 1.0 [XPATH] in its own path syntax for referencing elements/attributes. This is defined in SIF_Element Syntax. This document may often use the same notation in referring to nested elements and/or attributes (e.g. `Name/FirstName`, `Name/@Type`), though it may include an object as the root element whereas the SIF_Element syntax does not (e.g. `StudentPersonal/Name/FirstName`, `StudentPersonal/@RefId`).

## D.6 SIF and XML Schema

The SIF Association hosts and provides XML Schemas [SCHEMA] for validating SIF messages, should Zone Integration Servers or Agents choose to perform message validation. These schemas leverage basic data types and structures as defined in that document. When these types and structures are referenced in this document they are prefixed with `xs:`.

Note that due to the ability of Zone Integration Servers and Agents to omit elements from data objects in the SIF Request/Response and SIF Event models, all elements defined as mandatory for SIF data objects in Infrastructure or Data Model and referenced common elements are defined as optional in the schema for validating any SIF_Message. The SIF Association hosts and provides alternate schemas that allow for validation of these data objects where mandatory elements cannot be omitted (e.g. in a `Add` event or in a `SIF_Response` where the `SIF_Request` did not specify a specific subset of elements to be returned from matching objects).

Notes on specific XML Schema types follow:

### D.6.1 xs:boolean

Agents and Zone Integration servers SHOULD send values of `true` or `false`, but must understand equivalent `1` and `0` values.

### D.6.2 xs:time

Agents and Zone Integration Servers MUST specify a time zone offset from UTC or indicate that the time is UTC unless the time zone is apparent locally from other elements/attributes per supplied documentation.

### D.6.3 xs:date

Agents and Zone Integration Servers MAY specify a time zone offset or indicate UTC for dates, but in most cases do not need to do so unless zone activity spans great international distances.

### D.6.4 xs:dateTime

Agents and Zone Integration Servers MUST specify a time zone offset from UTC or indicate that the time is UTC unless the time zone is apparent locally from other elements/attributes per supplied documentation.

Though use of a combined `xs:dateTime` may seem a natural fit for specifying a point in time, some SIF Association working groups and task forces prefer to separate `xs:dateTime` into element/attribute pairs of `xs:date` and `xs:time` per their object design/usage goals and/or for simplified quering. Applications wishing to query the date or time portion of `xs:dateTime` values may use comparison and boolean operators to do so.

## D.7 SIF and XML Namespaces

Namespaces allow XML elements and attributes to be organized into units that allow for the separation of a set of names from others, effectively allowing the integration of XML defined from various sources to be included in the same XML document without risk of name/definition collisions. SIF has since its initial release used the default namespace attribute `xmlns` [XMLNS] in the `SIF_Message` element. To a namespace-aware parser, the effective names of the elements in:

<SIF_Message Version="1.5r1" xmlns="http://www.sifinfo.org/infrastructure/1.x"> <SIF_Event>...</SIF_Event> </SIF_Message>
Example D.7-1: SIF_Message Namespace

are conceptually:

- `http://www.sifinfo.org/infrastructure/1.x:SIF_Message`
- `http://www.sifinfo.org/infrastructure/1.x:SIF_Event`

with the local names:

- `SIF_Message`
- `SIF_Event`

To a namespace-aware parser, the effective names of these same elements in the SIF `2.x` namespace:

<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/infrastructure/2.x"> <SIF_Event>...</SIF_Event> </SIF_Message>
Example D.7-2: SIF_Message Namespace

are conceptually:

- `http://www.sifinfo.org/infrastructure/2.x:SIF_Message`
- `http://www.sifinfo.org/infrastructure/2.x:SIF_Event`

with the local names:

- `SIF_Message`
- `SIF_Event`

A namespace-unaware parser simply interprets elements by their local names, and SIF 1.x and SIF 2.x elements are considered equivalent. If the local name is prefixed, a namespace-unaware parser considers the prefix and colon part of the name. To a namespace-unaware parser, `xml:lang` is named just that. To a namespace-aware parser, this is effectively `http://www.w3.org/XML/1998/namespace:lang` (the `xml` prefix is reserved in XML 1.0 and is always bound to this namespace in [XMLNS]) with a local name of `lang`.

Given the timing of the first release of SIF and the release of Namespaces in XML [XMLNS] it was never mandated in SIF that Zone Integration Servers and Agents be namespace-aware. Given the number of Zone Integration Servers and Agents that may at this point be namespace-unaware, it is not yet mandated that these components be namespace-aware, but this requirement may arise in a future major release of this specification. To allow for namespace-unaware parsers to reliably process SIF-defined XML by local names only, SIF messages MUST define the namespace for the corresponding SIF version as the default namespace of `SIF_Message` as documented in `SIF_Message`.

Furthermore, given the gradual proliferation of XML defined in other namespaces appearing in SIF XML, the following prefix-to-namespace mappings MUST be used should elements from these namespaces occur in SIF messages, to allow namespace-unaware parsers to reliably interpret names in these namespaces by local name:

Prefix | Namespace | Declaration
--- | --- | ---
`xml` | `http://www.w3.org/XML/1998/namespace` | This is bound and fixed by default without declaration.
`xsi` | `http://www.w3.org/2001/XMLSchema-instance` | `xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"`
`xs` | `http://www.w3.org/2001/XMLSchema` | `xmlns:xs="http://www.w3.org/2001/XMLSchema"`

It is RECOMMENDED that other namespaces occuring in SIF messages (e.g. XML from outside SIF included in assessments, exchange of student records, etc.) have fixed prefix mappings, but it is not required. Affected elements MAY locally change the default namespace as desired, given that the default namespace for the `SIF_Message` as a whole remains the namespace for the corresponding SIF version.

When a fixed prefix is not defined for a given namespace, a namespace-unaware agent will be unable to reliably process these elements by name when prefixes vary, and must become namespace-aware to do so. XML not defined by SIF that in turn contains SIF-defined XML MAY reference SIF XML by its own prefix mapping rather than specifying the namespace of the corresponding SIF version as the default namespace using `xmlns`.

It is RECOMMENDED that as Zone Integration Servers and Agents are updated in their release schedules, they use namespace-aware parsers or parser options if they are not doing so already.

## D.8 SIF and UUIDs/GUIDs

SIF leverages Universally Unique Identifiers (UUIDs), or Globally Unique Identifiers (GUIDs), as message and object identifiers, or primary keys, and occasionally for element identifiers internal to objects, per [RFC 4122]. Note that SIF defines its own textual representation for GUIDs, uppercase and un-hyphenated (e.g. `F81D4FAE7DEC11D0A76500A0C91E6BF6` vs. `f81d4fae-7dec-11d0-a765-00a0c91e6bf6`). It should also be noted with SIF being a distributed system, to avoid the possibility of GUID collisions, especially in the SIF data model, systems generating GUIDs SHOULD use version 1 GUIDs which are unique in space as well as time when an IEEE 802 MAC address is available. Systems MAY use version 4 GUIDs which use a (pseudo-)random number-based algorithm if an IEEE 802 MAC address is unavailable or if the inclusion of that address in a GUID poses a compromising security risk.

## D.9 SIF and Web Services

SIF is a web service, "a software system designed to support interoperable machine-to-machine interaction over a network [WSARCH]." It is not a Web Service, as it lacks "an interface described in a machine-processable format (specifically WSDL) [WSARCH]." To meet this requirement and produce the Web Services Definition Language (WSDL) definition for SIF is a trivial exercise, creating a WSDL HTTP POST binding for the `SIF_Message`-in/`SIF_Message`-out exchange that describes the SIF HTTP(S) transport layer between Agents and ZIS, and between ZIS and Push-mode Agents. But the binding would be just that, a simple `SIF_Message`-in/`SIF_Message`-out exchange that doesn't capture the richness of the SIF infrastructure or necessarily provide the interoperability resulting from the precise definition of SIF HTTP(S). To do so and to meet the final requirement of a Web Service per [WSARCH], the use of SOAP messages, would require redefinition of much of SIF using SOAP messages. The SIF Association's Web Services Task Force has determined that this exercise has little value currently, given SIF's precisely defined transport layer and installed base. The task force has left it as a future task how to best leverage Web Services in the future of SIF's infrastructure, if at all. In the meantime, the task force has, however, decided to provide a Web Services interface that provides external systems access to the rich amount of data available in SIF Zones via its own specification [SIF Reporting WS]. Future opportunities to provide additional services may be identified.

# Appendix E: Wildcard Version Support Implementation Notes

Agents that register the ability to receive `SIF_Message`s defined by any number of different SIF Implementation Specification versions by using version wildcards in `SIF_Register/SIF_Version` and `SIF_Request/SIF_Version` may receive messages defined by specification versions that did not exist at the time of agent implementation. This support can maximize agent communication in zones supporting multiple SIF versions; agent developers that design this support should be aware of the following implementation notes. These notes focus on wildcard support for releases within a given major release lifecycle and do not address agents that register support for `*`, indicating the ability to receive ANY version `SIF_Message`. These messages can be very different structurally across major version boundaries and an agent may require more sophisticated capabilities to successfully process any `SIF_Message`, regardless of the SIF version that defines it.

## E.1 XML Parsing

The message handling protocols documented in this specification are written from the perspective of having a well-formed and—optionally—valid XML document and the ability to randomly access element and attribute values within the document in performing the message handling steps as documented. While some agent implementations have this ability, there do exist agent implementations that may process SIF XML using a streaming interface (e.g. SAX), processing an XML document node by node, to perform equivalent functionality. When these agents declare the ability to receive a `SIF_Message` defined by any minor release within a major release lifecycle, they cannot assume in processing a message that one element follows another without any intervening elements, as new minor releases of this specification can introduce optional elements into the SIF Data Model. An agent written at the time of SIF Implementation Specification 1.1 to support `1.*` and to expect `OtherId` to follow `AlertMsg` might encounter difficulties with processing a `1.5r1` `StudentPersonal` if it were not designed to ignore new intervening 1.5r1 elements before `OtherId` unknown at the time of implementation, including `LocalId`, as shown here, not to mention `StatePrId` and `ElectronicId`, which were also both introduced in SIF Implementation Specification 1.5r1.

<StudentPersonal RefId="D3E34B359D75101A8C3D00AA001A1652"> <AlertMessages> <AlertMessage Type="Legal">A legal alert for Joe Student.</AlertMessage> </AlertMessages> <OtherIdList> <OtherId Type="EMA">P00001</OtherId> </OtherIdList> <PersonInfo> <Name Type="LGL"> <FamilyName>Student</FamilyName> <GivenName>Joe</GivenName> </Name> </PersonInfo> </StudentPersonal>
Example E.1-1: StudentPersonal from SIF Implementation Specification 1.1

Agents that parse XML on a node-by-node basis and that wish to support wildcard versions must be able to read and skip XML elements not of interest until an expected element of interest is reached.

## E.2 XML Validation

Though minor releases within a major version lifecycle of this specification are designed to be supersets of previous minor releases, agents supporting wildcard versions and performing XML validation should take into consideration that messages from a higher minor version in a major version lifecycle will not validate against schemas designed for a lower version, given the potential introduction of new objects, and new optional elements into existing data objects. Agents that do perform XML validation should skip validation of received `SIF_Message`s that are defined by a higher version, unless they have dynamic Internet access to hosted schemas where `SIF_Message/@Version` can be used to access schemas for new specification releases. These agents can, of course, still establish that received `SIF_Message` XML is well-formed and process that XML to access elements/attributes of interest to the agent implementation.

While `SIF_Message`s defined by lower minor versions in a major version lifecyle may validate against a higher-version schema in that lifecycle, it is recommended also that higher-version agents skip XML validation of lower-version `SIF_Message`s unless they have local access to schemas corresponding to the version in question, in which case the appropriate schema should be used for validation, or unless they have dynamic Internet access to hosted schemas where `SIF_Message/@Version` can be used to access schemas for other specification releases. This recommendation is made particularly because external code sets may be brought up to date with external sources with each release of this specification and a previously valid code set value may become invalid in a new specification.

Note that schemas hosted by the SIF Association are available at well-known URLs and can be used to dynamically access schemas for older/newer specification versions using `SIF_Message/@Version`, should agents with Internet access require them for XML validation:

`http://www.sifinfo.org/infrastructure/<value of SIF_Message/@Version>/DTD/SIF_Message.dtd` (for SIF 1.x—`XSD/SIF_Message.xsd` also available)
`http://specification.sifinfo.org/Implementation/<value of SIF_Message/@Version>/XSD/SIF_Message.xsd` (for SIF 2.x)

## E.3 SIF_Message Handling

While this is defined in the SIF_Message Agent Message Handling Protocol, it bears repeating in this section that agents receiving an unexpected message from the ZIS respond according to protocol, acknowledging receipt of the message with a `SIF_Ack` including the `SIF_Error` element with a `SIF_Category` of `12` (Generic Message Handling) and a `SIF_Code` of `2` (message not supported). This allows an agent with wildcard version support to successfully ignore `SIF_Message`s that may be introduced with the addition of optional infrastructure functionality into new minor releases of this specification, including new `SIF_SystemControl` messages.

# Appendix F: Selective Message Blocking (SMB) Example

## F.1 Example

A detailed example of Selective Message Blocking (SMB) follows. The table below represents the agent's message queue as maintained by the ZIS. The message at the top represents the oldest message in the queue and is the message that is currently being processed by the agent as the example begins.

Agent Message Queue
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`.
`SIF_Event` message containing a `StudentPersonal` object with an `Action` of `Add`.
`SIF_Request` message for a `StudentPersonal` object from another agent.
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`.

Table F.1-1: Agent Message Queue - Example 1

When processing the `StudentSchoolEnrollment` event, the agent requires data from a `SchoolInfo` object that it doesn't have locally. It would like to request the `SchoolInfo` object without needing to process subsequent events. To do so, the agent acknowledges the `StudentSchoolEnrollment` event with an "Intermediate" `SIF_Ack` indicating that the ZIS will be contacted later to resume delivery of events. It then opens a channel to the ZIS and submits a `SIF_Request` for the `SchoolInfo` object.

Upon receipt of the "Intermediate" `SIF_Ack`, the ZIS freezes the delivery of any `SIF_Event` messages to this agent until the agent sends a final `SIF_Ack` releasing the original event. The current state of the queue is now:

Agent Message Queue
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`. (blocked)
`SIF_Event` message containing a `StudentPersonal` object with an `Action` of `Add`. (frozen)
`SIF_Request` message for a `StudentPersonal` object from another agent.
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`. (frozen)

Table F.1-2: Agent Message Queue - Example 2

The next message available for delivery to the agent is the `SIF_Request` for a `StudentPersonal` object. For our example, the agent will accept the `SIF_Request` by returning an "Immediate" `SIF_Ack` indicating that processing is complete and the agent will hand the `SIF_Request` off to another part of the agent for handling.

Meanwhile, the ZIS has deposited the `SIF_Response` from the `SchoolInfo` provider's agent into the queue. The queue now looks like this:

Agent Message Queue
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`. (blocked)
`SIF_Event` message containing a `StudentPersonal` object with an `Action` of `Add`. (frozen)
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`. (frozen)
`SIF_Response` message containing the `SchoolInfo` object previously requested.

Table F.1-3: Agent Message Queue - Example 3

The next message the agent receives is the `SIF_Response`. The agent takes the `SIF_Response` and uses the information from it along with the data in the original `StudentSchoolEnrollment` event to update its database. The agent returns (Pull-Mode) or sends (Push-Mode) an "Immediate" `SIF_Ack` telling the ZIS to discard the `SIF_Response` message.

The agent has now completed processing of the `StudentSchoolEnrollment` event and opens a channel to the ZIS and sends a "Final" `SIF_Ack` with the message identifier for the `StudentSchoolEnrollment` event. The `SIF_Ack` says that the agent has completed processing and the ZIS removes the event from the agent queue. The freeze on `SIF_Event` messages is lifted and the next message to be sent to the agent is the `SIF_Event` for a `StudentPersonal` Add:

Agent Message Queue
`SIF_Event` message containing a `StudentPersonal` object with an `Action` of `Add`.
`SIF_Event` message containing a `StudentSchoolEnrollment` object with an `Action` of `Add`.

Table F.1-4: Agent Message Queue - Example 4

##### "Immediate" SIF_Ack

The "Immediate" `SIF_Ack` is a `SIF_Ack` message with status code of `1`. This type of `SIF_Ack` is returned as a response to a message sent by the ZIS and indicates that the agent has persisted or has processed the message and the ZIS must remove the message from its queue.

<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>ABCD10580EF250789012AC0554321EA2</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>10580EF2ABCD50789012AC05EA6C71B3</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>1</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example F.1-1: "Immediate" SIF_Ack

##### "Intermediate" SIF_Ack

The "Intermediate" `SIF_Ack` is a `SIF_Ack` message with status code of `2`. This type of `SIF_Ack` is returned as a response to an event message delivered by the ZIS and indicates that the agent has not completed processing of the event and the ZIS must not remove the event message from its queue. The agent will send a "Final" `SIF_Ack` to the ZIS in the future to signal that the ZIS can discard the event message. An "Intermediate" `SIF_Ack` message must not be returned by agents in response to messages other than `SIF_Event`.

<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>ABCD10580EF250789012AC0554321EA3</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>10580EF2ABCD50789012AC05EA6C71B3</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>2</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example F.1-2: "Intermediate" SIF_Ack

##### "Final" SIF_Ack

A "Final" `SIF_Ack` is a message with status code of `3`. The agent sends this type of `SIF_Ack` to the ZIS after the agent has completely processed a `SIF_Event` where it previously sent an "Intermediate" `SIF_Ack`. When the ZIS receives this message, it must discard the `SIF_Event` message referenced in the `SIF_Ack` upon successfully acknowledging the "Final" `SIF_Ack`.

<SIF_Message Version="2.3" xmlns="http://www.sifinfo.org/au/infrastructure/2.x"> <SIF_Ack> <SIF_Header> <SIF_MsgId>ABCD10580EF250789012AC0554321EA4</SIF_MsgId> <SIF_Timestamp>2006-02-18T08:39:40-08:00</SIF_Timestamp> <SIF_SourceId>RamseyLIB</SIF_SourceId> </SIF_Header> <SIF_OriginalSourceId>RamseySIS</SIF_OriginalSourceId> <SIF_OriginalMsgId>10580EF2ABCD50789012AC05EA6C71B3</SIF_OriginalMsgId> <SIF_Status> <SIF_Code>3</SIF_Code> </SIF_Status> </SIF_Ack> </SIF_Message>
Example F.1-3: "Final" SIF_Ack

# Appendix G: Background/Supplementary Documentation (non-normative)

This appendix supplies background/supplementary documentation from working groups and task forces for interested readers, including but not limited to object plans, business/use cases, test plans, test results, background and best practice documentation. Last modified dates are included in parentheses.

- SIF AU
  - DSWG_V1.1_ChangeProposal_CalendarDate.doc (11/30/2010)
  - DSWG_V1.1_ChangeProposal_demographics_and_languagelist.doc (11/30/2010)
  - DSWG_V1.1_ChangeProposal_Identity.doc (11/30/2010)
  - DSWG_V1.1_ChangeProposal_StaffAssignment.doc (11/30/2010)
  - DSWG_V1.1_ChangeProposal_StudentParticipation.doc (11/30/2010)
  - DSWG_V1.1_ChangeProposal_StudentPeriodAttendance.doc (12/15/2010)
  - DSWG_V1.1_ChangeProposal_StudentPersonal.doc (11/30/2010)
  - DSWG_V1.1_Object_Proposal_Plan_Assessment.doc (12/22/2010)
  - DSWG_V1.1_Object_Proposal_Plan_LearningStandards.doc (12/22/2010)
  - DSWG_V1.1_Object_Proposal_Plan_SystemRole.doc (12/22/2010)
  - Highlighted Additions and Changes 1.1.docx (12/22/2010)

# Appendix H: Index of Tables

Table 3.3.5.1‑1 | Register
Table 3.3.5.1‑2 | Virtual Table Example (Register)
Table 3.3.5.1‑3 | Access Control
Table 3.3.5.1‑4 | Virtual Table Example (Access Control)
Table 3.3.6.3.4‑1 | Key Lengths
Table 3.3.7.1.2‑1 | HTTP Request Headers
Table 3.3.7.1.3‑1 | HTTP Response Headers
Table 4.1.1.1‑1 | SIF_Register Protocol
Table 4.1.1.2‑1 | SIF_Unregister Protocol
Table 4.1.1.3‑1 | SIF_Provide Protocol
Table 4.1.1.4‑1 | SIF_Unprovide Protocol
Table 4.1.1.5‑1 | SIF_Subscribe Protocol
Table 4.1.1.6‑1 | SIF_Unsubscribe Protocol
Table 4.1.1.7‑1 | SIF_Provision Protocol
Table 4.1.1.8‑1 | SIF_Event Protocol
Table 4.1.1.9‑1 | SIF_Request Protocol
Table 4.1.1.10‑1 | SIF_Ping Protocol
Table 4.1.1.11‑1 | SIF_Sleep Protocol
Table 4.1.1.12‑1 | SIF_Wakeup Protocol
Table 4.1.1.13‑1 | SIF_GetZoneStatus Protocol
Table 4.1.1.14‑1 | SIF_GetAgentACL Protocol
Table 4.1.1.15‑1 | SIF_CancelRequests Protocol
Table 4.1.1.16‑1 | SIF_GetMessage Protocol
Table 4.1.1.17‑1 | SIF_Ack Protocol (Push-Mode)
Table 4.1.1.18‑1 | SIF_Ack Protocol (Pull-Mode)
Table 4.1.2.1‑1 | SIF_Message Handling
Table 4.1.2.2‑1 | SIF_Event Handling
Table 4.1.2.3‑1 | SIF_Request Handling
Table 4.1.2.4‑1 | SIF_Event Handling
Table 4.1.2.5‑1 | SIF_Ping Handling
Table 4.1.2.6‑1 | SIF_Sleep Handling
Table 4.1.2.7‑1 | SIF_Wakeup Handling
Table 4.1.2.8‑1 | SIF_CancelRequests Handling
Table 4.2.1.1‑1 | SIF_Message Delivery Protocol
Table 4.2.1.2‑1 | SIF_Ping Protocol
Table 4.2.1.3‑1 | SIF_Sleep Protocol
Table 4.2.1.4‑1 | SIF_Wakeup Protocol
Table 4.2.1.5‑1 | SIF_CancelRequests Protocol
Table 4.2.2.1‑1 | SIF_Message Handling
Table 4.2.2.2‑1 | SIF_Register Handling
Table 4.2.2.3‑1 | SIF_Unregister Handling
Table 4.2.2.4‑1 | SIF_Provide Handling
Table 4.2.2.5‑1 | SIF_Unprovide Handling
Table 4.2.2.6‑1 | SIF_Subscribe Handling
Table 4.2.2.7‑1 | SIF_Unsubscribe Handling
Table 4.2.2.8‑1 | SIF_Provision Handling
Table 4.2.2.9‑1 | SIF_Event Handling
Table 4.2.2.10‑1 | SIF_Request Handling
Table 4.2.2.11‑1 | SIF_Response Handling
Table 4.2.2.12‑1 | SIF_Ping Handling
Table 4.2.2.13‑1 | SIF_Sleep Handling
Table 4.2.2.14‑1 | SIF_Wakeup Handling
Table 4.2.2.15‑1 | SIF_GetZoneStatus Handling
Table 4.2.2.16‑1 | SIF_GetZoneStatus Handling
Table 4.2.2.17‑1 | SIF_CancelRequests Handling
Table 4.2.2.18‑1 | SIF_GetMessage Handling
Table 4.2.2.19‑1 | SIF_Ack Handling
Table 4.2.2.20‑1 | SIF_Ack Handling
Table 5.1.1‑1 | SIF_Message
Table 5.1.2‑1 | SIF_Header
Table 5.1.3‑1 | SIF_EncryptionLevel
Table 5.1.4‑1 | SIF_AuthenticationLevel
Table 5.1.5‑1 | SIF_Contexts
Table 5.1.6‑1 | SIF_Context
Table 5.1.7‑1 | SIF_Protocol
Table 5.1.8‑1 | SIF_Status
Table 5.1.9‑1 | SIF_Error
Table 5.1.10‑1 | SIF_Query
Table 5.1.11‑1 | SIF_ExtendedQuery
Table 5.1.11.1‑1 | Mapping SIF_Query to SIF_ExtendedQuery
Table 5.1.12‑1 | SIF_ExtendedQueryResults
Table 5.2.1‑1 | SIF_Ack
Table 5.2.2‑1 | SIF_Event
Table 5.2.3‑1 | SIF_Provide
Table 5.2.4‑1 | SIF_Provision
Table 5.2.5‑1 | SIF_Register
Table 5.2.6‑1 | SIF_Request
Table 5.2.7‑1 | SIF_Response
Table 5.2.8‑1 | SIF_Subscribe
Table 5.2.9‑1 | SIF_SystemControl
Table 5.2.10‑1 | SIF_Ping
Table 5.2.11‑1 | SIF_Sleep
Table 5.2.12‑1 | SIF_Wakeup
Table 5.2.13‑1 | SIF_GetMessage
Table 5.2.14‑1 | SIF_GetZoneStatus
Table 5.2.15‑1 | SIF_GetAgentACL
Table 5.2.16‑1 | SIF_CancelRequests
Table 5.2.17‑1 | SIF_Unprovide
Table 5.2.18‑1 | SIF_Unregister
Table 5.2.19‑1 | SIF_Unsubscribe
Table 5.3.1‑1 | SIF_AgentACL
Table 5.3.2‑1 | SIF_LogEntry
Table 5.3.3‑1 | SIF_ZoneStatus
Table 6.2.1‑1 | ACStrandSubjectArea
Table 6.2.2‑1 | Address
Table 6.2.3‑1 | AddressList
Table 6.2.4‑1 | AttendanceCode
Table 6.2.5‑1 | BirthDate
Table 6.2.6‑1 | ContactInfo
Table 6.2.7‑1 | Country
Table 6.2.8‑1 | Demographics
Table 6.2.9‑1 | EducationalLevel
Table 6.2.10‑1 | EducationFilter
Table 6.2.11‑1 | ElectronicId
Table 6.2.12‑1 | ElectronicIdList
Table 6.2.13‑1 | Email
Table 6.2.14‑1 | EmailList
Table 6.2.15‑1 | EnglishProficiency
Table 6.2.16‑1 | GraduationDate
Table 6.2.17‑1 | GridLocation
Table 6.2.18‑1 | HomeroomNumber
Table 6.2.19‑1 | LanguageList
Table 6.2.20‑1 | LifeCycle
Table 6.2.21‑1 | LocalId
Table 6.2.22‑1 | Location
Table 6.2.23‑1 | Name
Table 6.2.24‑1 | OnTimeGraduationYear
Table 6.2.25‑1 | OperationalStatus
Table 6.2.26‑1 | OtherCodeList
Table 6.2.27‑1 | OtherNames
Table 6.2.28‑1 | PersonInfo
Table 6.2.29‑1 | PhoneNumber
Table 6.2.30‑1 | PhoneNumberList
Table 6.2.31‑1 | PrincipalInfo
Table 6.2.32‑1 | ProgramStatus
Table 6.2.33‑1 | ProjectedGraduationYear
Table 6.2.34‑1 | PublishInDirectory
Table 6.2.35‑1 | Relationship
Table 6.2.36‑1 | SchoolContactList
Table 6.2.37‑1 | SchoolURL
Table 6.2.38‑1 | SchoolYear
Table 6.2.39‑1 | SIF_ExtendedElements
Table 6.2.40‑1 | SIF_Metadata
Table 6.2.41‑1 | StateProvince
Table 6.2.42‑1 | StateProvinceId
Table 6.2.43‑1 | SubjectArea
Table 6.2.44‑1 | SubjectAreaList
Table 6.2.45‑1 | TimeElement
Table 6.2.46‑1 | YearLevel
Table 6.2.47‑1 | YearLevels
Table 6.3.1‑1 | AggregateCharacteristicInfo
Table 6.3.2‑1 | AggregateStatisticFact
Table 6.3.3‑1 | AggregateStatisticInfo
Table 6.3.4‑1 | Assessment
Table 6.3.5‑1 | AssessmentAdministration
Table 6.3.6‑1 | AssessmentForm
Table 6.3.7‑1 | AssessmentItem
Table 6.3.8‑1 | AssessmentPackage
Table 6.3.9‑1 | AssessmentRegistration
Table 6.3.10‑1 | AssessmentSubTest
Table 6.3.11‑1 | CalendarDate
Table 6.3.12‑1 | CalendarSummary
Table 6.3.13‑1 | Identity
Table 6.3.14‑1 | LEAInfo
Table 6.3.15‑1 | LearningResource
Table 6.3.16‑1 | LearningResourcePackage
Table 6.3.17‑1 | LearningStandardDocument
Table 6.3.18‑1 | LearningStandardItem
Table 6.3.19‑1 | PersonPicture
Table 6.3.20‑1 | ReportAuthorityInfo
Table 6.3.21‑1 | ReportManifest
Table 6.3.22‑1 | RoomInfo
Table 6.3.23‑1 | SchoolCourseInfo
Table 6.3.24‑1 | SchoolInfo
Table 6.3.25‑1 | SchoolPrograms
Table 6.3.26‑1 | SessionInfo
Table 6.3.27‑1 | SIF_ReportObject
Table 6.3.28‑1 | StaffAssignment
Table 6.3.29‑1 | StaffPersonal
Table 6.3.30‑1 | StudentActivityInfo
Table 6.3.31‑1 | StudentActivityParticipation
Table 6.3.32‑1 | StudentAttendanceSummary
Table 6.3.33‑1 | StudentContactPersonal
Table 6.3.34‑1 | StudentContactRelationship
Table 6.3.35‑1 | StudentDailyAttendance
Table 6.3.36‑1 | StudentParticipation
Table 6.3.37‑1 | StudentPeriodAttendance
Table 6.3.38‑1 | StudentPersonal
Table 6.3.39‑1 | StudentSchoolEnrollment
Table 6.3.40‑1 | StudentScoreSet
Table 6.3.41‑1 | StudentSDTN
Table 6.3.42‑1 | StudentSnapshot
Table 6.3.43‑1 | SummaryEnrollmentInfo
Table 6.3.44‑1 | SystemRole
Table 6.3.45‑1 | TeachingGroup
Table 6.3.46‑1 | TermInfo
Table 6.3.47‑1 | TimeTable
Table 6.3.48‑1 | TimeTableCell
Table 6.3.49‑1 | TimeTableSubject
Table A.1‑1 | AbstractContentElementType
Table A.2‑1 | AbstractContentPackageType
Table A.3‑1 | BaseNameType
Table A.4‑1 | DefinedProtocolsType
Table A.5‑1 | ExtendedContentType
Table A.6‑1 | GUIDType
Table A.7‑1 | IdRefType
Table A.8‑1 | MonetaryAmountType
Table A.9‑1 | MsgIdType
Table A.10‑1 | NameOfRecordType
Table A.11‑1 | ObjectNameType
Table A.12‑1 | OtherNameType
Table A.13‑1 | PartialDateType
Table A.14‑1 | RefIdType
Table A.15‑1 | ReportDataObjectType
Table A.16‑1 | ReportPackageType
Table A.17‑1 | SelectedContentType
Table A.18‑1 | SIF_EventObjectType
Table A.19‑1 | SIF_ExampleObjectType
Table A.20‑1 | SIF_LogEntryExtendedContentType
Table A.21‑1 | SIF_ProvideObjectNamesType
Table A.22‑1 | SIF_RequestObjectNamesType
Table A.23‑1 | SIF_ResponseObjectsType
Table A.24‑1 | SIF_ResponseObjectType
Table A.25‑1 | SIF_SubscribeObjectNamesType
Table A.26‑1 | URIOrBinaryType
Table A.27‑1 | VersionType
Table A.28‑1 | VersionWithWildcardsType
Table F.1‑1 | Agent Message Queue - Example 1
Table F.1‑2 | Agent Message Queue - Example 2
Table F.1‑3 | Agent Message Queue - Example 3
Table F.1‑4 | Agent Message Queue - Example 4

# Appendix I: Index of Examples

Example 2.2.3‑1 | Examples Convention
Example 3.3.6.6.2‑1 | The "Pull" Model - SIF_Status/SIF_Code of 0
Example 3.3.6.6.2‑2 | The "Pull" Model - SIF_Status/SIF_Code of 9
Example 3.3.7.1.2‑1 | SIF HTTPS Request
Example 3.3.7.1.3‑1 | SIF HTTPS Response
Example 3.3.7.3‑1 | SIF client requesting compression of response
Example 3.3.7.3‑2 | SIF server returning compressed SIF_Ack
Example 3.3.7.3‑3 | SIF client sending compressed SIF_Message
Example 3.3.7.3‑4 | SIF client sending compressed SIF_Message and requesting compression of response
Example 3.3.7.4‑1 | SIF_Protocol with Accept-Encoding indicating acceptance of gzip (and identity)
Example 3.3.7.4‑2 | SIF_Protocol with Accept-Encoding indicating no acceptance of encodings other than gzip or identity, gzip preferred over identity
Example 5.1.1‑1 | SIF_Message
Example 5.1.2‑1 | SIF_Header
Example 5.1.2‑2 | SIF_Header
Example 5.1.10.1‑1 |
Example 5.1.10.1‑2 |
Example 5.1.10.1‑3 | SIF_ConditionGroup querying into an object
Example 5.1.10.2‑1 |
Example 5.1.10.2‑2 |
Example 5.1.11‑1 | Selecting all StudentPersonal objects
Example 5.1.11‑2 | Selecting all attributes and immediate child elements of StudentPersonal as columns from all StudentPersonal objects
Example 5.1.11‑4 | Selecting specific attributes and elements from all StudentPersonal objects
Example 5.1.11‑5 | Selecting StudentPersonal objects along with each student's EntryDate from StudentSchoolEnrollment for a specific school, school year and other StudentSchoolEnrollment values, sorted by student's last name
Example 5.1.11‑6 | Selecting a specific StudentPersonal's StudentSchoolEnrollment objects, along with the corresponding school name for each enrollment
Example 5.1.11.1‑1 | Input SIF_Query
Example 5.1.11.1‑2 | Corresponding SIF_ExtendedQuery
Example 5.1.12‑1 | SIF_ExtendedQueryResults
Example 5.2.1‑1 | SIF_Ack Status Message
Example 5.2.1‑2 | SIF_Ack Status Message
Example 5.2.1‑3 | SIF_Ack Error Message
Example 5.2.2‑1 | SIF_Event Message with StudentPersonal changes
Example 5.2.3‑1 | SIF_Provide
Example 5.2.4‑1 | SIF_Provision Example
Example 5.2.5‑1 | SIF_Register
Example 5.2.6‑1 | SIF_Request
Example 5.2.6‑2 | SIF_Request
Example 5.2.7‑1 | Sample single-packet SIF_Response to a SIF_Request for the Name element from a StudentPersonal object
Example 5.2.7‑2 | SIF_Response (first packet)
Example 5.2.7‑3 | SIF_Response (second packet)
Example 5.2.7‑4 | SIF_Response with no matching objects
Example 5.2.8‑1 | SIF_Subscribe
Example 5.2.9‑1 | SIF_SystemControl
Example 5.2.10‑1 | SIF_Ping
Example 5.2.10‑2 | SIF_SystemControl—SIF_Ping ("Okay" status)
Example 5.2.10‑3 | SIF_SystemControl—SIF_Ping ("Receiver is sleeping" status)
Example 5.2.10‑4 | SIF_SystemControl—SIF_Ping (Transport error returned)
Example 5.2.11‑1 | SIF_Sleep
Example 5.2.11‑2 | SIF_Ack with "Okay" status in response to SIF_Sleep
Example 5.2.12‑1 | SIF_Wakeup
Example 5.2.12‑2 | SIF_Ack with an "Okay" status in response to SIF_Wakeup
Example 5.2.13‑1 | SIF_GetMessage
Example 5.2.13‑2 | SIF_Ack in response to SIF_GetMessage
Example 5.2.13‑3 | SIF_Ack in response to SIF_GetMessage (no message in queue)
Example 5.2.14‑1 | SIF_GetZoneStatus
Example 5.2.14‑2 | SIF_Ack containing SIF_ZoneStatus
Example 5.2.16‑1 | SIF_CancelRequests
Example 5.2.17‑1 | SIF_Unprovide
Example 5.2.18‑1 | SIF_Unregister
Example 5.2.19‑1 | SIF_Unsubscribe
Example 5.3.1‑1 | SIF_AgentACL
Example 5.3.2‑1 | SIF_LogEntry when an agent encounters a system failure
Example 5.3.2‑2 | SIF_LogEntry when an agent fails to delete a student
Example 5.3.2‑3 | SIF_LogEntry when an agent starts synchronizing data
Example 5.3.2‑4 | SIF_LogEntry when a ZIS fails to deliver a message due to buffer size limitations
Example 5.3.3‑1 | SIF_ZoneStatus
Example 6.1.2.3‑1 | EmailList
Example 6.1.2.3.1‑1 | Indicating a new value for the Primary e-mail address and deleting the Alternate1 address
Example 6.1.2.3.2‑1 | Indicating an updated list of country citizenships
Example 6.2.1‑1 | ACStrandSubjectArea
Example 6.2.2‑1 | Address
Example 6.2.3‑1 | AddressList
Example 6.2.4‑1 | AttendanceCode
Example 6.2.5‑1 | BirthDate
Example 6.2.6‑1 | ContactInfo
Example 6.2.7‑1 | Country
Example 6.2.8‑1 | Demographics Example
Example 6.2.9‑1 | EducationalLevel
Example 6.2.10‑1 | EducationFilter - Example 1
Example 6.2.11‑1 | ElectronicId
Example 6.2.12‑1 | ElectronicIdList
Example 6.2.13‑1 | Email
Example 6.2.14‑1 | EmailList
Example 6.2.15‑1 | EnglishProficiency
Example 6.2.16‑1 | GraduationDate
Example 6.2.17‑1 | GridLocation
Example 6.2.18‑1 | HomeroomNumber
Example 6.2.19‑1 | LanguageList
Example 6.2.20‑1 | LifeCycle
Example 6.2.21‑1 | LocalId
Example 6.2.22‑1 | Location
Example 6.2.23‑1 | Name
Example 6.2.24‑1 | OnTimeGraduationYear
Example 6.2.25‑1 | OperationalStatus
Example 6.2.26‑1 | OtherCodeList
Example 6.2.27‑1 | OtherNames
Example 6.2.28‑1 | PersonInfo
Example 6.2.29‑1 | PhoneNumber
Example 6.2.30‑1 | PhoneNumberList
Example 6.2.31‑1 | PrincipalInfo
Example 6.2.32‑1 | ProgramStatus
Example 6.2.33‑1 | ProjectedGraduationYear
Example 6.2.34‑1 | PublishInDirectory
Example 6.2.35‑1 | Relationship
Example 6.2.36‑1 | SchoolContactList
Example 6.2.37‑1 | SchoolURL
Example 6.2.38‑1 | SchoolYear
Example 6.2.39‑1 | SIF_ExtendedElements
Example 6.2.41‑1 | StateProvince
Example 6.2.42‑1 | StateProvinceId
Example 6.2.43‑1 | SubjectArea
Example 6.2.44‑1 | SubjectAreaList
Example 6.2.45‑1 | TimeElement
Example 6.2.46‑1 | YearLevel
Example 6.2.47‑1 | YearLevels
Example 6.3.1‑1 | AggregateCharacteristicInfo
Example 6.3.2‑1 | AggregateStatisticFact
Example 6.3.3‑1 | AggregateStatisticInfo
Example 6.3.4‑1 | Assessment
Example 6.3.5‑1 | AssessmentAdministration
Example 6.3.6‑1 | AssessmentForm
Example 6.3.7‑1 | AssessmentItem - Example 1
Example 6.3.7‑2 | AssessmentItem - Example 2
Example 6.3.8‑1 | AssessmentPackage
Example 6.3.9‑1 | AssessmentRegistration
Example 6.3.10‑1 | AssessmentSubTest
Example 6.3.11‑1 | CalendarDate
Example 6.3.12‑1 | CalendarSummary
Example 6.3.13‑1 | Identity published by an Access Federation Shibboleth Provider
Example 6.3.13‑2 | Identity published by Microsoft Active Directory
Example 6.3.13‑3 | Identity published by an OpenID provider
Example 6.3.14‑1 | LEAInfo
Example 6.3.15‑1 | LearningResource
Example 6.3.16‑1 | LearningResourcePackage
Example 6.3.17‑1 | LearningStandardDocument
Example 6.3.18‑1 | LearningStandardItem
Example 6.3.19‑1 | PersonPicture
Example 6.3.20‑1 | ReportAuthorityInfo
Example 6.3.21‑1 | ReportManifest
Example 6.3.22‑1 | RoomInfo
Example 6.3.23‑1 | SchoolCourseInfo
Example 6.3.24‑1 | SchoolInfo
Example 6.3.25‑1 | SchoolPrograms
Example 6.3.26‑1 | SessionInfo
Example 6.3.27‑1 | SIF_ReportObject
Example 6.3.28‑1 | StaffAssignment
Example 6.3.29‑1 | StaffPersonal
Example 6.3.30‑1 | StudentActivityInfo
Example 6.3.31‑1 | StudentActivityParticipation
Example 6.3.32‑1 | StudentAttendanceSummary
Example 6.3.33‑1 | StudentContactPersonal
Example 6.3.34‑1 | StudentContactRelationship
Example 6.3.35‑1 | StudentDailyAttendance
Example 6.3.36‑1 | StudentParticipation
Example 6.3.37‑1 | StudentPeriodAttendance
Example 6.3.38‑1 | StudentPersonal
Example 6.3.39‑1 | StudentSchoolEnrollment
Example 6.3.40‑1 | StudentScoreSet
Example 6.3.41‑1 | StudentSDTN
Example 6.3.42‑1 | StudentSnapshot
Example 6.3.43‑1 | SummaryEnrollmentInfo
Example 6.3.44‑1 | SystemRole
Example 6.3.45‑1 | TeachingGroup
Example 6.3.46‑1 | TermInfo
Example 6.3.47‑1 | TimeTable
Example 6.3.48‑1 | TimeTableCell
Example 6.3.49‑1 | TimeTableSubject
Example A.3‑1 | BaseNameType
Example D.7‑1 | SIF_Message Namespace
Example D.7‑2 | SIF_Message Namespace
Example E.1‑1 | StudentPersonal from SIF Implementation Specification 1.1
Example F.1‑1 | "Immediate" SIF_Ack
Example F.1‑2 | "Intermediate" SIF_Ack
Example F.1‑3 | "Final" SIF_Ack

# Appendix J: Index of Figures

Figure 2.2.6‑1 | XML Diagram Conventions
Figure 3.3.1‑1 | Single-Zone School SIF Implementation
Figure 3.3.1‑2 | Multiple-Zone District SIF Implementation
Figure 3.3.1‑3 | Multiple-Zone State SIF Implementation
Figure 5.1.1‑1 | SIF_Message
Figure 5.1.2‑1 | SIF_Header
Figure 5.1.3‑1 | SIF_EncryptionLevel
Figure 5.1.4‑1 | SIF_AuthenticationLevel
Figure 5.1.5‑1 | SIF_Contexts
Figure 5.1.6‑1 | SIF_Context
Figure 5.1.7‑1 | SIF_Protocol
Figure 5.1.8‑1 | SIF_Status
Figure 5.1.9‑1 | SIF_Error
Figure 5.1.10‑1 | SIF_Query
Figure 5.1.11‑1 | SIF_ExtendedQuery
Figure 5.1.12‑1 | SIF_ExtendedQueryResults
Figure 5.2.1‑1 | SIF_Ack
Figure 5.2.2‑1 | SIF_Event
Figure 5.2.3‑1 | SIF_Provide
Figure 5.2.4‑1 | SIF_Provision
Figure 5.2.5‑1 | SIF_Register
Figure 5.2.6‑1 | SIF_Request
Figure 5.2.7‑1 | SIF_Response
Figure 5.2.8‑1 | SIF_Subscribe
Figure 5.2.9‑1 | SIF_SystemControl
Figure 5.2.10‑1 | SIF_Ping
Figure 5.2.11‑1 | SIF_Sleep
Figure 5.2.12‑1 | SIF_Wakeup
Figure 5.2.13‑1 | SIF_GetMessage
Figure 5.2.14‑1 | SIF_GetZoneStatus
Figure 5.2.15‑1 | SIF_GetAgentACL
Figure 5.2.16‑1 | SIF_CancelRequests
Figure 5.2.17‑1 | SIF_Unprovide
Figure 5.2.18‑1 | SIF_Unregister
Figure 5.2.19‑1 | SIF_Unsubscribe
Figure 5.3.1‑1 | SIF_AgentACL
Figure 5.3.2‑1 | SIF_LogEntry
Figure 5.3.3‑1 | SIF_ZoneStatus
Figure 6.2.1‑1 | ACStrandSubjectArea
Figure 6.2.2‑1 | Address
Figure 6.2.3‑1 | AddressList
Figure 6.2.4‑1 | AttendanceCode
Figure 6.2.5‑1 | BirthDate
Figure 6.2.6‑1 | ContactInfo
Figure 6.2.7‑1 | Country
Figure 6.2.8‑1 | Demographics
Figure 6.2.9‑1 | EducationalLevel
Figure 6.2.10‑1 | EducationFilter
Figure 6.2.11‑1 | ElectronicId
Figure 6.2.12‑1 | ElectronicIdList
Figure 6.2.13‑1 | Email
Figure 6.2.14‑1 | EmailList
Figure 6.2.15‑1 | EnglishProficiency
Figure 6.2.16‑1 | GraduationDate
Figure 6.2.17‑1 | GridLocation
Figure 6.2.18‑1 | HomeroomNumber
Figure 6.2.19‑1 | LanguageList
Figure 6.2.20‑1 | LifeCycle
Figure 6.2.21‑1 | LocalId
Figure 6.2.22‑1 | Location
Figure 6.2.23‑1 | Name
Figure 6.2.24‑1 | OnTimeGraduationYear
Figure 6.2.25‑1 | OperationalStatus
Figure 6.2.26‑1 | OtherCodeList
Figure 6.2.27‑1 | OtherNames
Figure 6.2.28‑1 | PersonInfo
Figure 6.2.29‑1 | PhoneNumber
Figure 6.2.30‑1 | PhoneNumberList
Figure 6.2.31‑1 | PrincipalInfo
Figure 6.2.32‑1 | ProgramStatus
Figure 6.2.33‑1 | ProjectedGraduationYear
Figure 6.2.34‑1 | PublishInDirectory
Figure 6.2.35‑1 | Relationship
Figure 6.2.36‑1 | SchoolContactList
Figure 6.2.37‑1 | SchoolURL
Figure 6.2.38‑1 | SchoolYear
Figure 6.2.39‑1 | SIF_ExtendedElements
Figure 6.2.40‑1 | SIF_Metadata
Figure 6.2.41‑1 | StateProvince
Figure 6.2.42‑1 | StateProvinceId
Figure 6.2.43‑1 | SubjectArea
Figure 6.2.44‑1 | SubjectAreaList
Figure 6.2.45‑1 | TimeElement
Figure 6.2.46‑1 | YearLevel
Figure 6.2.47‑1 | YearLevels
Figure 6.3.1‑1 | AggregateCharacteristicInfo
Figure 6.3.2‑1 | AggregateStatisticFact
Figure 6.3.3‑1 | AggregateStatisticInfo
Figure 6.3.4‑1 | Assessment
Figure 6.3.5‑1 | AssessmentAdministration
Figure 6.3.6‑1 | AssessmentForm
Figure 6.3.7‑1 | AssessmentItem
Figure 6.3.8‑1 | AssessmentPackage
Figure 6.3.9‑1 | AssessmentRegistration
Figure 6.3.10‑1 | AssessmentSubTest
Figure 6.3.11‑1 | CalendarDate
Figure 6.3.12‑1 | CalendarSummary
Figure 6.3.13‑1 | Identity
Figure 6.3.14‑1 | LEAInfo
Figure 6.3.15‑1 | LearningResource
Figure 6.3.16‑1 | LearningResourcePackage
Figure 6.3.17‑1 | LearningStandardDocument
Figure 6.3.18‑1 | LearningStandardItem
Figure 6.3.19‑1 | PersonPicture
Figure 6.3.20‑1 | ReportAuthorityInfo
Figure 6.3.21‑1 | ReportManifest
Figure 6.3.22‑1 | RoomInfo
Figure 6.3.23‑1 | SchoolCourseInfo
Figure 6.3.24‑1 | SchoolInfo
Figure 6.3.25‑1 | SchoolPrograms
Figure 6.3.26‑1 | SessionInfo
Figure 6.3.27‑1 | SIF_ReportObject
Figure 6.3.28‑1 | StaffAssignment
Figure 6.3.29‑1 | StaffPersonal
Figure 6.3.30‑1 | StudentActivityInfo
Figure 6.3.31‑1 | StudentActivityParticipation
Figure 6.3.32‑1 | StudentAttendanceSummary
Figure 6.3.33‑1 | StudentContactPersonal
Figure 6.3.34‑1 | StudentContactRelationship
Figure 6.3.35‑1 | StudentDailyAttendance
Figure 6.3.36‑1 | StudentParticipation
Figure 6.3.37‑1 | StudentPeriodAttendance
Figure 6.3.38‑1 | StudentPersonal
Figure 6.3.39‑1 | StudentSchoolEnrollment
Figure 6.3.40‑1 | StudentScoreSet
Figure 6.3.41‑1 | StudentSDTN
Figure 6.3.42‑1 | StudentSnapshot
Figure 6.3.43‑1 | SummaryEnrollmentInfo
Figure 6.3.44‑1 | SystemRole
Figure 6.3.45‑1 | TeachingGroup
Figure 6.3.46‑1 | TermInfo
Figure 6.3.47‑1 | TimeTable
Figure 6.3.48‑1 | TimeTableCell
Figure 6.3.49‑1 | TimeTableSubject
Figure A.1‑1 | AbstractContentElementType
Figure A.2‑1 | AbstractContentPackageType
Figure A.3‑1 | BaseNameType
Figure A.4‑1 | DefinedProtocolsType
Figure A.5‑1 | ExtendedContentType
Figure A.6‑1 | GUIDType
Figure A.7‑1 | IdRefType
Figure A.8‑1 | MonetaryAmountType
Figure A.9‑1 | MsgIdType
Figure A.10‑1 | NameOfRecordType
Figure A.11‑1 | ObjectNameType
Figure A.12‑1 | OtherNameType
Figure A.13‑1 | PartialDateType
Figure A.14‑1 | RefIdType
Figure A.15‑1 | ReportDataObjectType
Figure A.16‑1 | ReportPackageType
Figure A.17‑1 | SelectedContentType
Figure A.18‑1 | SIF_EventObjectType
Figure A.19‑1 | SIF_ExampleObjectType
Figure A.20‑1 | SIF_LogEntryExtendedContentType
Figure A.21‑1 | SIF_ProvideObjectNamesType
Figure A.22‑1 | SIF_RequestObjectNamesType
Figure A.23‑1 | SIF_ResponseObjectsType
Figure A.24‑1 | SIF_ResponseObjectType
Figure A.25‑1 | SIF_SubscribeObjectNamesType
Figure A.26‑1 | URIOrBinaryType
Figure A.27‑1 | VersionType
Figure A.28‑1 | VersionWithWildcardsType

# Appendix K: Index of Objects

AggregateCharacteristicInfo | 6.3.1
AggregateStatisticFact | 6.3.2
AggregateStatisticInfo | 6.3.3
Assessment | 6.3.4
AssessmentAdministration | 6.3.5
AssessmentForm | 6.3.6
AssessmentItem | 6.3.7
AssessmentPackage | 6.3.8
AssessmentRegistration | 6.3.9
AssessmentSubTest | 6.3.10
CalendarDate | 6.3.11
CalendarSummary | 6.3.12
Identity | 6.3.13
LEAInfo | 6.3.14
LearningResource | 6.3.15
LearningResourcePackage | 6.3.16
LearningStandardDocument | 6.3.17
LearningStandardItem | 6.3.18
PersonPicture | 6.3.19
ReportAuthorityInfo | 6.3.20
ReportManifest | 6.3.21
RoomInfo | 6.3.22
SchoolCourseInfo | 6.3.23
SchoolInfo | 6.3.24
SchoolPrograms | 6.3.25
SessionInfo | 6.3.26
SIF_AgentACL | 5.3.1
SIF_LogEntry | 5.3.2
SIF_ReportObject | 6.3.27
SIF_ZoneStatus | 5.3.3
StaffAssignment | 6.3.28
StaffPersonal | 6.3.29
StudentActivityInfo | 6.3.30
StudentActivityParticipation | 6.3.31
StudentAttendanceSummary | 6.3.32
StudentContactPersonal | 6.3.33
StudentContactRelationship | 6.3.34
StudentDailyAttendance | 6.3.35
StudentParticipation | 6.3.36
StudentPeriodAttendance | 6.3.37
StudentPersonal | 6.3.38
StudentSchoolEnrollment | 6.3.39
StudentScoreSet | 6.3.40
StudentSDTN | 6.3.41
StudentSnapshot | 6.3.42
SummaryEnrollmentInfo | 6.3.43
SystemRole | 6.3.44
TeachingGroup | 6.3.45
TermInfo | 6.3.46
TimeTable | 6.3.47
TimeTableCell | 6.3.48
TimeTableSubject | 6.3.49

52 Total

# Appendix L: Index of Common Elements

ACStrandSubjectArea | 6.2.1
Address | 6.2.2
AddressList | 6.2.3
AttendanceCode | 6.2.4
BirthDate | 6.2.5
ContactInfo | 6.2.6
Country | 6.2.7
Demographics | 6.2.8
EducationalLevel | 6.2.9
EducationFilter | 6.2.10
ElectronicId | 6.2.11
ElectronicIdList | 6.2.12
Email | 6.2.13
EmailList | 6.2.14
EnglishProficiency | 6.2.15
GraduationDate | 6.2.16
GridLocation | 6.2.17
HomeroomNumber | 6.2.18
LanguageList | 6.2.19
LifeCycle | 6.2.20
LocalId | 6.2.21
Location | 6.2.22
Name | 6.2.23
OnTimeGraduationYear | 6.2.24
OperationalStatus | 6.2.25
OtherCodeList | 6.2.26
OtherNames | 6.2.27
PersonInfo | 6.2.28
PhoneNumber | 6.2.29
PhoneNumberList | 6.2.30
PrincipalInfo | 6.2.31
ProgramStatus | 6.2.32
ProjectedGraduationYear | 6.2.33
PublishInDirectory | 6.2.34
Relationship | 6.2.35
SchoolContactList | 6.2.36
SchoolURL | 6.2.37
SchoolYear | 6.2.38
SIF_AuthenticationLevel | 5.1.4
SIF_Context | 5.1.6
SIF_Contexts | 5.1.5
SIF_EncryptionLevel | 5.1.3
SIF_Error | 5.1.9
SIF_ExtendedElements | 6.2.39
SIF_ExtendedQuery | 5.1.11
SIF_ExtendedQueryResults | 5.1.12
SIF_Header | 5.1.2
SIF_Message | 5.1.1
SIF_Metadata | 6.2.40
SIF_Protocol | 5.1.7
SIF_Query | 5.1.10
SIF_Status | 5.1.8
StateProvince | 6.2.41
StateProvinceId | 6.2.42
SubjectArea | 6.2.43
SubjectAreaList | 6.2.44
TimeElement | 6.2.45
YearLevel | 6.2.46
YearLevels | 6.2.47

59 Total

# Appendix M: Index of Common Types

AbstractContentElementType | A.1
AbstractContentPackageType | A.2
BaseNameType | A.3
DefinedProtocolsType | A.4
ExtendedContentType | A.5
GUIDType | A.6
IdRefType | A.7
MonetaryAmountType | A.8
MsgIdType | A.9
NameOfRecordType | A.10
ObjectNameType | A.11
OtherNameType | A.12
PartialDateType | A.13
RefIdType | A.14
ReportDataObjectType | A.15
ReportPackageType | A.16
SelectedContentType | A.17
SIF_EventObjectType | A.18
SIF_ExampleObjectType | A.19
SIF_LogEntryExtendedContentType | A.20
SIF_ProvideObjectNamesType | A.21
SIF_RequestObjectNamesType | A.22
SIF_ResponseObjectsType | A.23
SIF_ResponseObjectType | A.24
SIF_SubscribeObjectNamesType | A.25
URIOrBinaryType | A.26
VersionType | A.27
VersionWithWildcardsType | A.28

28 Total

# Appendix N: Index of Elements

Abbreviation | 6.3.10‑1.22
AbsenceValue | 6.3.35‑1.12
AbstractContentElementType | A.1‑1.1
AbstractContentPackageType | A.2‑1.1
AcademicYear | 6.3.49‑1.4
AcademicYearRange | 6.3.49‑1.5
AcceleratedProgram | 6.3.41‑1.34
AcceptableUsePolicy | 6.3.38‑1.23
AccessToRecords | 6.3.34‑1.12
ACStrand | 6.2.1‑1.2
ACStrandSubjectArea | 6.2.1‑1.1, 6.3.15‑1.18, 6.3.17‑1.14, 6.3.18‑1.21, 6.3.18‑1.24
ActivityInfo | 6.3.41‑1.26
Address | 6.2.2‑1.1, 6.2.3‑1.2, 6.2.6‑1.5, 6.3.5‑1.13, 6.3.15‑1.9, 6.3.20‑1.8, 6.3.27‑1.14
AddressGlobalUID | 6.2.2‑1.30
AddressList | 6.2.3‑1.1, 6.2.28‑1.5, 6.3.14‑1.16, 6.3.24‑1.18, 6.3.41‑1.9
AdjustedEducationProgram | 6.3.41‑1.30
AdministrationDateTime | 6.3.5‑1.9
AdministrationName | 6.3.5‑1.4
AdministratorAttendance | 6.3.11‑1.16
AdminStatus | 6.3.24‑1.28
Advisor | 6.3.39‑1.15
Age | 6.3.42‑1.10
AggregateCharacteristicInfo | 6.3.1‑1.1
AggregateCharacteristicInfoRefId | 6.3.2‑1.5
AggregateStatisticFact | 6.3.2‑1.1
AggregateStatisticInfo | 6.3.3‑1.1
AggregateStatisticInfoRefId | 6.3.2‑1.3
AgreementDate | 6.3.15‑1.22
AlertMessage | 6.3.38‑1.4
AlertMessages | 6.3.38‑1.3
AlternateIdentificationCode | 6.3.18‑1.31
AlternateIdentificationCodes | 6.3.18‑1.30
ApartmentNumber | 6.2.2‑1.16
ApartmentNumberPrefix | 6.2.2‑1.15
ApartmentNumberSuffix | 6.2.2‑1.17
ApartmentType | 6.2.2‑1.14
Approval | 6.3.15‑1.24
ApprovalDate | 6.3.3‑1.6
Approvals | 6.3.15‑1.23
AreasOfInterestList | 6.3.41‑1.25
ARIA | 6.3.24‑1.22
Assessment | 6.3.4‑1.1
AssessmentAdministration | 6.3.5‑1.1
AssessmentAdministrationRefId | 6.3.9‑1.4, 6.3.40‑1.4
AssessmentDescriptor | 6.3.4‑1.7
AssessmentDescriptors | 6.3.4‑1.6
AssessmentForm | 6.3.6‑1.1
AssessmentFormRefId | 6.3.5‑1.3, 6.3.7‑1.3
AssessmentId | 6.3.4‑1.4
AssessmentItem | 6.3.7‑1.1
AssessmentPackage | 6.3.8‑1.1
AssessmentPackageRefId | 6.3.4‑1.5
AssessmentRefId | 6.3.6‑1.3
AssessmentRegistration | 6.3.9‑1.1
AssessmentRegistrationRefId | 6.3.40‑1.6
AssessmentStudentSnapshot | 6.3.9‑1.11
AssessmentSubTest | 6.3.10‑1.1
AssessmentSubTestRefId | 6.3.6‑1.12, 6.3.10‑1.18
AssessmentSubTestRefIds | 6.3.6‑1.11, 6.3.10‑1.17
AssessmentType | 6.3.6‑1.4
AssessmentYearLevel | 6.3.9‑1.10
AssociatedObject | 6.3.15‑1.41
AssociatedObjects | 6.3.15‑1.40
Association | 6.3.45‑1.26
AttendanceCode | 6.2.4‑1.1, 6.3.35‑1.8, 6.3.37‑1.10
AttendanceComment | 6.3.37‑1.18
AttendanceConcerns | 6.3.41‑1.23
AttendanceNote | 6.3.35‑1.13
AttendanceStatus | 6.3.35‑1.9, 6.3.37‑1.11
AttendanceTerm | 6.3.46‑1.14
AttendanceValue | 6.3.11‑1.12, 6.3.11‑1.15, 6.3.11‑1.18
AuditInfo | 6.3.37‑1.13
AustralianCitizenshipStatus | 6.2.8‑1.14
AuthenticationSource | 6.3.13‑1.5
AuthenticationSourceGlobalUID | 6.3.13‑1.13
Author | 6.3.15‑1.5, 6.3.17‑1.11
AuthorityDepartment | 6.3.20‑1.5
AuthorityId | 6.3.20‑1.4
AuthorityLevel | 6.3.20‑1.6
AuthorityName | 6.3.20‑1.3
Authors | 6.3.17‑1.10
BaseNameType | A.3‑1.1
BeginReportDate | 6.3.21‑1.11
BeginSubmitDate | 6.3.21‑1.13
Benchmark | 6.3.18‑1.27
BinaryData | A.1‑1.8, A.2‑1.9
BirthDate | 6.2.5‑1.1, 6.2.8‑1.4, 6.3.9‑1.13, 6.3.42‑1.9
BirthDateVerification | 6.2.8‑1.5
Block | 6.3.45‑1.8
BoardingSchoolStatus | 6.3.24‑1.39
Building | 6.3.22‑1.8
By | 6.2.20‑1.10
C | 5.1.12‑1.9
CalculationDate | 6.3.27‑1.5
CalculationRule | 6.3.3‑1.4
Calendar | 6.3.39‑1.22
CalendarDate | 6.3.11‑1.1
CalendarDateNumber | 6.3.11‑1.9
CalendarDateType | 6.3.11‑1.6
CalendarSummary | 6.3.12‑1.1
Campus | 6.3.24‑1.25
CampusType | 6.3.24‑1.27
Capacity | 6.3.22‑1.11
CareerGuidanceFileHeld | 6.3.41‑1.31
CasualReliefTeacher | 6.3.28‑1.21
CatchmentStatus | 6.3.39‑1.33
Category | 6.3.25‑1.7
CellType | 6.3.48‑1.15
Characteristics | 6.3.2‑1.4
Choice | 6.3.7‑1.12
ChoiceContent | 6.3.7‑1.14
ChoiceLabel | 6.3.7‑1.13
City | 6.2.2‑1.18
Code | 6.2.4‑1.2, 6.2.8‑1.18, 6.2.8‑1.21, 6.2.15‑1.2, 6.2.19‑1.3, 6.2.32‑1.2, 6.2.35‑1.2, 6.2.43‑1.2, 6.2.45‑1.3, 6.2.45‑1.11, 6.2.46‑1.2, 6.3.11‑1.7, 6.3.14‑1.9, 6.3.28‑1.18, 6.3.30‑1.6, 6.3.36‑1.8, 6.3.36‑1.14, 6.3.36‑1.32, 6.3.39‑1.10, 6.3.39‑1.26, 6.3.39‑1.29, 6.3.39‑1.34
CommonwealthId | 6.3.14‑1.5, 6.3.24‑1.5
Community | 6.2.2‑1.28
Complex | 6.2.2‑1.8
Component | 6.3.15‑1.34
Components | 6.3.15‑1.33
Contact | 6.3.15‑1.7
ContactFlags | 6.3.34‑1.8
ContactInfo | 6.2.6‑1.1, 6.2.36‑1.4, 6.3.14‑1.14, 6.3.20‑1.7, 6.3.27‑1.13
ContactName | 6.2.31‑1.2, 6.3.41‑1.12
Contacts | 6.3.15‑1.6
ContactSequence | 6.3.34‑1.21
ContactSequenceSource | 6.3.34‑1.22
ContactTitle | 6.2.31‑1.3
ContainerOnly | 6.3.10‑1.25
Copyright | 6.3.17‑1.20
CoreAcademicCourse | 6.3.23‑1.15
Counselor | 6.3.39‑1.17
CountriesOfCitizenship | 6.2.8‑1.9
CountriesOfResidency | 6.2.8‑1.11
Country | 6.2.2‑1.20, 6.2.7‑1.1, 6.3.18‑1.8
CountryArrivalDate | 6.2.8‑1.13
CountryOfBirth | 6.2.8‑1.8
CountryOfCitizenship | 6.2.8‑1.10
CountryOfResidency | 6.2.8‑1.12
CountsTowardAttendance | 6.3.11‑1.11, 6.3.11‑1.14, 6.3.11‑1.17
CourseCode | 6.3.23‑1.7
CourseContent | 6.3.23‑1.18
CourseCredits | 6.3.23‑1.14
CourseLocalId | 6.3.43‑1.30, 6.3.49‑1.8
CourseTitle | 6.3.23‑1.11
Created | 6.2.20‑1.2
CreationDateTime | 6.3.9‑1.5, 6.3.37‑1.17
CreationUser | 6.3.37‑1.14
Creator | 6.2.20‑1.5
Creators | 6.2.20‑1.4
CreditValue | 6.3.7‑1.15
CulturalBackground | 6.2.8‑1.33
CurricularStatus | 6.3.30‑1.10
CurriculumLevel | 6.3.45‑1.9
CutScores | 6.3.7‑1.21, 6.3.10‑1.11
Date | 6.2.8‑1.26, 6.3.15‑1.26, 6.3.15‑1.31, 6.3.17‑1.21, 6.3.35‑1.5, 6.3.37‑1.5
DateTime | 6.2.20‑1.3, 6.2.20‑1.11
DayId | 6.3.26‑1.12, 6.3.47‑1.17, 6.3.48‑1.13
DaysAttended | 6.3.32‑1.10
DaysInMembership | 6.3.32‑1.14
DaysInSession | 6.3.12‑1.7
DaysPerCycle | 6.3.47‑1.7
DaysTardy | 6.3.32‑1.13
DayTitle | 6.3.47‑1.18
DayValue | 6.3.35‑1.7
DefinedProtocolsType | A.4‑1.1
Definition | 6.3.1‑1.4
Demographics | 6.2.8‑1.1, 6.2.28‑1.4
Department | 6.3.23‑1.17
DepartureDate | 6.3.41‑1.16
Description | 6.2.20‑1.12, 6.3.1‑1.3, 6.3.10‑1.23, 6.3.12‑1.6, 6.3.15‑1.15, 6.3.15‑1.30, 6.3.15‑1.37, 6.3.17‑1.5, 6.3.18‑1.13, 6.3.21‑1.9, 6.3.22‑1.7, 6.3.23‑1.12, 6.3.27‑1.17, 6.3.28‑1.6, 6.3.30‑1.4, 6.3.40‑1.12, 6.3.41‑1.40, 6.3.46‑1.7
DestinationSchool | 6.3.39‑1.40
DiagnosticStatement | 6.3.40‑1.11
Dialect | 6.2.19‑1.6
Disability | 6.3.38‑1.28
DisciplinaryAbsences | 6.3.41‑1.44
DisciplinaryContact | 6.3.34‑1.15
DiscontinueDate | 6.3.3‑1.13
DistrictCourseCode | 6.3.23‑1.9
DocumentDate | 6.3.17‑1.16
DocumentStatus | 6.3.17‑1.15
DueDate | 6.3.21‑1.15
DueDateTime | 6.3.5‑1.12
DwellingArrangement | 6.2.8‑1.17
EconomicDisadvantage | 6.3.38‑1.25
EducationAgencyType | 6.3.14‑1.8
EducationalLevel | 6.2.9‑1.1
EducationFilter | 6.2.10‑1.1, 6.2.40‑1.5
EffectiveDate | 6.3.3‑1.12
ElectronicId | 6.2.11‑1.1, 6.2.12‑1.2
ElectronicIdList | 6.2.12‑1.1, 6.3.29‑1.5, 6.3.38‑1.11
ElementName | 6.3.1‑1.5
Email | 6.2.13‑1.1, 6.2.14‑1.2, 6.3.15‑1.11
EmailList | 6.2.6‑1.6, 6.2.14‑1.1, 6.2.28‑1.7, 6.2.31‑1.5, 6.3.41‑1.14
EmergencyContact | 6.3.34‑1.13
EmploymentType | 6.3.33‑1.8
End | 6.3.49‑1.7
EndDate | 6.3.12‑1.9, 6.3.31‑1.8, 6.3.46‑1.6, 6.3.47‑1.14
EndDateTime | 6.2.45‑1.7, 6.2.45‑1.15
EndDay | 6.3.32‑1.8
EndOfLifeDate | 6.3.17‑1.19
EndReportDate | 6.3.21‑1.12
EndSubmitDate | 6.3.21‑1.14
EnglishProficiency | 6.2.8‑1.15, 6.2.15‑1.1
Enrollment | 6.3.43‑1.22
EnrollmentDate | 6.3.41‑1.15
EnrollmentList | 6.3.43‑1.21
Entity_Close | 6.3.24‑1.41
Entity_Open | 6.3.24‑1.40
EntryDate | 6.3.39‑1.8
EntryPerson | 6.3.36‑1.34
EntryType | 6.3.39‑1.9
ESL | 6.3.38‑1.26
Evaluation | 6.3.15‑1.28
EvaluationDate | 6.3.36‑1.19
EvaluationExtensionDate | 6.3.36‑1.20
EvaluationParentalConsentDate | 6.3.36‑1.18
Evaluations | 6.3.15‑1.27
Excluded | 6.3.2‑1.6
ExclusionRule | 6.3.3‑1.9
ExclusionRules | 6.3.3‑1.8
ExcusedAbsences | 6.3.32‑1.11
ExitDate | 6.3.39‑1.24
ExitStatus | 6.3.39‑1.25
ExitType | 6.3.39‑1.28
ExpirationDate | 6.3.3‑1.7
ExtendedContentType | A.5‑1.1
ExtendedDay | 6.3.36‑1.30
ExtendedSchoolYear | 6.3.36‑1.29
Extension | 6.2.29‑1.4
ExtensionComments | 6.3.36‑1.21
Faculty | 6.3.49‑1.10
FamilyMail | 6.3.34‑1.18
FamilyName | A.3‑1.3
FamilyNameFirst | A.3‑1.6
FederalElectorate | 6.3.24‑1.24
FeesBilling | 6.3.34‑1.17
FinishDateTime | 6.3.5‑1.11
FinishTime | 6.3.26‑1.16
FirstAUSchoolEnrollment | 6.3.38‑1.31
FirstInstructionDate | 6.3.12‑1.10
FormName | 6.3.6‑1.5
FormNumber | 6.3.6‑1.7
FormNumbers | 6.3.6‑1.6
FTE | 6.3.32‑1.9, 6.3.39‑1.31
FTPTStatus | 6.3.39‑1.32
FullName | A.3‑1.11
FurtherInformation | 6.3.41‑1.11
GiftedEligibilityCriteria | 6.3.36‑1.17
GiftedTalented | 6.3.38‑1.24
GivenName | A.3‑1.4
GraduationDate | 6.2.16‑1.1, 6.3.12‑1.12, 6.3.38‑1.18
GraduationRequirement | 6.3.23‑1.16
GridLocation | 6.2.2‑1.22, 6.2.17‑1.1
GUIDType | A.6‑1.1
HasCustody | 6.3.34‑1.14
HealthNeeds | 6.3.41‑1.24
Holder | 6.3.17‑1.22
HomeEnrollment | 6.3.42‑1.19
Homegroup | 6.3.28‑1.22, 6.3.39‑1.19
Homeroom | 6.3.39‑1.13, 6.3.42‑1.26
HomeroomLocalId | 6.3.38‑1.21
HomeroomNumber | 6.2.18‑1.1, 6.3.22‑1.9, 6.3.42‑1.28
House | 6.3.28‑1.23, 6.3.39‑1.20
Household | 6.3.34‑1.7
HouseholdList | 6.3.34‑1.6
ID | 6.2.20‑1.7
Identity | 6.3.13‑1.1
IdentityAssertion | 6.3.13‑1.7
IdentityAssertions | 6.3.13‑1.6
IdRefType | A.7‑1.1
ImmunisationCertificateStatus | 6.2.8‑1.32
IndependentSchool | 6.3.24‑1.30
IndicatorNumber | 6.3.18‑1.29
IndigenousStatus | 6.2.8‑1.2
IndividualBehaviourPlan | 6.3.41‑1.45
IndividualLearningPlan | 6.3.39‑1.21
InstructionalLevel | 6.3.23‑1.13
InstructionalMinutes | 6.3.12‑1.13
IntegrationAide | 6.3.38‑1.29
InterventionOrder | 6.3.34‑1.19
IsCurrent | 6.2.45‑1.16
ItemLabel | 6.3.7‑1.5
ItemName | 6.3.7‑1.6
ItemScoreMaximum | 6.3.7‑1.16
ItemScoreMinimum | 6.3.7‑1.17
JobEndDate | 6.3.28‑1.9
JobFTE | 6.3.28‑1.10
JobFunction | 6.3.28‑1.11
JobStartDate | 6.3.28‑1.8
JurisdictionLowerHouse | 6.3.14‑1.18, 6.3.24‑1.36
Language | 6.2.19‑1.2
LanguageList | 6.2.8‑1.16, 6.2.19‑1.1
LanguageType | 6.2.19‑1.5
LastInstructionDate | 6.3.12‑1.11
LatestStudentReportAvailable | 6.3.41‑1.42
Latitude | 6.2.17‑1.2
LEAContact | 6.3.14‑1.12
LEAContactList | 6.3.14‑1.11
LEAInfo | 6.3.14‑1.1
LEAInfoRefId | 6.3.5‑1.15, 6.3.9‑1.14, 6.3.24‑1.7
LEAName | 6.3.14‑1.6
LearningResource | 6.3.15‑1.1
LearningResourcePackage | 6.3.16‑1.1
LearningResourcePackageRefId | 6.3.15‑1.45
LearningResourceRefId | 6.3.18‑1.5
LearningStandardDocument | 6.3.17‑1.1
LearningStandardDocumentRefId | 6.3.17‑1.27, 6.3.18‑1.33
LearningStandardItem | 6.3.18‑1.1
LearningStandardItemRefId | 6.2.10‑1.3, 6.3.7‑1.8, 6.3.10‑1.21, 6.3.15‑1.44, 6.3.17‑1.25, 6.3.18‑1.15, 6.3.18‑1.35
LearningStandardItemRefIds | 6.3.10‑1.20
LearningStandardItems | 6.2.10‑1.2, 6.3.7‑1.7
LearningStandards | 6.3.15‑1.43
LEAURL | 6.3.14‑1.7
Level | 6.3.6‑1.8
Level4 | 6.3.18‑1.37
Level5 | 6.3.18‑1.38
LifeCycle | 6.2.20‑1.1, 6.2.40‑1.4
Line1 | 6.2.2‑1.5
Line2 | 6.2.2‑1.6
Line3 | 6.2.2‑1.7
ListedStatus | 6.2.29‑1.5
Literacy | 6.3.41‑1.36
LivesWith | 6.3.34‑1.11
LocalAdoptionDate | 6.3.17‑1.17
LocalArchiveDate | 6.3.17‑1.18
LocalGovernmentArea | 6.3.24‑1.35
LocalId | 6.2.2‑1.29, 6.2.21‑1.1, 6.3.12‑1.5, 6.3.14‑1.3, 6.3.24‑1.3, 6.3.26‑1.6, 6.3.29‑1.3, 6.3.33‑1.3, 6.3.38‑1.9, 6.3.42‑1.6, 6.3.42‑1.23, 6.3.43‑1.6, 6.3.43‑1.26, 6.3.45‑1.4, 6.3.47‑1.5
Location | 6.2.22‑1.1, 6.3.3‑1.14, 6.3.15‑1.12, 6.3.30‑1.11
LocationName | 6.2.22‑1.3
LocationRefId | 6.2.22‑1.4
Longitude | 6.2.17‑1.3
LongName | 6.3.45‑1.6
LowerCut | 6.3.7‑1.23, 6.3.10‑1.13
MainlySpeaksEnglishAtHome | 6.3.34‑1.20
ManagingSchool | 6.3.36‑1.10
MapReference | 6.2.2‑1.23
MaritalStatus | 6.2.8‑1.34
MarkingTerm | 6.3.46‑1.12
MaxClassSize | 6.3.45‑1.28
Maximum | 6.3.10‑1.7
Measure | 6.3.3‑1.15
MediaType | 6.3.15‑1.20
MediaTypes | 6.3.15‑1.19
MedicalAlertMessage | 6.3.38‑1.7
MedicalAlertMessages | 6.3.38‑1.6
MembershipType | 6.3.39‑1.5
MiddleName | A.3‑1.5
MinClassSize | 6.3.45‑1.27
Minimum | 6.3.10‑1.6
MinutesPerDay | 6.3.12‑1.14
ModificationHistory | 6.2.20‑1.8
Modified | 6.2.20‑1.9
MonetaryAmountType | A.8‑1.1
MostRecent | 6.3.38‑1.19
MsgIdType | A.9‑1.1
Name | 6.2.6‑1.2, 6.2.20‑1.6, 6.2.23‑1.1, 6.2.27‑1.2, 6.2.28‑1.2, 6.2.45‑1.4, 6.2.45‑1.12, 6.3.4‑1.3, 6.3.10‑1.3, 6.3.15‑1.4, 6.3.15‑1.8, 6.3.15‑1.32, 6.3.15‑1.35, 6.3.42‑1.5, 6.3.45‑1.20, 6.3.45‑1.25
NameOfRecordType | A.10‑1.1
NegotiatedCurriculumPlan | 6.3.41‑1.29
NonGovSystemicStatus | 6.3.24‑1.31
NonSchoolEducation | 6.3.33‑1.10
NOREPDate | 6.3.36‑1.26
Number | 6.2.29‑1.3, 6.3.18‑1.12
NumberOfItems | 6.3.10‑1.24
NumberOfResponses | 6.3.40‑1.13
Numeracy | 6.3.41‑1.37
ObjectNameType | A.11‑1.1
OKToPublish | 6.3.19‑1.8
OnTimeGraduationYear | 6.2.24‑1.1, 6.3.38‑1.17, 6.3.42‑1.12
OperationalStatus | 6.2.25‑1.1, 6.3.14‑1.17, 6.3.24‑1.23
Organization | 6.3.15‑1.25, 6.3.17‑1.9, 6.3.18‑1.32
OrganizationContactPoint | 6.3.17‑1.12
Organizations | 6.3.17‑1.8
OtherCode | 6.2.26‑1.2
OtherCodeList | 6.2.4‑1.3, 6.2.8‑1.19, 6.2.8‑1.22, 6.2.15‑1.3, 6.2.19‑1.4, 6.2.26‑1.1, 6.2.32‑1.3, 6.2.35‑1.3, 6.2.43‑1.3, 6.3.11‑1.8, 6.3.14‑1.10, 6.3.25‑1.9, 6.3.28‑1.19, 6.3.30‑1.7, 6.3.36‑1.9, 6.3.36‑1.15, 6.3.36‑1.33, 6.3.39‑1.11, 6.3.39‑1.27, 6.3.39‑1.30, 6.3.39‑1.35, 6.3.49‑1.20
OtherId | 6.3.29‑1.7, 6.3.33‑1.5, 6.3.38‑1.13
OtherIdList | 6.3.29‑1.6, 6.3.33‑1.4, 6.3.38‑1.12
OtherLEA | 6.3.24‑1.8
OtherLearningArea | 6.3.41‑1.39
OtherLearningAreasList | 6.3.41‑1.38
OtherLearningSupport | 6.3.41‑1.33
OtherNames | 6.2.27‑1.1, 6.2.28‑1.3
OtherNameType | A.12‑1.1
OtherSchoolLocalId | 6.3.39‑1.46, 6.3.42‑1.18
ParentLegalGuardian | 6.3.34‑1.9
ParentObjectRefId | 6.3.19‑1.3, 6.3.43‑1.4
ParentRelationshipStatus | 6.3.34‑1.5
PartialDateType | A.13‑1.1
ParticipationComment | 6.3.31‑1.6
ParticipationContact | 6.3.36‑1.36
Password | 6.3.13‑1.10
PasswordList | 6.3.13‑1.9
PastoralCare | 6.3.41‑1.43
PerformanceLevel | 6.3.7‑1.19, 6.3.10‑1.9
PerformanceLevels | 6.3.7‑1.18, 6.3.10‑1.8
Period | 6.3.6‑1.9
PeriodId | 6.3.26‑1.13, 6.3.47‑1.21, 6.3.48‑1.14
PeriodsPerDay | 6.3.47‑1.8
PeriodTitle | 6.3.47‑1.22
PermanentResident | 6.2.8‑1.28
PersonInfo | 6.2.28‑1.1, 6.3.29‑1.9, 6.3.33‑1.7, 6.3.38‑1.15, 6.3.41‑1.5, 6.3.43‑1.8
PersonPicture | 6.3.19‑1.1
PhoneNumber | 6.2.29‑1.1, 6.2.30‑1.2, 6.3.15‑1.10, 6.3.20‑1.9, 6.3.22‑1.12, 6.3.27‑1.15
PhoneNumberList | 6.2.6‑1.7, 6.2.28‑1.6, 6.2.30‑1.1, 6.2.31‑1.4, 6.3.14‑1.15, 6.3.24‑1.19, 6.3.41‑1.13
PickupRights | 6.3.34‑1.10
PictureSource | 6.3.19‑1.6
PlacementParentalConsentDate | 6.3.36‑1.27
PlaceOfBirth | 6.2.8‑1.6
PositionTitle | 6.2.6‑1.3
PostalCode | 6.2.2‑1.21
PredecessorItems | 6.3.18‑1.14
PreferenceNumber | 6.3.28‑1.14, 6.3.39‑1.43, 6.3.42‑1.15
PreferredFamilyName | A.3‑1.7
PreferredFamilyNameFirst | A.3‑1.8
PreferredGivenName | A.3‑1.9
PrePrimaryEducation | 6.3.38‑1.30
PreviousSchool | 6.3.39‑1.39, 6.3.41‑1.20
PreviousSchoolsList | 6.3.41‑1.19
PrimaryAssignment | 6.3.28‑1.7
PrimaryCareProvider | 6.3.34‑1.16
PrincipalInfo | 6.2.31‑1.1, 6.3.24‑1.16, 6.3.41‑1.10
Program | 6.3.25‑1.6
ProgramAvailability | 6.3.36‑1.31
ProgramEligibilityDate | 6.3.36‑1.23
ProgramFundingSource | 6.3.36‑1.7
ProgramFundingSources | 6.3.36‑1.6
ProgramPlacementDate | 6.3.36‑1.28
ProgramPlanDate | 6.3.36‑1.24
ProgramPlanEffectiveDate | 6.3.36‑1.25
ProgramStatus | 6.2.32‑1.1, 6.3.36‑1.16
ProgramType | 6.3.36‑1.5
ProjectedGraduationYear | 6.2.33‑1.1, 6.3.38‑1.16, 6.3.42‑1.11
PromotionInfo | 6.3.39‑1.37
PromotionStatus | 6.3.39‑1.38
ProposedMaxClassSize | 6.3.49‑1.14
ProposedMinClassSize | 6.3.49‑1.15
PublishInDirectory | 6.2.34‑1.1, 6.2.36‑1.3, 6.3.14‑1.13
R | 5.1.12‑1.8
RadioContact | 6.2.2‑1.27
ReasonForLeaving | 6.3.41‑1.18
ReasonLeft | 6.3.41‑1.22
ReceivingAuthority | 6.3.21‑1.6
Recognition | 6.3.31‑1.11
RecognitionList | 6.3.31‑1.10
RecordClosureReason | 6.3.39‑1.36
ReevaluationDate | 6.3.36‑1.22
Reference | 6.3.15‑1.36, A.1‑1.12, A.2‑1.13
ReferralDate | 6.3.36‑1.12
ReferralSource | 6.3.36‑1.13
RefIdType | A.14‑1.1
RelatedLearningStandardItems | 6.3.18‑1.34
RelatedLearningStandards | 6.3.17‑1.26
Relationship | 6.2.35‑1.1, 6.3.34‑1.4
RelativeDuration | 6.3.46‑1.8
Religion | 6.2.8‑1.20
ReligiousAffiliation | 6.3.24‑1.33
ReligiousEvent | 6.2.8‑1.24
ReligiousEventList | 6.2.8‑1.23
ReligiousRegion | 6.2.8‑1.27
ReportAuthorityInfo | 6.3.20‑1.1
ReportData | 6.3.27‑1.18
ReportDataObjectType | A.15‑1.1
ReportDefinitionSource | 6.3.21‑1.16
ReportFormat | 6.3.21‑1.20
ReportFormatList | 6.3.21‑1.19
ReportInfo | 6.3.27‑1.3
ReportingPeriod | 6.3.21‑1.10
ReportManifest | 6.3.21‑1.1
ReportName | 6.3.21‑1.8
ReportPackageType | A.16‑1.1
ReportSubmitterInfo | 6.3.27‑1.8
RepositoryDate | 6.3.17‑1.24
Resources | 6.3.18‑1.4
ResponseChoices | 6.3.7‑1.11
ResponseType | 6.3.7‑1.4
Result | 6.3.41‑1.41
RichDescription | 6.3.17‑1.6
Role | 6.2.6‑1.4, 6.3.31‑1.9, 6.3.44‑1.9
RoleList | 6.3.44‑1.8
RoleScope | 6.3.44‑1.12
RoleScopeList | 6.3.44‑1.11
RoleScopeName | 6.3.44‑1.13
RoleScopeRefId | 6.3.44‑1.14
RollMarked | 6.3.26‑1.17
RoomInfo | 6.3.22‑1.1
RoomInfoRefId | 6.3.48‑1.6
RoomNumber | 6.3.22‑1.4, 6.3.26‑1.11, 6.3.48‑1.11
SchedulingTerm | 6.3.46‑1.13
SchoolCampusId | 6.3.24‑1.26
SchoolCoEdStatus | 6.3.24‑1.38
SchoolContact | 6.2.36‑1.2
SchoolContactList | 6.2.36‑1.1, 6.3.24‑1.17
SchoolCounsellorFileHeld | 6.3.41‑1.32
SchoolCourseInfo | 6.3.23‑1.1
SchoolCourseInfoRefId | 6.3.43‑1.24, 6.3.45‑1.12, 6.3.49‑1.9
SchoolCourseLocalId | 6.3.45‑1.13
SchoolDistrict | 6.3.24‑1.10
SchoolDistrictLocalId | 6.3.24‑1.11
SchoolEducationalLevel | 6.3.33‑1.9
SchoolEnrollment | 6.3.43‑1.10
SchoolEnrollmentList | 6.3.43‑1.9
SchoolFocus | 6.3.24‑1.14
SchoolFocusList | 6.3.24‑1.13
SchoolGeographicLocation | 6.3.24‑1.34
SchoolGroup | 6.3.24‑1.43
SchoolGroupList | 6.3.24‑1.42
SchoolInfo | 6.3.24‑1.1
SchoolInfoRefId | 6.3.5‑1.16, 6.3.9‑1.15, 6.3.11‑1.4, 6.3.12‑1.3, 6.3.22‑1.3, 6.3.23‑1.3, 6.3.25‑1.3, 6.3.26‑1.3, 6.3.28‑1.3, 6.3.35‑1.4, 6.3.37‑1.4, 6.3.39‑1.4, 6.3.41‑1.6, 6.3.42‑1.22, 6.3.43‑1.12, 6.3.45‑1.10, 6.3.46‑1.3, 6.3.47‑1.3, 6.3.48‑1.16, 6.3.49‑1.16
SchoolLocalId | 6.3.23‑1.4, 6.3.26‑1.9, 6.3.38‑1.20, 6.3.41‑1.7, 6.3.43‑1.13, 6.3.45‑1.11, 6.3.47‑1.10, 6.3.48‑1.17, 6.3.49‑1.17
SchoolName | 6.3.24‑1.6, 6.3.41‑1.8, 6.3.41‑1.21, 6.3.42‑1.21, 6.3.43‑1.11, 6.3.47‑1.11
SchoolNo | 6.3.42‑1.24
SchoolProgramList | 6.3.25‑1.5
SchoolPrograms | 6.3.25‑1.1
SchoolSector | 6.3.24‑1.29
SchoolStateProvinceId | 6.3.43‑1.14
SchoolType | 6.3.24‑1.12
SchoolURL | 6.2.37‑1.1, 6.3.24‑1.15
SchoolYear | 6.2.38‑1.1, 6.3.11‑1.5, 6.3.12‑1.4, 6.3.19‑1.5, 6.3.23‑1.5, 6.3.25‑1.4, 6.3.26‑1.5, 6.3.28‑1.4, 6.3.31‑1.5, 6.3.35‑1.6, 6.3.37‑1.12, 6.3.39‑1.7, 6.3.42‑1.4, 6.3.43‑1.3, 6.3.43‑1.28, 6.3.45‑1.3, 6.3.46‑1.4, 6.3.47‑1.4, 6.3.49‑1.19
Score | 6.3.40‑1.8
ScoreMetric | 6.3.40‑1.3
ScoreRange | 6.3.10‑1.4
Scores | 6.3.40‑1.7
ScoreValue | 6.3.40‑1.10
SelectedContentType | A.17‑1.1
Semester | 6.3.49‑1.18
SessionDate | 6.3.26‑1.14
SessionInfo | 6.3.26‑1.1
SessionInfoRefId | 6.3.37‑1.6
SessionType | 6.3.24‑1.20
Set | 6.3.45‑1.7
SettingBodyName | 6.3.18‑1.10
Sex | 6.2.8‑1.3, 6.3.9‑1.12, 6.3.42‑1.8
ShortName | 6.3.43‑1.27, 6.3.45‑1.5
SIF_Ack | 5.2.1‑1.1
SIF_AddPublishers | 5.3.3‑1.24
SIF_AdministrationURL | 5.3.3‑1.87
SIF_AgentACL | 5.3.1‑1.1
SIF_Application | 5.2.5‑1.10, 5.3.3‑1.68
SIF_ApplicationCode | 5.3.2‑1.10
SIF_AuthenticationLevel | 5.1.2‑1.6, 5.1.4‑1.1, 5.3.3‑1.77
SIF_CancelRequests | 5.2.16‑1.1
SIF_Category | 5.1.9‑1.2, 5.3.2‑1.8
SIF_ChangePublishers | 5.3.3‑1.31
SIF_Code | 5.1.8‑1.2, 5.1.9‑1.3, 5.3.2‑1.9
SIF_ColumnHeaders | 5.1.12‑1.2
SIF_Condition | 5.1.10‑1.9, 5.1.11‑1.23
SIF_ConditionGroup | 5.1.10‑1.5, 5.1.11‑1.19
SIF_Conditions | 5.1.10‑1.7, 5.1.11‑1.21
SIF_Context | 5.1.5‑1.2, 5.1.6‑1.1
SIF_Contexts | 5.1.2‑1.10, 5.1.5‑1.1, 5.2.3‑1.6, 5.2.4‑1.7, 5.2.4‑1.11, 5.2.4‑1.15, 5.2.4‑1.19, 5.2.4‑1.23, 5.2.4‑1.28, 5.2.4‑1.33, 5.2.8‑1.5, 5.2.17‑1.5, 5.2.19‑1.5, 5.3.1‑1.5, 5.3.1‑1.9, 5.3.1‑1.13, 5.3.1‑1.17, 5.3.1‑1.21, 5.3.1‑1.25, 5.3.1‑1.29, 5.3.3‑1.16, 5.3.3‑1.23, 5.3.3‑1.30, 5.3.3‑1.37, 5.3.3‑1.44, 5.3.3‑1.52, 5.3.3‑1.60, 5.3.3‑1.88
SIF_Data | 5.1.8‑1.4
SIF_DeletePublishers | 5.3.3‑1.38
SIF_Desc | 5.1.8‑1.3, 5.1.9‑1.4, 5.3.2‑1.11
SIF_DestinationId | 5.1.2‑1.9
SIF_DestinationProvider | 5.1.11‑1.2
SIF_Element | 5.1.10‑1.4, 5.1.10‑1.10, 5.1.11‑1.6, 5.1.11‑1.24, 5.1.11‑1.29, 5.1.12‑1.3
SIF_EncryptionLevel | 5.1.2‑1.7, 5.1.3‑1.1, 5.3.3‑1.78
SIF_Error | 5.1.9‑1.1, 5.2.1‑1.6, 5.2.7‑1.6
SIF_Event | 5.2.2‑1.1
SIF_EventObject | 5.2.2‑1.4
SIF_EventObjectType | A.18‑1.1
SIF_Example | 5.1.10‑1.13
SIF_ExampleObjectType | A.19‑1.1
SIF_ExtendedDesc | 5.1.9‑1.5, 5.3.2‑1.12
SIF_ExtendedElement | 6.2.39‑1.2
SIF_ExtendedElements | 5.3.1‑1.31, 5.3.2‑1.17, 5.3.3‑1.90, 6.2.39‑1.1, 6.3.1‑1.7, 6.3.2‑1.9, 6.3.3‑1.17, 6.3.4‑1.9, 6.3.5‑1.18, 6.3.6‑1.14, 6.3.7‑1.26, 6.3.8‑1.6, 6.3.9‑1.18, 6.3.10‑1.27, 6.3.11‑1.20, 6.3.12‑1.17, 6.3.13‑1.15, 6.3.14‑1.21, 6.3.15‑1.47, 6.3.17‑1.29, 6.3.18‑1.40, 6.3.19‑1.10, 6.3.20‑1.11, 6.3.21‑1.27, 6.3.22‑1.14, 6.3.23‑1.20, 6.3.24‑1.45, 6.3.25‑1.11, 6.3.26‑1.19, 6.3.27‑1.21, 6.3.28‑1.25, 6.3.29‑1.12, 6.3.30‑1.13, 6.3.31‑1.13, 6.3.32‑1.16, 6.3.33‑1.12, 6.3.34‑1.24, 6.3.35‑1.15, 6.3.36‑1.38, 6.3.37‑1.20, 6.3.38‑1.33, 6.3.39‑1.48, 6.3.40‑1.15, 6.3.41‑1.47, 6.3.42‑1.30, 6.3.43‑1.32, 6.3.44‑1.17, 6.3.45‑1.30, 6.3.46‑1.16, 6.3.47‑1.24, 6.3.48‑1.19, 6.3.49‑1.22, A.2‑1.18
SIF_ExtendedQuery | 5.1.11‑1.1, 5.2.6‑1.6, 6.3.21‑1.25
SIF_ExtendedQueryResults | 5.1.12‑1.1, 5.2.7‑1.8, 6.3.27‑1.19
SIF_ExtendedQuerySupport | 5.2.3‑1.5, 5.2.4‑1.6, 5.2.4‑1.27, 5.2.4‑1.32, 5.3.3‑1.15, 5.3.3‑1.51, 5.3.3‑1.59
SIF_From | 5.1.11‑1.9
SIF_GetAgentACL | 5.2.15‑1.1
SIF_GetMessage | 5.2.13‑1.1
SIF_GetZoneStatus | 5.2.14‑1.1
SIF_Header | 5.1.2‑1.1, 5.2.1‑1.2, 5.2.2‑1.2, 5.2.3‑1.2, 5.2.4‑1.2, 5.2.5‑1.2, 5.2.6‑1.2, 5.2.7‑1.2, 5.2.8‑1.2, 5.2.9‑1.2, 5.2.17‑1.2, 5.2.18‑1.2, 5.2.19‑1.2, 5.3.2‑1.5, 5.3.2‑1.7
SIF_Icon | 5.2.5‑1.14, 5.3.3‑1.4, 5.3.3‑1.65
SIF_Join | 5.1.11‑1.11
SIF_JoinOn | 5.1.11‑1.13
SIF_LeftElement | 5.1.11‑1.14
SIF_LogEntry | 5.3.2‑1.1
SIF_LogEntryExtendedContentType | A.20‑1.1
SIF_LogEntryHeader | 5.3.2‑1.4
SIF_LogObject | 5.3.2‑1.14
SIF_LogObjects | 5.3.2‑1.13
SIF_MaxBufferSize | 5.2.5‑1.5, 5.2.6‑1.4, 5.3.3‑1.79, 6.3.21‑1.5
SIF_Message | 5.1.1‑1.1
SIF_Metadata | 5.3.1‑1.30, 5.3.2‑1.16, 5.3.3‑1.89, 6.2.40‑1.1, 6.3.1‑1.6, 6.3.2‑1.8, 6.3.3‑1.16, 6.3.4‑1.8, 6.3.5‑1.17, 6.3.6‑1.13, 6.3.7‑1.25, 6.3.8‑1.5, 6.3.9‑1.17, 6.3.10‑1.26, 6.3.11‑1.19, 6.3.12‑1.16, 6.3.13‑1.14, 6.3.14‑1.20, 6.3.15‑1.46, 6.3.17‑1.28, 6.3.18‑1.39, 6.3.19‑1.9, 6.3.20‑1.10, 6.3.21‑1.26, 6.3.22‑1.13, 6.3.23‑1.19, 6.3.24‑1.44, 6.3.25‑1.10, 6.3.26‑1.18, 6.3.27‑1.20, 6.3.28‑1.24, 6.3.29‑1.11, 6.3.30‑1.12, 6.3.31‑1.12, 6.3.32‑1.15, 6.3.33‑1.11, 6.3.34‑1.23, 6.3.35‑1.14, 6.3.36‑1.37, 6.3.37‑1.19, 6.3.38‑1.32, 6.3.39‑1.47, 6.3.40‑1.14, 6.3.41‑1.46, 6.3.42‑1.29, 6.3.43‑1.31, 6.3.44‑1.16, 6.3.45‑1.29, 6.3.46‑1.15, 6.3.47‑1.23, 6.3.48‑1.18, 6.3.49‑1.21, A.2‑1.17
SIF_Mode | 5.2.5‑1.6, 5.3.3‑1.73
SIF_MorePackets | 5.2.7‑1.5
SIF_MsgId | 5.1.2‑1.2
SIF_Name | 5.1.7‑1.6, 5.2.5‑1.3, 5.3.3‑1.3, 5.3.3‑1.6, 5.3.3‑1.64
SIF_NodeVendor | 5.2.5‑1.8, 5.3.3‑1.66
SIF_NodeVersion | 5.2.5‑1.9, 5.3.3‑1.67
SIF_NotificationType | 5.2.16‑1.2
SIF_Object | 5.2.3‑1.3, 5.2.4‑1.4, 5.2.4‑1.9, 5.2.4‑1.13, 5.2.4‑1.17, 5.2.4‑1.21, 5.2.4‑1.25, 5.2.4‑1.30, 5.2.8‑1.3, 5.2.17‑1.3, 5.2.19‑1.3, 5.3.1‑1.3, 5.3.1‑1.7, 5.3.1‑1.11, 5.3.1‑1.15, 5.3.1‑1.19, 5.3.1‑1.23, 5.3.1‑1.27, 5.3.3‑1.13, 5.3.3‑1.21, 5.3.3‑1.28, 5.3.3‑1.35, 5.3.3‑1.42, 5.3.3‑1.49, 5.3.3‑1.57
SIF_ObjectData | 5.2.2‑1.3, 5.2.7‑1.7
SIF_ObjectList | 5.3.3‑1.12, 5.3.3‑1.20, 5.3.3‑1.27, 5.3.3‑1.34, 5.3.3‑1.41, 5.3.3‑1.48, 5.3.3‑1.56
SIF_Operator | 5.1.10‑1.11, 5.1.11‑1.26
SIF_OrderBy | 5.1.11‑1.28
SIF_OriginalHeader | 5.3.2‑1.6
SIF_OriginalMsgId | 5.2.1‑1.4
SIF_OriginalSourceId | 5.2.1‑1.3
SIF_PacketNumber | 5.2.7‑1.4
SIF_Ping | 5.2.10‑1.1
SIF_Product | 5.2.5‑1.12, 5.3.3‑1.7, 5.3.3‑1.70
SIF_Property | 5.1.7‑1.5
SIF_Protocol | 5.1.7‑1.1, 5.2.5‑1.7, 5.3.3‑1.74, 5.3.3‑1.84
SIF_ProtocolName | 5.3.3‑1.82
SIF_Provide | 5.2.3‑1.1
SIF_ProvideAccess | 5.3.1‑1.2
SIF_ProvideObjectNamesType | A.21‑1.1
SIF_ProvideObjects | 5.2.4‑1.3
SIF_Provider | 5.3.3‑1.10
SIF_Providers | 5.3.3‑1.9
SIF_Provision | 5.2.4‑1.1
SIF_PublishAddAccess | 5.3.1‑1.10
SIF_PublishAddObjects | 5.2.4‑1.12
SIF_PublishChangeAccess | 5.3.1‑1.14
SIF_PublishChangeObjects | 5.2.4‑1.16
SIF_PublishDeleteAccess | 5.3.1‑1.18
SIF_PublishDeleteObjects | 5.2.4‑1.20
SIF_Publisher | 5.3.3‑1.25, 5.3.3‑1.32, 5.3.3‑1.39
SIF_Query | 5.1.10‑1.1, 5.2.6‑1.5, 6.3.21‑1.24
SIF_QueryGroup | 6.3.21‑1.23
SIF_QueryObject | 5.1.10‑1.2
SIF_RefId | 6.3.13‑1.3, 6.3.27‑1.9, 6.3.44‑1.3
SIF_Register | 5.2.5‑1.1
SIF_ReportObject | 6.3.27‑1.1
SIF_Request | 5.2.6‑1.1
SIF_RequestAccess | 5.3.1‑1.22
SIF_Requester | 5.3.3‑1.54
SIF_Requesters | 5.3.3‑1.53
SIF_RequestMsgId | 5.2.7‑1.3, 5.2.16‑1.4
SIF_RequestMsgIds | 5.2.16‑1.3
SIF_RequestObjectNamesType | A.22‑1.1
SIF_RequestObjects | 5.2.4‑1.24
SIF_RespondAccess | 5.3.1‑1.26
SIF_Responder | 5.3.3‑1.46
SIF_Responders | 5.3.3‑1.45
SIF_RespondObjects | 5.2.4‑1.29
SIF_Response | 5.2.7‑1.1
SIF_ResponseObjectsType | A.23‑1.1
SIF_ResponseObjectType | A.24‑1.1
SIF_RightElement | 5.1.11‑1.16
SIF_Rows | 5.1.12‑1.7
SIF_SecureChannel | 5.1.2‑1.5
SIF_Security | 5.1.2‑1.4
SIF_Select | 5.1.11‑1.3
SIF_SIFNode | 5.3.3‑1.62
SIF_SIFNodes | 5.3.3‑1.61
SIF_Sleep | 5.2.11‑1.1
SIF_Sleeping | 5.3.3‑1.80
SIF_SourceId | 5.1.2‑1.8, 5.3.3‑1.72
SIF_Status | 5.1.8‑1.1, 5.2.1‑1.5
SIF_Subscribe | 5.2.8‑1.1
SIF_SubscribeAccess | 5.3.1‑1.6
SIF_SubscribeObjectNamesType | A.25‑1.1
SIF_SubscribeObjects | 5.2.4‑1.8
SIF_Subscriber | 5.3.3‑1.18
SIF_Subscribers | 5.3.3‑1.17
SIF_SupportedAuthentication | 5.3.3‑1.81
SIF_SupportedProtocols | 5.3.3‑1.83
SIF_SupportedVersions | 5.3.3‑1.85
SIF_SystemControl | 5.2.9‑1.1
SIF_SystemControlData | 5.2.9‑1.3
SIF_Timestamp | 5.1.2‑1.3
SIF_Unprovide | 5.2.17‑1.1
SIF_Unregister | 5.2.18‑1.1
SIF_Unsubscribe | 5.2.19‑1.1
SIF_URL | 5.1.7‑1.4
SIF_Value | 5.1.7‑1.7, 5.1.10‑1.12, 5.1.11‑1.27
SIF_Vendor | 5.2.5‑1.11, 5.3.3‑1.5, 5.3.3‑1.69
SIF_Version | 5.2.5‑1.4, 5.2.5‑1.13, 5.2.6‑1.3, 5.3.3‑1.8, 5.3.3‑1.71, 5.3.3‑1.76, 5.3.3‑1.86, 6.3.21‑1.4
SIF_VersionList | 5.3.3‑1.75
SIF_Wakeup | 5.2.12‑1.1
SIF_Where | 5.1.11‑1.18
SIF_ZoneStatus | 5.3.3‑1.1
Size | 6.3.22‑1.10
SLA | 6.3.14‑1.19, 6.3.24‑1.37
SnapDate | 6.3.41‑1.3
Source | 6.3.3‑1.11, 6.3.17‑1.7
SpanGap | 6.2.45‑1.9
SpanGaps | 6.2.45‑1.8
SpecialCondition | 6.3.5‑1.6
SpecialConditions | 6.3.5‑1.5
Staff | 6.3.43‑1.18
StaffActivity | 6.3.28‑1.17
StaffAssignment | 6.3.28‑1.1
StaffAssignmentRefId | 6.3.43‑1.19
StaffList | 6.3.22‑1.5
StaffLocalId | 6.3.43‑1.20, 6.3.45‑1.24, 6.3.48‑1.12
StaffPersonal | 6.3.29‑1.1
StaffPersonalLocalId | 6.3.26‑1.10
StaffPersonalRefId | 6.3.5‑1.14, 6.3.9‑1.16, 6.3.22‑1.6, 6.3.28‑1.5, 6.3.45‑1.23, 6.3.48‑1.7
StaffSubject | 6.3.28‑1.13
StaffSubjectList | 6.3.28‑1.12
StandardHierarchyLevel | 6.3.18‑1.11
StandardIdentifier | 6.3.18‑1.22
StandardNumber | 6.3.18‑1.25
StandardSettingBody | 6.3.18‑1.7
Start | 6.3.49‑1.6
StartDate | 6.3.12‑1.8, 6.3.31‑1.7, 6.3.46‑1.5, 6.3.47‑1.13
StartDateTime | 6.2.45‑1.6, 6.2.45‑1.14, 6.3.5‑1.10
StartDay | 6.3.32‑1.7
StartTime | 6.3.26‑1.15
StateCourseCode | 6.3.23‑1.8
Statement | 6.3.18‑1.19
StatementCode | 6.3.18‑1.17
StatementCodes | 6.3.18‑1.16
Statements | 6.3.18‑1.18
StateOfBirth | 6.2.8‑1.7
StateProvince | 6.2.2‑1.19, 6.2.41‑1.1, 6.3.18‑1.9
StateProvinceId | 6.2.42‑1.1, 6.3.14‑1.4, 6.3.24‑1.4, 6.3.29‑1.4, 6.3.38‑1.10, 6.3.42‑1.7, 6.3.43‑1.7
StatisticName | 6.3.3‑1.3
Status | 6.3.15‑1.14
Stem | 6.3.7‑1.10
Stimulus | 6.3.7‑1.9
Strategies | 6.3.15‑1.38
Strategy | 6.3.15‑1.39
Street | 6.2.2‑1.4
StreetName | 6.2.2‑1.11
StreetNumber | 6.2.2‑1.9
StreetPrefix | 6.2.2‑1.10
StreetSuffix | 6.2.2‑1.13
StreetType | 6.2.2‑1.12
Student | 6.3.43‑1.15
StudentActivityDescription | 6.3.41‑1.28
StudentActivityInfo | 6.3.30‑1.1
StudentActivityInfoRefId | 6.3.31‑1.4, 6.3.41‑1.27
StudentActivityLevel | 6.3.30‑1.8
StudentActivityParticipation | 6.3.31‑1.1
StudentActivityType | 6.3.30‑1.5
StudentAttendance | 6.3.11‑1.10
StudentAttendanceSummary | 6.3.32‑1.1
StudentContactPersonal | 6.3.33‑1.1
StudentContactRelationship | 6.3.34‑1.1
StudentDailyAttendance | 6.3.35‑1.1
StudentList | 6.3.45‑1.16
StudentLocalId | 6.3.43‑1.17, 6.3.45‑1.19
StudentParticipation | 6.3.36‑1.1
StudentParticipationAsOfDate | 6.3.36‑1.4
StudentPeriodAttendance | 6.3.37‑1.1
StudentPersonal | 6.3.38‑1.1
StudentPersonalRefId | 6.3.9‑1.3, 6.3.31‑1.3, 6.3.35‑1.3, 6.3.36‑1.3, 6.3.37‑1.3, 6.3.39‑1.3, 6.3.40‑1.5, 6.3.41‑1.4, 6.3.45‑1.18
StudentSchoolEnrollment | 6.3.39‑1.1
StudentSchoolEnrollmentRefId | 6.3.42‑1.20, 6.3.43‑1.16
StudentScoreSet | 6.3.40‑1.1
StudentSDTN | 6.3.41‑1.1
StudentSnapshot | 6.3.42‑1.1
StudentSpecialCondition | 6.3.9‑1.7
StudentSpecialConditions | 6.3.9‑1.6
StudentSpecialEducationFTE | 6.3.36‑1.35
StudentSubjectChoice | 6.3.39‑1.42, 6.3.42‑1.14
StudentSubjectChoiceList | 6.3.39‑1.41, 6.3.42‑1.13
StudentYearLevel | 6.3.9‑1.9
StudyDescription | 6.3.39‑1.45, 6.3.42‑1.17
SubjectArea | 6.2.1‑1.3, 6.2.43‑1.1, 6.2.44‑1.2, 6.3.10‑1.15
SubjectAreaList | 6.2.44‑1.1, 6.3.23‑1.10
SubjectAreas | 6.3.15‑1.17, 6.3.17‑1.13
SubjectLocalId | 6.3.28‑1.15, 6.3.39‑1.44, 6.3.42‑1.16, 6.3.43‑1.29, 6.3.48‑1.9, 6.3.49‑1.3
SubjectLongName | 6.3.49‑1.12
SubjectShortName | 6.3.49‑1.11
SubjectType | 6.3.49‑1.13
SubmissionNumber | 6.3.27‑1.6
SubmissionReason | 6.3.27‑1.7
SubmitterDepartment | 6.3.27‑1.12
SubmitterName | 6.3.27‑1.11
SubmitterNotes | 6.3.27‑1.16
SubTestTier | 6.3.10‑1.19
Suffix | A.3‑1.10
SummaryEnrollmentInfo | 6.3.43‑1.1
System | 6.3.24‑1.32
SystemContext | 6.3.44‑1.6
SystemContextList | 6.3.44‑1.5
SystemRole | 6.3.44‑1.1
TeacherAttendance | 6.3.11‑1.13
TeacherList | 6.3.45‑1.21
TeachingGroup | 6.3.45‑1.1
TeachingGroupLocalId | 6.3.26‑1.8, 6.3.48‑1.10
TeachingGroupRefId | 6.3.43‑1.23, 6.3.48‑1.5
TeachingGroupStudent | 6.3.45‑1.17
TeachingGroupTeacher | 6.3.45‑1.22
TeachingPeriodsPerDay | 6.3.47‑1.9
TermCode | 6.3.46‑1.9
TermInfo | 6.3.46‑1.1
TermInfoRefId | 6.3.23‑1.6
TermSpan | 6.3.46‑1.11
TextData | A.1‑1.4, A.2‑1.5
TimeElement | 6.2.20‑1.14, 6.2.40‑1.3, 6.2.45‑1.1
TimeElements | 6.2.20‑1.13, 6.2.40‑1.2
TimeFrame | 6.3.39‑1.6
TimeIn | 6.3.35‑1.10, 6.3.37‑1.8
TimeOut | 6.3.35‑1.11, 6.3.37‑1.9
TimeTable | 6.3.47‑1.1
TimeTableCell | 6.3.48‑1.1
TimeTableCellRefId | 6.3.26‑1.4
TimeTableCreationDate | 6.3.47‑1.12
TimeTableDay | 6.3.47‑1.16
TimeTableDayList | 6.3.47‑1.15
TimeTableLocalId | 6.3.48‑1.8
TimetablePeriod | 6.3.37‑1.7
TimeTablePeriod | 6.3.47‑1.20
TimeTablePeriodList | 6.3.47‑1.19
TimeTableRefId | 6.3.48‑1.3
TimeTableSubject | 6.3.49‑1.1
TimeTableSubjectLocalId | 6.3.26‑1.7, 6.3.45‑1.15
TimeTableSubjectRefId | 6.3.28‑1.16, 6.3.43‑1.25, 6.3.45‑1.14, 6.3.48‑1.4
Title | 6.3.17‑1.4, 6.3.29‑1.10, 6.3.30‑1.3, 6.3.47‑1.6, A.3‑1.2
Track | 6.3.46‑1.10
Type | 6.2.8‑1.25, 6.2.45‑1.2, 6.2.45‑1.10, 6.3.25‑1.8
UnexcusedAbsences | 6.3.32‑1.12
UpperCut | 6.3.7‑1.24, 6.3.10‑1.14
URIOrBinaryType | A.26‑1.1
URL | A.1‑1.15, A.2‑1.16
UseAgreement | 6.3.15‑1.21
UserId | 6.3.37‑1.16
Value | 6.2.45‑1.5, 6.2.45‑1.13, 6.3.2‑1.7
VersionType | A.27‑1.1
VersionWithWildcardsType | A.28‑1.1
VisaExpiryDate | 6.2.8‑1.31
VisaStatisticalCode | 6.2.8‑1.30
VisaSubClass | 6.2.8‑1.29
XCoordinate | 6.2.2‑1.25
XMLData | 6.3.8‑1.3, A.1‑1.2, A.2‑1.3
YCoordinate | 6.2.2‑1.26
YearCreated | 6.3.18‑1.23
YearLevel | 6.2.46‑1.1, 6.2.47‑1.2, 6.3.18‑1.28, 6.3.38‑1.22, 6.3.39‑1.12, 6.3.41‑1.17, 6.3.42‑1.25
YearLevels | 6.2.47‑1.1, 6.3.6‑1.10, 6.3.10‑1.16, 6.3.12‑1.15, 6.3.15‑1.16, 6.3.17‑1.23, 6.3.18‑1.20, 6.3.18‑1.26, 6.3.24‑1.21, 6.3.28‑1.20, 6.3.30‑1.9
YoungCarersRole | 6.3.38‑1.27, 6.3.41‑1.35

1448 Total

# Appendix O: Index of Attributes

Action | 5.2.2‑1.6
Algorithm | 6.3.13‑1.11
Alias | 5.1.11‑1.7, 5.1.12‑1.5
AssessmentSubTestRefId | 6.3.40‑1.9
CalendarSummaryRefId | 6.3.11‑1.3
Code | 6.3.5‑1.7, 6.3.9‑1.8
Codeset | 6.2.26‑1.3
ContentType | 6.3.21‑1.22
Currency | A.8‑1.2
Date | 6.3.11‑1.2
Description | 6.3.8‑1.4, A.1‑1.3, A.1‑1.7, A.1‑1.11, A.1‑1.14, A.2‑1.4, A.2‑1.8, A.2‑1.12, A.2‑1.15
Distinct | 5.1.11‑1.4
EndDate | 6.3.32‑1.6
FileName | A.1‑1.6, A.1‑1.10, A.2‑1.7, A.2‑1.11
KeyName | 6.3.13‑1.12
LevelName | 6.3.7‑1.20, 6.3.10‑1.10
LogLevel | 5.3.2‑1.3
MIMEType | A.1‑1.5, A.1‑1.9, A.1‑1.13, A.2‑1.6, A.2‑1.10, A.2‑1.14
Name | 6.2.39‑1.3
ObjectName | 5.1.10‑1.3, 5.1.11‑1.8, 5.1.11‑1.10, 5.1.11‑1.15, 5.1.11‑1.17, 5.1.11‑1.25, 5.1.11‑1.30, 5.1.12‑1.4, 5.2.2‑1.5, 5.2.3‑1.4, 5.2.4‑1.5, 5.2.4‑1.10, 5.2.4‑1.14, 5.2.4‑1.18, 5.2.4‑1.22, 5.2.4‑1.26, 5.2.4‑1.31, 5.2.8‑1.4, 5.2.17‑1.4, 5.2.19‑1.4, 5.3.1‑1.4, 5.3.1‑1.8, 5.3.1‑1.12, 5.3.1‑1.16, 5.3.1‑1.20, 5.3.1‑1.24, 5.3.1‑1.28, 5.3.2‑1.15, 5.3.3‑1.14, 5.3.3‑1.22, 5.3.3‑1.29, 5.3.3‑1.36, 5.3.3‑1.43, 5.3.3‑1.50, 5.3.3‑1.58
Ordering | 5.1.11‑1.31
QueryLanguage | 6.3.21‑1.18
ReferenceType | 6.3.15‑1.13
RefId | 6.3.1‑1.2, 6.3.2‑1.2, 6.3.3‑1.2, 6.3.4‑1.2, 6.3.5‑1.2, 6.3.6‑1.2, 6.3.7‑1.2, 6.3.8‑1.2, 6.3.9‑1.2, 6.3.10‑1.2, 6.3.12‑1.2, 6.3.13‑1.2, 6.3.14‑1.2, 6.3.15‑1.2, 6.3.15‑1.29, 6.3.17‑1.2, 6.3.18‑1.2, 6.3.19‑1.2, 6.3.20‑1.2, 6.3.21‑1.2, 6.3.22‑1.2, 6.3.23‑1.2, 6.3.24‑1.2, 6.3.25‑1.2, 6.3.26‑1.2, 6.3.27‑1.2, 6.3.28‑1.2, 6.3.29‑1.2, 6.3.30‑1.2, 6.3.31‑1.2, 6.3.33‑1.2, 6.3.35‑1.2, 6.3.36‑1.2, 6.3.37‑1.2, 6.3.38‑1.2, 6.3.39‑1.2, 6.3.40‑1.2, 6.3.41‑1.2, 6.3.43‑1.2, 6.3.44‑1.2, 6.3.45‑1.2, 6.3.46‑1.2, 6.3.47‑1.2, 6.3.48‑1.2, 6.3.49‑1.2, A.2‑1.2
RelationshipType | 6.3.18‑1.36
ReportAuthorityInfoRefId | 6.3.21‑1.3
ReportManifestRefId | 6.3.27‑1.4
ResourceType | 6.3.18‑1.6
Role | 6.2.2‑1.3
RoleId | 6.3.44‑1.10
RowCount | 5.1.11‑1.5
SchemaName | 6.3.13‑1.8
SchoolInfoRefId | 6.3.32‑1.3
SchoolYear | 6.3.32‑1.4
ScoreMetric | 6.3.7‑1.22, 6.3.10‑1.5, 6.3.10‑1.12
Secure | 5.1.7‑1.3
Severity | 6.3.38‑1.8
SIF_Action | 6.2.3‑1.3, 6.2.14‑1.3, 6.2.27‑1.3, 6.2.30‑1.3, 6.2.39‑1.5, 6.3.5‑1.8
SIF_RefObject | 6.2.22‑1.5, 6.3.13‑1.4, 6.3.15‑1.42, 6.3.19‑1.4, 6.3.21‑1.7, 6.3.24‑1.9, 6.3.27‑1.10, 6.3.36‑1.11, 6.3.39‑1.14, 6.3.39‑1.16, 6.3.39‑1.18, 6.3.39‑1.23, 6.3.42‑1.27, 6.3.43‑1.5, 6.3.44‑1.4, 6.3.44‑1.15
SnapDate | 6.3.42‑1.2
Source | 5.3.2‑1.2
SourceId | 5.3.3‑1.11, 5.3.3‑1.19, 5.3.3‑1.26, 5.3.3‑1.33, 5.3.3‑1.40, 5.3.3‑1.47, 5.3.3‑1.55
StartDate | 6.3.32‑1.5
StudentContactPersonalRefId | 6.3.34‑1.3
StudentPersonalRefId | 6.3.32‑1.2, 6.3.34‑1.2, 6.3.42‑1.3
SystemId | 6.3.44‑1.7
Type | 5.1.7‑1.2, 5.1.10‑1.6, 5.1.10‑1.8, 5.1.11‑1.12, 5.1.11‑1.20, 5.1.11‑1.22, 5.3.3‑1.63, 6.2.2‑1.2, 6.2.2‑1.24, 6.2.11‑1.2, 6.2.13‑1.2, 6.2.22‑1.2, 6.2.23‑1.2, 6.2.29‑1.2, 6.3.3‑1.5, 6.3.3‑1.10, 6.3.19‑1.7, 6.3.21‑1.17, 6.3.21‑1.21, 6.3.29‑1.8, 6.3.33‑1.6, 6.3.37‑1.15, 6.3.38‑1.5, 6.3.38‑1.14, A.10‑1.2, A.12‑1.2
Version | 5.1.1‑1.3
xml:lang | 6.3.15‑1.3, 6.3.17‑1.3, 6.3.18‑1.3
xmlns | 5.1.1‑1.2
xsi:type | 5.1.12‑1.6, 6.2.39‑1.4
ZoneId | 5.3.3‑1.2

208 Total

# Appendix P: References

### Architecture/Infrastructure

Key | Citation
EXPORT | U.S. Bureau of Industry and Security. Commercial Encryption Export Controls. 6 July 2006 <http://www.bis.doc.gov/Encryption/>.
FAVICON | Favicon - Wikepedia, the free encyclopedia. 6 July 2006 <http://en.wikipedia.org/wiki/Favicon>.
MIME | IETF (Internet Engineering Task Force). RFC 2048: Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures. 1996 November. 6 July 2006 <http://www.ietf.org/rfc/rfc2048.txt>.
RFC 2045 | IETF (Internet Engineering Task Force). RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. 6 July 2006 <http://www.ietf.org/rfc/rfc2045.txt>.
RFC 2046 | IETF (Internet Engineering Task Force). RFC 2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 6 July 2006 <http://www.ietf.org/rfc/rfc2046.txt>.
RFC 2119 | IETF (Internet Engineering Task Force). RFC 2119: Key words for use in RFCs to Indicate Requirement Levels. 11 December 2008 <http://www.ietf.org/rfc/rfc2119.txt>.
RFC 2246 | IETF (Internet Engineering Task Force). RFC 2246: The TLS Protocol: Version 1.0. 6 July 2006 <http://www.ietf.org/rfc/rfc2246.txt>.
RFC 2376 | IETF (Internet Engineering Task Force): RFC 2376: XML Media Types. 6 July 2006 <http://www.ietf.org/rfc/rfc2376.txt>.
RFC 2396 | IETF (Internet Engineering Task Force): RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax. 13 July 2006 <http://www.ietf.org/rfc/rfc2396.txt>.
RFC 2518 | IETF (Internet Engineering Task Force). RFC 2518: HTTP Extensions for Distributed Authority—WEBDAV. 6 July 2006 <http://www.ietf.org/rfc/rfc2518.txt>.
RFC 2616 | IETF (Internet Engineering Task Force). RFC 2616: Hypertext Transport Protocol—HTTP 1.1. 6 July 2006 <http://www.ietf.org/rfc/rfc2616.txt>.
RFC 4122 | IETF (Internet Engineering Task Force). A Universally Unique IDentifier (UUID) URN Namespace. 3 July 2006 <http://www.ietf.org/rfc/rfc4122.txt>.
SCHEMA | World Wide Web Consortium (W3C). XML Schema Part 1: Structures. 6 July 2006 <http://www.w3.org/TR/xmlschema-1/>. World Wide Web Consortium (W3C). XML Schema Part 2: Datatypes. 6 July 2006 <http://www.w3.org/TR/xmlschema-2/>. A non-normative primer on XML Schema is also available: World Wide Web Consortium (W3C). XML Schema Part 0: Primer. 6 July 2006 <http://www.w3.org/TR/xmlschema-0/>.
Schneier | Schneier, Bruce. Applied Cryptography: Protocols, Algorithms, and Source Code in C (Second Edition). John Wiley & Sons, 1995.
SIF Certification | Schools Interoperability Framework Association (SIF Association). SIF Certification - Product Standards. 23 May 2007 <http://certification.sifinfo.org/docs/prodstandards.tpl>.
SIF Reporting WS | Schools Interoperability Framework Association (SIF Association). Schools Interoperability Framework™ Reporting Web Service 1.0. 28 September 2006 <http://specification.sifinfo.org/WebServices/Reporting/1.0>.
SSL2 | Netscape. SSL 2.0 Protocol Specification. 6 July 2006 <http://wp.netscape.com/eng/security/SSL_2.html>.
SSL3 | Netscape. The SSL Protocol Version 3.0. 6 July 2006 <http://wp.netscape.com/eng/ssl3/draft302.txt>.
WSARCH | World Wide Web Consortium (W3C). Web Services Architecture. 16 July 2006 <http://www.w3.org/TR/ws-arch/>.
XML | W3C (World Wide Web Consortium). Extensible Markup Language (XML) 1.0 (Third Edition). 6 July 2006 <http://www.w3.org/TR/2004/REC-xml-20040204>.
XMLINTRO | W3C (World Wide Web Consortium). XML in 10 Points. 13 July 2006 <http://www.w3.org/XML/1999/XML-in-10-points.html>.
XMLNS | W3C (World Wide Web Consortium). Namespaces in XML. 6 July 2006 <http://www.w3.org/TR/REC-xml-names/>.
XPath | W3C (World Wide Web Consortium). XML Path Language (XPath) Version 1.0. 6 July 2006 <http://www.w3.org/TR/xpath>.

### Data Model

Key | Citation
CanadaPost | Canada Post. Canada Postal Guide. 6 July 2006 <http://www.canadapost.ca/personal/tools/pg/manual/b03-e.asp>.
ABS | Australian Bureau of Statistics <http://www.abs.gov.au/>.
CNDB | USDA (United States Department of Agriculture). Child Nutrition Database (CNDB). 6 July 2006 <http://riley.nal.usda.gov/nal_display/index.php?info_center=14&tax_level=2&tax_subject=234&topic_id=1210>
DES | FIPS (Federal Information Processing Standards). Publication 46-3: Data Encryption Standard (DES). 25 October 1999. 06 July 2006 <http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf>.
DSS | FIPS (Federal Information Processing Standards). Publication 186-2: Digital Signature Standard (DSS). 27 January 2000. 6 July 2006 <http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf>.
EDEN | U.S. Department of Education. File Specifications — Performance-Based Data Management Initiative (PBDMI). 7 September 2006 <http://www.ed.gov/about/inits/ed/pbdmi/file-specifications.html>.
FAVICON | Favicon - Wikepedia, the free encyclopedia. 6 July 2006 <http://en.wikipedia.org/wiki/Favicon>.
IRSTIN | IRS (Internal Revenue Service) ITIN and ATIN definitions. Publication 1915: Understanding Your IRS Individual Taxpayer Identification Number (Rev. 2-2004). 2004 February. 6 July 2006 <http://www.irs.gov/pub/irs-pdf/p1915.pdf>
ISO 3166/MA | ISO (International Standards Organization). ISO 3166 Maintenance agency (ISO 3166/MA). 6 July 2006 <http://www.iso.org/iso/en/prods-services/iso3166ma/index.html>.
ISO 3166-1 | ISO (International Standards Organization). English country names and code elements. 6 July 2006 <http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html>.
ISO 3166-3 | ISO (International Standards Organization). ISO 3166-3:1999—Codes for the representation of names of countries and their subdivisions—Part 3:Codes for formerly used names of countries.
ISO 6709 | ISO (International Standards Organization). ISO 6709-1983 (E)—Standard representation of latitude, longitude and altitude for geographic point locations (First edition—1983-05-15). International Organization for Standardization, 1983
JPEG | IJG (Independent JPEG Group). JPEG File Interchange Format Version 1.02. 6 July 2006 <http://www.w3.org/Graphics/JPEG/jfif3.pdf>.
LOM | IEEE (Institute of Electrical and Electronics Engineers, Inc.). IEEE LTSC | WG12. 10 July 2006 <http://ltsc.ieee.org/wg12/>.
MD5 | IETF (Internet Engineering Task Force). RFC 1321: The MD5 Message-Digest Algorithm. 1992 April. 6 July 2006 <http://www.ietf.org/rfc/rfc1321.txt>.
NCES | NCES (National Center for Education Statistics). NCES Handbooks Online. 6 July 2006 <http://nces.ed.gov/programs/handbook/toc.asp>.
RC2 | IETF (Internet Engineering Task Force). RFC 2268: A Description of the RC2 Encryption Algorithm. 1998 March. 6 July 2006 <http://www.ietf.org/rfc/rfc2268.txt>.
RSA | IETF (Internet Engineering Task Force). RFC 2313: PKCS #1: RSA Encryption. 1998 March. 6 July 2006 <http://www.ietf.org/rfc/rfc2313.txt>.
SAFETY | NCES (National Center for Education Statistics). Safety in Numbers: Collecting and Using Crime, Violence and Discipline Incident Data to Make a Difference in Schools. 13 July 2006 <http://nces.ed.gov/pubs2002/safety/chapter4.asp>.
SCED | National Center for Education Statistics. Secondary School Course Classification System: School Codes for the Exchange of Data. 23 May 2007 <http://nces.ed.gov/pubs2007/2007341.pdf>.
SHA1 | FIPS (Federal Information Processing Standards). Publication 180-1: Secure Hash Standard (SHS). 17 April 1995. 6 July 2006 <http://www.itl.nist.gov/fipspubs/fip180-1.htm>.
USPS | United States Postal Services (USPS). Abbreviations. 6 July 2006 <http://www.usps.com/ncsc/lookups/usps_abbreviations.html>.
Z39.53 | NISO (National Information Standards Organization). ANSI/NISO Z39.53-2001: Codes for the Representation of Languages for Information Interchange. NISO Press, 2001. 6 July 2006 <http://www.niso.org/standards/resources/Z39-53.pdf>.
Z39.53/MA | Library of Congress (Z39.53 Maintenance Agency). MARC Code List for Languages. 6 July 2006 <http://lcweb.loc.gov/marc/languages/>.
ABS 1269.0 | Australian Bureau of Statistics - 1269.0 - Standard Australian Classification of Countries (SACC), Second Edition. <http://www.abs.gov.au/AUSSTATS/abs@.nsf/DetailsPage/1269.0Second%20Edition?OpenDocument>.
ABS 1249.0 | Australian Bureau of Statistics - 1249.0 - Australian Standard Classification of Cultural and Ethnic Groups (ASCCEG), 2005-06. <http://www.abs.gov.au/AUSSTATS/abs@.nsf/DetailsPage/1249.02005-06?OpenDocument>.
ABS 1267.0 | Australian Bureau of Statistics - 1267.0 - Australian Standard Classification of Languages (ASCL), 2005-06. <http://www.abs.gov.au/AUSSTATS/abs@.nsf/DetailsPage/1267.02005-06?OpenDocument>.
ABS 1266.0 | Australian Bureau of Statistics - 1266.0 - Australian Standard Classification of Religious Groups, 2005. <http://www.abs.gov.au/AUSSTATS/abs@.nsf/DetailsPage/1266.02005?OpenDocument>.
ABS 1216.0 | Australian Bureau of Statistics - 1216.0 - Australian Standard Geographical Classification (ASGC), Jul 2008. <http://www.abs.gov.au/AUSSTATS/abs@.nsf/DetailsPage/1216.0Jul%202008?OpenDocument>.
MCEECDYA | The Ministerial Council for Education, Early Childhood Development and Youth Affairs. <http://www.mceetya.edu.au/mceecdya/>.
DEEWR | Department of Education, Employment and Workplace Relations. <http://www.deewr.gov.au/Pages/default.aspx>.