[This local archive copy is from the official and canonical URL, http://www.schoolsinterop.org/docs/sifdraft.zip; please refer to the canonical source document if possible.]
Schools Interoperability Framework
Specification Document
Working Draft
September 2, 1998
Revision History
Version |
Date |
Changed By |
Description |
1.0 |
09/02/98 |
Dianne Kennedy, Manish Sharma |
Initial Creation |
|
|
|
|
1 INTRODUCTION
*1.1 Background
*1.2 The Schools Interoperability Framework
*1.3 Scope and deliverables of the Schools Interoperability Framework
*1.4 Membership
*1.5 Relationships with other standards in education
*1.6 Objectives of the Schools Interoperability Framework
*1.7 Overview of the approach
*1.8 The XML Advantage
*1.9 Structure Charts
*1.10 Using Namespaces to solve versioning issues
*1.11 Overview of Remaining Sections
*2 OBJECTS, RELATIONSHIPS and QUERIES
*2.1 Student Object
*2.2 Contact Object
*2.3 Teacher Object
*2.4 School Object
*2.5 Relationships
*2.6 Queries
*2.6.1 Query spanning only one object
*2.6.2 Query spanning multiple objects
*3 MESSAGES and EVENTS
*3.1 Overall Schools Interoperability Framework message Structure
*3.2 K12Event Message
*3.3 Enrollment Change Message
*3.4 Student Update Message
*3.5 Partial Student Update Message
*3.6 Teacher Update Message
*3.7 Partial Teacher Update Message
*3.8 Contact Update Message
*3.9 Partial Contact Update Message
*3.10 School Update Message
*3.11 Partial School Update Message
*ID Change Message
*3.13 K12 Request Message
*3.14 K12 Response Message
*3.15 K12 Subscribe Message
*3.16 K12 Unsubscribe Message
*3.17 K12 Publish Message
*3.18 K12 Unpublish Message
*4 APPLICATION INTERACTION MODES
*4.1 Query/ Response
*4.2 Publish/Subscribe
*APPENDIX A: XML – TAG DOCUMENTATION
*Address
*AptNumber
*AptNumPrefix
*AptNumSuffix
*AptType
*AreaCode
*BirthDate
*ChangedStatus
*ChangeReason
*City
*Complex
*Contact
*ContactID
*ContactName
*ContactUpdate
*County
*Credentials
*Date
*DateHired
*Department
*DistrictNbr
*EffectiveDate
*ElectronicID
*EmployeeID
*EnrollStatusChg
*Error
*Event
*Ext
*FirstName
*Gender
*GradeLvl
*GradYear
*HomeRoom
*IDUpdate
*ImmigrationStatus
*K12Event
*K12Framework
*K12Publish
*K12Request
*K12Response
*K12Subscribe
*K12UnPublish
*K12UnSubscribe
*LastName
*MiddleName
*MsgHead
*MsgID
*NewContactID
*NewSchoolID
*NewStudentID
*NewTeacherID
*Number
*Object
*PartialContactUpdate
*PartialSchoolUpdate
*PartialStudentUpdate
*PartialTeacherUpdate
*PhoneNumber
*PublishHead
*Race
*RecordCount
*Relationship
*RequestHead
*RequestMsgID
*ResponseData
*ResponseHead
*School
*SchoolID
*SchoolName
*SchoolUpdate
*SchoolYear
*Source
*SSN
*State
*Status
*Street
*StreetName
*StreetNumber
*StreetPrefix
*StreetSuffix
*StreetType
*Student
*StudentID
*StudentName
*StudentUpdate
*SubscribeHead
*Teacher
*TeacherID
*TeacherName
*TeacherUpdate
*Time
*XMLQuery
*Zip
*APPENDIX B: XML – TAG REFERENCE
*APPENDIX C: XML DTD
*APPENDIX D: XML – Data Schema
*
One of the most pressing problems in the education industry today is that of inter operability. The situation today is that the applications available for schools and districts are either closed systems allowing no programmatic access of data or allow access via proprietary interfaces and data formats.
In the case where these applications are closed systems, the problems is that school personnel spend endless time entering the same data over and over again into multiple applications. A typical example of this is a school that needs to store student demographics information in a student administration application as well as a library management application. If both these applications are closed systems, the only way to enter this information is for someone to manually type it into both systems. This type of redundant data entry is time consuming and error prone. If a student moves and his/her address changes, someone has to go into each one of these systems and manually update the student’s information.
In order to solve some of these redundant data entry problems, a number of vendors provide proprietary interfaces and data formats to allow programmatic exchange of data. This, however, is only a partial solution to the problem. Since every vendor’s interface and data format is different, deploying an interoperable system (made up of diverse applications) at a school or district is often a costly proposition caused by lengthy negotiations among vendors and custom software development. The system is also hard to maintain. Since the interface and data format is defined by one vendor and not by a standards committee, an arbitrary change made by that vendor can cause other applications to function improperly.
Over the past several months there have been a number of meetings with leading education software vendors on the topic of interoperability among the applications in the education industry. The main conclusion from all of these meetings was that the only way to achieve interoperability among these applications was for all the interested parties to come together and define standards that all the vendors would adopt. These standards would define a common data format, naming conventions and rules of interaction among applications and would allow end users to create solutions by mixing and matching different applications. Since these solutions would be created by plugging together modules from different vendors schools and district could create functionally rich solutions offering the degree of customization that they need.
The Schools Interoperability Framework is such an effort driven by the leading vendors in the education market. It’s objective is to provide interoperability by defining a common format for the data that needs to be shared among applications (like student demographics, attendance information, grades etc.) and defining a protocol for these applications to interact with one another. The goal of this standard is to move the entire education industry from it’s current state of "application islands" to one where all applications plug and play together and allow open access to their data for creating reports at the district, state and federal levels using internet technologies.
There are a number of benefits to having this type of an industry wide standard. From the end users perspective having the choice of applications that conform to a industry wide standard means that they can put together functionally rich systems using a best of breed approach. Integration and data aggregation at the district and state level becomes easier giving a level of access to information that is not possible today.
1.3 Scope and deliverables of the Schools Interoperability Framework
The Schools Interoperability Framework is a specification that defines standards for the data that is exchanged among the applications in the education industry and the protocol for these applications to interact with one another. It is a broad industry wide initiative addressing the issue of multiple platforms and technologies found in schools and districts today and is not tied to a single vendor or technology. In addition to the standards document itself, other deliverables of the framework include an implementation guide, a sample implementation based on this guide, compliance criteria and certification procedures. In addition to this an SDK will be provide that has the API’s, programmer’s manual and sample code.
The scope of this standards initiative is industry wide and not restricted to a particular vendor or technology. As such, membership is open to all interested parties including school, district and state education personnel. For information about participating and/or being a part of the regular mailings, please send e- mail to mailto:info@schoolsinterop.org or visit the web site at http://www.schoolsinterop.org
There has been a lot of good work done in the area of standardization for the education market. Two of the leading efforts are SPEEDE/ExPRESS (and it’s extensions) and EDUCOM IMS.
SPEEDE/EXPRESS is an EDI based standard for the education industry which specifies the transaction sets, data segments and data fields for common transactions that need to occur electronically between schools and districts. These include transactions for student loan requests, student transcript request etc. The Schools Interoperability Framework fully intends to use as much of the SPEEDE/ExPRESS specifications as possible without reinventing definitions of common attributes like codes for gender, ethnicity, grades etc. The following are some of the things that the Schools Interoperability Framework does differently from SPEEDE/ExPRESS.
As stated earlier the Schools Interoperability Framework will adopt the SPEEDE/ExPRESS definitions when applicable but representing them in XML rather than traditional EDI.
EDUCOM IMS is a standards effort that relates to metadata standards and online content management. The Schools Interoperability Framework will continue to investigate any synergy that may exist between these two efforts.
In this section we define the objectives that this standard must meet.
In this section we take a high level look at the approach that has been followed to define the Schools Interoperability Framework. The ideas that form the basis of the framework were developed and refined over the course of several meetings with the representatives of the companies that form the core group. This document is a result of these meetings. The Schools Interoperability Framework will continue to hold these meetings regularly to ensure that the specification is progressing satisfactorily and new ideas are constantly being incorporated keeping in step with the latest innovations in technology and with the changing needs of the marketplace.
The specifications process began by identifying some of the common objects that are exchanged among applications and the relationships that exist among them. The initial objects defined were student, teacher and contact objects. Of all possible relationships among these objects, a subset was identified that would be supported in the Framework. This subset was identified based on the interactions that typically occur among applications. The remaining relationships were discarded. These relationships are used to determine the valid queries that the Framework supports.
After identifying these objects the next thing done was to identify the events that occur on a day to day basis in schools. Some of these included, student enrollment change event (like admission, graduation, transfer etc.) or student update event (like change in home address). Then, the data messages that get exchanged as a result of these events were identified. One of the considerations taken into account was that different applications may require different data fields on the same event. For example, on a student enroll event, Application A may require student address while application B may require student phone number. It was decided that both fields would be sent with this event and the individual applications would supply filters that would extract the field that was of interest to them. In addition to event data messages, other messages like queries, publish and subscribe messages were also defined.
After the objects, events and messages were identified, rigorous modeling techniques were applied to model the data and XML definitions for the objects and messages were created. The resulting XML DTD is the basis of the XML data specification for the Schools Interoperability Framework. The next task was to define the types of interactions that Framework compliant applications would support.
Two types of interactions that need to take place among applications were identified:
This is an overview of the approach used in defining the specification for the Schools Interoperability Framework. In subsequent meetings this process may be further refined but the basic idea will still be to define more object, relationships, events and messages thereby increasing the scope of this initiative. The remaining chapters of this specification describe this approach in detail and present the deliverables at the end of each stage. For a mapping of this data model and interactions into a working architecture and API using specific technologies, please refer to the attached Implementation Guide.
This document assumes familiarity with the basic concepts of XML and as such does not attempt to give a detailed explanation of what XML is. Two excellent references for XML are: The XML Handbook by Charles Goldfarb & Paul Prescod and Presenting XML by Richard Light. Before embarking upon this endeavor, a conscious decision was made to use XML as the means to define and exchange data. This was done for a number of reasons. XML is rapidly becoming a very popular technology for a wide variety of applications ranging from Database Publishing to Electronic Commerce. In fact a number of organizations are looking at XML for specifying the standards in their particular domain like EDUCOM IMS, HL7 for Healthcare and TCIF (Tele Communication Industry Form).
Here are some of the advantages that XML brings to the table.
1.9 Structure Charts
Structure charts show the hierarchy of an XML Model. These charts are used throughout this document to describe the data model. Frequency is indicated by symbols that precede the element name. If no symbol is present, one (1) instance of the element is required. If question mark symbol appears, the element is optional (0 or 1). If an asterisk appears, the element is optional and repeatable (0 or more). If a plus appears, the element is required and repeatable (1 or more).
Figure 1: Components of a structure chart
Structure Charts also communicate the sequence, or order, of elements within a model. Square connectors indicate elements that occur in a prescribed order. Angular connectors mean that only one of those listed may be chosen (exclusive or). The occurrence of a tilde (~) in a box means that the element has a attribute associated with it.
<To Be Added>
1.11 Overview of Remaining Sections
Section 2 describes the objects that are currently defined in the specification, the relationships that exist among them and how these relationships related to forming valid queries. Structure charts are used to describe the objects and examples are given.
Section 3 describes the events and messages that are exchanged among the applications. The events are related to the messages they generate. The entire K-12 message structure is described in this section along with examples.
Section 4 at a high level the two types of interactions that the applications need to support i.e. Query/response and Publish/Subscribe.
Appendix A has all the tag documentation along with examples, attribute descriptions and values. References to SPEEDE/ExPRESS are made for the cases where these values have been adopted from them.
Appendix B is a quick alphabetic Tag reference.
Appendix C is the XML DTD
Appendix D has the corresponding XML – Data schemas for the XML models.
This section describes the various objects that have been identified and the relationships between them. The reason for specifying the supported relationships is to allow only those queries for data that are based on these relationships and to disallow other ad hoc queries.
This object contains all the information that pertains to an individual student like id, name, address etc. The next figure shows the XML structure chart for the student object with all the elements that make up a student.
Figure 2: Student Object structure chart
Based on this definition an XML representation of a student object is shown next.
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</StudentName>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL">
<Zip>60434</Zip>
</Address>
<SchoolID href="#s0067" type="secondary">
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"><ImmigrationStatus code="2">
<SSN>330-44-7788<SSN><Gender code="F">
<Race code="A"><BirthDate>19831007</BirthDate>
<TeacherID href="#78223">
<ContactID href="#33425">
</Student>
Note: For a full description of possible attribute values and descriptions of elements and attributes, please refer to Appendix A , XML – Tag Documentation.
The contact object is defined to contain contact information for a student or a teacher. The next figure shows a structure chart for the contact object.
Figure 3: Contact object structure chart. Street element is as defined in Figure 2 for the Student Object
Based on this structure chart an XML representation of a contact object will look like this.
<Contact id="k0023 type="emergency">
<ContactName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</ContactName>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/>
<Relationship code="03"/>
</Contact>
The teacher object is defined to contain information related to a teacher. It’s definition can be seen in the next figure.
Figure 4: Teacher object structure chart. Street is as defined in Figure 2
Here is an example of a teacher object based on this definition.
<Teacher id="k0023" type="fulltime">
<EmployeeID href="#4587">
<Credentials code="4.1">
<DateHired>960717</DateHired>
<SchoolID href="#s0067" type="secondary">
<HomeRoom>23</HomeRoom>
<Department>Science</Department>
<BirthDate>780914</BirthDate>
<ContactID href="#33425">
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<TeacherName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</TeacherName>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/>
</Teacher>
The school object represents the information pertaining to a school. Here is an example of a school object based on this definition.
Figure 5: School Object structure chart
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"/> . . .
<TeacherID href="#4532a"/> . . .
</School>
This section defines the relationships among the objects defined above. The purpose of defining these relationships as part of the standard is to define the types of queries that framework complaint applications support. Since the framework does not support ad hoc queries, defining the relationships among objects separates out a subset of all possible queries that are valid. For example for the relationship "A Student has one or more teachers", the following queries are valid: "For a given student return the names of all teachers" or "Return all students whose teacher is Mrs. Smith" etc. The following relationships exist among the different objects.
Note that we have deliberately left out relationships like "A Teacher has one or more students" or "A Contact belongs to one or more Student". This is done because no immediate value is seen by adding these relationships. As the Framework proceeds new relationships may be defined as needed.
Having defined the relationships that exist among the different objects, this section now describes the types of queries that are valid. The following types of queries are valid.
Given the class of object return a number of records where each record contains one or more fields that make up an object and where each object selected meets the specified criteria
The simplest type of query of this type is in which a unique object is identified based on the class and an Id and one or more fields are returned. An example of this type of query is "For a Student object, where student id = 999-99-9999, return the name, address and phone number". In this case only one record is returned because the criteria specified picks a unique object.
Another query of this type is "For a Teacher object, return the names of all teachers teaching in Redmond". In this case the selection criteria picks a number a teachers so a number of records are returned.
The key to remember in this type of query is that the data returned is always from the same object type so these queries are valid for all objects that the Framework defines.
Given the class of one or more objects return a number of records where each record is made up fields from this object and/or it’s related object and where this object or the related objects meet the given criteria.
This is where the importance of defining relationships becomes apparent. If certain objects are not related (according to the Framework definition) then a query assuming this relationship is invalid.
An example of a valid query is "For a Student and Teacher object return the names of the students and names of the teachers where the student lives in WA state". In this case there is a relationship between a student and teacher so this query is valid.
Another example of a valid query is "For a Teacher and Contact object return the names of the teachers and names of the contacts where the contact relationship is spouse".
Yet another valid query is "For a Student, Teacher and Contact object return the names of students, teacher and contacts where the contacts are the teacher’s spouses".
This is an example of an invalid query. "For a Contact and School object return the names of the contacts belonging to WA state schools". The reason this is invalid is because there is no relationship between the Contact and School object.
Note: The exact mechanism needed to support this type of querying are still not clear. This section will be updated once the issues related to querying become clear. This will happen after the prototype has been implemented.
3 MESSAGES and EVENTS
In this section the real word events that are generated are identified and the messages that are exchanged among applications as a result of these events are defined. Consumers of data register with the framework to listen for these events. When they occur (they are typically generated by provider application) the data defined for these events is sent in the form of predefined messaged. The remainder of this section examines all these events and defines the XML messages that are exchanged. As before, detailed description of the elements that make up these events and messages are defined in Appendix A.
3.1 Overall Schools Interoperability Framework message Structure
Figure 5: The K12 Framework is made up of seven options; a event, a request, a response, a publish/unpublish and a subscribe/unsubscribe message. Note the exclusive OR connector. This means that the message can contain one and only one of the types describe below
This is the message that is sent when an event is generated by a provider application. Note that the data associated with the event is also sent in the same message.
Figure 6: Each K12Event message may be either an enrollment status change, an update of student information (partial or complete), and update of teacher information (partial or complete) , an update of contact information (partial or complete) , or an update of school information ( partial or complete). It is important to note that each K12Event carries only one type of update information (although it may carry multiple records of the same type)
Every message that is exchanged is preceded by a header. This header is shown in the following figure.
Figure 7: The message header records a unique tracking ID, the date, the time, the source of the update, and the number of transactions or record count.
Trigger Event: Student Enrollment Status changes.
This message is sent when the status of a student changes. This includes student enrollment, student withdrawal, student graduation, student transfer event.
Figure 8: The enrollment status change is used to withdraw a student, enroll a student or transfer a student. This message consists of the student ID (which links this to a student record), the effective date, the reason for the change, the change of status, and the school year. SPEEDE /ExPRESS codes are used for the reason for change and the change status coding.
The next example shows what an XML representation of this message looks like.
<K12Framework>
<K12Event>
<MsgHead>
<MsgID>349839845</MsgID>
<Date>19980821</Date>
<Time zone = "PS">22:10</Time>
<Source>TBD</Source>
<RecordCount>1</RecordCount>
</MsgHead>
<EnrollStatusChg>
<StudentID id = "236ST-983 />
<EffectiveDate>19980821</EffectiveDate>
<ChangeReason code = "EB4" />
<ChangedStatus code = "withdrawn" />
<SchoolYear>1998</SchoolYear>
</EnrollStatusChg>
</K12Event>
</K12Framework>
Note: Some of these examples are shown with indents to make the hierarchy clear but in reality there should be no leading white spaces in the middle of the XML stream.
Trigger Event: An entire student object is updated.
The Student Update message is sent when the entire information about the student needs to be transferred to another application. This typically happens when a new student is added to the system. This message simply contains the entire student object as show in the next figure. A definition of the fields in a student object can be found in Section 2.
Figure 9: Student Update Message
Example:
<K12Framework>
<K12Event>
<MsgHead>
<MsgID>349839845</MsgID>
<Date>19980821</Date>
<Time zone = "PS">22:10</Time>
<Source>TBD</Source>
<RecordCount>1</RecordCount>
</MsgHead>
<StudentUpdate>
<Student id="k0023"><ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName>
<FirstName>Helen</FirstName>
</StudentName>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName>
<StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL">
<Zip>60434</Zip>
</Address>
<SchoolID href="#s0067" type="secondary">
<GradeLvl>11</GradeLvl>
<GradYear type="original">1998</GradYear>
<Status code="enrolled"><ImmigrationStatus code="2">
<SSN>330-44-7788<SSN><Gender code="F">
<Race code="A"><BirthDate></BirthDate>
<TeacherID href="#78223">
<ContactID href="#33425">
</Student>
</StudentUpdate>
</K12Event>
</K12Framework>
Trigger Event: Some fields of a student object are updated.
Sometimes it is not necessary to send the entire student information. This happens when only some fields that make up a student object change. As example of this situation is when student’s address changes, this changed address should be the only field that is sent to other applications. The structure chart for this message is shown in the next figure.
Figure 10: Structure chart for a partial student update message. Note that all the fields except for student Id are optional. The Student ID field is used by the receiving application to identify with which student this updated information needs to be associated.
Here is an example of a partial student update message. In this message the student’s phone number and address are changed.
<K12Framework>
<K12Event>
<MsgHead>
<MsgID>349839845</MsgID>
<Date>19980821</Date>
<Time zone = "PS">22:10</Time>
<Source>TBD</Source>
<RecordCount>1</RecordCount>
</MsgHead>
<PartialStudentUpdate>
<StudentID id = "236ST-983 />
<PhoneNumber type = "primary">
<AreaCode>425</AreaCode>
<Number>555-1113</Number>
</PhoneNumber>
<Address>
<Street><StreetNumber>12934</StreetNumber>
<StreetName>Northup</StreetName>
<StreetType>Ave.</StreetType>
</Street>
<City>Woodenville</City>
<County>King</County>
<State code = "WA"/>
<ZIP>98034</ZIP>
</Address>
</PartialStudentUpdate>
</K12Event>
</K12Framework>
Note: For examples related to message described in the following section, please refer to Appendix A.
Trigger Event: An entire Teacher object is updated
This message is sent when all the information associated with a teacher needs to be updated. As in the case of the student update message this message simply contains the entire teacher object.
Figure 11: Teacher update message
3.7 Partial Teacher Update Message
Trigger Event: Some fields of a Teacher object are updated.
As before, the partial teacher update message is sent by an application when one or more individual fields of the teacher object change.
Figure 12: Partial Teacher Update message. Note that all the fields except for TeacherId are optional.
Trigger Event: An entire Contact object is updated.
This message is typically sent when a new contact is added to the system.
Figure 13: Contact update message
3.9 Partial Contact Update Message
Trigger Event: Some of the fields of a Contact Object are updated.
This message is sent when one or more fields of a contact object need to be updated
Figure 14: Partial Contact Update message. As before all the fields except ContactID are defined to be optional.
Trigger Event: An entire School object is updated
This message is sent when the information for the entire school object is updated.
Trigger Event: Some fields of a School object are updated.
This message is sent when some of the fields that make up a School Object are updated
Figure 15: Partial School Update Message
ID Change Message
Trigger Event: An ID changes for student, teacher, contact or school.
This message is sent when some ID is updated. The ID is used to uniquely identify an object.
Figure 16: Partial School Update Message
When an application needs data from another application it sends it a request specifying the data it is interested in (in other words it sends a query). This type of interaction is described in Section 4.1 in more detail. This section is about defining the message that needs to be formulated by the requesting application. This is still under discussion and once the details of this message have been worked out it will be included in this document. Some of the considerations that are being discussed in order to define this message are:
Figure 17: Each request bears a request ID for tracking purposes. A request also has a date, time, and source. The query is expected to be a text field containing an XML Query.
The response message is sent by the provider application after the request has been processed. It’s primary function is to return the data to the requesting application.
Figure 18: Each response bears the request ID as well as its own response ID for tracking purposes. A response may be a set of K12 elements, it may be a number (in response to a query such as "how many students . . ." or an error message may be returned if the query could not be executed for some reason.
A consumer application uses this message to register with the framework the events (and the associated data) that have to be routed to it.
Figure 19: The K12 Subscribe Message contains a subscription heading and a number of events to which the application may sbuscribe.
Note: Please refer to Appendix A for a list of valid events to which a consumer may subscribe.
Used by consumers to terminate subscriptions
Figure 20: The K12 UnSubscribe Message contains a subscription heading and a number of events to which the application may cancel subscriptions.
Used by providers to tell the framework which data items are supplied by that particular provider. The framework uses this information to determine where to route request messages from consumer applications.
Figure 21: The K12 Publish Message contains a publish heading and a number of data objects which may be queried by other applications.
Note: Please refer to Appendix A for a list of allowable objects. The idea here is that a provider of data tells the framework which data (in terms of objects) it can provide to consumers. It is important to note that it is assumed here that all the data contained in one object is provided by a single application. This is not an unreasonable assumption because of the way the objects have been defined. If we ever come across an object whose data is not contained in a single application we will have to break that object into 2 or more sub-objects such that each sub-object is provided by one application.
To tell the framework that this provider can no longer supply that particular data. To be used when an application terminates.
Figure 22: The K12 Publish Message contains a publish heading and a number of data objects which may no longer be queried by other applications.
This section examines the two modes of interaction that the standard defines. Applications use these two modes of interaction to exchange messages. These modes are:
.
In this mode of interaction a consumer application sends a query message to a provider application. This query message contains the request for data by defining which type of data needs to be returned. The framework identifies the correct provider for this query, routes the query to it, receives the response data and returns it to the consumer applications. The types of allowable queries and the messages are defined in section 3.0
(Give some examples)
In the type of interaction, a consumer registers interest in an event with the Framework. When this event is sent to the framework by a provider application, the event (and the associated data) is routed to the consumer(s) that are registered to listen for this event. The supported events and the messages they generate are described in section 3.0 (give example)
APPENDIX A: XML – TAG DOCUMENTATION
This section contains detailed documentation of each tag and attribute arranged in alphabetical order. Examples of the use of each tag are given.
<Address>
Description:
Identifies an address. See example below.
Required Attributes:
None
Example:
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<AptNumber>
Description:
Identifies the apartment number portion of an address. See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptNumber>2</AptNumber><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<AptNumPrefix>
Description:
Identifies new See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptNumPrefix>A</AptNumPrefix><AptNumber>2</AptNumber><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<AptNumSuffix>
Description:
Identifies the apartment number suffix. See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptNumber>2</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<AptType>
Description:
Identifies the apartment type. See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<AreaCode>
Description:
Identifies an area code within a telephone number. See example below.
Required Attributes:
None
Example:
<PhoneNumber type="primary">
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<BirthDate>
Description:
Identifies a birth date in the D8 format (CCYYMMDD) See example below.
Required Attributes:
None
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<ChangedStatus code=x>
Description:
Identifies a change in enrollment status. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the enrollment status |
enrolled withdrawn |
Required |
Example:
<EnrollStatusChg>
<StudentID href="#k0023"/>
<EffectiveDate>980909</EffectiveDate>
<ChangeReason code="D09"/>
<ChangedStatus code="withdrawn"/>
<SchoolYear>1998</SchoolYear>
</EnrollStatusChg>
<ChangeReason code=x>
Description:
Identifies the reason for a change in student enrollment status. This is a SPEEDE/EXPRESS code. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the reason why a student’s enrollment status had changed. The values are taken from SPEEDE/ExPRESS |
B27 Student is eligible to continue or return or both B28 Student is on suspension or dismissal B29 Student is expelled (from PreK - grade 12) B31 Not currently enrolled B38 Dropped B39 Academic Probation B40 Suspended B51 Student on Suspension or Dismissal; Eligible to Apply for Re-entry B52 According to established regulations or statutes D03 Student has attended a nonpublic school or home education program in- or out-of-state this year D04 Student was received from another attendance reporting unit in the same school D05 Student was received from a school in the same district D06 Student was received from another public school outside the district either in- or out-of-state D07 Student was received from a nonpublic school either in or out of the district or has returned after having been enrolled in a home education program; The student must have been enrolled previously in a public school this year D08 Student unexpectedly reentered the same school after withdrawing or being discharged D09 Student was expected to attend a school but did not enter as expected for unknown reasons D10 Student was promoted, retained, or transferred to another attendance-reporting unit in the same school D11 Student was promoted, retained, or transferred to another school in the same district D12 Student withdrew to attend another public school in the same district D13 Student withdrew to attend another public school in- or out-of-state D14 Student Over Compulsory Attendance Age Left School Voluntarily with No Intention of Returning D15 Student Graduated from School with a Standard Diploma D16 Student Graduated from School with a Special Diploma D17 Student Left School with a Certificate of Completion D18 Student Left School with a Special Certificate of Completion D19 Student Left School with a State General Education Development (GED) High School Diploma D20 Student Withdrew to Attend a Non-Public School or Home Education Program In- or Out-of-State. D21 Student withdrew from school due to hardship D22 Student has not entered any school in this or any other state this school year D23 Previously attended out-of-state public school but is entering a public school in this state for the first time this school year D24 Returned to Regular Education Program EB1 Deceased EB3 Withdrawn EB4 Graduated |
Required |
Example:
<EnrollStatusChg>
<StudentID href="#k0023"/>
<EffectiveDate>980909</EffectiveDate>
<ChangeReason code="D09"/>
<ChangedStatus code="withdrawn"/>
<SchoolYear>1998</SchoolYear>
</EnrollStatusChg>
<City>
Description:
Identifies the city portion of an address. See example below.
Required Attributes:
None
Example:
<Address>
<Street>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<Complex>
Description:
Identifies the apartment complex portion of an address. See example below.
Required Attributes:
None
Example:
<Address>
<Street><Complex>Englewood Estates</Complex><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<Contact ID=x type=x>
Description:
Identifies the contact object. This is made up of the Contact Name, Phone Numbers, Address, Gender, SSN, Race, and Relationship See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
ID=x |
Specifies the unique id of the contact |
String of text |
Required |
Type=x |
Specifies the type of contact |
Emergency Non-Emergency |
Required |
Example:
<Contact id="k0023 type="emergency">
<ContactName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</ContactName>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/>
<Relationship code="03"/>
</Contact>
<ContactID href=x>
Description:
Identifies a link to contact information. The href=x attribute links to the ID attribute on Contact. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to a contact |
A unique identifier |
Required |
Example:
<PartialStudentUpdate>
<StudentID href="#k0023"/>
<HomeRoom>23</HomeRoom>
<GradeLvl>12</GradeLvl>
<ContactID href="#33426"/>
</PartialStudentUpdate>
<ContactName>
Description:
Identifies a contact name. Made up of last name, middle name and first name. See example below.
Required Attributes:
None
Example:
<ContactName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</ContactName>
<ContactUpdate>
Description:
Identifies an event which provides complete updates or enters new updates to contact information databases. This event may consist of one or more <Contact> information objects. See example below.
Required Attributes:
None
Example:
<ContactUpdate>
<Contact id="c2345" type="emergency"> . . . </Contact>
<Contact id="c2346" type="non-emergency"> . . . </Contact>
<Contact id="c2347" type="emergency"> . . . </Contact>
</ContactUpdate>
<County>
Description:
Identifies the county portion of an address. See example below.
Required Attributes:
None.
Example:
<Address>
<Street><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL">
<Zip>60434</Zip>
</Address>
<Credentials code=x>
Description:
Identifies a teacher credentials using a SPEEDE/EXPRESS code. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the SPEEDE/EXPRESS credential code |
2.1 = Postsecondary certificate or diploma (less than one year) 2.2 = Postsecondary certificate or diploma (one year or more but less than four years) 2.3 = Associate Degree (e.g., Associate in Arts, Associate in Science, Associate in Applied Science) 2.4 = Baccalaureate Degree 2.5 = Baccalaureate (Honours) Degree 2.6 = Postsecondary certificate or diploma (one year or more but less than two years) 2.7 = Postsecondary certificate or diploma (two years or more but less than four years 3.1 = First Professional Degree 3.2 = Post-Professional Degree 4.1 = Graduate 4.2 = Master's Degree 4.3 = Intermediate Graduate Degree 4.4 = Doctoral Degree 4.5 = Post Doctoral |
Required |
Example:
<Teacher id="k0023" type="fulltime">
<EmployeeID href="#4587"/>
<Credentials code="4.1"/>
<DateHired>960717</DateHired>
<SchoolID href="#s0067" type="secondary"/>
<HomeRoom>23</HomeRoom>
<Department>Science</Department> . . . </Teacher>
<Date>
Description:
Identifies a date in the D8 format (CCYYMMDD). D8 is a date code specified by SPEEDE/ExPRESS. See example below.
Required Attributes:
None
Example:
<DateHired >
Description:
Identifies the date a teacher was hired in D8 format (CCYYMMDD) See example below.
Required Attributes:
None
Example:
<Teacher id="k0023" type="fulltime">
<EmployeeID href="#4587"/>
<Credentials code="4.1"/>
<DateHired>960717</DateHired>
<SchoolID href="#s0067" type="secondary">
<HomeRoom>23</HomeRoom>
<Department>Science</Department> . . . </Teacher>
<Department>
Description:
Identifies department to which a teacher reports. See example below.
Required Attributes:
None
Example:
<Teacher id="k0023" type="fulltime">
<EmployeeID href="#4587"/>
<Credentials code="4.1/>
<DateHired>960717</DateHired>
<SchoolID href="#s0067" type="secondary"/>
<HomeRoom>23</HomeRoom>
<Department>Science</Department> . . . </Teacher>
<DistrictNbr>
Description:
Identifies the school district number. See example below.
Required Attributes:
None
Example:
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"/> . . .
<TeacherID href="#4532a"/> . . .
</School>
<EffectiveDate >
Description:
Identifies the date on which a change in student enrollment takes effect. See example below.
Required Attributes:
None
Example:
<EnrollStatusChg>
<StudentID href="#k0023"/>
<EffectiveDate>980909</EffectiveDate>
<ChangeReason code="D09"/>
<ChangeStatus code="withdrawn"/>
<SchoolYear>1998</SchoolYear>
</EnrollStatusChg>
<ElectronicID type=x>
Description:
Identifies the optional electonic identifier associated with the student object. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
type=x |
Specifies the type of electronic identifier |
"barcode", "magstripe", "pin" |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<EmployeeID>
Description:
Identifies the teacher employee ID. See example below.
Required Attributes:
None
Example:
<Teacher id="k0023" type="fulltime">
<EmployeeID>#4587</EmployeeID>
<Credentials code="4.1"/>
<DateHired>960717</DateHired>
<SchoolID href="#s0067" type="secondary"/>
<HomeRoom>23</HomeRoom>
<Department>Science</Department> . . . </Teacher>
<EnrollStatusChg>
Description:
Identifies a change in enrollment event. See example below.
Required Attributes:
None
Example:
<EnrollStatusChg>
<StudentID href="#k0023"/>
<EffectiveDate>980909</EffectiveDate>
<ChangeReason code="D09"/>
<ChangeStatus code="withdrawn"/>
<SchoolYear>1998</SchoolYear>
</EnrollStatusChg>
<Error code=x>
Description:
Identifies an error condition that is returned within a K12 response. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the error message code |
1 = Insufficient Priv. 2 = Data not available (no data of this sort vs. null) 3 = Incorrect Query Syntax 4 = Resubmit Query |
Required |
Example:
<K12Response>
<ResponseHead>
<MsgID>#40250</MsgID>
<RequestMsgID>#32aa</RequestMsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
<RecordCount>4</RescordCount>
</ResponseHead>
<Error code="03"/>
</K12Response>
<Event type=x>
Description:
The K12 subscribe transaction has a subscription header that identifies the transaction, gives the date and time as well as the source. The subscribe transaction then contains one or more objects that it wishes to receive. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
type=x |
Specifies the event type |
studentupdate, partialstudentupdate, teacherupdate, partialteacherupdate, contactupdate, partialcontactupdate, schoolupdate, partialschoolupdate |
Required |
Example:
<K12Subscribe>
<SubscribeHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</SubscribeHead>
<Event type="studentupdate"/>
<Event type="partialstudentupdate"/>
</K12Subscribe>
<Extension>
Description:
Identifies the extension within a phone number. See example below.
Required Attributes:
None
Example:
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
<Ext>2304</Ext>
</PhoneNumber>
<FirstName>
Description:
Identifies the first name portion of a name. See example below.
Required Attributes:
None
Example:
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</StudentName>
<Gender code="x">
Description:
Identifies gender. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the SPEEDE/EXPRESS gender Code |
"M"(Male), "F" (Female), "U" (Unknown) |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<GradeLvl>
Description:
Identifies the student’s grade level See example below.
Required Attributes:
None
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<GradYear type=x>
Description:
Identifies the graduation year (projected or original). See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
type=x |
Specifies the graduation year type |
"original", "projected" |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<HomeRoom>
Description:
Identifies the student’s home room. See example below.
Required Attributes:
None
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<IDUpdate>
Description:
This message is sent when any object ID is updated. The IDUpdate will consist of a *ID and a New*ID to indicate the existing ID and the new ID. See example below.
Required Attributes:
None.
Example:
<IDUpdate>
<StudentID href="#33426"/>
<NewStudentID href="#33426"/>
</IDUpdate>
<ImmigrationStatus code=x>
Description:
Identifies a student’s immigration status by SPEEDE/EXPRESS code. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the immigration status SPEEDE/EXPRESS code |
1 U.S. Citizen 2 Non-Resident Alien 3 Resident Alien 4 Illegal Alien 5 Alien 6 U.S. Citizen - Non-Resident 7 U.S. Citizen - Resident 8 Citizen 9 Non-citizen with Student Authorization A Non-permanent Resident Alien B Permanent Visa C Temporary Visa |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<K12Event>
Description:
Identifies a K-12 Message. This may consist of an enrollment status change, a student update or partial student update, a contact update or partial contact update, a teacher update or partial teacher update or a school update or partial school update. Each message has a message header which identifies the message. A K12 Message can contain one or more like contents. For example a single message could send 12 student updates. But it could not mix student updates with teacher updates.
See example below.
Required Attributes:
None
Example:
<K12Event>
<MsgHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date><Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</MsgHead>
<EnrollStatusChg> . . . </EnrollStatusChg>
</K12Event>
<K12Framework>
Description:
Identifies the beginning of a K-12 Framework transction. May contain a K12 Message, a query, a response, or be used to subscribe or publish various data types. See example below.
Required Attributes:
None
Example:
<K12Framework>
<K12Event> . . . </K12Event>
</K12Framework>
<K12Publish>
Description:
This transaction is sent by an application that publishes or broadcasts one of the K12 message types.. The K12 publish transaction has a publish header that identifies the data objects it holds, gives the date and time as well as the source. The publish transaction may contain one or more data objects that it publishes and to which other applications may query. See example below.
Required Attributes:
None
Example:
<K12Publish>
<PublishHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</PublishHead>
<Object type="student"/>
<Object type="teacher"/>
</K12Publish>
<K12Request>
Description:
Identifies query between one application and another. The K12Request is used to ask for information that is not broadcast by subscription. The K12 Request has a request head and the query itself. See example below.
Required Attributes:
None
Example:
<K12Request>
<RequestHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</RequestHead>
<XMLQuery> This is the query </XMLQuery>
</K12Request>
<K12Response>
Description:
Identifies the response to a K12 request. The response contains a response header followed by either an error, a numeric answer to the query, or response data. See example below.
Required Attributes:
None
Example:
<K12Response>
<ResponseHead>
<MsgID>#40250</MsgID>
<RequestMsgID>#32aa</RequestMsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
<RecordCount>1</RescordCount>
</ResponseHead>
<Number>102</Number>
</K12Response>
<K12Subscribe>
Description:
This transaction is sent by an application that wishes to subscribe to one of the K12 message types. The K12 subscribe transaction has a subscription header that identifies the transaction, gives the date and time as well as the source. The subscribe transaction then contains one or more events that it wishes to receive. See example below.
Required Attributes:
None
Example:
<K12Subscribe>
<SubscribeHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</SubscribeHead>
<Event type="studentupdate"/>
<Event type="partialstudentupdate"/>
</K12Subscribe>
<K12UnPublish>
Description:
This transaction is sent by an application that publishes or broadcasts one of the K12 message types.. The K12 unpublish transaction has a publish header that identifies the data objects it holds, gives the date and time as well as the source. The unpublish transaction may contain one or more data objects that it no longer publishes. See example below.
Required Attributes:
None
Example:
<K12UnPublish>
<PublishHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</PublishHead>
<Object type="student"/>
<Object type="teacher"/>
</K12UnPublish>
<K12UnSubscribe>
Description:
This transaction is sent by an application that wishes to unsubscribe to one of the K12 message types. The K12 subscribe transaction has a subscription header that identifies the transaction, gives the date and time as well as the source. The subscribe transaction then contains one or more events for which it no longer need notification. See example below.
Required Attributes:
None
Example:
<K12UnSubscribe>
<SubscribeHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</SubscribeHead>
<Event type="studentupdate/>
<Event type="partialstudentupdate"/>
</K12UnSubscribe>
<LastName>
Description:
Identifies a last name within a full name See example below.
Required Attributes:
None
Example:
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</StudentName>
<Middle>
Description:
Identifies a middle name within a full name. See example below.
Required Attributes:
None
Example:
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</StudentName>
<MsgHead>
Description:
Identifies the heading of a K12 Message. See example below.
Required Attributes:
None
Example:
<K12Event>
<MsgHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</MsgHead>
<EnrollStatusChg> . . . </EnrollStatusChg>
</K12Event>
<MsgID>
Description:
Identifies the K12 Message. See example below.
Required Attributes:
None
Example:
<K12Event>
<MsgHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date><Time zone="PS">10:20:15</Time>
<Source>http://admin.student.com:80/</Source>
</MsgHead>
<EnrollStatusChg> . . . </EnrollStatusChg>
</K12Event>
<NewContactID href=x>
Description:
Identifies a new contact ID and a link to contact information. The href=x attribute links to the ID attribute on Contact. The NewContactID href must match the ContactID href. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to a contact |
A unique identifier |
Required |
Example:
<IDUpdate>
<ContactID href="#33426"/>
<NewContactID href="#33426"/>
</IDUpdate>
<NewSchoolID href=x>
Description:
Identifies a new school ID and a link to school information. The href= attribute links to the ID value on the school object. The NewSchoolID href must match the SchoolID href. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to a school |
A unique identifier |
Required |
Example:
<IDUpdate>
<SchoolID href="#33426"/>
<NewSchoolID href="#33426"/>
</IDUpdate>
<NewStudentID href=x>
Description:
Identifies a new student unique identifier and a link to a set of student information. The href attribute links by matching the ID attribute on <Student>. The NewStudentID href must match the StudentID href. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to student information |
String of text |
Required |
Example:
<IDUpdate>
<StudentID href="#33426"/>
<NewStudentID href="#33426"/>
</IDUpdate>
<NewTeacherID href=x>
Description:
Identifies a new teacher unique identifier and a link to teacher information. The href= attribute links to a matching ID on <teacher>. The NewTeacherID href must match the TeacherID href. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to a teacher |
String of text |
Required |
Example:
<IDUpdate>
<TeacherID href="#33426"/>
<NewTeacherID href="#33426"/>
</IDUpdate>
<Number>
Description:
Identifies the number portion of a phone number. See example below.
Required Attributes:
None
Example:
<PhoneNumber type="primary">
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<Object type=x>
Description:
The K12 publish transaction may contain one or more data objects that it publishes and to which other applications may subscribe. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
type=x |
Specifies the object type |
student, teacher, contact, school |
Required |
Example:
<K12Publish>
<PublishHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</PublishHead>
<Object type="student">
<Object type="teacher">
</K12Publish>
<PartialContactUpdate>
Description:
Identifies a partial update of contact information. This element must have a contact ID. This may contain any of the contact data fields which have changed. See example below.
Required Attributes:
None
Example:
<PartialContactUpdate>
<TeacherID href="#22334">
<PhoneNumber type="primary"> . . . </PhoneNumber>
<Address> . . . </Address>
</PartialContactUpdate>
<PartialSchoolUpdate>
Description:
Identifies a partial update of school information. This element must have a school ID. This may contain any of the school data fields which have changed. See example below.
Required Attributes:
None
Example:
<PartialSchoolUpdate>
<ContactID href="#s7434">
<PhoneNumber type="primary"> . . . </PhoneNumber>
<DistNumber> . . . </DistNumber>
</PartialSchoolUpdate>
<PartialStudentUpdate>
Description:
Identifies a partial update of student information. This may contain any of the student fields which have changed. Update options include an optional barcode, optional homeroom, one or phone numbers, the student name, address, grade level, graduation year, enrollment status, immigration status, an optional social security number, gender, race, birth date, and optional related teacher IDs and contact IDs.
See example below.
Required Attributes:
None
Example:
<PartialStudentUpdate>
<StudentID href="#k0023"/>
<HomeRoom>23</HomeRoom>
<GradeLvl>12</GradeLvl>
<ContactID href="#33426"/>
</PartialStudentUpdate>
<PartialTeacherUpdate>
Description:
Identifies a partial update of teacher information. This must include a <TeacherID> and may include updates to Teacher Name, Employee ID, Credentials, DateHired, associated School IDs, HomeRoom, Department, Birth Date, one or more Contact IDs, Phone Numbers , Address, Social Security Number, Gender, and Race. See example below.
Required Attributes:
None
Example:
<PartialTeacherUpdate>
<TeacherID href="#k0023">
<Credentials code="4.3">
<HomeRoom>23</HomeRoom>
</PartialTeacherUpdate>
<PhoneNumber type=x>
Description:
Identifies a phone number made up of an area code and a number. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
type=x |
Specifies the type of phone number |
primary, secondary |
Required |
Example:
<PhoneNumber type="primary">
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<PublishHead>
Description:
Contains header information for the K12 publish transaction. The K12 publish transaction has a publish header that identifies the data objects it holds, gives the date and time as well as the source. The publish transaction may contain one or more data objects that it publishes and to which other applications may query. See example below.
Required Attributes:
None
Example:
<K12Publish>
<PublishHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</PublishHead>
<Object type="student"/>
<Object type="teacher"/>
</K12Publish>
<Race code=x>
Description:
Identifies the SPEEDE/EXPRESS code for race. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the SPEEDE/EXPRESS race code (DMG05) |
7 Not Provided A Asian or Pacific Islander B Black C Caucasian D Subcontinent Asian American E Other Race or Ethnicity F Asian Pacific American G Native American H Hispanic I American Indian or Alaskan Native J Native Hawaiian N Black (Non-Hispanic) O White (Non-Hispanic) P Pacific Islander Z Mutually Defined |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary">
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"><ImmigrationStatus code="2">
<SSN>330-44-7788<SSN><Gender code="F">
<Race code="A"><BirthDate>891209</BirthDate>
<TeacherID href="#78223">
<ContactID href="#33425">
</Student>
<RecordCount>
Description:
Identifies the record count of the data sent as a response to a K12 request. See example below.
Required Attributes:
None
Example:
<K12Response>
<ResponseHead>
<MsgID>#40250</MsgID>
<RequestMsgID>#32aa</RequestMsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
<RecordCount>1</RescordCount>
</ResponseHead>
<Number>102</Number>
</K12Response>
<Relationship code=x>
Description:
Identifies the relationship of a contact to the student or teacher who is associated to that contact. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the SPEEDE/EXPRESS contact code |
01 Spouse 02 Son or Daughter 03 Father or Mother 04 Grandfather or Grandmother 05 Grandson or Granddaughter 06 Uncle or Aunt 07 Nephew or Niece 08 Cousin 09 Adopted Child 10 Foster Child 11 Son-in-law or Daughter-in-law 12 Brother-in-law or Sister-in-law 13 Mother-in-law or Father-in-law 14 Brother or Sister 15 Ward 17 Stepson or Stepdaughter 18 Self 19 Child 20 Employee 21 Unknown 22 Handicapped Dependent 23 Sponsored Dependent 24 Dependent of a Minor Dependent 25 Ex-spouse 26 Guardian 27 Student 28 Friend 29 Significant Other 30 Both Parents 31 Court Appointed Guardian 32 Mother 33 Father 34 Other Adult 37 Agency Representative 48 Stepfather 49 Stepmother 50 Foster Parent 51 Emergency Contact 52 Employer 53 Life Partner 55 Adopted Daughter 56 Adopted Son 57 Adoptive Father 58 Adoptive Mother 59 Adoptive Parents 61 Aunt 62 Brother 63 Brother-in-Law 74 Daughter 75 Daughter-in-Law 76 Dependent 79 Ex-wife 80 Family Member 81 Father-in-Law 82 Fiancé (Male) 83 Financée (Female) 86 Foster Daughter 87 Foster Father 88 Foster Mother 90 Foster Son 97 Grandfather 98 Grandmother 99 Grandparents A2 Great Aunt A3 Ex-husband A4 Hlf Brother A5 Half Sister A6 Husband A9 Mother-in-Law B1 Nephew B2 Niece B3 Parents-in-Law B4 Partnership B5 Partner B7 Sister B8 Sister-in-Law C1 Son C2 Son-in-Law C3 Step Brother D3 Uncle D4 Wife D5 Teacher D6 School Counselor D7 School Principal D8 Other School Administrator D9 Coach E1 Activity Sponsor E2 Supervisor E4 Minister or Priest E5 Ecclesiastical or Religious Leader E7 Probation Officer E9 Advisor G2 Educator/Teacher/Instructor G6 Medical Care Provider G8 Other Relationship G9 Other Relative ZZ Mutually Defined |
Required |
Example:
<Contact id="k0023 type="emergency">
<ContactName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</ContactName>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL">
<Zip>60434</Zip>
</Address>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/>
<Relationship code="03"/>
</Contact>
<RequestHead>
Description:
Identifies header information for a K12 request. The head is made up of a unique identifier for tracking purposes, a date and time, and a source. See example below.
Required Attributes:
None
Example:
<K12Request>
<RequestHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</RequestHead>
<XMLQuery> This is the query </XMLQuery>
</K12Request>
<RequestMsgID>
Description:
Specifies the identifier of the K12 request which is being responded to. This is part of the <K12Response> header. See example below.
Required Attributes:
None
Example:
<K12Response>
<ResponseHead>
<MsgID>#40250</MsgID>
<RequestMsgID>#32aa</RequestMsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
<RecordCount>4</RescordCount>
</ResponseHead>
<ResponseData>
<LastName>Sharma</LastName>
<LastName></LastName>
<LastName>Kennedy</LastName>
</ResponseData>
</K12Response>
<ResponseData>
Description:
Identifies the data return from a K12 request. Response data may contain text or any element defined as part of the K12 Framework tag set. See example below.
Required Attributes:
None
Example:
<K12Response>
<ResponseHead>
<MsgID>#40250</MsgID>
<RequestMsgID>#32aa</RequestMsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
<RecordCount>4</RescordCount>
</ResponseHead>
<ResponseData>
<PartialStudentUpdate>
<StudentID href="#k0023"/>
<HomeRoom>23</HomeRoom>
<GradeLvl>12</GradeLvl>
</PartialStudentUpdate>
<PartialStudentUpdate>
<StudentID href="#k0024"/>
<HomeRoom>13</HomeRoom>
<GradeLvl>12</GradeLvl>
</PartialStudentUpdate>
</ResponseData>
</K12Response>
<ResponseHead>
Description:
Identifies the header of a K12 Response. This contains a unique message id, the identifier of the message that is being responded to, date, time, source, and the number of records in the response. See example below.
Required Attributes:
None
Example:
<K12Response>
<ResponseHead>
<MsgID>#40250</MsgID>
<RequestMsgID>#32aa</RequestMsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
<RecordCount>1</RescordCount>
</ResponseHead>
<Number>102</Number>
</K12Response>
<School ID=x code=x>
Description:
Identifies the school object. This is made up of school name, address, phone numbers, district numbers, associated student IDs, and associated teacher IDs. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
ID=x |
Specifies the unique school identifier |
String of text |
Required |
Code=x |
Specifies the SPEEDE/EXPRESS code for the School |
HS High School VU Elementary School VQ Middle School VR Junior High |
Required |
Example:
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"/> . . .
<TeacherID href="#4532a"/> . . .
</School>
<SchoolID href=x>
Description:
Identifies a link to school information. The href= attribute links to the ID value on the school object. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to a school |
A unique identifier |
Required |
Example:
<PartialStudentUpdate>
<StudentID href="#k0023"/>
<HomeRoom>23</HomeRoom>
<GradeLvl>12</GradeLvl>
<ContactID href="#33426"/>
</PartialStudentUpdate>
<SchoolName>
Description:
Identifies the formal school name. See example below.
Required Attributes:
None
Example:
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"/> . . .
<TeacherID href="#4532a"/> . . .
</School>
<SchoolUpdate>
Description:
Identifies an event which provides complete updates or enters new updates to school information databases. This event may consist of one or more <School> information objects. See example below.
Required Attributes:
None
Example:
<SchoolUpdate>
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"/> . . .
<TeacherID href="#4532a"/> . . .
</School>
<SchoolUpdate>
<SchoolYear>
Description:
Identifies the school year for which an enrollment change takes effect. See example below.
Required Attributes:
None
Example:
<EnrollStatusChg>
<StudentID href="#k0023"/>
<EffectiveDate>980909</EffectiveDate>
<ChangeReason code="D09"/>
<ChangedStatus code="withdrawn"/>
<SchoolYear>1998</SchoolYear>
</EnrollStatusChg>
<Source>
Description:
Identifies the source of a transaction for K12 Framework. Source is a unique system identifier. See example below.
Required Attributes:
None
Example:
<K12Event>
<MsgHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date><Time zone="PS">10:20:15</Time>
<Source>http://admin.student.com:80/</Source>
</MsgHead>
<EnrollStatusChg> . . . </EnrollStatusChg>
</K12Event>
<SSN>
Description:
Identifies a social security number. See example below.
Required Attribute:
None
Example:
<PartialStudentUpdate>
<StudentID href="#k0023"/>
<HomeRoom>23</HomeRoom>
<GradeLvl>12</GradeLvl>
<SSN>334-88-7892</SSN>
<ContactID href="#33426"/>
</PartialStudentUpdate>
<State code="x">
Description:
Identifies the state portion of an address. This is an empty element and uses the XML empty element syntax. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the state code |
AL, AK, AZ, AR, CA, CO, CT, DE, DC, DL, FL, GA, HI, ID, IL, IN, IA, KS, KY, ME, MD, MA, MI, MN, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, PR, RI, SC, TN, TX, UT, VT, VA, WA, WV, WI, WY |
Required |
Example:
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<Status code=x>
Description:
Identifies a student’s enrollment status. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
code=x |
Specifies the enrollment status |
"enrolled", "withdrawn" |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber> . . . </PhoneNumber>
<StudentName> . . . </StudentName>
<Address> . . . </Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"/><ImmigrationStatus code="2"/>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate>891209</BirthDate>
<TeacherID href="#78223"/>
<ContactID href="#33425"/>
</Student>
<Street>
Description:
Identifies the street portion of an address. This may consist of the complex, street prefix, street name, street number, street type, street suffix, apartment type, apartment number prefix, apartment number, apartment number suffix, See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City><County>Cook</County>
<State code="IL"/><Zip>60434</Zip>
</Address>
<StreetName>
Description:
Identifies the street name portion of an address. See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<StreetNumber>
Description:
Identifies the street number portion of an address. See example below.
Required Attributes:
None.
Example:
<Address>
<Street>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<StreetPrefix>
Description:
Identifies the street prefix portion of an address. Typically this is a direction (such as N or S). See example below.
Required Attributes:
None
Example:
<Address>
<Street>
<StreetPrefix>N.</StreetPrefix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<StreetSuffix>
Description:
Identifies the street suffix portion of an address. Typically this is a compound direction (such as NW or SE). See example below.
Required Attributes:
None
Example:
<Address>
<Street>
<StreetNumber>144</StreetNumber>
<StreetName>Washington</StreetName><StreetType>Avenue</StreetType>
<StreetSuffix>NW</StreetSuffix>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<StreetType>
Description:
Identifies the street type portion of an address (such as Avenue or Court). See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL">
<Zip>60434</Zip>
</Address>
<Student id=x>
Description:
Identifies the student as a data object. Student consists of an optional barcode, optional homeroom, one or phone numbers, the student name, address, grade level, graduation year, enrollment status, immigration status, an optional social security number, gender, race, birth date, and optional related teacher IDs and contact IDs.
See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
id=x |
Specifies the unique student ID |
String of text |
Required |
Example:
<Student id="k0023">
<ElectronicID type="barcode">778899</ElectronicID>
<HomeRoom>23</HomeRoom>
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</StudentName>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL">
<Zip>60434</Zip>
</Address>
<SchoolID href="#s0067" type="secondary"/>
<GradeLvl>11</GradeLvl><GradYear type="original">1998</GradYear>
<Status code="enrolled"><ImmigrationStatus code="2">
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/><BirthDate></BirthDate><TeacherID href="#78223">
<ContactID href="#33425">
</Student>
<StudentID href=x>
Description:
Identifies a link to a set of student information. The href attribute links by matching the ID attribute on <Student>. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to student information |
String of text |
Required |
Example:
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<PhoneNumber> . . . </PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"> . . .
<TeacherID href="#4532a"> . . .
</School>
<StudentName>
Description:
Identifies the student name. Student name is made up of last name, middle name, and first name. See example below.
Required Attributes:
None
Example:
<StudentName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</StudentName>
<StudentUpdate>
Description:
Identifies a student update event. This is made up of a student object. See example below.
Required Attributes:
None
Example:
<StudentUpdate>
<Student id="k0023>
. . .
</Student>
</StudentUpdate>
<SubscribeHead>
Description:
Identifies the header of a K12 subscribe transaction. The header contains a message identifier, a date, time and source. The subscribe transaction then contains one or more objects that it wishes to receive. See example below.
Required Attributes:
None
Example:
<K12Subscribe>
<SubscribeHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</SubscribeHead>
<Event type="studentupdate">
<Event type="partialstudentupdate">
<EventUnsubscribe type="schoolupdate">
<EventUnsubscribe type="partialschoolupdate">
</K12Subscribe>
<Teacher ID=x type=x>
Description:
Identifies a teacher object. Teacher consists of a Teacher Name, Employee ID, Credentials, DateHired, associated School IDs, HomeRoom, Department, Birth Date, one or more Contact IDs, Phone Numbers , Address , Social Security Number, Gender, and Race. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
id=x |
Unique ID of a teacher |
String of data |
Required |
type=x |
Type of teacher |
substitute, student, fulltime |
Required |
Example:
<Teacher id="k0023" type="fulltime">
<EmployeeID href="#4587">
<Credentials code="4.1">
<DateHired>960717</DateHired>
<SchoolID href="#s0067" type="secondary">
<HomeRoom>23</HomeRoom>
<Department>Science</Department>
<BirthDate>780914</BirthDate>
<ContactID href="#33425">
<PhoneNumber>
<AreaCode>519</AreaCode><Number>3334455</Number>
</PhoneNumber>
<TeacherName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</TeacherName>
<Address>
<Street><StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
<SSN>330-44-7788<SSN><Gender code="F"/>
<Race code="A"/>
</Teacher>
<TeacherID href=x>
Description:
Identifies a link to teacher information. The href= attribute links to a matching ID on <teacher>. See example below.
Required Attributes:
Attributes |
Description |
Possible Values |
Default |
href=x |
Specifies the link to a teacher |
String of text |
Required |
Example:
<School id="k2345" code="HS">
<SchoolName>York High School</SchoolName>
<PhoneNumber> . . . </PhoneNumber>
<DistrictNbr>544</DistrictNbr>
<StudentID href="#6712"/> . . .
<TeacherID href="#4532a"/> . . .
</School>
<TeacherName>
Description:
Identifies the teacher’s name. See example below.
Required Attributes:
None
Example:
<TeacherName><LastName>Kennedy</LastName>
<MiddleName>Jean</MiddleName><FirstName>Helen</FirstName>
</TeacherName>
<TeacherUpdate>
Description:
Identifies an event which provides complete updates or enters new updates to teacher information databases. This event may consist of one or more <Teacher> information objects. See example below.
Required Attributes:
None
Example:
<TeacherUpdate>
<Teacher ID="34134" type="substitute">
. . . </Teacher>
<Teacher ID="784134">
. . . </Teacher>
</TeacherUpdate>
<Time zone=x>
Description:
Identifies the time a K12 transaction was sent. See example below.
Required Attributes:
Attribute |
Description |
Possible Values |
Default |
zone=x |
Specifies the SPEEDE/EXPRESS time zone code |
Alaska Daylight ="AD" Eastern Daylight ="ED" Mountain Daylight ="MD" |
Required |
Example:
<K12Event>
<MsgHead>
<MsgID>#40250</MsgID>
<Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time>
<Source>http://admin.student.com:80/</Source>
</MsgHead>
<EnrollStatusChg> . . . </EnrollStatusChg>
</K12Event>
<XMLQuery>
Description:
Identifies a query field within a K12 request. This is a free text field that contains a query. See example below.
Required Attributes:
None
Example:
<K12Request>
<RequestHead>
<MsgID>#40250</MsgID><Date>10-20-1997</Date>
<Time zone="PS">10:20:15</Time><Source>http://admin.student.com:80/</Source>
</RequestHead>
<XMLQuery> This is the query </XMLQuery>
</K12Request>
<Zip>
Description:
Identifies the zip code portion of an address. See example below.
Required Attributes:
None
Example:
<Address>
<Street><AptType>Suite</AptType>
<AptNumber>201</AptNumber><AptNumSuffix>B</AptNumSuffix>
<StreetNumber>146</StreetNumber>
<StreetName>Tarpon</StreetName><StreetType>Court</StreetType>
</Street>
<City>Homewood</City>
<County>Cook</County>
<State code="IL"/>
<Zip>60434</Zip>
</Address>
APPENDIX B: XML – TAG REFERENCE
The table is organized alphabetically by element name. This table can provide a quick reference for those who quickly want to review elements of the XML tag set.
.
Name |
Title |
Description |
Address |
Address |
Student Address |
AptNumber |
Apartment Number |
Apartment Number |
AptNumPrefix |
Apartment Number Prefix |
The prefix of an apartment number |
AptNumSuffix |
Apartment Number Suffix |
Apartment Number Suffix |
AptType |
Apartment Type |
This specifies the type of apartment such as suite |
AreaCode |
Area Code |
The area code in the form xxx (3 numeric) |
BirthDate |
Birth Date |
Date of Birth D8 format (CCYYMMDD) |
ChangedStatus |
Changed Status |
New, or changed status |
ChangeReason |
Change Reason |
Reason Code from SPEEDE/EXPRESS |
City |
City |
Free-form text for city name |
Complex |
Complex |
Apartment Complex designation |
Contact |
Contact |
Student Contact information |
ContactID |
Contact ID |
Contact Unique Identifier |
ContactName |
Contact Name |
Contact Name |
ContactUpdate |
Contact Update |
Contact Update Message |
County |
County |
Code identifying the county within a state Note to User: This list is available from the National Technical Information Service, 5285 Port Royal Road, Springfield, VA 22161. SPEEDE/EXPRESS CODE IND04 |
Credentials |
Credentials |
SPEEDE/EXPRESS for codes for credential code fields |
Date |
Date |
In the form D8 (CCYYMMDD) |
DateHired |
Date Hired |
Indicates the date hired. D8 format (CCYYMMDD) |
Department |
Department |
Identifies the department to which the teacher reports |
DistrictNbr |
District Nbr |
Identifies the School District |
EffectiveDate |
Effective Date |
Date in D8 format CCYYMMDD |
ElectronicID |
Electronic Identifier |
Student Electronic identifier, may be a barcode, magstripe, or pin |
EmployeeID |
Employee ID |
The teacher's employee ID |
EnrollStatusChg |
Enroll Status Change |
This event specifies a change in enrollment status. Changes include admissions, withdrawls, and graduations |
Error |
Error |
This is a error condition which is returned instead of data or a count |
Event |
Event |
|
Ext |
Ext |
This is the extension. This is an alpha numeric field |
FirstName |
First Name |
First name |
Gender |
Gender |
SPEEDE/EXPRESS DMG03 |
GradeLvl |
Grade Level |
Identifies the grade level of the student |
GradYear |
Grad Year |
Identifies the graduation year in D8 format YY |
HomeRoom |
Home Room |
Identifies the student home room |
IDUpdate |
ID Update |
A message to indicate a change in an object’s unique identifier |
ImmigrationStatus |
Immigration Status |
Specifies the immigration status SPEEDE/EXPRESS codes |
K12Event |
K12 Event |
The K12 Event Message is sent in response to an event in which data in a K12 educational software application changes. This message is sent to notify other applications of the kind of change and to automatically deliver the changed data. |
K12Framework |
K12Framework |
K12 Message Framework |
K12Publish |
K12 Publish |
K12 Publish data object message |
K12Request |
K12 Request |
A K12 Request is a query from one software application for information from another application |
K12Response |
K12 Response |
The K12 Response is sent by the software application which was requested to send information. The response may contain the information fields which were requested, or may contain reasons why the information could not be returned |
K12Subscribe |
K12 Subscribe |
K12 Subscription Message |
K12Unpublish |
K12 Unpublish |
K12 Withdraw from Publication Message |
K12Unsubscribe |
K12 Unsubscribe |
K12 Withdraw Subscription Message |
LastName |
Last Name |
Last name, may be hyphenated |
MiddleName |
Middle Name |
Middle name field. This is required. If no middle name the field is still required. If two middle names, both go in this field |
MsgHead |
Message Head |
Identifies the source of the message, perhaps the date. This is to be determined at the time of implementation |
MsgID |
Message ID |
This is the unique identifier of this message Generated by the source |
NewContactID |
New Contact ID |
Indicates a new Contact unique identifier |
NewSchoolID |
New School ID |
Indicates a new School unique identifier |
NewStudentID |
New Student ID |
Indicates a new Student unique identifier |
NewTeacherID |
New Teacher ID |
Indicates a new Teacher unique identifier |
Number |
Number |
This field is used to return a count in response to a query |
Object |
Object |
Data Object |
PartialContactUpdate |
Partial Contact Update |
This element contains all contact fields for partial update |
PartialSchoolUpdate |
Partial School Update |
Used to update part of the school information |
PartialStudentUpdate |
Partial Student Update |
This contains any of the student data fields which may make up a partial update |
PartialTeacherUpdate |
Partial Teacher Update |
This element contains all teacher data fields to enable partial update |
PhoneNumber |
Phone Number |
Phone Number |
PublishHead |
Publish Head |
Heading of Publish Message |
Race |
Race |
SPEEDE/EXPRESS DMG05 |
RecordCount |
Record Count |
This indicates the number of records being sent or returned |
Relationship |
Relationship |
This specifies the relationship between the contact and the student |
RequestHead |
RequestHead |
This is the header information for the request |
RequestMsgID |
RequestMsgID |
This is used to match the response to the request |
ResponseData |
ResponseData |
Response Data returned to a Query or K12 Request |
ResponseHead |
ResponseHead |
Header for Response messages |
School |
School |
This is the school information object |
SchoolID |
SchoolID |
Unique School Identifier |
SchoolName |
SchoolName |
Official School Name |
SchoolUpdate |
SchoolUpdate |
This message updates school information |
SchoolYear |
SchoolYear |
School Year in D8 format YY |
Source |
Source |
The Network Identifier identifies the sender of the message |
SSN |
SSN |
Social Security number is not a student identifier |
State |
State |
Two letter state code SPEEDE/EXPRESS CODE IND04 |
Status |
Status |
Identifies the status of the student in the school, such as enrolled, withdrawn |
Street |
Street |
This is made up of a number of nodes |
StreetName |
Street Name |
Street Name |
StreetNumber |
Street Number |
Address number |
StreetPrefix |
StreetPrefix |
Direction such as N, S, E, W, NW |
StreetSuffix |
StreetSuffix |
Another Direction such as NW, NE |
StreetType |
Street Type |
This is the type of street such as Ave. Street, Blvd |
Student |
Student |
This defines the student object. It will be placed inside messages |
StudentID |
Student ID |
Unique Student Identifier |
StudentName |
Student Name |
Student Name, made up of first name, middle name, last name |
StudentUpdate |
Student Update |
Student Information Update Message |
SubscribeHead |
Subscribe Head |
Subscription Heading |
Teacher |
Teacher |
Teacher data object |
TeacherID |
TeacherID |
Unique Identifier for a Teacher |
TeacherName |
Teacher Name |
Teacher’s name |
TeacherUpdate |
Teacher Update |
Update to Teacher Information |
Time |
Time |
This specifies the Time in |
XMLQuery |
XMLQuery |
This is the actual request, sent as an XQL query |
Zip |
Zip |
Zip Code |
<!--This represents the framework for communiations protocols in the K-12 environment-->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE K12Framework [
<!ELEMENT K12Framework (K12Event | K12Request | K12Response | K12Publish |
K12Subscribe) >
<!--The K12 Message is sent in response to an event in which data in a K12
educational software application changes. This message is sent to notify other applications
of the kind of change and to automatically deliver the changed data.-->
<!ELEMENT K12Event (MsgHead,(EnrollStatusChg+ | StudentUpdate+ |
PartialStudentUpdate+ | TeacherUpdate+ | PartialTeacherUpdate+ |
ContactUpdate+ | PartialContactUpdate+ | SchoolUpdate+ |
PartialSchoolUpdate+ | IDUpdate)) >
<!--Identifies the source of the message, perhaps the date.
This is to be determined at the time of implementation-->
<!ELEMENT MsgHead (MsgID,Date,Time,Source,RecordCount) >
<!--This is the unique identifier of this message
Generated by the source-->
<!ELEMENT MsgID (#PCDATA) >
<!--In the form D8 (CCYYMMDD)-->
<!ELEMENT Date (#PCDATA) >
<!--This specifies the Time in-->
<!ELEMENT Time (#PCDATA) >
<!--AD = Alaska Daylight
AS = Alaska Standard
ED = Eastern Daylight
ES = Eastern Standard
CD = Central Daylight
CS = Central Standard
MD = Mountain Daylight
MS = Mountain Standard
PD = Pacific Daylight
PS = Pacific Standard
HD = Hawaii Daylight
HS = Hawaii Standard-->
<!ATTLIST Time
zone (AD | AS | ED | ES | CD | CS | MD | MS | PD | PS | HD | HS)
#REQUIRED >
<!--The Network Identifier identifies the sender of the message-->
<!ELEMENT Source (#PCDATA) >
<!--This indicates the number of records being sent or returned-->
<!ELEMENT RecordCount (#PCDATA) >
<!--This event specifies a change in enrollment status. Changes include admissions, withdrawls,
and graduations-->
<!ELEMENT EnrollStatusChg (StudentID,EffectiveDate,ChangeReason,ChangedStatus,
SchoolYear) >
<!ELEMENT StudentID EMPTY >
<!--the #href value matches the ID value on <student>-->
<!ATTLIST StudentID
href CDATA #REQUIRED >
<!ELEMENT NewStudentID EMPTY >
<!--the #href value matches the ID value on <student>-->
<!ATTLIST NewStudentID
href CDATA #REQUIRED >
<!--Date in D8 format CCYYMMDD-->
<!ELEMENT EffectiveDate (#PCDATA) >
<!--Reason Code from SPEEDE/EXPRESS-->
<!ELEMENT ChangeReason EMPTY >
<!--B27 Student is eligible to continue or return or both
B28 Student is on suspension or dismissal
B29 Student is expelled (from PreK - grade 12)
B31 Not currently enrolled
B38 Dropped
B39 Academic Probation
B40 Suspended
B51 Student on Suspension or Dismissal; Eligible to Apply for Re-entry
B52 According to established regulations or statutes
D03 Student has attended a nonpublic school or home education program in- or out-of-state this year
D04 Student was received from another attendance reporting unit in the same school
D05 Student was received from a school in the same district
D06 Student was received from another public school outside the district either in- or out-of-state
D07 Student was received from a nonpublic school either in or out of the district or has returned after having been enrolled in a home education program; The student must have been enrolled previously in a public school this year
D08 Student unexpectedly reentered the same school after withdrawing or being discharged
D09 Student was expected to attend a school but did not enter as expected for unknown reasons
D10 Student was promoted, retained, or transferred to another attendance-reporting unit in the same school
D11 Student was promoted, retained, or transferred to another school in the same district
D12 Student withdrew to attend another public school in the same district
D13 Student withdrew to attend another public school in- or out-of-state
D14 Student Over Compulsory Attendance Age Left School Voluntarily with No Intention of Returning
D15 Student Graduated from School with a Standard Diploma
D16 Student Graduated from School with a Special Diploma
D17 Student Left School with a Certificate of Completion
D18 Student Left School with a Special Certificate of Completion
D19 Student Left School with a State General Education Development (GED) High School Diploma
D20 Student Withdrew to Attend a Non-Public School or Home Education Program In- or Out-of-State.
D21 Student withdrew from school due to hardship
D22 Student has not entered any school in this or any other state this school year
D23 Previously attended out-of-state public school but is entering a public school in this state for the first time this school year
D24 Returned to Regular Education Program
EB1 Deceased
EB3 Withdrawn
EB4 Graduated
-->
<!ATTLIST ChangeReason
code (B27 | B28 | B29 | B31 | B38 | B39 | B40 | B51 | B52 | D03 |
D04 | D05 | D06 | D07 | D08 | D09 | D10 | D11 | D12 | D13 | D14 |
D15 | D16 | D17 | D18 | D19 | D20 | D21 | D22 | D23 | D24 | EB1 |
EB3 | EB4) #REQUIRED >
<!--New, or changed status-->
<!ELEMENT ChangedStatus EMPTY >
<!ATTLIST (ChangedStatus,Status)
code (enrolled | withdrawn) #REQUIRED >
<!--School Year in D8 format YY-->
<!ELEMENT SchoolYear (#PCDATA) >
<!ELEMENT StudentUpdate (Student) >
<!--This defines the student object. It will be placed inside messages-->
<!ELEMENT Student (ElectronicID
?,HomeRoom,PhoneNumber*,StudentName,Address,SchoolID+GradeLvl,GradYear+,Status,ImmigrationStatus,SSN,Gender,Race,
BirthDate,TeacherID*,ContactID+) >
<!ATTLIST Student
id ID #REQUIRED >
<!ELEMENT ElectronicID(#PCDATA) >
<!ATTLIST ElectronicID
type (barcode| magstripe) #REQUIRED >
<!--Identifies the student home room-->
<!ELEMENT HomeRoom (#PCDATA) >
<!--Phone Number-->
<!ELEMENT PhoneNumber (AreaCode,Number,Ext?) >
<!ATTLIST PhoneNumber
type (primary | secondary) #REQUIRED >
<!--The area code in the form xxx (3 numeric)-->
<!ELEMENT AreaCode (#PCDATA) >
<!--This field is used to return a count in response to a query-->
<!ELEMENT Number (#PCDATA) >
<!--This is the extension. This is an alpha numeric field-->
<!ELEMENT Ext (#PCDATA) >
<!ELEMENT StudentName (LastName,FirstName,MiddleName) >
<!--Last name, may be hyphenated-->
<!ELEMENT LastName (#PCDATA) >
<!--First name-->
<!ELEMENT FirstName (#PCDATA) >
<!--Middle name field. This is required. If no middle name the field is still required. If two middle names, both go in this field-->
<!ELEMENT MiddleName (#PCDATA) >
<!--Student Address-->
<!ELEMENT Address (Street,City,County,State,Zip) >
<!--This is made up of a number of nodes-->
<!ELEMENT Street (Complex?,StreetNumber?,StreetPrefix?,StreetName,StreetType?,
StreetSuffix?,AptType?,AptNumPrefix?,AptNumber?,AptNumSuffix?) >
<!--Apartment Complex designation-->
<!ELEMENT Complex (#PCDATA) >
<!ELEMENT StreetNumber (#PCDATA) >
<!--Direction such as N, S, E, W, NW-->
<!ELEMENT StreetPrefix (#PCDATA) >
<!ELEMENT StreetName (#PCDATA) >
<!--This is the type of street such as Ave. Street, Blvd-->
<!ELEMENT StreetType (#PCDATA) >
<!--Another Direction such as NW, NE-->
<!ELEMENT StreetSuffix (#PCDATA) >
<!--This specifies the type of apartment such as suite-->
<!ELEMENT AptType (#PCDATA) >
<!--The prefix of an apartment number-->
<!ELEMENT AptNumPrefix (#PCDATA) >
<!--Apartment Number-->
<!ELEMENT AptNumber (#PCDATA) >
<!--Apartment Number Suffix-->
<!ELEMENT AptNumSuffix (#PCDATA) >
<!--Free-form text for city name-->
<!ELEMENT City (#PCDATA) >
<!--Code identifying the county within a state
Note to User: This list is available from the National Technical Information Service, 5285 Port Royal Road, Springfield, VA 22161.
SPEEDE/EXPRESS CODE IND04-->
<!ELEMENT County (#PCDATA) >
<!--Two letter state code
SPEEDE/EXPRESS CODE IND04-->
<!ELEMENT State EMPTY >
<!ATTLIST State
code (AL | AK | AZ | AR | CA | CO | CT | DE | DC | DL | FL | GA | HI |
ID | IL | IN | IA | KS | KY | ME | MD | MA | MI | MN | MO | MT | NE |
NV | NH | NJ | NM | NY | NC | ND | OH | OK | OR | PA | PR | RI | SC |
TN | TX | UT | VT | VA | WA | WV | WI | WY) #IMPLIED >
<!ELEMENT Zip (#PCDATA) >
<!ELEMENT SchoolID (#PCDATA) >
<!ATTLIST SchoolID
type (primary | secondary) #REQUIRED
href CDATA #REQUIRED >
<!ELEMENT NewSchoolID (#PCDATA) >
<!ATTLIST NewSchoolID
type (primary | secondary) #REQUIRED
href CDATA #REQUIRED >
<!--Identifies the grade level of the student-->
<!ELEMENT GradeLvl (#PCDATA) >
<!--Identifies the graduation year in D8 format YY-->
<!ELEMENT GradYear (#PCDATA) >
<!ATTLIST GradYear
type (original | projected) #REQUIRED >
<!--Identifies the status of the student in the school, such as enrolled, withdrawn
-->
<!ELEMENT Status EMPTY >
<!--Specifies the immigration status SPEEDE/EXPRESS codes-->
<!ELEMENT ImmigrationStatus EMPTY >
<!--1 U.S. Citizen
2 Non-Resident Alien
3 Resident Alien
4 Illegal Alien
5 Alien
6 U.S. Citizen - Non-Resident
7 U.S. Citizen - Resident
8 Citizen
9 Non-citizen with Student Authorization
A Non-permanent Resident Alien
B Permanent Visa
C Temporary Visa
-->
<!ATTLIST ImmigrationStatus
code (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C) #REQUIRED >
<!--Social Security number is not a student identifier-->
<!ELEMENT SSN (#PCDATA) >
<!--SPEEDE/EXPRESS DMG03-->
<!ELEMENT Gender EMPTY >
<!--M = Male
F = Female
U= Unknown-->
<!ATTLIST Gender
code (U | F | M) #REQUIRED >
<!--SPEEDE/EXPRESS DMG05-->
<!ELEMENT Race EMPTY >
<!--7 Not Provided
A Asian or Pacific Islander
B Black
C Caucasian
D Subcontinent Asian American
E Other Race or Ethnicity
F Asian Pacific American
G Native American
H Hispanic
I American Indian or Alaskan Native
J Native Hawaiian
N Black (Non-Hispanic)
O White (Non-Hispanic)
P Pacific Islander
Z Mutually Defined
-->
<!ATTLIST Race
code (7 | A | B | C | D | E | F | G | H | I | J | N | O | P | Z)
#REQUIRED >
<!--Date of Birth D8 format (CCYYMMDD)-->
<!ELEMENT BirthDate (#PCDATA) >
<!ELEMENT TeacherID EMPTY >
<!--href links to the ID on the Teachert ID element via the href mechanism
syntax is href="#id" to match the ID-->
<!ATTLIST TeacherID
period CDATA #REQUIRED
href CDATA #REQUIRED >
<!ELEMENT NewTeacherID EMPTY >
<!--href links to the ID on the Teachert ID element via the href mechanism
syntax is href="#id" to match the ID-->
<!ATTLIST NewTeacherID
href CDATA #REQUIRED >
<!ELEMENT ContactID EMPTY >
<!--href links to the ID on the Teachert ID element via the href mechanism
syntax is href="#id" to match the ID-->
<!ATTLIST ContactID
href CDATA #REQUIRED >
<!ELEMENT NewContactID EMPTY >
<!--href links to the ID on the Teachert ID element via the href mechanism
syntax is href="#id" to match the ID-->
<!ATTLIST NewContactID
href CDATA #REQUIRED >
<!--This contains any of the student data fields which may
make up a partial update-->
<!ELEMENT PartialStudentUpdate (StudentID,ElectronicID?,HomeRoom?,PhoneNumber*,
StudentName?,Address?,SchoolID*,GradeLvl?,GradYear*,Status?,
ImmigrationStatus?,SSN?,Gender?,Race?,BirthDate?,TeacherID*,
ContactID*) >
<!ELEMENT TeacherUpdate (Teacher) >
<!ELEMENT Teacher (TeacherName,EmployeeID,Credentials,DateHired,SchoolID+,HomeRoom,
Department,BirthDate,ContactID+,PhoneNumber*,Address,SSN,Gender,Race) >
<!ATTLIST Teacher
type (substitute | student | fulltime) #REQUIRED
id ID #REQUIRED >
<!ELEMENT TeacherName (LastName,FirstName,MiddleName) >
<!--The teacher's employee ID-->
<!ELEMENT EmployeeID (#PCDATA) >
<!-- SPEEDE/EXPRESS for codes for credential code fields-->
<!ELEMENT Credentials EMPTY >
<!--2.1 Postsecondary certificate or diploma (less than one year)
2.2 Postsecondary certificate or diploma (one year or more but less than four years)
2.3 Associate Degree (e.g., Associate in Arts, Associate in Science, Associate in Applied Science)
2.4 Baccalaureate Degree
2.5 Baccalaureate (Honours) Degree
2.6 Postsecondary certificate or diploma (one year or more but less than two years)
2.7 Postsecondary certificate or diploma (two years or more but less than four years)
3.1 First Professional Degree
3.2 Post-Professional Degree
4.1 Graduate Certificate
4.2 Master's Degree
4.3 Intermediate Graduate Degree
4.4 Doctoral Degree
4.5 Post-Doctoral Degree
-->
<!ATTLIST Credentials
code (2.1 | 2.2 | 2.3 | 2.4 | 2.5 | 2.6 | 2.7 | 3.1 | 3.2 | 4.1 |
4.2 | 4.3 | 4.4 | 4.5) #REQUIRED >
<!--Indicates the date hired. D8 format (CCYYMMDD)-->
<!ELEMENT DateHired (#PCDATA) >
<!--Identifies the department to which the teacher reports-->
<!ELEMENT Department (#PCDATA) >
<!--This element contains all teacher data fields to enable partial update-->
<!ELEMENT PartialTeacherUpdate (TeacherID,TeacherName?,EmployeeID?,Credentials?,
DateHired?,SchoolID*,HomeRoom?,Department?,BirthDate?,ContactID*,
PhoneNumber*,Address?,SSN?,Gender?,Race?,Relationship?) >
<!--This specifies the relationship between the contact and the student-->
<!ELEMENT Relationship EMPTY >
<!--01 Spouse
02 Son or Daughter
03 Father or Mother
04 Grandfather or Grandmother
05 Grandson or Granddaughter
06 Uncle or Aunt
07 Nephew or Niece
08 Cousin
09 Adopted Child
10 Foster Child
11 Son-in-law or Daughter-in-law
12 Brother-in-law or Sister-in-law
13 Mother-in-law or Father-in-law
14 Brother or Sister
15 Ward
17 Stepson or Stepdaughter
18 Self
19 Child
20 Employee
21 Unknown
22 Handicapped Dependent
23 Sponsored Dependent
24 Dependent of a Minor Dependent
25 Ex-spouse
26 Guardian
27 Student
28 Friend
29 Significant Other
30 Both Parents
31 Court Appointed Guardian
32 Mother
33 Father
34 Other Adult
37 Agency Representative
48 Stepfather
49 Stepmother
50 Foster Parent
51 Emergency Contact
52 Employer
53 Life Partner
55 Adopted Daughter
56 Adopted Son
57 Adoptive Father
58 Adoptive Mother
59 Adoptive Parents
61 Aunt
62 Brother
63 Brother-in-Law
74 Daughter
75 Daughter-in-Law
76 Dependent
79 Ex-wife
80 Family Member
81 Father-in-Law
82 Fiancé (Male)
83 Financée (Female)
86 Foster Daughter
87 Foster Father
88 Foster Mother
90 Foster Son
97 Grandfather
98 Grandmother
99 Grandparents
A2 Great Aunt
A3 Ex-husband
A4 Half Brother
A5 Half Sister
A6 Husband
A9 Mother-in-Law
B1 Nephew
B2 Niece
B3 Parents-in-Law
B4 Partnership
B5 Partner
B7 Sister
B8 Sister-in-Law
C1 Son
C2 Son-in-Law
C3 Step Brother
D3 Uncle
D4 Wife
D5 Teacher
D6 School Counselor
D7 School Principal
D8 Other School Administrator
D9 Coach
E1 Activity Sponsor
E2 Supervisor
E4 Minister or Priest
E5 Ecclesiastical or Religious Leader
E7 Probation Officer
E9 Advisor
G2 Educator/Teacher/Instructor
G6 Medical Care Provider
G8 Other Relationship
G9 Other Relative
ZZ Mutually Defined
-->
<!ATTLIST Relationship
code (01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 |
14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 37 | 48 | 49 | 50 | 51 | 52 | 53 | 55 |
56 | 57 | 61 | 62 | 63 | 74 | 75 | 76 | 79 | 81 | 82 | 83 | 86 | 87 |
90 | 97 | 98 | 99 | 88 | A2 | A3 | A4 | A5 | A6 | A9 | B1 | B2 | B3 |
B7 | B8 | C1 | C2 | C3 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | E1 | E2 |
E4 | E5 | E7 | E9 | G2 | G6 | G8 | G9 | ZZ) #REQUIRED >
<!ELEMENT ContactUpdate (Contact) >
<!--Student Contact information-->
<!ELEMENT Contact (ContactName,PhoneNumber*,Address,Gender,SSN,Race,Relationship) >
<!ATTLIST Contact
type (emergency | nonemergency) #REQUIRED
id ID #REQUIRED >
<!ELEMENT ContactName (LastName,FirstName,MiddleName) >
<!--This element contains all contact fields for partial update-->
<!ELEMENT PartialContactUpdate (ContactID,ContactName?,PhoneNumber*,Address?,
Gender?,SSN?,Race?,Relationship) >
<!--This message updates school information-->
<!ELEMENT SchoolUpdate (School) >
<!--This is the school information object-->
<!ELEMENT School (SchoolName,PhoneNumber*,Address,DistrictNbr,TeacherID*,StudentID*) >
<!--HS High School
VU Elementary School
VQ Middle School
VR Junior High-->
<!ATTLIST School
id ID #REQUIRED
code (HS | VU | VQ | VR) #REQUIRED >
<!ELEMENT SchoolName (#PCDATA) >
<!--Identifies the School District-->
<!ELEMENT DistrictNbr (#PCDATA) >
<!--Used to update part of the school information-->
<!ELEMENT PartialSchoolUpdate (SchoolID,SchoolName?,PhoneNumber*,Address?,
DistrictNbr?,TeacherID*,StudentID*) >
<!--A K12 Request is a query from one software application for information from another
application-->
<!ELEMENT IDUpdate ((StudentID,NewStudentID)| (TeacherID,NewTeacherID) | (ContactID,NewContactID) | (SchoolID, NewSchoolID)) >
<!ELEMENT K12Request (RequestHead,XMLQuery) >
<!--This is the header information for the request-->
<!ELEMENT RequestHead (MsgID,Date,Time,Source) >
<!--This is the actual request-->
<!ELEMENT XMLQuery (#PCDATA) >
<!--The K12 Response is sent by the software application which was
requested to send information. The response may contain the information fields which were
requested, or may contain reasons why the information could not be returned-->
<!ELEMENT K12Response (ResponseHead,(Error | Number | ResponseData?)) >
<!ELEMENT ResponseHead (MsgID,RequestMsgID,Date,Time,Source,RecordCount) >
<!--This is used to match the response to the request-->
<!ELEMENT RequestMsgID (#PCDATA) >
<!--This is a error condition which is returned instead of data or a count-->
<!ELEMENT Error (#PCDATA) >
<!ELEMENT ResponseData (PartialStudentUpdate+ | PartialContactUpdate+ | PartialTeacherUpdate+ | PartialSchoolUpdate+) >
<!ELEMENT K12Publish (PublishHead,Object+,ObjectDelete+) >
<!ELEMENT PublishHead (MsgID,Date,Time,Source) >
<!ELEMENT Object EMPTY >
<!ATTLIST Object
type (student | teacher | school | contact) #REQUIRED >
<!ELEMENT ObjectDelete EMPTY >
<!ATTLIST ObjectDelete
type (student | teacher | school | contact) #REQUIRED >
<!ELEMENT K12Subscribe (SubscribeHead,Event+,EventUnsubscribe+) >
<!ELEMENT SubscribeHead (MsgID,Date,Time,Source) >
<!ELEMENT Event EMPTY >
<!ATTLIST Event
type (enrollstatus | studentupdate | partialstudentupdate |
contactupdate | partialcontactupdate | schoolupdate |
partialschoolupdate | teacherupdate | partialteacherupdate)
#REQUIRED >
<!ELEMENT EventUnsubscribe EMPTY >
<!ATTLIST EventUnsubscribe
type (enrollstatus | studentupdate | partialstudentupdate |
contactupdate | partialcontactupdate | schoolupdate |
partialschoolupdate | teacherupdate | partialteacherupdate)
#REQUIRED >
]>
<To Be Added>