# Schools Interoperability Framework™
SIF Infrastructure Implementation Specification 2.5

## February 24, 2011

This version:
  http://specification.sifassociation.org/Implementation/2.5/Infrastructure/3/
Previous version:
  http://specification.sifassociation.org/Implementation/2.4/
Latest version:
  http://specification.sifassociation.org/Implementation/
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)
  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 ©2011 Schools 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.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

## A Common Types

## B Code Sets

## C Notes on Related Technologies

## D Wildcard Version Support Implementation Notes

## E Selective Message Blocking (SMB) Example

## F Index of Tables

## G Index of Examples

## H Index of Figures

## I Index of Objects

## J Index of Common Elements

## K Index of Common Types

## L Index of Elements

## M Index of Attributes

## N References

# Full Table of Contents

## 1 Preamble

### 1.1 Abstract

#### 1.1.1 What is SIF?

#### 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 Since Version 2.4

#### 2.4.1 New Web Services Transport

#### 2.4.2 Directed Events

#### 2.4.3 Stand-Alone Transports

#### 2.4.4 Infrastructure Documentation

## 3 Architecture

### 3.1 Assumptions

#### 3.1.1 Notes on Related Technologies

### 3.2 Architectural Components

#### 3.2.1 SIF Systems

### 3.3 Concepts

#### 3.3.1 Data Model

#### 3.3.2 Zone Architecture

##### 3.3.2.1 Contexts

#### 3.3.3 Infrastructure and Messaging

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

##### 3.3.4.1 Routing

##### 3.3.4.2 Access Control

##### 3.3.4.3 Error Reporting

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

#### 3.3.6 Communication: An Asynchronous Model

##### 3.3.6.1 Guaranteed Delivery

#### 3.3.7 Security Model

##### 3.3.7.1 Encryption

##### 3.3.7.2 Authentication and Validation

##### 3.3.7.3 Access Control

#### 3.3.8 Zone Services

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

#### 3.3.10 Object Identifiers

##### 3.3.10.1 Object Identifier Persistence

### 3.4 Agent/Application Requirements

#### 3.4.1 Communicate with the ZIS

##### 3.4.1.1 HTTPS

##### 3.4.1.2 Agent Registration

#### 3.4.2 Transmit Application Changes to the ZIS

#### 3.4.3 Respond to Requests

#### 3.4.4 Vendor Application Support for SIF

#### 3.4.5 Support Authentication and Digital Signatures

#### 3.4.6 Agent Local Queue

#### 3.4.7 Wildcard Version Support

### 3.5 Zone Integration Server Requirements

#### 3.5.1 Access Control List

#### 3.5.2 Zone Status

#### 3.5.3 SIF XML Filter

##### 3.5.3.1 SIF XML Filter Process Rules

##### 3.5.3.2 Implementation of SIF XML Filter Syntax

#### 3.5.4 Zone Context Registry

#### 3.5.5 Administration

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

##### 3.5.6.1 Description

##### 3.5.6.2 Requirements

##### 3.5.6.3 Example

#### 3.5.7 Quality of Service Implementation

### 3.6 Message Processing

#### 3.6.1 Message Validation

#### 3.6.2 Message Identification

#### 3.6.3 Message Security

##### 3.6.3.1 SIF_AuthenticationLevel

##### 3.6.3.2 SIF_EncryptionLevel

##### 3.6.3.3 Notes on SIF_AuthenticationLevel

##### 3.6.3.4 Notes on SIF_EncryptionLevel

#### 3.6.4 Message Robustness

#### 3.6.5 Message Cycle

#### 3.6.6 Message Delivery

##### 3.6.6.1 The "Push" Model

##### 3.6.6.2 The "Pull" Model

###### 3.6.6.2.1 Version Management

##### 3.6.6.3 "Multiple Version" Zones

### 3.7 Infrastructure Transport Layer

#### 3.7.1 SIF HTTPS Transport

##### 3.7.1.1 HTTPS Request/Response Model

##### 3.7.1.2 UTF-8 Encoding

##### 3.7.1.3 HTTP Request Headers

##### 3.7.1.4 HTTP Response Headers

##### 3.7.1.5 100 (Continue)

##### 3.7.1.6 3XX, 4XX, 5XX Notices

#### 3.7.2 SIF HTTP Transport

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

#### 3.7.4 SIF_Protocol/SIF_Property Accept-Encoding

#### 3.7.5 HTTP Client Requirements

#### 3.7.6 HTTP Server Requirements

#### 3.7.7 Push-Mode Agent Requirements

#### 3.7.8 Zone Integration Server Transport 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.1.19 SIF_ServiceNotify

##### 4.1.1.20 SIF_ServiceInput

##### 4.1.1.21 SIF_CancelServiceInputs

#### 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.1.2.9 SIF_CancelServiceInputs (Push-Mode only) (optional)

##### 4.1.2.10 SIF_ServiceNotify

##### 4.1.2.11 SIF_ServiceInput

##### 4.1.2.12 SIF_ServiceOutput

### 4.2 ZIS Protocols

#### 4.2.1 ZIS Messaging Protocols

##### 4.2.1.1 SIF_Message Delivery (SIF_Event, SIF_Request, SIF_Response, SIF_ServiceInput, SIF_ServiceOutput, SIF_ServiceNotify 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.1.6 SIF_CancelServiceInputs (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.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_CancelServiceInputs

##### 4.2.2.19 SIF_GetMessage

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

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

##### 4.2.2.22 SIF_ServiceNotify

##### 4.2.2.23 SIF_ServiceInput

##### 4.2.2.24 SIF_ServiceOutput

## 5 Infrastructure

### 5.1 Common Elements

#### 5.1.1 SIF_ExtendedElements

#### 5.1.2 SIF_Message

#### 5.1.3 SIF_Header

#### 5.1.4 SIF_EncryptionLevel

#### 5.1.5 SIF_AuthenticationLevel

#### 5.1.6 SIF_Contexts

#### 5.1.7 SIF_Context

#### 5.1.8 SIF_Protocol

#### 5.1.9 SIF_Status

#### 5.1.10 SIF_Error

#### 5.1.11 SIF_Query

##### 5.1.11.1 SIF_ConditionGroup

##### 5.1.11.2 SIF_Element Syntax

#### 5.1.12 SIF_ExtendedQuery

##### 5.1.12.1 Mapping SIF_Query to SIF_ExtendedQuery

#### 5.1.13 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_CancelServiceInputs

#### 5.2.18 SIF_Unprovide

#### 5.2.19 SIF_Unregister

#### 5.2.20 SIF_Unsubscribe

#### 5.2.21 SIF_ServiceInput

#### 5.2.22 SIF_ServiceOutput

#### 5.2.23 SIF_ServiceNotify

### 5.3 Objects

#### 5.3.1 SIF_AgentACL

#### 5.3.2 SIF_LogEntry

#### 5.3.3 SIF_ZoneStatus

## A Common Types

### A.1 AbstractContentElementType

### A.2 AbstractContentPackageType

### A.3 DefinedProtocolsType

### A.4 ExtendedContentType

### A.5 GUIDType

### A.6 IdRefType

### A.7 MsgIdType

### A.8 ObjectNameType

### A.9 ObjectType

### A.10 RefIdType

### A.11 ReportDataObjectType

### A.12 ReportPackageType

### A.13 SelectedContentType

### A.14 ServiceNameType

### A.15 URIOrBinaryType

### A.16 VersionType

### A.17 VersionWithWildcardsType

## B Code Sets

### 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 Zone Service Error

### SIF_LogEntry

#### Agent Error Condition

#### Data Issues with Failure Result

#### Data Issues with Success Result

#### Success Category

#### ZIS Error Condition

## C Notes on Related Technologies

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

### C.2 SIF and URLs

### C.3 SIF and XML

### C.4 SIF and Unicode

### C.5 SIF and XPath

### C.6 SIF and XML Schema

#### C.6.1 xs:boolean

#### C.6.2 xs:time

#### C.6.3 xs:date

#### C.6.4 xs:dateTime

### C.7 SIF and XML Namespaces

### C.8 SIF and UUIDs/GUIDs

### C.9 SIF and Web Services

## D Wildcard Version Support Implementation Notes

### D.1 XML Parsing

### D.2 XML Validation

### D.3 SIF_Message Handling

## E Selective Message Blocking (SMB) Example

### E.1 Example

## F Index of Tables

## G Index of Examples

## H Index of Figures

## I Index of Objects

## J Index of Common Elements

## K Index of Common Types

## L Index of Elements

## M Index of Attributes

## N References