# Systems Interoperability Framework™
SIF Infrastructure Specification 3.4

## January 25, 2022

This version:
  http://specification.sifassociation.org/Implementation/Infrastructure/3.4/
Previous version:
  http://specification.sifassociation.org/Implementation/Infrastructure/3.3/infrastructures/
Latest version:
  http://specification.sifassociation.org/Implementation/Infrastructure/
API Documentation
  Infrastructure Services
XSD Schemas
  Schema_NoIncludes_Strict (single file, non-annotated) (ZIP archive)
  Schema_NoIncludes_Annotated_Strict (single file, annotated) (ZIP archive)
  Schema_Strict (includes, non-annotated) (ZIP archive)
  Schema_Annotated_Strict (includes, annotated) (ZIP archive)
JSON Support
  Conversion Scripts
  OpenAPI & JSON Schemas Files Archive
  PESC Compliant JSON

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

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

# 1 Preamble

## 1.1 Abstract

### 1.1.1 What is SIF?

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

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

The SIF Implementation Specification defines common data formats and rules of interaction and architecture, and is made up of two parts:

- 1. The SIF Infrastructure Implementation Specification which defines the rules of interaction and messages framework, and;
- 2. The SIF Data Model Implementation Specification which is an XML-based data model, (with support for JSON translation), that models entities in the learning environment as SIF Data Objects to be shared between applications.

SIF 3 Infrastructure defines;

- a secure REST-based transport protocol for defining both direct and brokered connections between software applications (which can act as REST servers or clients)
- a set of services to enable interactions between REST servers and clients, including creating environments, other administrative task, synchronous exchanges of data, and asynchronous message queues
- an abstract, platform-independent definition of the API between one software application and another or a broker.

- A SIF Environment is a distributed system that consists of one or more software applications with a SIF Adapter (a SIF-enabled application) sharing/reporting one or more SIF data objects over a network; it may also involve middleware (a message broker). A SIF Implementation consists of one or more SIF Environments deployed and configured to meet customer data sharing and reporting needs.
- The SIF Implementation Specification defines architecture requirements and communication protocols for software components and the interfaces between them; it makes no assumption of specific hardware or software products needed to develop SIF-enabled applications and/or middleware implementations, other than their ability to support technologies leveraged as the foundation for SIF, most prominently XML and HTTP(S) and including JSON and REST.

### 1.1.2 SIF Association

The Schools Interoperability Framework Association (SIF Association); also known as; the Systems Interoperability Framework Association outside North America, doing business as Access 4 Learning (A4L) Community, is an industry initiative to enable interoperability and data sharing between software applications in the pK-12 instructional and administrative environment, and the forum for companies and educators to participate in the development of SIF specifications in the SIF Association's working groups and task forces. The SIF Association is designed to:

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

## 1.2 Disclaimer

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

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

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

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

## 1.3 Certification and Compliance Claims

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

## 1.4 Permissions and Copyright

Copyright® SIF Association (2011-2019). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the SIF Association, or its committees, except as needed for the purpose of developing SIF standards using procedures approved by the SIF Association, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the SIF Association or its successors or assigns.

# Quick Table of Contents

## 1 Preamble

## 2 Introduction

## 3 Infrastructure

## A Common Types

## B Code Sets

## C External Code Sets

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

## E Index of Tables

## F Index of Examples

## G Index of Figures

## H Index of Objects

## I Index of Common Types

## J Index of Elements

## K Index of Attributes

## L References

# Full Table of Contents

## 1 Preamble

### 1.1 Abstract

#### 1.1.1 What is SIF?

#### 1.1.2 SIF Association

### 1.2 Disclaimer

### 1.3 Certification and Compliance Claims

### 1.4 Permissions and Copyright

## 2 Introduction

### 2.1 Specification Organization

### 2.2 Document Conventions

#### 2.2.1 Definitions

#### 2.2.2 Structure and Values

#### 2.2.3 Examples

#### 2.2.4 References

#### 2.2.5 Terminology

#### 2.2.6 XML Diagrams

### 2.3 Version Numbers

### 2.4 Highlighted Additions/Changes

## 3 Infrastructure

### 3.1 Introduction

#### 3.1.1 Format

#### 3.1.2 Conventions

##### 3.1.2.1 Object Attributes/Primary Keys

##### 3.1.2.2 Externally-Defined XML

##### 3.1.2.3 Payload Validation

###### 3.1.2.3.1 Create

###### 3.1.2.3.2 Update

### 3.2 Privacy Services

#### 3.2.1 pod

### 3.3 Request

#### 3.3.1 deleteRequest

### 3.4 Response

#### 3.4.1 adminDirective

#### 3.4.2 createResponse

#### 3.4.3 deleteResponse

#### 3.4.4 error

#### 3.4.5 updateResponse

### 3.5 SIF Infrastructure Services

#### 3.5.1 environment

#### 3.5.2 job

#### 3.5.3 provisionRequest

#### 3.5.4 queue

#### 3.5.5 state

#### 3.5.6 subscription

### 3.6 Utility Services

#### 3.6.1 alert

#### 3.6.2 codeSet

#### 3.6.3 namespace

#### 3.6.4 provider

#### 3.6.5 xquery

#### 3.6.6 zone

## A Common Types

### A.1 adapterFingerprintListType

### A.2 aliasesType

### A.3 aliasType

### A.4 alternatePurposeListType

### A.5 appIDListType

### A.6 applicationInfoType

### A.7 benchmarkListType

### A.8 benchmarkType

### A.9 clauseListType

### A.10 clauseType

### A.11 codeItemsType

### A.12 codeItemType

### A.13 codeType

### A.14 conditionListType

### A.15 conditionType

### A.16 contractType

### A.17 countryImpactedListType

### A.18 countryImpactedType

### A.19 createsType

### A.20 createType

### A.21 dataAccessType

### A.22 dataControllerType

### A.23 dataDeletionType

### A.24 dataProcessorType

### A.25 dataSubjectType

### A.26 dataSubProcessorListType

### A.27 dataSubProcessorType

### A.28 defaultZoneType

### A.29 DefinedProtocolsType

### A.30 deidentifiedPurposeListType

### A.31 deleteIdCollectionType

### A.32 deleteIdType

### A.33 deleteStatusCollectionType

### A.34 deleteStatusType

### A.35 employeeTrainingListType

### A.36 employeeTrainingType

### A.37 endpointListType

### A.38 endpointType

### A.39 enumerationsType

### A.40 enumerationType

### A.41 environmentTypeType

### A.42 ExtendedContentType

### A.43 fieldListType

### A.44 fieldType

### A.45 gCoreAddressListType

### A.46 gCoreAddressType

### A.47 gCoreContactInfoType

### A.48 gCoreContactListType

### A.49 gCoreCountryType

### A.50 gCoreEmailListType

### A.51 gCoreEmailType

### A.52 gCoreGenderType

### A.53 gCoreLocalIdType

### A.54 gCoreNameType

### A.55 gCorePhoneNumberListType

### A.56 gCorePhoneNumberType

### A.57 gCoreStateProvinceIdType

### A.58 gCoreStateProvinceType

### A.59 infrastructureServiceNamesType

### A.60 infrastructureServicesType

### A.61 infrastructureServiceType

### A.62 initializationType

### A.63 jobStateType

### A.64 lawListType

### A.65 lawType

### A.66 legalRequirementsType

### A.67 mediaTypesType

### A.68 methodParametersType

### A.69 methodParameterType

### A.70 obligationListType

### A.71 obligationType

### A.72 parametersType

### A.73 parameterType

### A.74 partyToDeleteDataType

### A.75 passwordEmployeeAccessStandardType

### A.76 phaseCollectionType

### A.77 phaseStateType

### A.78 phaseType

### A.79 privacyListType

### A.80 privacyObligationsDocumentType

### A.81 privacyType

### A.82 productIdentityType

### A.83 propertiesType

### A.84 propertyNVListType

### A.85 propertyNVType

### A.86 propertyType

### A.87 protocolType

### A.88 provisionedZonesType

### A.89 provisionedZoneType

### A.90 purposeListType

### A.91 querySupportType

### A.92 rangeType

### A.93 rightsType

### A.94 rightType

### A.95 rightValueType

### A.96 securityTechnologyListType

### A.97 securityTechnologyType

### A.98 securityTestRequiredListType

### A.99 securityTestRequiredType

### A.100 SelectedContentType

### A.101 servicesType

### A.102 serviceSubTypeType

### A.103 serviceType

### A.104 serviceTypeType

### A.105 technicalRequirementsType

### A.106 updatesType

### A.107 updateType

### A.108 uriType

### A.109 uuidType

### A.110 versionType

### A.111 zoneContextListType

### A.112 zoneContextType

## B Code Sets

### IN Code Sets

## C External Code Sets

### International Standards Organization (ISO)

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

## E Index of Tables

## F Index of Examples

## G Index of Figures

## H Index of Objects

## I Index of Common Types

## J Index of Elements

## K Index of Attributes

## L References

# 2 Introduction

## 2.1 Specification Organization

With respect to this SIF Specification, decision makers are typically interested in the capabilities and designs largely present in the Base Architecture volume. This document, the SIF Infrastructure Specification, contains an Infrastructure section describing the payloads used in a format that should not be a barrier to readers with a some knowledge of [XML]. More technical readers, including software architects, developers and integrators, will also be interested in all the separate Infrastructure volumes.

- The Preamble The Preamble provides an abstract of SIF along with the SIF Association disclaimer and details regarding certification and compliance claims.
- This Introduction outlines the organization of this specification document, provides conventions used in this document, and summarizes versioning of the specification. Highlights of additions/changes since the previous version of the specification are also provided.
- The Infrastructure section provides definitions of the XML structure for common elements in the infrastructure and all payloads related to the environment. This section is organized by natural groupings within the infrastructure.
- The document concludes with various appendices including lists of code set values defined within SIF and in external documents, and ends with a list of references to other documents.

## 2.2 Document Conventions

### 2.2.1 Definitions

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

### 2.2.2 Structure and Values

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

### 2.2.3 Examples

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

### 2.2.4 References

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

### 2.2.5 Terminology

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

### 2.2.6 XML Diagrams

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

Figure 2.2.6-1: XML Diagram Conventions

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

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

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

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

## 2.3 Version Numbers

The SIF Implementation Specification uses the following version numbering scheme:

major version`.`minor version`.`revision number`(X.Y.Z)`

Once a versioned specification (Specification Release) has been released, the contents of that version MUST NOT be modified. Any modifications MUST be released under a new Specification Version Number unless the modification is the correction of an error or update of documentation. Each Specification Release has an associated errata section in which modifications and corrections of the release are listed.

A Specification Version Number for a Specification Release uses conventions as follows:

- A Specification Version Number MAY take the form `X.Y.Z` where `X`, `Y`, and `Z` are nonnegative integers (whole numbers), and MUST NOT contain leading zeroes. `X` represents the Major version, `Y` represents the Minor version, and `Z` represents the Revision version.
- Each version number element MUST increase sequentially based on the guidelines defined within this document; for instance, `1.9.1` to `1.10` to `1.11` to `1.11.1` .
- Precedence refers to how versions are compared to each other when ordered. Precedence MUST be calculated by separating the version into major, minor, revision identifiers in that order. Precedence is determined by the first difference when comparing each of these identifiers from left to right as follows: Major, Minor, and Revision versions are always compared numerically; for example, `1.0.0` < `2.0.0` < `2.1.0` < `2.1.1` .

An instance of a Specification Version Number is the canonical identifier for a Specification Release. The manner in which the Specification Version Number increments after a given Specification Release depends on the type and relative magnitude of changes being proposed in the new release as follows:

1. The Revision version number ( `Z` in x.y.`Z`, where `x` >= 0) MUST be incremented when specification changes are limited to backward compatible changes. If `Z`=0 then the convention is to drop the Revision number: for example, `3.1` instead of `3.1.0`. Backward compatible changes include the following:

- New data object.
- New optional data object element.
- New optional utility service object element.

2. The Minor version number ( `Y` in x.`Y`.z, where `x` > 0 ) MUST be incremented if new functionality is added to the specification. It MUST be incremented if any aspect of the specification is marked as deprecated. It MUST be incremented if any aspect of the specification is not backward compatible. (Backward compatible means any change that can be implemented by one participant (consumer, Environment or service provider) without requiring changes by other participants to maintaining the same level of interoperability.) It MAY be incremented if substantial new functionality or improvements are introduced. It MAY include changes that are categorized as ”Revision” level magnitude. The Revision version MUST be reset to 0 when the Minor version is incremented. Changes requiring a Minor version increment include the following:

- New mandatory data object element.
- New mandatory utility service object element.
- Deprecate data object element.
- Deprecate data object.
- Deprecate utility service object element.
- Deprecate utility service object.
- Remove deprecated data object element.
- Remove deprecated data object.
- Remove deprecated utility service object element.
- Remove deprecated utility service object.
- Add support for additional authentication methods.
- Add support for additional TLS version.
- Any changes concerning security.
- Any optional to mandatory change.
- Add support for additional payload representations.

3. The Major version number ( `X` in `X`.y.z, where `X` > 0 ) MUST be incremented if a significant change is introduced to the specification. It MAY include changes categorized as Minor and Revision level changes. The Revision and Minor version numbers MUST be reset to 0 when the Major version is incremented. Changes requiring a Major version increment include the following:

- Deprecate payload representation.
- Remove deprecated payload representation.
- Add support for a distinct data model namespace.
- Replace (deprecate and remove) a locale data model.
- Any significant change that requires the Major version to be incremented as deemed by the A4L Association Board for global specifications and Management Boards for locale data models.

## 2.4 Highlighted Additions/Changes

# 3 Infrastructure

## 3.1 Introduction

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

### 3.1.1 Format

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

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

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

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

### 3.1.2 Conventions

#### 3.1.2.1 Object Attributes/Primary Keys

While XML attributes are primarily used in SIF to provide additional processing information regarding the associated element content, attributes at the root level of an object have special significance. These attributes serve as the primary key or identifier for the object; in all cases this is no more than a `id` GUID of `uuidType`

#### 3.1.2.2 Externally-Defined XML

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

#### 3.1.2.3 Payload Validation

There are two sets of XSDs available for Validation of Payload.

##### 3.1.2.3.1 Create

The first set, called "DataModel" or "Strict" is 'strict' and all of the elements that are required for validation are 'Mandatory' in this suite of XSDs. This suite is traditionally used for Creation of new entities, which generally require validation before being saved into a Data Store.

##### 3.1.2.3.2 Update

The second set, called "SIF_Message" or "Lax" is 'lax' and every element within the schema is 'optional' except the 'Id' the identifying GUID/UUID. (However, required elements are not nillable.) This suite of XSDs are traditionally used for Update and Delete of current entities. If an element is not included in the payload of an Update operation, its value is assumed to be unchanged. In addition, if the payload contains the Id/UUID only, the consumer must assume that object to be DELETED or that it has been deleted since the original request was made.

## 3.2 Privacy Services

### 3.2.1 pod

This object contains information about privacy obligations.

SIF_Events are reported for this object.

Figure 3.2.1-1: pod

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| pod |  | Low | This object contains information about privacy obligations. |
@ | id | M | Low | The ID (GUID) that uniquely identifies this object. | uuidType
| podStatus | M | Low | The status value for this POD. | values: Live Draft Pending Expired
| podToken | M | Low | The token reference for the POD. | gCoreLocalIdType
| podVersion | M | Low | The POD version number. PODs are expected to change over time. | xs:normalizedString
| partyId | M | Low | The name of the party (typically the data processor) which will receive the data from the school, district or state and has entered into an agreement to process the data and respect the privacy obligations of the data. | xs:normalizedString
| privacyList | M | Low | The set of privacy controls, laws and obligations which apply in this POD. There may be multiple sets which apply. | privacyListType

Table 3.2.1-1: pod
JSON
[ { "pod": { "id": "D3E34B39-9D79-4019-8C39-00AA001A1659", "podStatus": "Live", "podToken": "1", "podVersion": "1.0.2", "partyId": "Compass", "privacyList": { "privacy": [ { "default": "Y", "dataModelNamespace": "http://www.sifinfo.org/infrastructure/2.x", "dataModelVersionMin": "2.4", "dataModelVersionMax": "2.8", "privacyObligationsDocument": { "contract": { "contractURI": "http://www.vic.priv.contract.edu.au/contract.pdf", "contractName": "Sample contract ABC", "dateValidFrom": "2018-03-01", "dateValidTo": "2018-06-01", "contractVersion": "0.2", "lawList": { "law": [ { "lawName": "APP1", "lawDescription": "XXXXX" }, { "lawName": "APP2", "lawDescription": "yyyy" } ] }, "studentDataIPRights": "Victorian Department of Education" }, "legalRequirements": { "clauseList": { "clause": [ { "clauseLabel": "Data Access", "clauseReference": "US-I.3", "clauseContent": "The agent shall access only data necessary to accomplish the business task for which it is contracted.", "obligationList": { "obligation": [ { "obligationDescription": "Restrict access to data fields to match the state profile.", "obligationURL": "https://thewave.sde.ok.gov/thewave/Portals/0/2%20x%20Wave%20Requirements_v1%2010.pdf", "benchmarkList": { "benchmark": [ { "benchmarkName": "Oklahoma State Profile" } ] } } ] } } ] } }, "technicalRequirements": { "dataAccess": { "clauseList": { "clause": [ { "clauseReference": "US-I.3" } ] }, "fieldList": { "field": [ { "fieldName": "/SchoolInfo/@RefId", "controlrights": "R" }, { "fieldName": "/SchoolInfo/LocalId", "controlrights": "R" }, { "fieldName": "/SchoolInfo/ACARAId", "controlrights": "RW" }, { "fieldName": "/StudentPersonal/@RefId", "controlrights": "RW" }, { "fieldName": "/StudentPersonal/LocalId", "controlrights": "RW" }, { "fieldName": "/StudentPersonal/FirstAUSchoolEnrollment", "controlrights": "RW" } ] } }, "conditionList": { "condition": [ { "typeOfCondition": "XQUERYTEMPLATE", "conditionName": "RetrieveByGrade", "conditionDescription": "Returns a StudentJoin of StudentPersonal and StudentSchoolEnrollment for the GradeLevel specified as a parameter." }, { "typeOfCondition": "contextId", "conditionName": "CurrentEnrollment", "conditionDescription": "Only works with student data whose records indicate they are currently enrolled according to the StudentSchoolEnrollment SIF object.", "propertyList": { "property": [ { "propertyName": "Enrolled After", "propertyValue": "/StudentSchoolEnrollment/EntryDate>=2018-09-01" }, { "propertyName": "Enrolled Before", "propertyValue": "/StudentSchoolEnrollment/EntryDate<=2019-09-01" } ] } } ] }, "dataSubject": { "clauseList": { "clause": [ { "clauseReference": "US-Subject1", "obligationList": { "obligation": [ { "obligationDescription": "FERPA requires records be delivered within 45 days of a request.", "obligationURL": "https://www2.ed.gov/policy/gen/guid/fpco/brochures/parents.html", "benchmarkList": { "benchmark": [ { "benchmarkName": "Family Educational Rights and Privacy Act (FERPA)" } ] } } ] } } ] }, "fieldList": { "field": [ { "fieldName": "/StudentPersonal/@RefId" }, { "fieldName": "/StudentPersonal/LocalId" }, { "fieldName": "/StudentPersonal/FirstAUSchoolEnrollment" } ] }, "respondInDays": 45, "requirePortability": "Y" }, "dataDeletion": { "deleteData": "Y", "dataRetention": 30, "deleteBy": "2019-07-15", "partyToDeleteData": { "organisation": "Local LEA", "deletecontactInfo": { "name": { "familyName": "EEe", "givenName": "Agg", "otherGivenNames": "hh" }, "positionTitle": "Data Owner", "emailList": { "email": [ "DataSec@localLEA.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(03) 8888-9999" } ] } } } }, "securityTechnologyList": { "securityTechnology": [ { "clauseList": { "clause": [ { "clauseReference": "US-V.1.c" } ] }, "technologyName": "TLS", "versionMin": "1.2" } ] } }, "dataController": { "dataControllerName": "Victorian Department of Education", "privacyPolicyURL": "http://www.vic.priv.policy.edu.au/privacy.pdf", "privacyContactList": { "contact": [ { "name": { "familyName": "Smith", "givenName": "Christime", "otherGivenNames": "Margaret" }, "positionTitle": "Admin", "emailList": { "email": [ "chris@whoville.vic.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(03) 9600-0102" } ] } } ] }, "issuesNotificationContactList": { "contact": [ { "name": { "familyName": "BBBB", "givenName": "AAA", "otherGivenNames": "CCC" }, "positionTitle": "Data Security", "emailList": { "email": [ "DataSec@whoville.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(03) 8888-9999" } ] } } ] } }, "dataProcessor": { "dataProcessorName": "CEOProcessor2", "privacyPolicyURL": "www.ceo.priv.policy.edu.au", "privacyContactList": { "contact": [ { "name": { "familyName": "Woodall", "givenName": "Charles", "otherGivenNames": "William" }, "positionTitle": "Admin", "emailList": { "email": [ "drseuss@whoville.k12.ceo.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(08) 8555-0102" } ] } } ] }, "notifyDataControllerOnAccessRequests": "Y", "dataProcessorContactForAccessRequestsList": { "contact": [ { "name": { "familyName": "XXX", "givenName": "YYY", "otherGivenNames": "ZZZ" }, "positionTitle": "Privacy Officer", "emailList": { "email": [ "off@whoville.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(03) 9999-9999" } ] } } ] }, "purposeList": { "purpose": [ "Admin System", "Australian Schools List" ] }, "alternatePurposeList": { "alternatePurpose": [ "Student Portal" ] }, "deidentifiedPurposeList": { "deidentifiedPurpose": [ "Research" ] }, "dataUsageMarketingAllowed": "N", "personalInformationUpdatedFromSource": 10, "dataBreachNotification": "Y", "dataBreachContactList": { "contact": [ { "name": { "familyName": "XXX", "givenName": "YYY", "otherGivenNames": "ZZZ" }, "positionTitle": "Privacy Officer", "emailList": { "email": [ "off@whoville.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(03) 9999-9999" } ] } } ] }, "employeesMustComplyWithAgreement": "Y", "employeeConfidentialityAgreement": "Y", "employeeTrainingList": { "employeeTraining": [ { "trainingName": "", "trainingURL": "" } ] }, "passwordEmployeeAccessStandard": { "standardName": "", "standardURL": "" }, "securityTestRequiredList": { "securityTestRequired": [ { "testType": "Pen Test", "testFrequency": "Annual", "remediationRequiredIn": "7 days", "shareResults": "Y" }, { "testType": "Vulnerability Test", "testFrequency": "Monthly", "remediationRequiredIn": "24hours", "shareResults": "Y" } ] }, "countryImpactedList": { "countryImpacted": [ { "country": "1101", "usage": "Stored/Processed/Exposed" }, { "country": "1102", "usage": "Exposed" } ] } }, "dataSubProcessorList": { "dataSubProcessor": [ { "subProcessorName": "One", "privacyPolicyURL": "www.one.edu.au", "privacyContactList": { "contact": [ { "name": { "familyName": "First", "givenName": "Charles", "otherGivenNames": "William" }, "positionTitle": "Admin", "emailList": { "email": [ "drseuss@whoville.k12.ceo.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(08) 8555-0102" } ] } } ] }, "purposeList": { "purpose": [ "Attendance" ] } }, { "subProcessorName": "Two", "privacyPolicyURL": "www.two.edu.au", "privacyContactList": { "contact": [ { "name": { "familyName": "Two", "givenName": "Charles", "otherGivenNames": "William" }, "positionTitle": "Admin", "emailList": { "email": [ "drseuss@whoville.k12.ceo.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(08) 8555-0102" } ] } } ] }, "purposeList": { "purpose": [ "TimeTabling" ] } }, { "subProcessorName": "Three", "privacyPolicyURL": "www.three.edu.au", "privacyContactList": { "contact": [ { "name": { "familyName": "Third", "givenName": "Charles", "otherGivenNames": "William" }, "positionTitle": "Admin", "emailList": { "email": [ "drseuss@whoville.k12.ceo.edu.au" ] }, "phoneNumberList": { "phoneNumber": [ { "number": "(08) 8555-0102" } ] } } ] }, "purposeList": { "purpose": [ "StudentPortal" ] } } ] } } }, { "default": "N", "appIDList": { "appID": [ "TT12" ] }, "adapterFingerprintList": { "adapterFingerprint": [ "b4ef12ce-7025-11e8-adc0-fa7ae01bbebc" ] }, "zoneContextList": { "zoneContext": [ { "zoneId": "4001", "contextId": "" } ] }, "endpointList": "", "privacyObligationsDocument": { "technicalRequirements": { "dataAccess": { "fieldList": { "field": [ { "fieldName": "/SchoolInfo/@RefId", "controlrights": "R" }, { "fieldName": "/SchoolInfo/LocalId", "controlrights": "R" }, { "fieldName": "/SchoolInfo/ACARAId", "controlrights": "R" }, { "fieldName": "/StudentPersonal/@RefId", "controlrights": "R" }, { "fieldName": "/StudentPersonal/LocalId", "controlrights": "R" }, { "fieldName": "/StudentPersonal/FirstAUSchoolEnrollment", "controlrights": "R" }, { "fieldName": "/TimeTable/*", "controlrights": "RW" } ] } } } } }, { "default": "N", "adapterFingerprintList": { "adapterFingerprint": [ "b4ef12ce-7025-11e8-adc0-fa7ae01bbebc" ] }, "zoneContextList": { "zoneContext": [ { "zoneId": "4002", "contextId": "" } ] }, "dataModelNamespace": "http://www.sifinfo.org/infrastructure/2.x", "dataModelVersionMin": "2.3", "dataModelVersionMax": "2.9" }, { "default": "N", "adapterFingerprintList": { "adapterFingerprint": [ "b4ef12ce-7025-11e8-adc0-fa7ae01bbebc" ] }, "zoneContextList": { "zoneContext": [ { "zoneId": "4003", "contextId": "" } ] }, "dataModelNamespace": "http://www.sifinfo.org/infrastructure/2.x", "dataModelVersionMin": "2.1", "dataModelVersionMax": "2.8", "privacyObligationsDocument": { "technicalRequirements": { "securityTechnologyList": { "securityTechnology": [ { "technologyName": "SSL", "technologyDescription": "", "referenceURL": "" } ] } } } } ] } } } ]
XML
<pod id="D3E34B39-9D79-4019-8C39-00AA001A1659"> <podStatus>Live</podStatus> <!-- podStatus - The status value for this POD. --> <podToken>1</podToken> <!-- podToken - The token reference for the POD. --> <podVersion>1.0.2</podVersion> <!-- podVersion - The POD version number. PODs are expected to change over time. --> <partyId>Compass</partyId> <!-- partyId - The name of the party (typically the data processor) which will receive the data from the school, district or state and has entered into an agreement to process the data and respect the privacy obligations of the data --> <privacyList> <privacy> <default>Y</default> <dataModelNamespace>http://www.sifinfo.org/infrastructure/2.x</dataModelNamespace> <dataModelVersionMin>2.4</dataModelVersionMin> <dataModelVersionMax>2.8</dataModelVersionMax> <!-- Privacy Obligations - holds information about the contract --> <privacyObligationsDocument> <contract> <contractURI>http://www.vic.priv.contract.edu.au/contract.pdf</contractURI> <contractName>Sample contract ABC</contractName> <dateValidFrom>2018-03-01</dateValidFrom> <dateValidTo>2018-06-01</dateValidTo> <contractVersion>0.2</contractVersion> <lawList> <law> <lawName>APP1</lawName> <lawDescription>XXXXX</lawDescription> </law> <law> <lawName>APP2</lawName> <lawDescription>yyyy</lawDescription> </law> </lawList> <studentDataIPRights>Victorian Department of Education</studentDataIPRights> </contract> <legalRequirements> <clauseList> <clause> <clauseLabel>Data Access</clauseLabel> <clauseReference>US-I.3</clauseReference> <clauseContent>The agent shall access only data necessary to accomplish the business task for which it is contracted.</clauseContent> <obligationList> <obligation> <obligationDescription>Restrict access to data fields to match the state profile.</obligationDescription> <obligationURL>https://thewave.sde.ok.gov/thewave/Portals/0/2%20x%20Wave%20Requirements_v1%2010.pdf</obligationURL> <benchmarkList> <benchmark> <benchmarkName>Oklahoma State Profile</benchmarkName> </benchmark> </benchmarkList> </obligation> </obligationList> </clause> </clauseList> </legalRequirements> <technicalRequirements> <dataAccess> <clauseList> <clause> <clauseReference>US-I.3</clauseReference> </clause> </clauseList> <fieldList> <field> <fieldName>/SchoolInfo/@RefId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/SchoolInfo/LocalId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/SchoolInfo/ACARAId</fieldName> <controlrights>RW</controlrights> </field> <field> <fieldName>/StudentPersonal/@RefId</fieldName> <controlrights>RW</controlrights> </field> <field> <fieldName>/StudentPersonal/LocalId</fieldName> <controlrights>RW</controlrights> </field> <field> <fieldName>/StudentPersonal/FirstAUSchoolEnrollment</fieldName> <controlrights>RW</controlrights> </field> </fieldList> </dataAccess> <conditionList> <condition> <typeOfCondition>XQUERYTEMPLATE</typeOfCondition> <conditionName>RetrieveByGrade</conditionName> <conditionDescription>Returns a StudentJoin of StudentPersonal and StudentSchoolEnrollment for the GradeLevel specified as a parameter.</conditionDescription> </condition> <condition> <typeOfCondition>contextId</typeOfCondition> <conditionName>CurrentEnrollment</conditionName> <conditionDescription>Only works with student data whose records indicate they are currently enrolled according to the StudentSchoolEnrollment SIF object.</conditionDescription> <propertyList> <property> <propertyName>Enrolled After</propertyName> <propertyValue>/StudentSchoolEnrollment/EntryDate&gt;=2018-09-01</propertyValue> </property> <property> <propertyName>Enrolled Before</propertyName> <propertyValue>/StudentSchoolEnrollment/EntryDate&lt;=2019-09-01</propertyValue> </property> </propertyList> </condition> </conditionList> <!-- Who the information is about. Typically a Student and/or a Parent and/or a Teacher. --> <dataSubject> <clauseList> <clause> <clauseReference>US-Subject1</clauseReference> <obligationList> <obligation> <obligationDescription>FERPA requires records be delivered within 45 days of a request.</obligationDescription> <obligationURL>https://www2.ed.gov/policy/gen/guid/fpco/brochures/parents.html</obligationURL> <benchmarkList> <benchmark> <benchmarkName>Family Educational Rights and Privacy Act (FERPA)</benchmarkName> </benchmark> </benchmarkList> </obligation> </obligationList> </clause> </clauseList> <fieldList> <!-- information that must be supplied to the Data Subject if request as per Clause above. --> <field> <fieldName>/StudentPersonal/@RefId</fieldName> </field> <field> <fieldName>/StudentPersonal/LocalId</fieldName> </field> <field> <fieldName>/StudentPersonal/FirstAUSchoolEnrollment</fieldName> </field> </fieldList> <respondInDays>45</respondInDays> <requirePortability>Y</requirePortability> </dataSubject> <!-- obligations relating to the deletion of data. --> <dataDeletion> <deleteData>Y</deleteData> <dataRetention>30</dataRetention> <deleteBy>2019-07-15</deleteBy> <partyToDeleteData> <organisation>Local LEA</organisation> <deletecontactInfo> <name> <familyName>EEe</familyName> <givenName>Agg</givenName> <otherGivenNames>hh</otherGivenNames> </name> <positionTitle>Data Owner</positionTitle> <emailList> <email>DataSec@localLEA.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(03) 8888-9999</number> </phoneNumber> </phoneNumberList> </deletecontactInfo> </partyToDeleteData> </dataDeletion> <!-- Aligned to the SDPC work for consideration. --> <securityTechnologyList> <securityTechnology> <clauseList> <clause> <clauseReference>US-V.1.c</clauseReference> </clause> </clauseList> <!-- See Security Protocol clause above. --> <technologyName>TLS</technologyName> <versionMin>1.2</versionMin> </securityTechnology> </securityTechnologyList> </technicalRequirements> <dataController> <!-- Those who are in charge of storing and controlling the information on behalf of parents. --> <dataControllerName>Victorian Department of Education</dataControllerName> <privacyPolicyURL>http://www.vic.priv.policy.edu.au/privacy.pdf</privacyPolicyURL> <privacyContactList> <contact> <!-- Simplify these! More like: http://specification.sifassociation.org/Implementation/NA/3.5/Collections/xStaffs.xhtml --> <name> <familyName>Smith</familyName> <givenName>Christime</givenName> <otherGivenNames>Margaret</otherGivenNames> </name> <positionTitle>Admin</positionTitle> <emailList> <email>chris@whoville.vic.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(03) 9600-0102</number> </phoneNumber> </phoneNumberList> </contact> </privacyContactList> <issuesNotificationContactList> <contact> <name> <familyName>BBBB</familyName> <givenName>AAA</givenName> <otherGivenNames>CCC</otherGivenNames> </name> <positionTitle>Data Security</positionTitle> <emailList> <email>DataSec@whoville.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(03) 8888-9999</number> </phoneNumber> </phoneNumberList> </contact> </issuesNotificationContactList> </dataController> <dataProcessor> <!-- Data processor is the vendor who will be accessing, consuming and/or providing back information. --> <dataProcessorName>CEOProcessor2</dataProcessorName> <privacyPolicyURL>www.ceo.priv.policy.edu.au</privacyPolicyURL> <privacyContactList> <contact> <name> <familyName>Woodall</familyName> <givenName>Charles</givenName> <otherGivenNames>William</otherGivenNames> </name> <positionTitle>Admin</positionTitle> <emailList> <email>drseuss@whoville.k12.ceo.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(08) 8555-0102</number> </phoneNumber> </phoneNumberList> </contact> </privacyContactList> <notifyDataControllerOnAccessRequests>Y</notifyDataControllerOnAccessRequests> <dataProcessorContactForAccessRequestsList> <contact> <name> <familyName>XXX</familyName> <givenName>YYY</givenName> <otherGivenNames>ZZZ</otherGivenNames> </name> <positionTitle>Privacy Officer</positionTitle> <emailList> <email>off@whoville.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(03) 9999-9999</number> </phoneNumber> </phoneNumberList> </contact> </dataProcessorContactForAccessRequestsList> <purposeList> <purpose>Admin System</purpose> <purpose>Australian Schools List</purpose> </purposeList> <alternatePurposeList> <alternatePurpose>Student Portal</alternatePurpose> </alternatePurposeList> <deidentifiedPurposeList> <deidentifiedPurpose>Research</deidentifiedPurpose> </deidentifiedPurposeList> <dataUsageMarketingAllowed>N</dataUsageMarketingAllowed> <personalInformationUpdatedFromSource>10</personalInformationUpdatedFromSource> <dataBreachNotification>Y</dataBreachNotification> <dataBreachContactList> <contact> <name> <familyName>XXX</familyName> <givenName>YYY</givenName> <otherGivenNames>ZZZ</otherGivenNames> </name> <positionTitle>Privacy Officer</positionTitle> <emailList> <email>off@whoville.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(03) 9999-9999</number> </phoneNumber> </phoneNumberList> </contact> </dataBreachContactList> <employeesMustComplyWithAgreement>Y</employeesMustComplyWithAgreement> <employeeConfidentialityAgreement>Y</employeeConfidentialityAgreement> <employeeTrainingList> <employeeTraining> <trainingName /> <trainingURL /> </employeeTraining> </employeeTrainingList> <passwordEmployeeAccessStandard> <standardName /> <standardURL /> </passwordEmployeeAccessStandard> <securityTestRequiredList> <securityTestRequired> <testType>Pen Test</testType> <testFrequency>Annual</testFrequency> <remediationRequiredIn>7 days</remediationRequiredIn> <shareResults>Y</shareResults> </securityTestRequired> <securityTestRequired> <testType>Vulnerability Test</testType> <testFrequency>Monthly</testFrequency> <remediationRequiredIn>24hours</remediationRequiredIn> <shareResults>Y</shareResults> </securityTestRequired> </securityTestRequiredList> <countryImpactedList> <countryImpacted> <country>1101</country> <usage>Stored/Processed/Exposed</usage> </countryImpacted> <countryImpacted> <country>1102</country> <usage>Exposed</usage> </countryImpacted> </countryImpactedList> </dataProcessor> <dataSubProcessorList> <!-- List of entities that provide services to the Data Processor. They also handle the data and must be aware of privacy obligations. e.g. Google, iCloud, Microsoft Azure, AWS etc. --> <dataSubProcessor> <subProcessorName>One</subProcessorName> <!-- Caps? --> <privacyPolicyURL>www.one.edu.au</privacyPolicyURL> <privacyContactList> <contact> <name> <familyName>First</familyName> <givenName>Charles</givenName> <otherGivenNames>William</otherGivenNames> </name> <positionTitle>Admin</positionTitle> <emailList> <email>drseuss@whoville.k12.ceo.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(08) 8555-0102</number> </phoneNumber> </phoneNumberList> </contact> </privacyContactList> <purposeList> <purpose>Attendance</purpose> </purposeList> </dataSubProcessor> <dataSubProcessor> <subProcessorName>Two</subProcessorName> <privacyPolicyURL>www.two.edu.au</privacyPolicyURL> <privacyContactList> <contact> <name> <familyName>Two</familyName> <givenName>Charles</givenName> <otherGivenNames>William</otherGivenNames> </name> <positionTitle>Admin</positionTitle> <emailList> <email>drseuss@whoville.k12.ceo.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(08) 8555-0102</number> </phoneNumber> </phoneNumberList> </contact> </privacyContactList> <purposeList> <purpose>TimeTabling</purpose> </purposeList> </dataSubProcessor> <dataSubProcessor> <subProcessorName>Three</subProcessorName> <privacyPolicyURL>www.three.edu.au</privacyPolicyURL> <privacyContactList> <contact> <name> <familyName>Third</familyName> <givenName>Charles</givenName> <otherGivenNames>William</otherGivenNames> </name> <positionTitle>Admin</positionTitle> <emailList> <email>drseuss@whoville.k12.ceo.edu.au</email> </emailList> <phoneNumberList> <phoneNumber> <number>(08) 8555-0102</number> </phoneNumber> </phoneNumberList> </contact> </privacyContactList> <purposeList> <purpose>StudentPortal</purpose> </purposeList> </dataSubProcessor> </dataSubProcessorList> </privacyObligationsDocument> </privacy> <privacy> <default>N</default> <appIDList> <appID>TT12</appID> </appIDList> <adapterFingerprintList> <adapterFingerprint>b4ef12ce-7025-11e8-adc0-fa7ae01bbebc</adapterFingerprint> </adapterFingerprintList> <zoneContextList> <zoneContext> <zoneId>4001</zoneId> <contextId /> </zoneContext> </zoneContextList> <!-- List of rest endpoints --> <endpointList /> <!-- User Groups? --> <!-- Users? --> <privacyObligationsDocument> <technicalRequirements> <dataAccess> <!-- Since a POD represents a contract, only these should very. As such the replacement logic, should apply to each immediate child found here. --> <!-- holds the green list and the permissions or conditions on these elements. --> <fieldList> <field> <fieldName>/SchoolInfo/@RefId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/SchoolInfo/LocalId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/SchoolInfo/ACARAId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/StudentPersonal/@RefId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/StudentPersonal/LocalId</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/StudentPersonal/FirstAUSchoolEnrollment</fieldName> <controlrights>R</controlrights> </field> <field> <fieldName>/TimeTable/*</fieldName> <controlrights>RW</controlrights> </field> </fieldList> </dataAccess> </technicalRequirements> </privacyObligationsDocument> </privacy> <privacy> <default>N</default> <adapterFingerprintList> <adapterFingerprint>b4ef12ce-7025-11e8-adc0-fa7ae01bbebc</adapterFingerprint> </adapterFingerprintList> <zoneContextList> <zoneContext> <zoneId>4002</zoneId> <contextId /> </zoneContext> </zoneContextList> <dataModelNamespace>http://www.sifinfo.org/infrastructure/2.x</dataModelNamespace> <dataModelVersionMin>2.3</dataModelVersionMin> <dataModelVersionMax>2.9</dataModelVersionMax> </privacy> <privacy> <default>N</default> <adapterFingerprintList> <adapterFingerprint>b4ef12ce-7025-11e8-adc0-fa7ae01bbebc</adapterFingerprint> </adapterFingerprintList> <zoneContextList> <zoneContext> <zoneId>4003</zoneId> <contextId /> </zoneContext> </zoneContextList> <dataModelNamespace>http://www.sifinfo.org/infrastructure/2.x</dataModelNamespace> <dataModelVersionMin>2.1</dataModelVersionMin> <dataModelVersionMax>2.8</dataModelVersionMax> <privacyObligationsDocument> <technicalRequirements> <securityTechnologyList> <securityTechnology> <technologyName>SSL</technologyName> <!-- do we really need this here? <purpose/>--> <technologyDescription /> <referenceURL /> </securityTechnology> </securityTechnologyList> </technicalRequirements> </privacyObligationsDocument> </privacy> </privacyList> </pod>
Example 3.2.1-1: pod

## 3.3 Request

### 3.3.1 deleteRequest

A "deleteRequest" element, which consists of multiple, "delete" object ids. Since REST conventions do not support payloads on HTTP DELETE messages, all multi-object Delete Requests are conveyed via an HTTP PUT message containing an additional HTTP Header Field value of methodOverride set to DELETE.

SIF_Events are not reported for this object.

Figure 3.3.1-1: deleteRequest

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| deleteRequest |  |  | A "deleteRequest" element, which consists of multiple, "delete" object ids. Since REST conventions do not support payloads on HTTP DELETE messages, all multi-object Delete Requests are conveyed via an HTTP PUT message containing an additional HTTP Header Field value of methodOverride set to DELETE. |
| deletes | M |  |  | deleteIdCollectionType

Table 3.3.1-1: deleteRequest
JSON
[ { "deleteRequest": { "deletes": { "delete": [ { "id": "df789e1c-dfe7-4c18-8ef0-d907b81ea61e", "value": "" }, { "id": "abc89e1c-34e7-4cde-908a-d9abc81ea09a", "value": "" }, { "id": "ff789e1c-dfe7-4c18-8ef0-d907b81ea61e", "value": "" } ] } } } ]
XML
<deleteRequest> <deletes> <delete id="df789e1c-dfe7-4c18-8ef0-d907b81ea61e" /> <delete id="abc89e1c-34e7-4cde-908a-d9abc81ea09a" /> <delete id="ff789e1c-dfe7-4c18-8ef0-d907b81ea61e" /> </deletes> </deleteRequest>
Example 3.3.1-1: deleteRequest

## 3.4 Response

### 3.4.1 adminDirective

Admin Directives, empowers endpoint providers to “inform” or “direct” endpoint consumers what needs to happen. This opens the possibility to prompt the resending of data, expose what objects have been updated, initiate functional services etc. Some common use-cases and details on Admin Directive functionality can be found on the respective Admin Directives section.

SIF_Events are reported for this object.

Figure 3.4.1-1: adminDirective

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| adminDirective |  |  | Admin Directives, empowers endpoint providers to “inform” or “direct” endpoint consumers what needs to happen. This opens the possibility to prompt the resending of data, expose what objects have been updated, initiate functional services etc. Some common use-cases and details on Admin Directive functionality can be found on the respective Admin Directives section. |
@ | id | O |  |  | xs:token
| timestamp | M |  | Timestamp when request was issued. | xs:dateTime
| timeout | M |  | When should the request expire if not fulfilled. | xs:duration
| serviceName | M |  | The name of the Service. For utilities, this is fixed to one of the defined set of Utility Service Names. For objects and functions, it is defined by the Data Model. | xs:token
| method | M |  | Unique ID/Name or requested method. | xs:token
| methodParameters | Onillable="false" |  |  | methodParametersType

Table 3.4.1-1: adminDirective
JSON
[ { "adminDirective": { "id": "a8c3c3e3-4b35-9d75-101d-00aa001a1652", "timestamp": "2021-06-18T01:04:42.283Z", "timeout": "P2D", "serviceName": "StudentPersonals", "method": "Update", "methodParameters": { "methodParameter": [ { "paramName": "RefId", "paramValue": "5b72f2d4-7a83-4297-a71f-8b5fb26cbf14" }, { "paramName": "RefId", "paramValue": "41d38fa-3b57-488b-ac8b-5fd957e592f8" }, { "paramName": "RefId", "paramValue": "f4039cfb-6343-40df-837a-b993b7db6632" } ] } } } ]
XML
<adminDirective id="a8c3c3e3-4b35-9d75-101d-00aa001a1652"> <timestamp>2021-06-18T01:04:42.283Z</timestamp> <timeout>P2D</timeout> <serviceName>StudentPersonals</serviceName> <method>Update</method> <methodParameters> <methodParameter> <paramName>RefId</paramName> <paramValue>5b72f2d4-7a83-4297-a71f-8b5fb26cbf14</paramValue> </methodParameter> <methodParameter> <paramName>RefId</paramName> <paramValue>41d38fa-3b57-488b-ac8b-5fd957e592f8</paramValue> </methodParameter> <methodParameter> <paramName>RefId</paramName> <paramValue>f4039cfb-6343-40df-837a-b993b7db6632</paramValue> </methodParameter> </methodParameters> </adminDirective>
Example 3.4.1-1: adminDirective
JSON
[ { "adminDirective": { "id": "a8c3c3e3-4b35-9d75-101d-00aa001a1652", "timestamp": "2021-06-18T01:04:42.283Z", "timeout": "P2D", "serviceName": "StudentPersonals", "method": "Refresh", "methodParameters": { "methodParameter": [ { "paramName": "RefId", "paramValue": "5b72f2d4-7a83-4297-a71f-8b5fb26cbf14", "comparisonType": "EQUAL" }, { "paramName": "DOB:Year", "paramValue": "2010", "comparisonType": "GREATER" }, { "paramName": "RequireIsolation", "paramValue": "TRUE" } ] } } } ]
XML
<adminDirective id="a8c3c3e3-4b35-9d75-101d-00aa001a1652"> <timestamp>2021-06-18T01:04:42.283Z</timestamp> <!-- Mandatory: timestamp when request was issued. ISO 8601--> <timeout>P2D</timeout> <!-- Mandatory: When should the request expire if not fulfilled. e.g 2 days --> <serviceName>StudentPersonals</serviceName> <method>Refresh</method> <!-- Mandatory: Unique ID/Name or requested method --> <methodParameters> <!-- Optional: parameters applicable for the specific admin request. --> <methodParameter> <paramName>RefId</paramName> <paramValue>5b72f2d4-7a83-4297-a71f-8b5fb26cbf14</paramValue> <comparisonType>EQUAL</comparisonType> <!-- optional: If not provided EQUAL is assumed --> </methodParameter> <methodParameter> <paramName>DOB:Year</paramName> <paramValue>2010</paramValue> <comparisonType>GREATER</comparisonType> </methodParameter> <methodParameter> <paramName>RequireIsolation</paramName> <paramValue>TRUE</paramValue> </methodParameter> </methodParameters> </adminDirective>
Example 3.4.1-2: adminDirective2

### 3.4.2 createResponse

An HTTP Response with a status of 200 and a payload consisting of a single "createResponse" element. This includes, for each requested object successfully created, an internal status of 201 and the service-assigned refId. Any requested object that failed to be created is indicated by an error statusCode and a corresponding error payload.

SIF_Events are not reported for this object.

Figure 3.4.2-1: createResponse

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| createResponse |  |  | An HTTP Response with a status of 200 and a payload consisting of a single "createResponse" element. This includes, for each requested object successfully created, an internal status of 201 and the service-assigned refId. Any requested object that failed to be created is indicated by an error statusCode and a corresponding error payload. |
| creates | M |  |  | createsType

Table 3.4.2-1: createResponse
JSON
[ { "createResponse": { "creates": { "create": [ { "id": "df789e1c-dfe7-4c18-8ef0-d907b81ea61e", "advisoryId": "3", "statusCode": "201", "value": "" }, { "advisoryId": "1", "statusCode": "409", "error": { "id": "6f789e1c-dfe7-4c18-8ef0-d907b81ea61e", "code": 409, "scope": "StateConflict", "message": "Student already exists!" } }, { "id": "ff789e1c-dfe7-4c18-8ef0-d907b81ea61e", "advisoryId": "2", "statusCode": "201", "value": "" } ] } } } ]
XML
<createResponse> <creates> <create id="df789e1c-dfe7-4c18-8ef0-d907b81ea61e" advisoryId="3" statusCode="201" /> <create advisoryId="1" statusCode="409"> <error id="6f789e1c-dfe7-4c18-8ef0-d907b81ea61e"> <code>409</code> <scope>StateConflict</scope> <message>Student already exists!</message> </error> </create> <create id="ff789e1c-dfe7-4c18-8ef0-d907b81ea61e" advisoryId="2" statusCode="201" /> </creates> </createResponse>
Example 3.4.2-1: createResponse
JSON
[ { "createResponse": { "creates": { "create": [ { "id": "164da5d9bcbf4cf8a058ba0b0efde9ba", "advisoryId": "164da5d9bcbf4cf8a058ba0b0efde9ba", "statusCode": "404", "error": { "id": "ebd279f5-fd40-4f1a-80c1-894b922df670", "code": 400, "scope": "create student", "message": "Data not good." } }, { "id": "24ed508e1ed04bba82198233efa55859", "advisoryId": "24ed508e1ed04bba82198233efa55859", "statusCode": "201", "value": "" }, { "id": "2ae2d4a3a3c04d77ad843b73adac7747", "advisoryId": "2ae2d4a3a3c04d77ad843b73adac7747", "statusCode": "201", "value": "" }, { "id": "2bc9ff83dbbe44e596da64b7271ec25e", "advisoryId": "2bc9ff83dbbe44e596da64b7271ec25e", "statusCode": "404", "error": { "id": "db54c074-7b63-4898-9311-8b14113d1536", "code": 400, "scope": "create student", "message": "Data not good." } }, { "id": "399f1200f6034d8fbeda72a81b634639", "advisoryId": "399f1200f6034d8fbeda72a81b634639", "statusCode": "201", "value": "" } ] } } } ]
XML
<createResponse> <creates> <create id="164da5d9bcbf4cf8a058ba0b0efde9ba" advisoryId="164da5d9bcbf4cf8a058ba0b0efde9ba" statusCode="404"> <error id="ebd279f5-fd40-4f1a-80c1-894b922df670"> <code>400</code> <scope>create student</scope> <message>Data not good.</message> </error> </create> <create id="24ed508e1ed04bba82198233efa55859" advisoryId="24ed508e1ed04bba82198233efa55859" statusCode="201" /> <create id="2ae2d4a3a3c04d77ad843b73adac7747" advisoryId="2ae2d4a3a3c04d77ad843b73adac7747" statusCode="201" /> <create id="2bc9ff83dbbe44e596da64b7271ec25e" advisoryId="2bc9ff83dbbe44e596da64b7271ec25e" statusCode="404"> <error id="db54c074-7b63-4898-9311-8b14113d1536"> <code>400</code> <scope>create student</scope> <message>Data not good.</message> </error> </create> <create id="399f1200f6034d8fbeda72a81b634639" advisoryId="399f1200f6034d8fbeda72a81b634639" statusCode="201" /> </creates> </createResponse>
Example 3.4.2-2: createResponse2

### 3.4.3 deleteResponse

An HTTP Response with a status of 200 (success). It contains a payload consisting of a single "deleteResponse" element.

SIF_Events are not reported for this object.

Figure 3.4.3-1: deleteResponse

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| deleteResponse |  |  | An HTTP Response with a status of 200 (success). It contains a payload consisting of a single "deleteResponse" element. |
| deletes | M |  |  | deleteStatusCollectionType

Table 3.4.3-1: deleteResponse
JSON
[ { "deleteResponse": { "deletes": { "delete": [ { "id": "df789e1c-dfe7-4c18-8ef0-d907b81ea61e", "statusCode": "200", "value": "" }, { "id": "abc89e1c-34e7-4cde-908a-d9abc81ea09a", "statusCode": "404", "error": { "id": "6f789e1c-dfe7-4c18-8ef0-d907b81ea61e", "code": 404, "scope": "Not Found", "message": "Student does not exist!" } }, { "id": "ff789e1c-dfe7-4c18-8ef0-d907b81ea61e", "statusCode": "200", "value": "" } ] } } } ]
XML
<deleteResponse> <deletes> <delete id="df789e1c-dfe7-4c18-8ef0-d907b81ea61e" statusCode="200" /> <delete id="abc89e1c-34e7-4cde-908a-d9abc81ea09a" statusCode="404"> <error id="6f789e1c-dfe7-4c18-8ef0-d907b81ea61e"> <code>404</code> <scope>Not Found</scope> <message>Student does not exist!</message> </error> </delete> <delete id="ff789e1c-dfe7-4c18-8ef0-d907b81ea61e" statusCode="200" /> </deletes> </deleteResponse>
Example 3.4.3-1: deleteResponse

### 3.4.4 error

SIF_Events are reported for this object.

Figure 3.4.4-1: error

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| error |  |  |  |
@ | id | O |  |  | xs:token
| code | M |  | Corresponds to the value contained in the HTTPS Header Status-Code" field in which the Error Object is the payload. | xs:unsignedInt
| scope | M |  | Attempted operation. Ex: "Modify Student" | xs:string
| message | M |  | A simple, easy to understand, compact description of the error. The primary consumer of this message is the application user. Example: "Unable to open database." | xs:string
| description | Onillable="false" |  | An optional error description that is more complete and technical in nature. It is to be used as a diagnostic message in trouble-shooting procedures. Example: "The 'Students' table is opened in exclusive mode by user 'ADM1' (dbm.cpp, line 300)." | xs:string

Table 3.4.4-1: error

### 3.4.5 updateResponse

An HTTP Response with a status of 200 (success) and a location corresponding to the URL of the first successfully modified object. It contains a payload consisting of a single "updateResponse" element.

SIF_Events are not reported for this object.

Figure 3.4.5-1: updateResponse

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| updateResponse |  |  | An HTTP Response with a status of 200 (success) and a location corresponding to the URL of the first successfully modified object. It contains a payload consisting of a single "updateResponse" element. |
| updates | M |  |  | updatesType

Table 3.4.5-1: updateResponse
JSON
[ { "updateResponse": { "updates": { "update": [ { "id": "df789e1c-dfe7-4c18-8ef0-d907b81ea61e", "statusCode": "200", "value": "" }, { "id": "41953aaa-2811-11e6-b67b-9e71128cae77", "statusCode": "404", "error": { "id": "6f789e1c-dfe7-4c18-8ef0-d907b81ea61e", "code": 404, "scope": "Not Found", "message": "Student does not exist!" } }, { "id": "ff789e1c-dfe7-4c18-8ef0-d907b81ea61e", "statusCode": "200", "value": "" } ] } } } ]
XML
<updateResponse> <updates> <update id="df789e1c-dfe7-4c18-8ef0-d907b81ea61e" statusCode="200" /> <update id="41953aaa-2811-11e6-b67b-9e71128cae77" statusCode="404"> <error id="6f789e1c-dfe7-4c18-8ef0-d907b81ea61e"> <code>404</code> <scope>Not Found</scope> <message>Student does not exist!</message> </error> </update> <update id="ff789e1c-dfe7-4c18-8ef0-d907b81ea61e" statusCode="200" /> </updates> </updateResponse>
Example 3.4.5-1: updateResponse
JSON
[ { "updateResponse": { "updates": { "update": [ { "id": "164da5d9bcbf4cf8a058ba0b0efde9ba", "statusCode": "404", "error": { "id": "7ab3ce5f-23ba-44d4-8668-3b220603b954", "code": 404, "scope": "Student Not Found", "message": "Student with GUID = 164da5d9bcbf4cf8a058ba0b0efde9ba does not exist." } }, { "id": "24ed508e1ed04bba82198233efa55859", "statusCode": "200", "value": "" }, { "id": "2ae2d4a3a3c04d77ad843b73adac7747", "statusCode": "200", "value": "" }, { "id": "2bc9ff83dbbe44e596da64b7271ec25e", "statusCode": "404", "error": { "id": "1e982133-7a67-4955-bb57-4d3b0853d64b", "code": 404, "scope": "Student Not Found", "message": "Student with GUID = 2bc9ff83dbbe44e596da64b7271ec25e does not exist." } }, { "id": "399f1200f6034d8fbeda72a81b634639", "statusCode": "200", "value": "" } ] } } } ]
XML
<updateResponse> <updates> <update id="164da5d9bcbf4cf8a058ba0b0efde9ba" statusCode="404"> <error id="7ab3ce5f-23ba-44d4-8668-3b220603b954"> <code>404</code> <scope>Student Not Found</scope> <message>Student with GUID = 164da5d9bcbf4cf8a058ba0b0efde9ba does not exist.</message> </error> </update> <update id="24ed508e1ed04bba82198233efa55859" statusCode="200" /> <update id="2ae2d4a3a3c04d77ad843b73adac7747" statusCode="200" /> <update id="2bc9ff83dbbe44e596da64b7271ec25e" statusCode="404"> <error id="1e982133-7a67-4955-bb57-4d3b0853d64b"> <code>404</code> <scope>Student Not Found</scope> <message>Student with GUID = 2bc9ff83dbbe44e596da64b7271ec25e does not exist.</message> </error> </update> <update id="399f1200f6034d8fbeda72a81b634639" statusCode="200" /> </updates> </updateResponse>
Example 3.4.5-2: updateResponse2

## 3.5 SIF Infrastructure Services

### 3.5.1 environment

The Consumer Environment Service is the gateway to all other services. It scopes the Consumer's possible interactions with the infrastructure and any Provider Services accessible from it. The Environment Service provides the set of (possibly customized) information the Application needs to interoperate successfully.

SIF_Events are not reported for this object.

Figure 3.5.1-1: environment

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| environment |  |  | The Consumer Environment Service is the gateway to all other services. It scopes the Consumer's possible interactions with the infrastructure and any Provider Services accessible from it. The Environment Service provides the set of (possibly customized) information the Application needs to interoperate successfully. |
@ | type | O |  |  | environmentTypeType values: DIRECT BROKERED
@ | id | O |  |  | uuidType
| fingerprint | Onillable="false" |  | Unique environment identifier that can be safely shared with others. In order to not compromise security it MUST NOT match the environment's refId, sessionToken, userToken, or applicationKey. | xs:token
| sessionToken | Onillable="false" |  |  | xs:token
| solutionId | Onillable="false" |  | The solution the Application would like to participate in. This is optional only, is advisory, and may be ignored by the Administrator. If processed it may be reflected in the URLs of the infrastructure services which are provided in the consumerEnvironment. | xs:token
| defaultZone | Onillable="false" |  |  | defaultZoneType
| authenticationMethod | Onillable="false" |  | Defines the way in which the applicationKey can be used to enforce security. | xs:token
| instanceId | Onillable="false" |  |  | xs:token
| userToken | Onillable="false" |  |  | xs:string
| consumerName | Onillable="false" |  | A descriptive name for the application that will be readily identifiable to Zone Administrators if it becomes a Registered Consumer | xs:string
| applicationInfo | Onillable="false" |  |  | applicationInfoType
| infrastructureServices | Onillable="false" |  |  | infrastructureServicesType
| provisionedZones | Onillable="false" |  |  | provisionedZonesType

Table 3.5.1-1: environment
JSON
[ { "environment": { "type": "DIRECT", "id": "B5Fd5DfB-ca3b-162a-5657-dDf31E32cE92", "fingerprint": "f5688c40-97d2-11e6-ae22-56b6b6499611", "sessionToken": "a579ff69-0148-1000-007f-14109fdcaf83", "solutionId": "production", "defaultZone": { "id": "District", "description": "The zone for the local school district.", "properties": { "property": [ { "name": "email", "value": "john.smith@district.k12.wa.us" }, { "name": "phone", "value": "(360)555-1234" } ] } }, "authenticationMethod": "SIF_HMACSHA256", "instanceId": "1", "userToken": "MmZkMjVmODItYjAxMC00NTFiLWFjZTEtNmRjNTI4MWYwZjdlOmhpdHNAbnNpcA==", "consumerName": "Example Consumer", "applicationInfo": { "applicationKey": "Example", "supportedInfrastructureVersion": "3.1", "dataModelNamespace": "http://www.sifassociation.org/datamodel/na/3.3", "transport": "REST", "applicationProduct": { "vendorName": "SIF Association", "productName": "Fingertips Classroom App", "productVersion": "1.0.4", "iconURI": "https://www.sifassociation.org/PublishingImages/SIF%20Assoc%20symbol_LARGE.png " } }, "infrastructureServices": { "infrastructureService": [ { "name": "environment", "value": "https://testharness.sifassociation.org/SIFConnector/AdaptorServer/0f 21cf0b-014c-1000-007f-00505686707f/environment/0f21cf0b-014c-1000-007f00505686707f" }, { "name": "requestsConnector", "value": "https://testharness.sifassociation.org/SIFConnector/AdaptorSer ver/0f21cf0b-014c-1000-007f-00505686707f/requests" } ] }, "provisionedZones": { "provisionedZone": [ { "id": "District", "services": { "service": [ { "name": "students", "contextId": "DEFAULT", "type": "OBJECT", "rights": { "right": [ { "type": "QUERY", "value": "APPROVED" } ] } }, { "name": "sections", "contextId": "DEFAULT", "type": "OBJECT", "rights": { "right": [ { "type": "QUERY", "value": "APPROVED" } ] } } ] } } ] } } } ]
XML
<environment type="DIRECT" id="B5Fd5DfB-ca3b-162a-5657-dDf31E32cE92"> <fingerprint>f5688c40-97d2-11e6-ae22-56b6b6499611</fingerprint> <sessionToken>a579ff69-0148-1000-007f-14109fdcaf83</sessionToken> <solutionId>production</solutionId> <defaultZone id="District"> <description>The zone for the local school district.</description> <properties> <property name="email">john.smith@district.k12.wa.us</property> <property name="phone">(360)555-1234</property> </properties> </defaultZone> <authenticationMethod>SIF_HMACSHA256</authenticationMethod> <instanceId>1</instanceId> <userToken>MmZkMjVmODItYjAxMC00NTFiLWFjZTEtNmRjNTI4MWYwZjdlOmhpdHNAbnNpcA==</userToken> <consumerName>Example Consumer</consumerName> <applicationInfo> <applicationKey>Example</applicationKey> <supportedInfrastructureVersion>3.1</supportedInfrastructureVersion> <dataModelNamespace>http://www.sifassociation.org/datamodel/na/3.3</dataModelNamespace> <transport>REST</transport> <applicationProduct> <vendorName>SIF Association</vendorName> <productName>Fingertips Classroom App</productName> <productVersion>1.0.4</productVersion> <iconURI>https://www.sifassociation.org/PublishingImages/SIF%20Assoc%20symbol_LARGE.png </iconURI> </applicationProduct> </applicationInfo> <infrastructureServices> <infrastructureService name="environment">https://testharness.sifassociation.org/SIFConnector/AdaptorServer/0f 21cf0b-014c-1000-007f-00505686707f/environment/0f21cf0b-014c-1000-007f00505686707f</infrastructureService> <infrastructureService name="requestsConnector">https://testharness.sifassociation.org/SIFConnector/AdaptorSer ver/0f21cf0b-014c-1000-007f-00505686707f/requests</infrastructureService> </infrastructureServices> <provisionedZones> <provisionedZone id="District"> <services> <service name="students" contextId="DEFAULT" type="OBJECT"> <rights> <right type="QUERY">APPROVED</right> </rights> </service> <service name="sections" contextId="DEFAULT" type="OBJECT"> <rights> <right type="QUERY">APPROVED</right> </rights> </service> </services> </provisionedZone> </provisionedZones> </environment>
Example 3.5.1-1: environment

### 3.5.2 job

All functional services must use this object design to track state. While Events may be published back to the objects creator, they must not be published to the Consumer when the event was generated based on its request (since results were included in the response). Each functional service should define the expectations of how management of the job is managed for both the Consumer and Provider. For instance, certain optional fields may need to be included in-order-to successfully cause a job to be created.

SIF_Events are reported for this object.

Figure 3.5.2-1: job

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| job |  |  | All functional services must use this object design to track state. While Events may be published back to the objects creator, they must not be published to the Consumer when the event was generated based on its request (since results were included in the response). Each functional service should define the expectations of how management of the job is managed for both the Consumer and Provider. For instance, certain optional fields may need to be included in-order-to successfully cause a job to be created. |
@ | id | O |  |  | uuidType
| name | M |  | The name of the job, e.g. "grading" or "sre". | xs:token
| description | Onillable="false" |  | A description of the job, e.g. "Bowers Elementary School Final Marks" | xs:string
| state | Onillable="false" |  | The current enumerable state of the job. | jobStateType values: NOTSTARTED INPROGRESS COMPLETED FAILED
| stateDescription | Onillable="false" |  | A descriptive message elaborating on the current state, e.g. if the current state is "FAILED" the stateDescription may be "Timeout occured". | xs:string
| created | Onillable="false" |  | The datetime this job was created. | xs:dateTime
| lastModified | Onillable="false" |  | The datetime this job was last modified. | xs:dateTime
| timeout | Onillable="false" |  | The ammount of time after creation before this job is automatically deleted. | xs:duration
| phases | Onillable="false" |  | The phases that make up this job. | phaseCollectionType
| initialization | Onillable="false" |  |  | initializationType

Table 3.5.2-1: job
JSON
[ { "job": { "id": "8dc59f05-4ed6-48e1-9985-f0ef27fed09d", "name": "rolloverStudent", "description": "Rollover Student from year X to year Y", "state": "NOTSTARTED", "stateDescription": "Not Started", "created": "2018-09-03T17:06:56.362-08:00", "timeout": "P30D", "phases": { "phase": [ { "name": "oldYearEnrolment", "states": { "state": { "type": "NOTSTARTED" } }, "required": true, "rights": { "right": [ { "type": "UPDATE", "value": "APPROVED" } ] }, "statesRights": { "right": [ { "type": "QUERY", "value": "APPROVED" }, { "type": "CREATE", "value": "APPROVED" } ] } }, { "name": "newYearEnrolment", "states": { "state": { "type": "NOTSTARTED" } }, "required": true, "rights": { "right": [ { "type": "CREATE", "value": "APPROVED" } ] }, "statesRights": { "right": [ { "type": "QUERY", "value": "APPROVED" }, { "type": "CREATE", "value": "APPROVED" } ] } } ] } } } ]
XML
<job id="8dc59f05-4ed6-48e1-9985-f0ef27fed09d"> <name>rolloverStudent</name> <description>Rollover Student from year X to year Y</description> <state>NOTSTARTED</state> <stateDescription>Not Started</stateDescription> <created>2018-09-04T09:06:56.362+08:00</created> <timeout>P30D</timeout> <phases> <phase> <name>oldYearEnrolment</name> <states> <state> <type>NOTSTARTED</type> </state> </states> <required>true</required> <rights> <right type="UPDATE">APPROVED</right> </rights> <statesRights> <right type="QUERY">APPROVED</right> <right type="CREATE">APPROVED</right> </statesRights> </phase> <phase> <name>newYearEnrolment</name> <states> <state> <type>NOTSTARTED</type> </state> </states> <required>true</required> <rights> <right type="CREATE">APPROVED</right> </rights> <statesRights> <right type="QUERY">APPROVED</right> <right type="CREATE">APPROVED</right> </statesRights> </phase> </phases> </job>
Example 3.5.2-1: job

### 3.5.3 provisionRequest

If an Environment supports self-provisioning Consumers than either this section must initially contain all the rights the Consumer has to all Services in all Zones, or the provisionRequests Infrastructure Service must be present in the Consumer's Environment to allow additional rights to be obtained.

SIF_Events are not reported for this object.

Figure 3.5.3-1: provisionRequest

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| provisionRequest |  |  | If an Environment supports self-provisioning Consumers than either this section must initially contain all the rights the Consumer has to all Services in all Zones, or the provisionRequests Infrastructure Service must be present in the Consumer's Environment to allow additional rights to be obtained. |
@ | id | O | Low |  | uuidType
@ | completionStatus | O |  |  | values: ACCEPTED MIXED REJECTED
| provisionedZones | M |  | A specific Zone defined for this environment. | provisionedZonesType

Table 3.5.3-1: provisionRequest
JSON
[ { "provisionRequest": { "id": "D3E34B39-9D79-4019-8C39-00AA001A1659", "provisionedZones": { "provisionedZone": [ { "id": "SuffolkMiddleSchool", "services": { "service": [ { "type": "OBJECT", "name": "students", "contextId": "DEFAULT", "rights": { "right": [ { "type": "CREATE", "value": "REQUESTED" }, { "type": "UPDATE", "value": "REQUESTED" } ] } } ] } } ] } } } ]
XML
<provisionRequest id="D3E34B39-9D79-4019-8C39-00AA001A1659"> <provisionedZones> <provisionedZone id="SuffolkMiddleSchool"> <services> <service type="OBJECT" name="students" contextId="DEFAULT"> <rights> <right type="CREATE">REQUESTED</right> <right type="UPDATE">REQUESTED</right> </rights> </service> </services> </provisionedZone> </provisionedZones> </provisionRequest>
Example 3.5.3-1: provisionRequest
JSON
[ { "provisionRequest": { "id": "4c7cbebc-71e6-11e9-a923-1681be663d3e", "completionStatus": "MIXED", "provisionedZones": { "provisionedZone": [ { "id": "SuffolkMiddleSchool", "services": { "service": [ { "type": "OBJECT", "name": "students", "contextId": "DEFAULT", "rights": { "right": [ { "type": "CREATE", "value": "REJECTED" }, { "type": "UPDATE", "value": "APPROVED" } ] } } ] } } ] } } } ]
XML
<provisionRequest id="4c7cbebc-71e6-11e9-a923-1681be663d3e" completionStatus="MIXED"> <provisionedZones> <provisionedZone id="SuffolkMiddleSchool"> <services> <service type="OBJECT" name="students" contextId="DEFAULT"> <rights> <right type="CREATE">REJECTED</right> <right type="UPDATE">APPROVED</right> </rights> </service> </services> </provisionedZone> </provisionedZones> </provisionRequest>
Example 3.5.3-2: provisionRequest2

### 3.5.4 queue

The Queues Service supports creation, deletion and querying of Queue (Instance) / Queue Messages Service pairs.

SIF_Events are not reported for this object.

Figure 3.5.4-1: queue

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| queue |  |  | The Queues Service supports creation, deletion and querying of Queue (Instance) / Queue Messages Service pairs. |
@ | id | O |  |  | uuidType
| polling | Onillable="false" |  | Determines, when no messages are queued, whether the Consumer will have to periodically reissue Polling Requests at timed intervals or can reissue a Polling Request immediately. | values: IMMEDIATE LONG
| ownerId | Cnillable="false" |  | The Environment ID of the owning Consumer for which this Queue is buffering messages. It is not specified at Queue create time, but is returned as part of the response to a query operation, and serves to allow an administrative application to identify which application the Queue instance is assigned to. | uuidType
| name | Onillable="false" |  | A name which the Consumer assigns to the Queue. It is useful for reporting purposes, but is not guaranteed to be unique. | xs:token
| queueUri | Onillable="false" |  | The URI of the Messages Service associated with the Queue instance. This is the endpoint where the 'get next message' requests are issued. | xs:anyURI
| ownerUri | Onillable="false" |  | When present, this contains the URL which the Queue instance will use when it determines the owner needs to be asynchronously alerted that a new message has arrived in the Queue. | xs:anyURI
| idleTimeout | Onillable="false" |  | Is the maximum time in seconds the Messages Service will wait for a message to arrive, before returning an HTTPS Response of 'no message seen' to the Consumer. | xs:unsignedInt
| minWaitTime | Cnillable="false" |  | indicates the minimum time in seconds that the Consumer should wait after receiving a 'no message seen' response to a previous query, before posting another. | xs:unsignedInt
| maxConcurrentConnections | Onillable="false" |  | Number of (properly identified) concurrent connections supported by (the consumer, if suggested, and) the queue. | xs:unsignedInt
| created | Onillable="false" |  | Time that Queue Instance was Created | xs:dateTime
| lastAccessed | Onillable="false" |  | Time that Queue Instance was last Accessed and a message was dequeued. | xs:dateTime
| lastModified | Onillable="false" |  | Time that Queue Instance was last Modified by receiving a new incoming message. | xs:dateTime
| messageCount | Onillable="false" |  | The number of messages currently residing in the Queue. | xs:unsignedInt

Table 3.5.4-1: queue
JSON
[ { "queue": { "id": "4c7cc042-71e6-11e9-a923-1681be663d3e", "polling": "IMMEDIATE", "name": "StudentConsumer", "maxConcurrentConnections": 3 } } ]
XML
<queue id="4c7cc042-71e6-11e9-a923-1681be663d3e"> <polling>IMMEDIATE</polling> <name>StudentConsumer</name> <maxConcurrentConnections>3</maxConcurrentConnections> </queue>
Example 3.5.4-1: queue Request
JSON
[ { "queue": { "id": "e23fce44-7871-48eb-8952-e27733f59b30", "polling": "IMMEDIATE", "ownerId": "545c31ac-85c7-4360-bd63-24d425be1532", "name": "StudentConsumer", "queueUri": "http://localhost:9080/SIF3InfraREST/sif3/queues/e23fce44-7871-48eb-8952-e27733f59b30/messages", "idleTimeout": 0, "minWaitTime": 30, "maxConcurrentConnections": 3, "created": "2019-02-06T17:09:04.421-08:00", "lastAccessed": "2019-02-06T17:09:04.424-08:00", "lastModified": "2019-02-06T17:09:04.424-08:00", "messageCount": 0 } } ]
XML
<queue id="e23fce44-7871-48eb-8952-e27733f59b30"> <polling>IMMEDIATE</polling> <ownerId>545c31ac-85c7-4360-bd63-24d425be1532</ownerId> <name>StudentConsumer</name> <queueUri>http://localhost:9080/SIF3InfraREST/sif3/queues/e23fce44-7871-48eb-8952-e27733f59b30/messages</queueUri> <idleTimeout>0</idleTimeout> <minWaitTime>30</minWaitTime> <maxConcurrentConnections>3</maxConcurrentConnections> <created>2019-02-07T09:09:04.421+08:00</created> <lastAccessed>2019-02-07T09:09:04.424+08:00</lastAccessed> <lastModified>2019-02-07T09:09:04.424+08:00</lastModified> <messageCount>0</messageCount> </queue>
Example 3.5.4-2: queue Response

### 3.5.5 state

For states updatable by the Consumer, it creates a new state much like it would a single object. The actual result (state or error) is included in the response. Each functional service should define the expectations for which Adaptor is responsible for updating the phase status. NOTE: The "states" collection represented here is reserved for future capabilities.

SIF_Events are reported for this object.

Figure 3.5.5-1: state

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| state |  |  | For states updatable by the Consumer, it creates a new state much like it would a single object. The actual result (state or error) is included in the response. Each functional service should define the expectations for which Adaptor is responsible for updating the phase status. NOTE: The "states" collection represented here is reserved for future capabilities. |
@ | id | O |  |  | uuidType
| type | M |  | The type of this State object. | phaseStateType values: NOTAPPLICABLE NOTSTARTED PENDING SKIPPED INPROGRESS COMPLETED FAILED
| created | Onillable="false" |  | The datetime this job was created. | xs:dateTime
| lastModified | Onillable="false" |  | The datetime this job was last modified. | xs:dateTime
| description | Onillable="false" |  | A descriptive message ellaborating the condition of this state, e.g. if the state is "FAILED" the stateDescription may be "Timeout occured". | xs:string

Table 3.5.5-1: state

### 3.5.6 subscription

A Consumer uses the Subscriptions Infrastructure Service to subscribe to Events published by one or more Service Providers.

SIF_Events are not reported for this object.

Figure 3.5.6-1: subscription

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| subscription |  |  | A Consumer uses the Subscriptions Infrastructure Service to subscribe to Events published by one or more Service Providers. |
@ | id | O |  |  | uuidType
| zoneId | M |  |  | xs:token
| contextId | Onillable="false" |  | The unique identity of a context element, which is associated with a Provider of this name and type operating in a Zone with this ID. | xs:token
| serviceType | M |  | The type of the Service | serviceTypeType values: UTILITY OBJECT FUNCTIONAL SERVICEPATH XQUERYTEMPLATE SERVICE
| serviceSubType | O |  | The subtype of the Service | serviceSubTypeType values: adminDirective
| serviceName | M |  | The name of the Service. For utilities, this is fixed to one of the defined set of Utility Service Names. For objects and functions, it is defined by the Data Model. | xs:token
| queueId | M |  | Specifies which queues you want data associated with this subscription published to. | xs:token

Table 3.5.6-1: subscription
JSON
[ { "subscription": { "id": "4c7cc1f0-71e6-11e9-a923-1681be663d3e", "zoneId": "auSchoolTestingZone", "contextId": "DEFAULT", "serviceType": "OBJECT", "serviceName": "StudentPersonals", "queueId": "e23fce44-7871-48eb-8952-e27733f59b30" } } ]
XML
<subscription id="4c7cc1f0-71e6-11e9-a923-1681be663d3e"> <zoneId>auSchoolTestingZone</zoneId> <contextId>DEFAULT</contextId> <serviceType>OBJECT</serviceType> <serviceName>StudentPersonals</serviceName> <queueId>e23fce44-7871-48eb-8952-e27733f59b30</queueId> </subscription>
Example 3.5.6-1: subscription Create
JSON
[ { "subscription": { "id": "625124a3-1f8f-4d3a-b014-701404d94c6b", "zoneId": "auSchoolTestingZone", "contextId": "DEFAULT", "serviceType": "OBJECT", "serviceName": "StudentPersonals", "queueId": "e23fce44-7871-48eb-8952-e27733f59b30" } } ]
XML
<subscription id="625124a3-1f8f-4d3a-b014-701404d94c6b"> <zoneId>auSchoolTestingZone</zoneId> <contextId>DEFAULT</contextId> <serviceType>OBJECT</serviceType> <serviceName>StudentPersonals</serviceName> <queueId>e23fce44-7871-48eb-8952-e27733f59b30</queueId> </subscription>
Example 3.5.6-2: subscription Create Response

## 3.6 Utility Services

### 3.6.1 alert

Alerts form a system wide log that can be protected, as it may contain sensitive data. Ideally an Alert should contain as much identifying information about the problem being reported as possible.

SIF_Events are not reported for this object.

Figure 3.6.1-1: alert

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| alert |  |  | Alerts form a system wide log that can be protected, as it may contain sensitive data. Ideally an Alert should contain as much identifying information about the problem being reported as possible. |
@ | id | O |  |  | uuidType
| reporter | M |  | External identification of the Application (Consumer or Provider) reporting this Alert. | xs:token
| cause | Onillable="false" |  | External identification of the cause of the Alert. | xs:token
| exchange | M |  | The exchange (or lack of exchange) responsible for generating the Alert. | values: REQUEST RESPONSE EVENT TIMEOUT OTHER
| level | M |  | The level of the Alert. | values: INFO STATECHANGE EVENT WARNING ERROR
| description | Onillable="false" |  | A description of the reason for the Alert. | xs:normalizedString
| messageID | Cnillable="false" |  | If available, the ID of the Message causing the problem. | xs:token
| body | Onillable="false" |  | The internals of the offending message or a more complete description of the information or state change. Usage of the CDATA designation is recommended in order to make the XML contents more readable to humans. | xs:string
| error | Onillable="false" |  | Detailed error results such as a stack trace. | xs:string
| xpath | Onillable="false" |  | An indicator of the specific element that was in error (or contributed to the problem. [NEEDS TO BE CHANGED TO the SIF XPATH TYPE] | xs:normalizedString
| category | Cnillable="false" |  | If the Alert Level is an error, this value must be the SIF 3.0.1 Error Category corresponding to the type of Error being reported | xs:unsignedInt
| code | Cnillable="false" |  | If the Alert Level is an error, this value must be the SIF 3.0.1 Error Code corresponding to the type of Error being reported. | xs:unsignedInt
| internal | Onillable="false" |  | Code internal to the reporter. | xs:token

Table 3.6.1-1: alert

### 3.6.2 codeSet

The Code Set Registry Service provides a way for all legal codes to be defined outside of the SIF Specification while allowing changes (additions and replacements) of external code set values to be easily verified by the recipient so as not to break existing Consumer / Provider interoperability.

SIF_Events are not reported for this object.

Figure 3.6.2-1: codeSet

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| codeSet |  |  | The Code Set Registry Service provides a way for all legal codes to be defined outside of the SIF Specification while allowing changes (additions and replacements) of external code set values to be easily verified by the recipient so as not to break existing Consumer / Provider interoperability. |
@ | id | O |  |  | xs:token
xs:minLength | 0
xs:maxLength | 128
| zone | M |  | If this is tied to a specific zone it is specified here, otherwise "environment-global" indicates applicability to all zones in the Environment. | xs:token
| version | M |  | The official major, minor, and revision version of the code set. | versionType
| timestamp | M |  | The date and time of the last change to this code set. So that only updates can be queried efficiently (where applicable). | xs:dateTime
| source | Cnillable="false" |  | URL to an external code set whose values are not (yet) present in the system. | uriType
| codeItems | Onillable="false" |  |  | codeItemsType

Table 3.6.2-1: codeSet

### 3.6.3 namespace

The Namespaces Registry contains the set of XML namespace URIs and their corresponding schema location URLs that are currently valid within the Environment.

SIF_Events are reported for this object.

Figure 3.6.3-1: namespace

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| namespace |  |  | The Namespaces Registry contains the set of XML namespace URIs and their corresponding schema location URLs that are currently valid within the Environment. |
@ | id | O |  |  | uuidType
| zone | M |  | If this namespace is tied to a specific zone it is specified here. | xs:token
| uri | M |  | The namespace URI of the retrieved URL. | xs:anyURI
xs:maxLength | 2048
| url | M |  | The URL of the specified namespace URI. | xs:anyURI
xs:maxLength | 2048

Table 3.6.3-1: namespace

### 3.6.4 provider

All potentially accessible Services have an entry in the Providers Registry (including the Providers Registry Utility Service itself), although full or even partial Consumer access to that Service is determined by the access rights currently granted in the Consumer's Environment object, and is not guaranteed.

SIF_Events are reported for this object.

Figure 3.6.4-1: provider

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| provider |  |  | All potentially accessible Services have an entry in the Providers Registry (including the Providers Registry Utility Service itself), although full or even partial Consumer access to that Service is determined by the access rights currently granted in the Consumer's Environment object, and is not guaranteed. |
@ | id | O |  |  | uuidType
| serviceType | M |  | The generic type of Service being provided. | serviceTypeType values: UTILITY OBJECT FUNCTIONAL SERVICEPATH XQUERYTEMPLATE SERVICE
| serviceName | M |  | The name of the Service or the Service Path being provided. | xs:token
| contextId | M |  | The name of the Service Context being provided. | xs:token
| zoneId | M |  | The Zone in which the Service Context is being provided. | xs:token
| providerName | M |  | The name of the Service Provider as it would be referred to by the administrator of the Zone (ex: RamseySIS). | xs:token
| querySupport | M |  |  | querySupportType
| mimeTypes | Onillable="false" |  |  | mediaTypesType
| endPoint | Cnillable="false" |  | In a Brokered Environment, this element contains the URL where all requests for this Service Provider should be re-invoked by the Connector | protocolType

Table 3.6.4-1: provider

### 3.6.5 xquery

This collection defines the entire set of named queries that Consumers may legally issue for execution by Service Providers. A Consumer specifies the ID of a Named XQuery in a Query Request to a specific Service Provider, along with a set of values for any associated script parameters.

SIF_Events are reported for this object.

Figure 3.6.5-1: xquery

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| xquery |  |  | This collection defines the entire set of named queries that Consumers may legally issue for execution by Service Providers. A Consumer specifies the ID of a Named XQuery in a Query Request to a specific Service Provider, along with a set of values for any associated script parameters. |
@ | id | C |  | The unique ID of the XQuery Template, which is contained in the Query Request URL when this template is being utilized. "Suggested" by the Consumer issuing the create Request, or pre-set in accordance with the binding requirements of a particular SIF release. This is NOT required to be a UUID, and must be provided as the Service Identifier in every Query URL which invokes this Template. Ex: "StudentSnapshot". | xs:token
| type | M |  | Determines if the query may be sent to a data provider or if it requires the extended XQuery mechanism. | values: SINGULAR FORMULA EXTENDED
| status | M |  | Communicates if the query has been inspected for data hiding and the results of that assessment. | values: PENDING APPROVED DISALLOWED
| qualifier | Onillable="false" |  | If status is DISALLOWED this element optionally contains the reason. | xs:string
xs:minLength | 0
xs:maxLength | 1024
| description | Onillable="false" |  | Human readable description of the XQuery's intended behavior. | xs:string
xs:minLength | 0
xs:maxLength | 1024
| script | M |  | The text of the XQuery which MAY accept parameters. Usage of the CDATA designation is recommended. | xs:string
xs:minLength | 0
| parameters | M |  |  | parametersType
| returnType | Mnillable="true" |  | The fully qualified name of the root element returned by this service. Example: http://www.sifassociation.org/datamodel/na/3.3:students | xs:anyURI

Table 3.6.5-1: xquery

### 3.6.6 zone

Zone identifiers are chosen by the administrator and can follow any convention that best meets the needs of the deploying organization. The Zone in which the Service is to be found always qualifies every Consumer request for any Provider Service. Each Service Consumer is assigned a "default" Zone at Registration time, which is used whenever a specific Zone is not explicitly included in one of its Provider Service Requests.

SIF_Events are not reported for this object.

Figure 3.6.6-1: zone

| Element/@Attribute | Char | Privacy Rating | Description | Type
--- | --- | --- | --- | --- | ---
| zone |  |  | Zone identifiers are chosen by the administrator and can follow any convention that best meets the needs of the deploying organization. The Zone in which the Service is to be found always qualifies every Consumer request for any Provider Service. Each Service Consumer is assigned a "default" Zone at Registration time, which is used whenever a specific Zone is not explicitly included in one of its Provider Service Requests. |
@ | id | O |  |  | xs:token
| description | Onillable="false" |  | A short (possibly multi-sentence) description of the Zone | xs:normalizedString
| properties | Onillable="false" |  |  | propertiesType

Table 3.6.6-1: zone
JSON
[ { "zone": { "id": "District", "description": "The zone for the local school district.", "properties": { "property": [ { "name": "email", "value": "john.smith@district.k12.wa.us" }, { "name": "phone", "value": "(360)555-1234" } ] } } } ]
XML
<zone id="District"> <description>The zone for the local school district.</description> <properties> <property name="email">john.smith@district.k12.wa.us</property> <property name="phone">(360)555-1234</property> </properties> </zone>
Example 3.6.6-1: environment

# Appendix A: Common Types

Common and supporting types referenced in this specification are included here as a reference.

## A.1 adapterFingerprintListType

Figure A.1-1: adapterFingerprintListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| adapterFingerprintListType |  |  | List
| adapterFingerprint | OR | An opaque marker that represents the amalgam of all underlying PODs tied to a specific DataProcessor-DataController relationship. | xs:normalizedString

Table A.1-1: adapterFingerprintListType

## A.2 aliasesType

Figure A.2-1: aliasesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| aliasesType |  |  | List
| alias | MR |  | aliasType

Table A.2-1: aliasesType

## A.3 aliasType

Figure A.3-1: aliasType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| aliasType |  |  |
| code | M |  | codeType
| source | O | URL where the related abbreviation comes from. | uriType
| namespace | O | Namespace where the related abbreviation comes from. | uriType

Table A.3-1: aliasType

## A.4 alternatePurposeListType

Alternate purposes for which the data may be used.

Figure A.4-1: alternatePurposeListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| alternatePurposeListType |  | Alternate purposes for which the data may be used. | List
| alternatePurpose | OR | Alternate purpose for which the data may be used. | xs:normalizedString

Table A.4-1: alternatePurposeListType

## A.5 appIDListType

List of application identifiers.

Figure A.5-1: appIDListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| appIDListType |  | List of application identifiers. | List
| appID | OR | An application identifier. | xs:normalizedString

Table A.5-1: appIDListType

## A.6 applicationInfoType

Figure A.6-1: applicationInfoType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| applicationInfoType |  |  |
| applicationKey | Onillable="false" | An opaque (to the SIF standard) element which contains any required Consumer authentication information. The content of this element is site-specific. For a Direct Environment which accepts Consumer Registration Requests from a mobile application, this element might contain a combination of the User ID and Password. | xs:string
| supportedInfrastructureVersion | Onillable="false" | The version of the SIF infrastructure which the Consumer supports. | xs:string
| dataModelNamespace | Onillable="false" | The namespace of the data payloads conveyed by this environment. Returns may be of a diffrent minor version. Utility payloads will be of the infrastructure namespace. | xs:anyURI
| transport | Onillable="false" | The transport which the Consumer expects the infrastructure to use to interoperate with it. The default is whichever transport the create request was issued on | xs:string
| applicationProduct | Onillable="false" |  | productIdentityType
| adapterProduct | Onillable="false" |  | productIdentityType

Table A.6-1: applicationInfoType

## A.7 benchmarkListType

A List of benchmarks - where a benchmark is a set of technical or process standards to ensure the clause is met.

Figure A.7-1: benchmarkListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| benchmarkListType |  | A List of benchmarks - where a benchmark is a set of technical or process standards to ensure the clause is met. | List
| benchmark | OR | A benchmark is a set of technical or process standards to ensure the clause is met. | benchmarkType

Table A.7-1: benchmarkListType

## A.8 benchmarkType

A set of technical or process standards to ensure the clause is met.

Figure A.8-1: benchmarkType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| benchmarkType |  | A set of technical or process standards to ensure the clause is met. |
| benchmarkName | O | The name of the Benchmark | xs:normalizedString
| benchmarkId | O | The local id of the benchmark. | gCoreLocalIdType
| benchmarkDescription | O | A description of what the benchmark is and how it should be applied. | xs:normalizedString
| benchmarkURL | O | A link to any authoritative source of the benchmark. | xs:anyURI

Table A.8-1: benchmarkType

## A.9 clauseListType

A list of the legal clauses within the contract.

Figure A.9-1: clauseListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| clauseListType |  | A list of the legal clauses within the contract. | List
| clause | OR | Details of a legal clause within the contract. | clauseType

Table A.9-1: clauseListType

## A.10 clauseType

Details of a legal clause within the contract.

Figure A.10-1: clauseType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| clauseType |  | Details of a legal clause within the contract. |
| clauseLabel | O | The label which should include a brief description. | xs:normalizedString
| clauseReference | O | The formal clause reference. | xs:normalizedString
| clauseContent | O | The actual detailed content of the clause. | xs:normalizedString
| obligationList | O | List of obligations. | obligationListType

Table A.10-1: clauseType

## A.11 codeItemsType

Figure A.11-1: codeItemsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| codeItemsType |  |  | List
| codeItem | MR |  | codeItemType

Table A.11-1: codeItemsType

## A.12 codeItemType

Figure A.12-1: codeItemType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| codeItemType |  |  |
| code | M | Official abbreviation for the given value. | xs:string
| source | O | URL where the related abbreviation comes from. | uriType
| namespace | O | Namespace where the related abbreviation comes from. | uriType
| value | Mnillable="true" | What the code represents. | xs:token
xs:minLength | 0
xs:maxLength | 128
| description | Onillable="false" | Human readable explanation of what the code represents. | xs:normalizedString
xs:minLength | 0
xs:maxLength | 1024
| definition | Onillable="false" | Human readable explanation provided by the source! | xs:normalizedString
xs:minLength | 0
xs:maxLength | 4096
| aliases | Onillable="false" |  | aliasesType
| action | M | The last action to be taken for this code item. | values: ADD CHANGE DEPRECATED DELETE
| timestamp | M | The date and time of the last action taken on this code item. So that only updates can be queried efficiently (where applicable). | xs:dateTime

Table A.12-1: codeItemType

## A.13 codeType

Figure A.13-1: codeType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| codeType |  |  |
| old | M | Indicates the alias code has been deprecated or deleted, even if it no longer appears in the register. | xs:boolean
| official | M | Indicates the alias code is an official one; however the locale uses this one to represent that concept, at least in part. | xs:boolean
| value | M | Alternate abbreviation that might need to be more specific or correct. | xs:string

Table A.13-1: codeType

## A.14 conditionListType

Figure A.14-1: conditionListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| conditionListType |  |  | List
| condition | OR |  | conditionType

Table A.14-1: conditionListType

## A.15 conditionType

Figure A.15-1: conditionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| conditionType |  |  |
| typeOfCondition | O |  | xs:normalizedString
| conditionName | O |  | xs:normalizedString
| conditionDescription | O |  | xs:normalizedString
| propertyList | O |  | propertyNVListType

Table A.15-1: conditionType

## A.16 contractType

The details of the contract the POD has been derived from.
Figure A.16-1: contractType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| contractType | O | The details of the contract the POD has been derived from. |
| contractURI | M | URI Associated with contract | xs:anyURI
| contractName | M | Name associated with contract | xs:normalizedString
| dateValidFrom | M | Date the contract is valid from. | xs:date
| dateValidTo | O | Date the contract is valid to. | xs:date
| contractVersion | O | Version of contract that this POD applies to. | xs:normalizedString
| lawList | M | List of laws covered referenced by the contract. | lawListType
| studentDataIPRights | O | Who owns the IP rights of this contract? | xs:normalizedString

Table A.16-1: contractType

## A.17 countryImpactedListType

List of impacted countries in or through which the data transits or is stored.

Figure A.17-1: countryImpactedListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| countryImpactedListType |  | List of impacted countries in or through which the data transits or is stored. | List
| countryImpacted | OR | Name of a country impacted in or through which the data transits or is stored. | countryImpactedType

Table A.17-1: countryImpactedListType

## A.18 countryImpactedType

Figure A.18-1: countryImpactedType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| countryImpactedType |  |  |
| country | O | Name of a country impacted in or through which the data transits or is stored. | gCoreCountryType
| usage | O | Details of the usage within the country, how the data is handled e.g. stored permanently, operational store, back-up, archived, etc. | xs:normalizedString

Table A.18-1: countryImpactedType

## A.19 createsType

Figure A.19-1: createsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| createsType |  |  | List
| create | MR |  | createType

Table A.19-1: createsType

## A.20 createType

Figure A.20-1: createType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| createType |  |  |
@ | id | O |  | xs:token
@ | advisoryId | M |  | xs:token
@ | statusCode | O |  | xs:token
xs:pattern | [24-5][0-9]{2}
| error | Onillable="false" |  | errorType

Table A.20-1: createType

## A.21 dataAccessType

A list of the data that can be accessed and any rules that specifically apply.

Figure A.21-1: dataAccessType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataAccessType |  | A list of the data that can be accessed and any rules that specifically apply. |
| clauseList | O | A list of clauses that specifically apply to these technical requirements. | clauseListType
| fieldList | O | A list of fields that can be accessed under this POD. Equivalent to a "green list". | fieldListType

Table A.21-1: dataAccessType

## A.22 dataControllerType

The data controller, "means the natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data", see GDPR.

Figure A.22-1: dataControllerType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataControllerType |  | The data controller, "means the natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data", see GDPR. |
| dataControllerName | O | Name of the data controller. | xs:normalizedString
| privacyPolicyURL | M | URL Associated with contract | xs:anyURI
| privacyContactList | O | The details of the privacy contact. | gCoreContactListType
| issuesNotificationContactList | O | The details of the individual to be contacted if there are issues in fulfilling the obligations of the contract. | gCoreContactListType

Table A.22-1: dataControllerType

## A.23 dataDeletionType

Details and requirements for data deletion.

Figure A.23-1: dataDeletionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataDeletionType |  | Details and requirements for data deletion. |
| deleteData | O | Must data be deleted when no longer required to the primary purpose? | values: Y N
| dataRetention | O | If allowed, how long can the data be retained for when no longer required for the primary purpose? | xs:integer
| deleteBy | O | By which specific date should this data be removed from systems? | xs:date
| partyToDeleteData | O | Who is responsible for deletion of this data? | partyToDeleteDataType
| respondInDays | O | In how many days should any request for information around this data and it's deletion be responded to? | xs:integer
| requirePortability | O | Do all the rules surrounding this data need to be ported with any data that is transmeitted? | values: Y N

Table A.23-1: dataDeletionType

## A.24 dataProcessorType

The data processor, "means a natural or legal person, public authority, agency or other body which processes personal data on behalf of the controller", see GDPR.

Figure A.24-1: dataProcessorType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataProcessorType |  | The data processor, "means a natural or legal person, public authority, agency or other body which processes personal data on behalf of the controller", see GDPR. |
| dataProcessorName | O | Name of the Data Processor. | xs:normalizedString
| privacyPolicyURL | M | URL Associated with contract | xs:anyURI
| privacyContactList | O | The details of the privacy contact. | gCoreContactListType
| notifyDataControllerOnAccessRequests | O | Do we need to advise the data controller of access requests? | values: Y N
| dataProcessorContactForAccessRequestsList | O | The details of the person to contact for access requests. | gCoreContactListType
| purposeList | O | A list or purposes for which the data may be used. | purposeListType
| alternatePurposeList | O | Alternate purposes for which the data may be used. | alternatePurposeListType
| deidentifiedPurposeList | O | The purposes for which deidentified data is able to be used (if any). | deidentifiedPurposeListType
| dataUsageMarketingAllowed | O | Can the data be used for marketing purposes? | values: Y N
| personalInformationUpdatedFromSource | O | The frequency at which personal information is to be updated from source systems. | xs:integer
| dataBreachNotification | O | In the event there is a breach event is notification of the breach contact required? | values: Y N
| dataBreachContactList | O | Contact details for the individual/s to be notified in the event of a data breach. | gCoreContactListType
| employeesMustComplyWithAgreement | O | Must employees of the data controller comply the with agreement? | values: Y N
| employeeConfidentialityAgreement | O | Are employees of the data controller required to comply with a confidentiality agreement? | values: Y N
| employeeTrainingList | O | A list of the data controller employee’s training requirements. | employeeTrainingListType
| passwordEmployeeAccessStandard | O | A list of the data controller employee’s password access standards. | passwordEmployeeAccessStandardType
| securityTestRequiredList | O | A list of security testing required to be completed by the data controller. | securityTestRequiredListType
| countryImpactedList | O | List of impacted countries in or through which the data transits or is stored. | countryImpactedListType

Table A.24-1: dataProcessorType

## A.25 dataSubjectType

The specific clauses obligations and benchmarks that applies to the subject - teacher, student or parent.

Figure A.25-1: dataSubjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataSubjectType |  | The specific clauses obligations and benchmarks that applies to the subject - teacher, student or parent. |
| clauseList | O |  | clauseListType
| benchmarkList | O |  | benchmarkListType
| fieldList | O | A list of fields that can be accessed under this POD. Equivalent to a "green list". | fieldListType
| respondInDays | O | n how many days should any request for information around this data subject be responded to? | xs:integer
| requirePortability | O | Do all the rules surrounding this data need to be ported with any data that is transmeitted? | values: Y N

Table A.25-1: dataSubjectType

## A.26 dataSubProcessorListType

The list of data sub-Processors who are the bodies that process data on behalf of the Data Processor.

Figure A.26-1: dataSubProcessorListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataSubProcessorListType |  | The list of data sub-Processors who are the bodies that process data on behalf of the Data Processor. | List
| dataSubProcessor | OR | A data sub-Processors who are the bodies that process data on behalf of the Data Processor. | dataSubProcessorType

Table A.26-1: dataSubProcessorListType

## A.27 dataSubProcessorType

Details of organisations who process data on behalf of the data processor.

Figure A.27-1: dataSubProcessorType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| dataSubProcessorType |  | Details of organisations who process data on behalf of the data processor. |
| subProcessorName | O | Name of the sub processor. | xs:normalizedString
| privacyPolicyURL | M | URL Associated with contract | xs:anyURI
| privacyContactList | O | Details of the data sub processor's privacy contact. | gCoreContactListType
| purposeList | O | The purpose for which data is supplied to the data sub processor by the data processor. | purposeListType

Table A.27-1: dataSubProcessorType

## A.28 defaultZoneType

Zone identifiers are chosen by the administrator and can follow any convention that best meets the needs of the deploying organization. The Zone in which the Service is to be found always qualifies every Consumer request for any Provider Service. Each Service Consumer is assigned a "default" Zone at Registration time, which is used whenever a specific Zone is not explicitly included in one of its Provider Service Requests.

Figure A.28-1: defaultZoneType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| defaultZoneType |  | Zone identifiers are chosen by the administrator and can follow any convention that best meets the needs of the deploying organization. The Zone in which the Service is to be found always qualifies every Consumer request for any Provider Service. Each Service Consumer is assigned a "default" Zone at Registration time, which is used whenever a specific Zone is not explicitly included in one of its Provider Service Requests. |
@ | id | O |  | xs:token
| description | Onillable="false" | A short (possibly multi-sentence) description of the Zone | xs:normalizedString
| properties | Onillable="false" |  | propertiesType

Table A.28-1: defaultZoneType

## A.29 DefinedProtocolsType

The transport protocols defined in SIF.
Figure A.29-1: DefinedProtocolsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| DefinedProtocolsType |  | The transport protocols defined in SIF. | values: HTTPS HTTP

Table A.29-1: DefinedProtocolsType

## A.30 deidentifiedPurposeListType

The purposes for which deidentified data is able to be used (if any).

Figure A.30-1: deidentifiedPurposeListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| deidentifiedPurposeListType |  | The purposes for which deidentified data is able to be used (if any). | List
| deidentifiedPurpose | OR | The purpose for which deidentified data is able to be used (if any). | xs:normalizedString

Table A.30-1: deidentifiedPurposeListType

## A.31 deleteIdCollectionType

Figure A.31-1: deleteIdCollectionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| deleteIdCollectionType |  |  | List
| delete | MR |  | deleteIdType

Table A.31-1: deleteIdCollectionType

## A.32 deleteIdType

Figure A.32-1: deleteIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| deleteIdType |  |  | EMPTY
@ | id | M |  | xs:token

Table A.32-1: deleteIdType

## A.33 deleteStatusCollectionType

Figure A.33-1: deleteStatusCollectionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| deleteStatusCollectionType |  |  | List
| delete | MR |  | deleteStatusType

Table A.33-1: deleteStatusCollectionType

## A.34 deleteStatusType

Figure A.34-1: deleteStatusType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| deleteStatusType |  |  |
@ | id | O |  | xs:token
@ | statusCode | O |  | xs:token
xs:pattern | [24-5][0-9]{2}
| error | Onillable="false" |  | errorType

Table A.34-1: deleteStatusType

## A.35 employeeTrainingListType

Figure A.35-1: employeeTrainingListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| employeeTrainingListType |  |  | List
| employeeTraining | OR |  | employeeTrainingType

Table A.35-1: employeeTrainingListType

## A.36 employeeTrainingType

Figure A.36-1: employeeTrainingType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| employeeTrainingType |  |  |
| trainingName | O |  | xs:normalizedString
| trainingURL | O |  | xs:anyURI

Table A.36-1: employeeTrainingType

## A.37 endpointListType

Figure A.37-1: endpointListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| endpointListType |  |  | List
| endpoint | OR | An endpoint covered by the POD. | endpointType

Table A.37-1: endpointListType

## A.38 endpointType

A type of endpoint.

Figure A.38-1: endpointType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| endpointType |  | A type of endpoint. |
| endpointURL | O | The url of the endpoint. | xs:anyURI
| endpointProviderName | O | The name of the provider of the endpoint. | xs:normalizedString

Table A.38-1: endpointType

## A.39 enumerationsType

Figure A.39-1: enumerationsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| enumerationsType |  |  | List
| enumeration | MR | Individual setting | enumerationType

Table A.39-1: enumerationsType

## A.40 enumerationType

Figure A.40-1: enumerationType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| enumerationType |  |  |
| value | M | An acceptable parameter value for this query. | xs:token
| code | Cnillable="false" | If enumerated value has an equivalent code, this field may be used for conversion. | xs:token

Table A.40-1: enumerationType

## A.41 environmentTypeType

Figure A.41-1: environmentTypeType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| environmentTypeType | O |  | values: DIRECT BROKERED

Table A.41-1: environmentTypeType

## A.42 ExtendedContentType

Allows for any mixed XML in an element.
Figure A.42-1: ExtendedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ExtendedContentType |  | Allows for any mixed XML in an element. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.42-1: ExtendedContentType

## A.43 fieldListType

A list of fields that can be accessed under this POD. Equivalent to a "green list".

Figure A.43-1: fieldListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| fieldListType |  | A list of fields that can be accessed under this POD. Equivalent to a "green list". | List
| field | OR | Details of a field that can be accessed under this POD, equivalent to an element in a "green list". | fieldType

Table A.43-1: fieldListType

## A.44 fieldType

Details of a field that can be accessed under this POD, equivalent to an element in a "green list".

Figure A.44-1: fieldType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| fieldType |  | Details of a field that can be accessed under this POD, equivalent to an element in a "green list". |
| fieldName | O | Name of the "green listed field" | xs:normalizedString
| controlrights | O | What are the control rights around this "green listed field"? | values: R RW

Table A.44-1: fieldType

## A.45 gCoreAddressListType

A list of Address elements.

Figure A.45-1: gCoreAddressListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreAddressListType |  | A list of Address elements. | List
| address | MR |  | Extension of gCoreAddressType

Table A.45-1: gCoreAddressListType
JSON
{"sample": " 1 IBM Plaza Suite 2000 Plaza Square Chicago IL USA 60611 " }
XML
<addressList> <address> <line1>1 IBM Plaza</line1> <line2>Suite 2000</line2> <line3>Plaza Square</line3> <city>Chicago</city> <stateProvince>IL</stateProvince> <country>USA</country> <postalCode>60611</postalCode> </address> </addressList>
Example A.45-1: gCoreAddressList Example

## A.46 gCoreAddressType

This element contains address data

Figure A.46-1: gCoreAddressType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreAddressType | M | This element contains address data. |
| effectiveFromDate | O | Date the address became active. | xs:date
| effectiveToDate | O | Date the address ceases to be active. | xs:date
| line1 | M | Address line 1. | xs:normalizedString
| line2 | O | Address line 2. | xs:normalizedString
| line3 | O | Address line 3. | xs:normalizedString
| city | M | The city or Suburb part of the address. | xs:normalizedString
| stateProvince | C | The state or province or county. | gCoreStateProvinceType
| country | O | The country code. | gCoreCountryType
| postalCode | M | The ZIP/postal code. | xs:normalizedString

Table A.46-1: gCoreAddressType
JSON
{"sample": " 1 IBM Plaza Suite 2000 Plaza Square Chicago WA USA 60611 " }
XML
<address> <line1>1 IBM Plaza</line1> <line2>Suite 2000</line2> <line3>Plaza Square</line3> <city>Chicago</city> <stateProvince>WA</stateProvince> <country>USA</country> <postalCode>60611</postalCode> </address>
Example A.46-1: gCoreAddress Example

## A.47 gCoreContactInfoType

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

Figure A.47-1: gCoreContactInfoType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreContactInfoType |  | Common element used to supply information for a contact person at a school, LEA, or other institution. |
| name | M |  | gCoreNameType
| positionTitle | O | The contact person's position title. Examples Superintendent | xs:normalizedString
| role | O | Role played by this contact in this instance. Examples Report Contact Primary Contact Alternate Contact | xs:normalizedString
| registrationDetails | O | Registration Details of the Contact. | xs:normalizedString
| qualifications | O | Qualifications of the Contact. | xs:normalizedString
| address | O | Address of the contact. | gCoreAddressType
| emailList | O | List of Email elements. | gCoreEmailListType
| phoneNumberList | O | List of PhoneNumber elements. | gCorePhoneNumberListType

Table A.47-1: gCoreContactInfoType
JSON
{"sample": " Woodall Charles William Superintendent drseuss@whoville.k12.state.us (02) 9555-0102 " }
XML
<ContactInfo> <name> <familyName>Woodall</familyName> <givenName>Charles</givenName> <otherGivenNames>William</otherGivenNames> </name> <positionTitle>Superintendent</positionTitle> <emailList> <email>drseuss@whoville.k12.state.us</email> </emailList> <phoneNumberList> <phoneNumber> <number>(02) 9555-0102</number> </phoneNumber> </phoneNumberList> </ContactInfo>
Example A.47-1: gCoreContactInfo

## A.48 gCoreContactListType

List of Contacts associated with an entity.

Figure A.48-1: gCoreContactListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreContactListType |  | List of Contacts associated with an entity. | List
| contact | MR |  | gCoreContactInfoType

Table A.48-1: gCoreContactListType
JSON
{"sample": " Woodall Charles William Superintendent drseuss@whoville.k12.state.us (02) 9555-0102 " }
XML
<contactList> <contact> <name> <familyName>Woodall</familyName> <givenName>Charles</givenName> <otherGivenNames>William</otherGivenNames> </name> <positionTitle>Superintendent</positionTitle> <emailList> <email>drseuss@whoville.k12.state.us</email> </emailList> <phoneNumberList> <phoneNumber> <number>(02) 9555-0102</number> </phoneNumber> </phoneNumberList> </contact> </contactList>
Example A.48-1: gCoreContactList

## A.49 gCoreCountryType

A country code or name.

Figure A.49-1: gCoreCountryType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreCountryType |  | A country code or name. | xs:normalizedString

Table A.49-1: gCoreCountryType
JSON
{"sample": "Australia" }
XML
<country>Australia</country>
Example A.49-1: gCoreCountryType

## A.50 gCoreEmailListType

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

Figure A.50-1: gCoreEmailListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreEmailListType |  | A list of e-mail addresses associated with an individual or organization. | List
| email | MR |  | gCoreEmailType

Table A.50-1: gCoreEmailListType
JSON
{"sample": " contact@sifinfo.org info@sifinfo.org " }
XML
<emailList> <email>contact@sifinfo.org</email> <email>info@sifinfo.org</email> </emailList>
Example A.50-1: gCoreEmailListType

## A.51 gCoreEmailType

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

Figure A.51-1: gCoreEmailType

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

Table A.51-1: gCoreEmailType
JSON
{"sample": "contact@sifinfo.org" }
XML
<email>contact@sifinfo.org</email>
Example A.51-1: gCoreEmailType

## A.52 gCoreGenderType

Figure A.52-1: gCoreGenderType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreGenderType |  |  | values: M Male F Female X Non-binary/Intersex U Unknown/Not-defined

Table A.52-1: gCoreGenderType

## A.53 gCoreLocalIdType

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

Figure A.53-1: gCoreLocalIdType

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

Table A.53-1: gCoreLocalIdType
JSON
{"sample": "123321A" }
XML
<localId>123321A</localId>
Example A.53-1: gCoreLocalId Example

## A.54 gCoreNameType

Core Name Type or `Name` elements, primarily to allow structure to be leveraged with different `Type` attribute values.

Figure A.54-1: gCoreNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCoreNameType |  | Core Name Type or `Name` elements, primarily to allow structure to be leveraged with different `Type` attribute values. |
| title | O | A title or prefix associated with the name. If any of: Mr, Mrs, Ms, Miss, Rev, Fr, Dr, Prof, Hon, Sir, Lord, Lady - these must be as shown, otherwise free text. Note that title is not applicable to learners. | xs:normalizedString
| familyName | C | Family name. That part of the person's name which is used to describe family, clan, tribal group, or marital association. Note that this element is required when known. However, it may not be possible to know the family name in which case you should add the available information to the FullName element. | xs:normalizedString
| givenName | C | Given name of the person. Note that this element is required if known. However, it may not be possible to know the given name in which case you should add the available information to the FullName element. | xs:normalizedString
| otherGivenNames | O | All other given or middle names, each separated with a single space character. | xs:normalizedString
| familyNameFirst | O | An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. | values: Y N
| preferredName | O | The given name preferred most by the person (as written). | xs:normalizedString

Table A.54-1: gCoreNameType
JSON
{"sample": " Wesson Melanie Joan N Mel Wesson " }
XML
<name> <familyName>Wesson</familyName> <givenName>Melanie</givenName> <otherGivenNames>Joan</otherGivenNames> <familyNameFirst>N</familyNameFirst> <preferredName>Mel Wesson</preferredName> </name>
Example A.54-1: gCoreName

## A.55 gCorePhoneNumberListType

Lists phone numbers associated with an entity.

Figure A.55-1: gCorePhoneNumberListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCorePhoneNumberListType |  | Lists phone numbers associated with an entity. | List
| phoneNumber | MR |  | gCorePhoneNumberType

Table A.55-1: gCorePhoneNumberListType
JSON
{"sample": " (03) 9543 2000 " }
XML
<phoneNumberList> <phoneNumber> <number>(03) 9543 2000</number> </phoneNumber> </phoneNumberList>
Example A.55-1: gCorePhoneNumberList

## A.56 gCorePhoneNumberType

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

Figure A.56-1: gCorePhoneNumberType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| gCorePhoneNumberType |  | This element represents a phone number and occurs within objects such as StudentPersonal, StaffPersonal, etc. |
| number | M | Phone number. Free-form, but typical Australian formats include: (###) ####-#### ####-#### +##### ### ### | xs:normalizedString
| extension | O | Phone number extension. | xs:normalizedString
| listedStatus | O | Indicates whether or not the phone number is available to the public. | values: Y N
| preference | O | Preference number indicating an order in which phone numbers should be used when contacting person. | xs:unsignedInt

Table A.56-1: gCorePhoneNumberType
JSON
{"sample": " (03) 9543 2000 245 1 " }
XML
<phoneNumber> <number>(03) 9543 2000</number> <extension>245</extension> <preference>1</preference> </phoneNumber>
Example A.56-1: gCorePhoneNumber

## A.57 gCoreStateProvinceIdType

The identifier for this entity as assigned by the state or province.

Figure A.57-1: gCoreStateProvinceIdType

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

Table A.57-1: gCoreStateProvinceIdType

## A.58 gCoreStateProvinceType

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

Figure A.58-1: gCoreStateProvinceType

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

Table A.58-1: gCoreStateProvinceType
JSON
{"sample": "ACT" }
XML
<stateProvince>ACT</stateProvince>
Example A.58-1: gCoreStateProvinceType

## A.59 infrastructureServiceNamesType

Figure A.59-1: infrastructureServiceNamesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| infrastructureServiceNamesType | O |  | values: environment provisionRequests requestsConnector eventsConnector queues subscriptions servicesConnector

Table A.59-1: infrastructureServiceNamesType

## A.60 infrastructureServicesType

Figure A.60-1: infrastructureServicesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| infrastructureServicesType |  |  | List
| infrastructureService | MRminOccurs="2" | There must be an InfrastructureService element present for each defined Infrastructure Service. The value of each InfrastructureService Property value subelement defines the URL location of that Infrastructure Service. | infrastructureServiceType

Table A.60-1: infrastructureServicesType

## A.61 infrastructureServiceType

Figure A.61-1: infrastructureServiceType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| infrastructureServiceType |  |  | xs:normalizedString
@ | name | O |  | infrastructureServiceNamesType values: environment provisionRequests requestsConnector eventsConnector queues subscriptions servicesConnector

Table A.61-1: infrastructureServiceType

## A.62 initializationType

Figure A.62-1: initializationType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| initializationType |  |  |
| phaseName | Onillable="false" | Name of initialization phase the payload corresponds to. | xs:token
| payload | M | Information matching the initialization phase, should result in corresponding phase having an INPROGRESS, COMPLETED, or FAILED state. | xs:anyType

Table A.62-1: initializationType

## A.63 jobStateType

Figure A.63-1: jobStateType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| jobStateType | O |  | values: NOTSTARTED INPROGRESS COMPLETED FAILED

Table A.63-1: jobStateType

## A.64 lawListType

A list of parties and data sharing permissions.

Figure A.64-1: lawListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| lawListType |  | A list of parties and data sharing permissions. | List
| law | OR | A law that applies to this contract. | lawType

Table A.64-1: lawListType

## A.65 lawType

Information about the specific law.

Figure A.65-1: lawType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| lawType |  | Information about the specific law. |
| lawName | M | Common name for this law. | xs:normalizedString
| lawDescription | M | Details of the law. | xs:normalizedString

Table A.65-1: lawType

## A.66 legalRequirementsType

Contains a list of the legal clauses within the contract.

Figure A.66-1: legalRequirementsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| legalRequirementsType |  | Contains a list of the legal clauses within the contract. |
| clauseList | M | A list of the legal clauses within the contract. | clauseListType

Table A.66-1: legalRequirementsType

## A.67 mediaTypesType

Figure A.67-1: mediaTypesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| mediaTypesType |  |  | List
| mediaType | MR | An Internet Media Type supported by this adaptor (for this service). | xs:token

Table A.67-1: mediaTypesType

## A.68 methodParametersType

Figure A.68-1: methodParametersType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| methodParametersType |  |  | List
| methodParameter | MR | Individual setting | methodParameterType

Table A.68-1: methodParametersType

## A.69 methodParameterType

Figure A.69-1: methodParameterType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| methodParameterType |  |  |
| paramName | M | The name of the parameter being passed in. | xs:token
| paramValue | M | The value of the parameter being passed in. | xs:normalizedString
| comparisonType | Onillable="false" | The operation used to make the comparison. If not provided EQUAL is assumed. | xs:token

Table A.69-1: methodParameterType

## A.70 obligationListType

A list of requirements imposed by the contract.

Figure A.70-1: obligationListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| obligationListType |  | A list of requirements imposed by the contract. | List
| obligation | OR | A requirement imposed by the contract. | obligationType

Table A.70-1: obligationListType

## A.71 obligationType

A requirement imposed by the contract.

Figure A.71-1: obligationType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| obligationType |  | A requirement imposed by the contract. |
| obligationDescription | O | A description of the requirment imposed by the contract. | xs:normalizedString
| obligationURL | O | A link to any authoritative source of the obligation. | xs:anyURI
| benchmarkList | O | A list of benchmarks associated with the obligation. | benchmarkListType

Table A.71-1: obligationType

## A.72 parametersType

Figure A.72-1: parametersType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| parametersType |  |  | List
| parameter | OR | Individual setting | parameterType

Table A.72-1: parametersType

## A.73 parameterType

Figure A.73-1: parameterType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| parameterType |  |  |
| name | M | The name of the query parameter to be passed in. Note: Must not conflict with any other query parameter name. | xs:token
| type | Onillable="false" | A well understood type that MAY be used for parameter validation. Example: xs:unsignedInt. | xs:token
| default | Onillable="false" | Value to be supplied for this parameter if the submitter omits it. | xs:token
| description | Onillable="false" | An explanation of what this parameter represents. | xs:normalizedString
xs:minLength | 0
xs:maxLength | 1024
| required | Onillable="false" | Indicator as to if this parameter is required. If omitted, the parameter is assumed to be required!. | xs:boolean
| enumerations | Onillable="false" |  | enumerationsType
| range | Onillable="false" |  | rangeType
| minLength | Onillable="false" | The minimum length for values of this parameter. If omitted, zero. May be functionally different because of other restrictions. | xs:unsignedInt
| maxLength | Onillable="false" | The maximum length for values of this parameter. If omitted, unbounded. May be functionally different because of other restrictions. | xs:unsignedInt

Table A.73-1: parameterType

## A.74 partyToDeleteDataType

Who is responsible for deletion of this data?

Figure A.74-1: partyToDeleteDataType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| partyToDeleteDataType |  | Who is responsible for deletion of this data? |
| organisation | O |  | gCoreLocalIdType
| deletecontactInfo | O |  | gCoreContactInfoType

Table A.74-1: partyToDeleteDataType

## A.75 passwordEmployeeAccessStandardType

Figure A.75-1: passwordEmployeeAccessStandardType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| passwordEmployeeAccessStandardType |  |  |
| standardName | O | Name of the standard used for access. | xs:normalizedString
| standardURL | O | A link to an authoritative source for this standard. | xs:anyURI

Table A.75-1: passwordEmployeeAccessStandardType

## A.76 phaseCollectionType

Figure A.76-1: phaseCollectionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| phaseCollectionType |  |  | List
| phase | MR |  | phaseType

Table A.76-1: phaseCollectionType

## A.77 phaseStateType

Figure A.77-1: phaseStateType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| phaseStateType | O |  | values: NOTAPPLICABLE NOTSTARTED PENDING SKIPPED INPROGRESS COMPLETED FAILED

Table A.77-1: phaseStateType

## A.78 phaseType

Figure A.78-1: phaseType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| phaseType |  |  |
| name | M | The name of the Phase unique within the context of the owning job. | xs:token
| states | M | A collection of the states the Phase has been through, must initially contain a NOTAPPLICABLE or NOTSTARTED state. | stateCollectionType
| required | M | Whether or not this phase is required for the job to complete successfully. | xs:boolean
| rights | M | Access rights given to the consumer for this phase. | rightsType
| statesRights | M | Access rights given to the consumer for each state. | rightsType

Table A.78-1: phaseType

## A.79 privacyListType

Figure A.79-1: privacyListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| privacyListType |  |  | List
| privacy | OR |  | privacyType

Table A.79-1: privacyListType

## A.80 privacyObligationsDocumentType

Figure A.80-1: privacyObligationsDocumentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| privacyObligationsDocumentType |  |  |
| contract | O | The details of the contract the POD has been derived from. | contractType
| legalRequirements | O | Legal Requirements Container. | legalRequirementsType
| technicalRequirements | O | Technical Requirements Container. | technicalRequirementsType
| dataController | O | The data controller, "means the natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data", see GDPR. | dataControllerType
| dataProcessor | O | The data processor, "means a natural or legal person, public authority, agency or other body which processes personal data on behalf of the controller", see GDPR. | dataProcessorType
| dataSubProcessorList | O | The list of data sub-Processors who are the bodies that process data on behalf of the Data Processor. | dataSubProcessorListType

Table A.80-1: privacyObligationsDocumentType

## A.81 privacyType

.

Figure A.81-1: privacyType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| privacyType |  | . |
| default | M | Is this the default privacy template? | values: Y N
| appIDList | O | The list of applications in this contract. | appIDListType
| adapterFingerprintList | O | A list of fingerprints. | adapterFingerprintListType
| zoneContextList | O | A list zones and contexts where this POD applies. | zoneContextListType
| endpointList | O | A list of endpoints that are covered by this POD. | endpointListType
| dataModelNamespace | O | Namespace associated with the relevant datamodel. | xs:anyURI
| dataModelVersionMin | O | Minimum data model version. | xs:normalizedString
| dataModelVersionMax | O | Maximum data model version. | xs:normalizedString
| privacyObligationsDocument | O | The legal and technical requirements that are required to be met to satisfy privacy and security concerns. | privacyObligationsDocumentType

Table A.81-1: privacyType

## A.82 productIdentityType

Figure A.82-1: productIdentityType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| productIdentityType |  |  |
| vendorName | Onillable="false" | The name of the company supplying this Product. | xs:string
| productName | M | The name of the Product | xs:string
| productVersion | Onillable="false" | The format of this field is undefined, but it should match the format used in the agent's conformance statement, if the agent is SIF Certified. | xs:string
| iconURI | Onillable="false" | HTTP URL referencing an icon for graphical representation of the application/agent. Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF). | xs:anyURI

Table A.82-1: productIdentityType

## A.83 propertiesType

Figure A.83-1: propertiesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| propertiesType |  |  | List
| property | MR | Individual setting | propertyType

Table A.83-1: propertiesType

## A.84 propertyNVListType

Figure A.84-1: propertyNVListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| propertyNVListType |  |  | List
| property | OR |  | propertyNVType

Table A.84-1: propertyNVListType

## A.85 propertyNVType

Figure A.85-1: propertyNVType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| propertyNVType |  |  |
| propertyName | O |  | xs:normalizedString
| propertyValue | O |  | xs:normalizedString

Table A.85-1: propertyNVType

## A.86 propertyType

Figure A.86-1: propertyType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| propertyType |  |  | xs:normalizedString
@ | name | M | Name/Value pair. | xs:string

Table A.86-1: propertyType

## A.87 protocolType

Figure A.87-1: protocolType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| protocolType |  |  |
| location | M | The URL to use when sending Requests to a Provider | xs:anyURI
| properties | O | May contain zero or more property elements containing name/value pairs describing any protocol settings required to ensure proper communication | propertiesType

Table A.87-1: protocolType

## A.88 provisionedZonesType

Figure A.88-1: provisionedZonesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| provisionedZonesType |  |  | List
| provisionedZone | MR | A specific Zone defined for this environment. | provisionedZoneType

Table A.88-1: provisionedZonesType
JSON
{"sample": " UNSUPPORTED APPROVED UNSUPPORTED UNSUPPORTED REJECTED APPROVED SUPPORTED SUPPORTED REJECTED APPROVED REJECTED " }
XML
<provisionedZones> <provisionedZone id="environment-global"> <services> <service type="UTILITY" name="alerts" contextId="DEFAULT"> <rights> <right type="QUERY">UNSUPPORTED</right> <right type="CREATE">APPROVED</right> <right type="UPDATE">UNSUPPORTED</right> <right type="DELETE">UNSUPPORTED</right> <right type="SUBSCRIBE">REJECTED</right> </rights> </service> </services> </provisionedZone> <provisionedZone id="SuffolkMiddleSchool"> <services> <service type="OBJECT" name="students" contextId="DEFAULT"> <rights> <right type="QUERY">APPROVED</right> <right type="CREATE">SUPPORTED</right> <right type="UPDATE">SUPPORTED</right> <right type="DELETE">REJECTED</right> <right type="SUBSCRIBE">APPROVED</right> <right type="PROVIDE">REJECTED</right> </rights> </service> </services> </provisionedZone> </provisionedZones>
Example A.88-1: provisionedZones

## A.89 provisionedZoneType

Figure A.89-1: provisionedZoneType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| provisionedZoneType |  |  |
@ | id | M | The unique id of the Zone, and the key to the Zone element in the Zone Registry. | xs:string
| services | Onillable="false" |  | servicesType

Table A.89-1: provisionedZoneType

## A.90 purposeListType

A list of the purposes for which data is may be used.

Figure A.90-1: purposeListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| purposeListType |  | A list of the purposes for which data is may be used. | List
| purpose | OR | The purpose for which data may be used. | xs:normalizedString

Table A.90-1: purposeListType

## A.91 querySupportType

Figure A.91-1: querySupportType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| querySupportType |  |  |
| dynamicQuery | Onillable="false" | True if this service is capable of honoring the "where" parameter. | xs:boolean
| queryByExample | Onillable="false" | True if this service is capable of honoring query by example payloads. | xs:boolean
| changesSinceMarker | Onillable="false" | True if this service is capable of supporting Changes Since Queries. | xs:boolean
| paged | Onillable="false" | True if this service is capable of responding to Paged Query Requests (both Interactive and Batch). | xs:boolean
| maxPageSize | Cnillable="false" | If Paged Queries are supported, this is the maximum number of Objects that will be returned on a Page of Query results. | xs:unsignedInt
| totalCount | Onillable="false" |  | xs:boolean
| applicationProduct | Cnillable="false" | Application Vendor Identification | productIdentityType
| adapterProduct | Onillable="false" | Adapter Vendor Identification | productIdentityType

Table A.91-1: querySupportType

## A.92 rangeType

Figure A.92-1: rangeType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| rangeType |  |  |
| start | M | If a numeric range is used, this holds the inclusive starting value. | xs:long
| end | M | If a numeric range is used, this holds the inclusive ending value. | xs:long

Table A.92-1: rangeType

## A.93 rightsType

Figure A.93-1: rightsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| rightsType |  |  | List
| right | MR |  | rightType

Table A.93-1: rightsType

## A.94 rightType

Figure A.94-1: rightType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| rightType |  |  | Extension of rightValueType values: APPROVED SUPPORTED REJECTED UNSUPPORTED REQUESTED
@ | type | M | The type of the requested Access Right | values: QUERY CREATE UPDATE DELETE SUBSCRIBE PROVIDE

Table A.94-1: rightType

## A.95 rightValueType

Figure A.95-1: rightValueType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| rightValueType |  | rightValueType is the base type for the following data types: rightType | values: APPROVED SUPPORTED REJECTED UNSUPPORTED REQUESTED

Table A.95-1: rightValueType

## A.96 securityTechnologyListType

Figure A.96-1: securityTechnologyListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| securityTechnologyListType |  |  | List
| securityTechnology | OR |  | securityTechnologyType

Table A.96-1: securityTechnologyListType

## A.97 securityTechnologyType

Figure A.97-1: securityTechnologyType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| securityTechnologyType |  |  |
| clauseList | O |  | clauseListType
| technologyName | O |  | xs:normalizedString
| technologyDescription | O |  | xs:normalizedString
| referenceURL | O |  | xs:anyURI
| versionMin | O |  | xs:normalizedString

Table A.97-1: securityTechnologyType

## A.98 securityTestRequiredListType

Figure A.98-1: securityTestRequiredListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| securityTestRequiredListType |  |  | List
| securityTestRequired | OR | Details of the security test required. | securityTestRequiredType

Table A.98-1: securityTestRequiredListType

## A.99 securityTestRequiredType

Details of the security test required.

Figure A.99-1: securityTestRequiredType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| securityTestRequiredType |  | Details of the security test required. |
| testType | O | Type of the test. | xs:normalizedString
| testFrequency | O | How often does this test need to be performed? | xs:normalizedString
| remediationRequiredIn | O | RNumber of days remediation for any inadequacies has to be completed with in. | xs:normalizedString
| shareResults | O | Are the results of this security test allowed to be shared? | values: Y N

Table A.99-1: securityTestRequiredType

## A.100 SelectedContentType

Allows an XML fragment selected from an object to be used in an element with XML validation skipped.
Figure A.100-1: SelectedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SelectedContentType |  | Allows an XML fragment selected from an object to be used in an element with XML validation skipped. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.100-1: SelectedContentType

## A.101 servicesType

Figure A.101-1: servicesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| servicesType |  |  | List
| service | MR |  | serviceType

Table A.101-1: servicesType

## A.102 serviceSubTypeType

Figure A.102-1: serviceSubTypeType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| serviceSubTypeType | O |  | values: adminDirective

Table A.102-1: serviceSubTypeType

## A.103 serviceType

Figure A.103-1: serviceType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| serviceType |  |  |
@ | type | M |  | serviceTypeType values: UTILITY OBJECT FUNCTIONAL SERVICEPATH XQUERYTEMPLATE SERVICE
@ | subType | O |  | serviceSubTypeType values: adminDirective
@ | name | M | The name of the Service. For utilities, this is fixed to one of the defined set of Utility Service Names. For objects and functions, it is defined by the Data Model. | xs:string
@ | contextId | M | The unique identity of a context element, which is associated with a Provider of this name and type operating in a Zone with this ID. All Services with the same name in the same Zone must have different Context IDs. Only one such Service can have no Context. | xs:string
| rights | M |  | rightsType

Table A.103-1: serviceType

## A.104 serviceTypeType

Figure A.104-1: serviceTypeType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| serviceTypeType | O |  | values: UTILITY OBJECT FUNCTIONAL SERVICEPATH XQUERYTEMPLATE SERVICE

Table A.104-1: serviceTypeType

## A.105 technicalRequirementsType

Details of technical requirements that need to be met to achieve the POD.

Figure A.105-1: technicalRequirementsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| technicalRequirementsType |  | Details of technical requirements that need to be met to achieve the POD. |
| dataAccess | O | A list of the data that can be accessed and any rules that specifically apply. | dataAccessType
| conditionList | O |  | conditionListType
| dataSubject | O | The specific clauses obligations and benchmarks that applies to the subject - teacher, student or parent. | dataSubjectType
| dataDeletion | O | Details and requirements for data deletion. | dataDeletionType
| securityTechnologyList | O |  | securityTechnologyListType

Table A.105-1: technicalRequirementsType

## A.106 updatesType

Figure A.106-1: updatesType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| updatesType |  |  | List
| update | MR |  | updateType

Table A.106-1: updatesType

## A.107 updateType

Figure A.107-1: updateType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| updateType |  |  |
@ | id | O |  | xs:token
@ | statusCode | O |  | xs:token
xs:pattern | [24-5][0-9]{2}
| error | Onillable="false" |  | errorType

Table A.107-1: updateType

## A.108 uriType

Figure A.108-1: uriType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| uriType | O |  | xs:anyURI

Table A.108-1: uriType

## A.109 uuidType

Figure A.109-1: uuidType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| uuidType | O |  | xs:token
xs:pattern | [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[14][a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}

Table A.109-1: uuidType

## A.110 versionType

Figure A.110-1: versionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| versionType | O |  | xs:token
xs:pattern | [0-9]{1,3}[.][0-9]{1,3}([.][0-9]{1,3})?

Table A.110-1: versionType

## A.111 zoneContextListType

Figure A.111-1: zoneContextListType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| zoneContextListType |  |  | List
| zoneContext | OR |  | zoneContextType

Table A.111-1: zoneContextListType

## A.112 zoneContextType

A Zone and/or Context related to a POD.

Figure A.112-1: zoneContextType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| zoneContextType |  | A Zone and/or Context related to a POD. |
| zoneId | O |  | gCoreLocalIdType
| contextId | O |  | gCoreLocalIdType

Table A.112-1: zoneContextType

# Appendix B: Code Sets

Select shared and named code sets defined in SIF are included here for reference.

## IN Code Sets

# Appendix C: External Code Sets

All code sets defined by external bodies and referenced within SIF are included here for reference. The left column in each table contains the individual code values that are used in SIF elements and attributes that reference these code sets. These sets of code values are closed and normative for a given version of this specification. Including codes not provided here in corresponding SIF elements and attributes can lead to XML validation errors in installations where the zone integration server or any agent is validating XML messages; the SIF data model allows for locally-defined codes, where deemed appropriate, in the `OtherCodeList` element. The right column of each table may provide a textual equivalent or description of the corresponding code, and is provided for informational purposes only. The referenced sources for these code sets serve as the authorities for all descriptions and semantics, and for the definition and maintenance of the code set values themselves. In each release of this specification the SIF Association endeavors to synchronize referenced code sets with updates from external sources.

## International Standards Organization (ISO)

# Appendix D: Background/Supplementary Documentation (non-normative)

This appendix supplies background/supplementary documentation from working groups and task forces for interested readers, including but not limited to object plans, business/use cases, test plans, test results, background and best practice documentation. Last modified dates are included in parentheses.

- PESCJSON.pdf (3/8/2021)
- OpenAPI.zip (11/16/2021)
- SIF 3.3 XSD Changes.pdf (8/7/2019)
- scripts.zip (11/16/2021)
- Infrastructure3.3Delta.pdf (8/7/2019)

# Appendix E: Index of Tables

Table 3.2.1‑1 | pod
Table 3.3.1‑1 | deleteRequest
Table 3.4.1‑1 | adminDirective
Table 3.4.2‑1 | createResponse
Table 3.4.3‑1 | deleteResponse
Table 3.4.4‑1 | error
Table 3.4.5‑1 | updateResponse
Table 3.5.1‑1 | environment
Table 3.5.2‑1 | job
Table 3.5.3‑1 | provisionRequest
Table 3.5.4‑1 | queue
Table 3.5.5‑1 | state
Table 3.5.6‑1 | subscription
Table 3.6.1‑1 | alert
Table 3.6.2‑1 | codeSet
Table 3.6.3‑1 | namespace
Table 3.6.4‑1 | provider
Table 3.6.5‑1 | xquery
Table 3.6.6‑1 | zone
Table A.1‑1 | adapterFingerprintListType
Table A.2‑1 | aliasesType
Table A.3‑1 | aliasType
Table A.4‑1 | alternatePurposeListType
Table A.5‑1 | appIDListType
Table A.6‑1 | applicationInfoType
Table A.7‑1 | benchmarkListType
Table A.8‑1 | benchmarkType
Table A.9‑1 | clauseListType
Table A.10‑1 | clauseType
Table A.11‑1 | codeItemsType
Table A.12‑1 | codeItemType
Table A.13‑1 | codeType
Table A.14‑1 | conditionListType
Table A.15‑1 | conditionType
Table A.16‑1 | contractType
Table A.17‑1 | countryImpactedListType
Table A.18‑1 | countryImpactedType
Table A.19‑1 | createsType
Table A.20‑1 | createType
Table A.21‑1 | dataAccessType
Table A.22‑1 | dataControllerType
Table A.23‑1 | dataDeletionType
Table A.24‑1 | dataProcessorType
Table A.25‑1 | dataSubjectType
Table A.26‑1 | dataSubProcessorListType
Table A.27‑1 | dataSubProcessorType
Table A.28‑1 | defaultZoneType
Table A.29‑1 | DefinedProtocolsType
Table A.30‑1 | deidentifiedPurposeListType
Table A.31‑1 | deleteIdCollectionType
Table A.32‑1 | deleteIdType
Table A.33‑1 | deleteStatusCollectionType
Table A.34‑1 | deleteStatusType
Table A.35‑1 | employeeTrainingListType
Table A.36‑1 | employeeTrainingType
Table A.37‑1 | endpointListType
Table A.38‑1 | endpointType
Table A.39‑1 | enumerationsType
Table A.40‑1 | enumerationType
Table A.41‑1 | environmentTypeType
Table A.42‑1 | ExtendedContentType
Table A.43‑1 | fieldListType
Table A.44‑1 | fieldType
Table A.45‑1 | gCoreAddressListType
Table A.46‑1 | gCoreAddressType
Table A.47‑1 | gCoreContactInfoType
Table A.48‑1 | gCoreContactListType
Table A.49‑1 | gCoreCountryType
Table A.50‑1 | gCoreEmailListType
Table A.51‑1 | gCoreEmailType
Table A.52‑1 | gCoreGenderType
Table A.53‑1 | gCoreLocalIdType
Table A.54‑1 | gCoreNameType
Table A.55‑1 | gCorePhoneNumberListType
Table A.56‑1 | gCorePhoneNumberType
Table A.57‑1 | gCoreStateProvinceIdType
Table A.58‑1 | gCoreStateProvinceType
Table A.59‑1 | infrastructureServiceNamesType
Table A.60‑1 | infrastructureServicesType
Table A.61‑1 | infrastructureServiceType
Table A.62‑1 | initializationType
Table A.63‑1 | jobStateType
Table A.64‑1 | lawListType
Table A.65‑1 | lawType
Table A.66‑1 | legalRequirementsType
Table A.67‑1 | mediaTypesType
Table A.68‑1 | methodParametersType
Table A.69‑1 | methodParameterType
Table A.70‑1 | obligationListType
Table A.71‑1 | obligationType
Table A.72‑1 | parametersType
Table A.73‑1 | parameterType
Table A.74‑1 | partyToDeleteDataType
Table A.75‑1 | passwordEmployeeAccessStandardType
Table A.76‑1 | phaseCollectionType
Table A.77‑1 | phaseStateType
Table A.78‑1 | phaseType
Table A.79‑1 | privacyListType
Table A.80‑1 | privacyObligationsDocumentType
Table A.81‑1 | privacyType
Table A.82‑1 | productIdentityType
Table A.83‑1 | propertiesType
Table A.84‑1 | propertyNVListType
Table A.85‑1 | propertyNVType
Table A.86‑1 | propertyType
Table A.87‑1 | protocolType
Table A.88‑1 | provisionedZonesType
Table A.89‑1 | provisionedZoneType
Table A.90‑1 | purposeListType
Table A.91‑1 | querySupportType
Table A.92‑1 | rangeType
Table A.93‑1 | rightsType
Table A.94‑1 | rightType
Table A.95‑1 | rightValueType
Table A.96‑1 | securityTechnologyListType
Table A.97‑1 | securityTechnologyType
Table A.98‑1 | securityTestRequiredListType
Table A.99‑1 | securityTestRequiredType
Table A.100‑1 | SelectedContentType
Table A.101‑1 | servicesType
Table A.102‑1 | serviceSubTypeType
Table A.103‑1 | serviceType
Table A.104‑1 | serviceTypeType
Table A.105‑1 | technicalRequirementsType
Table A.106‑1 | updatesType
Table A.107‑1 | updateType
Table A.108‑1 | uriType
Table A.109‑1 | uuidType
Table A.110‑1 | versionType
Table A.111‑1 | zoneContextListType
Table A.112‑1 | zoneContextType

# Appendix F: Index of Examples

Example 2.2.3‑1 | Examples Convention
Example 3.2.1‑1 | pod
Example 3.3.1‑1 | deleteRequest
Example 3.4.1‑1 | adminDirective
Example 3.4.1‑2 | adminDirective2
Example 3.4.2‑1 | createResponse
Example 3.4.2‑2 | createResponse2
Example 3.4.3‑1 | deleteResponse
Example 3.4.5‑1 | updateResponse
Example 3.4.5‑2 | updateResponse2
Example 3.5.1‑1 | environment
Example 3.5.2‑1 | job
Example 3.5.3‑1 | provisionRequest
Example 3.5.3‑2 | provisionRequest2
Example 3.5.4‑1 | queue Request
Example 3.5.4‑2 | queue Response
Example 3.5.6‑1 | subscription Create
Example 3.5.6‑2 | subscription Create Response
Example 3.6.6‑1 | environment
Example A.45‑1 | gCoreAddressList Example
Example A.46‑1 | gCoreAddress Example
Example A.47‑1 | gCoreContactInfo
Example A.48‑1 | gCoreContactList
Example A.49‑1 | gCoreCountryType
Example A.50‑1 | gCoreEmailListType
Example A.51‑1 | gCoreEmailType
Example A.53‑1 | gCoreLocalId Example
Example A.54‑1 | gCoreName
Example A.55‑1 | gCorePhoneNumberList
Example A.56‑1 | gCorePhoneNumber
Example A.58‑1 | gCoreStateProvinceType
Example A.88‑1 | provisionedZones

# Appendix G: Index of Figures

Figure 2.2.6‑1 | XML Diagram Conventions
Figure 3.2.1‑1 | pod
Figure 3.3.1‑1 | deleteRequest
Figure 3.4.1‑1 | adminDirective
Figure 3.4.2‑1 | createResponse
Figure 3.4.3‑1 | deleteResponse
Figure 3.4.4‑1 | error
Figure 3.4.5‑1 | updateResponse
Figure 3.5.1‑1 | environment
Figure 3.5.2‑1 | job
Figure 3.5.3‑1 | provisionRequest
Figure 3.5.4‑1 | queue
Figure 3.5.5‑1 | state
Figure 3.5.6‑1 | subscription
Figure 3.6.1‑1 | alert
Figure 3.6.2‑1 | codeSet
Figure 3.6.3‑1 | namespace
Figure 3.6.4‑1 | provider
Figure 3.6.5‑1 | xquery
Figure 3.6.6‑1 | zone
Figure A.1‑1 | adapterFingerprintListType
Figure A.2‑1 | aliasesType
Figure A.3‑1 | aliasType
Figure A.4‑1 | alternatePurposeListType
Figure A.5‑1 | appIDListType
Figure A.6‑1 | applicationInfoType
Figure A.7‑1 | benchmarkListType
Figure A.8‑1 | benchmarkType
Figure A.9‑1 | clauseListType
Figure A.10‑1 | clauseType
Figure A.11‑1 | codeItemsType
Figure A.12‑1 | codeItemType
Figure A.13‑1 | codeType
Figure A.14‑1 | conditionListType
Figure A.15‑1 | conditionType
Figure A.16‑1 | contractType
Figure A.17‑1 | countryImpactedListType
Figure A.18‑1 | countryImpactedType
Figure A.19‑1 | createsType
Figure A.20‑1 | createType
Figure A.21‑1 | dataAccessType
Figure A.22‑1 | dataControllerType
Figure A.23‑1 | dataDeletionType
Figure A.24‑1 | dataProcessorType
Figure A.25‑1 | dataSubjectType
Figure A.26‑1 | dataSubProcessorListType
Figure A.27‑1 | dataSubProcessorType
Figure A.28‑1 | defaultZoneType
Figure A.29‑1 | DefinedProtocolsType
Figure A.30‑1 | deidentifiedPurposeListType
Figure A.31‑1 | deleteIdCollectionType
Figure A.32‑1 | deleteIdType
Figure A.33‑1 | deleteStatusCollectionType
Figure A.34‑1 | deleteStatusType
Figure A.35‑1 | employeeTrainingListType
Figure A.36‑1 | employeeTrainingType
Figure A.37‑1 | endpointListType
Figure A.38‑1 | endpointType
Figure A.39‑1 | enumerationsType
Figure A.40‑1 | enumerationType
Figure A.41‑1 | environmentTypeType
Figure A.42‑1 | ExtendedContentType
Figure A.43‑1 | fieldListType
Figure A.44‑1 | fieldType
Figure A.45‑1 | gCoreAddressListType
Figure A.46‑1 | gCoreAddressType
Figure A.47‑1 | gCoreContactInfoType
Figure A.48‑1 | gCoreContactListType
Figure A.49‑1 | gCoreCountryType
Figure A.50‑1 | gCoreEmailListType
Figure A.51‑1 | gCoreEmailType
Figure A.52‑1 | gCoreGenderType
Figure A.53‑1 | gCoreLocalIdType
Figure A.54‑1 | gCoreNameType
Figure A.55‑1 | gCorePhoneNumberListType
Figure A.56‑1 | gCorePhoneNumberType
Figure A.57‑1 | gCoreStateProvinceIdType
Figure A.58‑1 | gCoreStateProvinceType
Figure A.59‑1 | infrastructureServiceNamesType
Figure A.60‑1 | infrastructureServicesType
Figure A.61‑1 | infrastructureServiceType
Figure A.62‑1 | initializationType
Figure A.63‑1 | jobStateType
Figure A.64‑1 | lawListType
Figure A.65‑1 | lawType
Figure A.66‑1 | legalRequirementsType
Figure A.67‑1 | mediaTypesType
Figure A.68‑1 | methodParametersType
Figure A.69‑1 | methodParameterType
Figure A.70‑1 | obligationListType
Figure A.71‑1 | obligationType
Figure A.72‑1 | parametersType
Figure A.73‑1 | parameterType
Figure A.74‑1 | partyToDeleteDataType
Figure A.75‑1 | passwordEmployeeAccessStandardType
Figure A.76‑1 | phaseCollectionType
Figure A.77‑1 | phaseStateType
Figure A.78‑1 | phaseType
Figure A.79‑1 | privacyListType
Figure A.80‑1 | privacyObligationsDocumentType
Figure A.81‑1 | privacyType
Figure A.82‑1 | productIdentityType
Figure A.83‑1 | propertiesType
Figure A.84‑1 | propertyNVListType
Figure A.85‑1 | propertyNVType
Figure A.86‑1 | propertyType
Figure A.87‑1 | protocolType
Figure A.88‑1 | provisionedZonesType
Figure A.89‑1 | provisionedZoneType
Figure A.90‑1 | purposeListType
Figure A.91‑1 | querySupportType
Figure A.92‑1 | rangeType
Figure A.93‑1 | rightsType
Figure A.94‑1 | rightType
Figure A.95‑1 | rightValueType
Figure A.96‑1 | securityTechnologyListType
Figure A.97‑1 | securityTechnologyType
Figure A.98‑1 | securityTestRequiredListType
Figure A.99‑1 | securityTestRequiredType
Figure A.100‑1 | SelectedContentType
Figure A.101‑1 | servicesType
Figure A.102‑1 | serviceSubTypeType
Figure A.103‑1 | serviceType
Figure A.104‑1 | serviceTypeType
Figure A.105‑1 | technicalRequirementsType
Figure A.106‑1 | updatesType
Figure A.107‑1 | updateType
Figure A.108‑1 | uriType
Figure A.109‑1 | uuidType
Figure A.110‑1 | versionType
Figure A.111‑1 | zoneContextListType
Figure A.112‑1 | zoneContextType

# Appendix H: Index of Objects

adminDirective | 3.4.1
alert | 3.6.1
codeSet | 3.6.2
createResponse | 3.4.2
deleteRequest | 3.3.1
deleteResponse | 3.4.3
environment | 3.5.1
error | 3.4.4
job | 3.5.2
namespace | 3.6.3
pod | 3.2.1
provider | 3.6.4
provisionRequest | 3.5.3
queue | 3.5.4
state | 3.5.5
subscription | 3.5.6
updateResponse | 3.4.5
xquery | 3.6.5
zone | 3.6.6

19 Total

# Appendix I: Index of Common Types

adapterFingerprintListType | A.1
aliasesType | A.2
aliasType | A.3
alternatePurposeListType | A.4
appIDListType | A.5
applicationInfoType | A.6
benchmarkListType | A.7
benchmarkType | A.8
clauseListType | A.9
clauseType | A.10
codeItemsType | A.11
codeItemType | A.12
codeType | A.13
conditionListType | A.14
conditionType | A.15
contractType | A.16
countryImpactedListType | A.17
countryImpactedType | A.18
createsType | A.19
createType | A.20
dataAccessType | A.21
dataControllerType | A.22
dataDeletionType | A.23
dataProcessorType | A.24
dataSubjectType | A.25
dataSubProcessorListType | A.26
dataSubProcessorType | A.27
defaultZoneType | A.28
DefinedProtocolsType | A.29
deidentifiedPurposeListType | A.30
deleteIdCollectionType | A.31
deleteIdType | A.32
deleteStatusCollectionType | A.33
deleteStatusType | A.34
employeeTrainingListType | A.35
employeeTrainingType | A.36
endpointListType | A.37
endpointType | A.38
enumerationsType | A.39
enumerationType | A.40
environmentTypeType | A.41
ExtendedContentType | A.42
fieldListType | A.43
fieldType | A.44
gCoreAddressListType | A.45
gCoreAddressType | A.46
gCoreContactInfoType | A.47
gCoreContactListType | A.48
gCoreCountryType | A.49
gCoreEmailListType | A.50
gCoreEmailType | A.51
gCoreGenderType | A.52
gCoreLocalIdType | A.53
gCoreNameType | A.54
gCorePhoneNumberListType | A.55
gCorePhoneNumberType | A.56
gCoreStateProvinceIdType | A.57
gCoreStateProvinceType | A.58
infrastructureServiceNamesType | A.59
infrastructureServicesType | A.60
infrastructureServiceType | A.61
initializationType | A.62
jobStateType | A.63
lawListType | A.64
lawType | A.65
legalRequirementsType | A.66
mediaTypesType | A.67
methodParametersType | A.68
methodParameterType | A.69
obligationListType | A.70
obligationType | A.71
parametersType | A.72
parameterType | A.73
partyToDeleteDataType | A.74
passwordEmployeeAccessStandardType | A.75
phaseCollectionType | A.76
phaseStateType | A.77
phaseType | A.78
privacyListType | A.79
privacyObligationsDocumentType | A.80
privacyType | A.81
productIdentityType | A.82
propertiesType | A.83
propertyNVListType | A.84
propertyNVType | A.85
propertyType | A.86
protocolType | A.87
provisionedZonesType | A.88
provisionedZoneType | A.89
purposeListType | A.90
querySupportType | A.91
rangeType | A.92
rightsType | A.93
rightType | A.94
rightValueType | A.95
securityTechnologyListType | A.96
securityTechnologyType | A.97
securityTestRequiredListType | A.98
securityTestRequiredType | A.99
SelectedContentType | A.100
servicesType | A.101
serviceSubTypeType | A.102
serviceType | A.103
serviceTypeType | A.104
technicalRequirementsType | A.105
updatesType | A.106
updateType | A.107
uriType | A.108
uuidType | A.109
versionType | A.110
zoneContextListType | A.111
zoneContextType | A.112

112 Total

# Appendix J: Index of Elements

action | A.12‑1.9
adapterFingerprint | A.1‑1.2
adapterFingerprintList | A.81‑1.4
adapterFingerprintListType | A.1‑1.1
adapterProduct | A.6‑1.7, A.91‑1.9
address | A.45‑1.2, A.47‑1.7
adminDirective | 3.4.1‑1.1
alert | 3.6.1‑1.1
alias | A.2‑1.2
aliases | A.12‑1.8
aliasesType | A.2‑1.1
aliasType | A.3‑1.1
alternatePurpose | A.4‑1.2
alternatePurposeList | A.24‑1.8
alternatePurposeListType | A.4‑1.1
appID | A.5‑1.2
appIDList | A.81‑1.3
appIDListType | A.5‑1.1
applicationInfo | 3.5.1‑1.12
applicationInfoType | A.6‑1.1
applicationKey | A.6‑1.2
applicationProduct | A.6‑1.6, A.91‑1.8
authenticationMethod | 3.5.1‑1.8
benchmark | A.7‑1.2
benchmarkDescription | A.8‑1.4
benchmarkId | A.8‑1.3
benchmarkList | A.25‑1.3, A.71‑1.4
benchmarkListType | A.7‑1.1
benchmarkName | A.8‑1.2
benchmarkType | A.8‑1.1
benchmarkURL | A.8‑1.5
body | 3.6.1‑1.9
category | 3.6.1‑1.12
cause | 3.6.1‑1.4
changesSinceMarker | A.91‑1.4
city | A.46‑1.7
clause | A.9‑1.2
clauseContent | A.10‑1.4
clauseLabel | A.10‑1.2
clauseList | A.21‑1.2, A.25‑1.2, A.66‑1.2, A.97‑1.2
clauseListType | A.9‑1.1
clauseReference | A.10‑1.3
clauseType | A.10‑1.1
code | 3.4.4‑1.3, 3.6.1‑1.13, A.3‑1.2, A.12‑1.2, A.40‑1.3
codeItem | A.11‑1.2
codeItems | 3.6.2‑1.7
codeItemsType | A.11‑1.1
codeItemType | A.12‑1.1
codeSet | 3.6.2‑1.1
codeType | A.13‑1.1
comparisonType | A.69‑1.4
condition | A.14‑1.2
conditionDescription | A.15‑1.4
conditionList | A.105‑1.3
conditionListType | A.14‑1.1
conditionName | A.15‑1.3
conditionType | A.15‑1.1
consumerName | 3.5.1‑1.11
contact | A.48‑1.2
contextId | 3.5.6‑1.4, 3.6.4‑1.5, A.112‑1.3
contract | A.80‑1.2
contractName | A.16‑1.3
contractType | A.16‑1.1
contractURI | A.16‑1.2
contractVersion | A.16‑1.6
controlrights | A.44‑1.3
country | A.18‑1.2, A.46‑1.9
countryImpacted | A.17‑1.2
countryImpactedList | A.24‑1.19
countryImpactedListType | A.17‑1.1
countryImpactedType | A.18‑1.1
create | A.19‑1.2
created | 3.5.2‑1.7, 3.5.4‑1.11, 3.5.5‑1.4
createResponse | 3.4.2‑1.1
creates | 3.4.2‑1.2
createsType | A.19‑1.1
createType | A.20‑1.1
dataAccess | A.105‑1.2
dataAccessType | A.21‑1.1
dataBreachContactList | A.24‑1.13
dataBreachNotification | A.24‑1.12
dataController | A.80‑1.5
dataControllerName | A.22‑1.2
dataControllerType | A.22‑1.1
dataDeletion | A.105‑1.5
dataDeletionType | A.23‑1.1
dataModelNamespace | A.6‑1.4, A.81‑1.7
dataModelVersionMax | A.81‑1.9
dataModelVersionMin | A.81‑1.8
dataProcessor | A.80‑1.6
dataProcessorContactForAccessRequestsList | A.24‑1.6
dataProcessorName | A.24‑1.2
dataProcessorType | A.24‑1.1
dataRetention | A.23‑1.3
dataSubject | A.105‑1.4
dataSubjectType | A.25‑1.1
dataSubProcessor | A.26‑1.2
dataSubProcessorList | A.80‑1.7
dataSubProcessorListType | A.26‑1.1
dataSubProcessorType | A.27‑1.1
dataUsageMarketingAllowed | A.24‑1.10
dateValidFrom | A.16‑1.4
dateValidTo | A.16‑1.5
default | A.73‑1.4, A.81‑1.2
defaultZone | 3.5.1‑1.7
defaultZoneType | A.28‑1.1
DefinedProtocolsType | A.29‑1.1
definition | A.12‑1.7
deidentifiedPurpose | A.30‑1.2
deidentifiedPurposeList | A.24‑1.9
deidentifiedPurposeListType | A.30‑1.1
delete | A.31‑1.2, A.33‑1.2
deleteBy | A.23‑1.4
deletecontactInfo | A.74‑1.3
deleteData | A.23‑1.2
deleteIdCollectionType | A.31‑1.1
deleteIdType | A.32‑1.1
deleteRequest | 3.3.1‑1.1
deleteResponse | 3.4.3‑1.1
deletes | 3.3.1‑1.2, 3.4.3‑1.2
deleteStatusCollectionType | A.33‑1.1
deleteStatusType | A.34‑1.1
description | 3.4.4‑1.6, 3.5.2‑1.4, 3.5.5‑1.6, 3.6.1‑1.7, 3.6.5‑1.6, 3.6.6‑1.3, A.12‑1.6, A.28‑1.3, A.73‑1.5
dynamicQuery | A.91‑1.2
effectiveFromDate | A.46‑1.2
effectiveToDate | A.46‑1.3
email | A.50‑1.2
emailList | A.47‑1.8
employeeConfidentialityAgreement | A.24‑1.15
employeesMustComplyWithAgreement | A.24‑1.14
employeeTraining | A.35‑1.2
employeeTrainingList | A.24‑1.16
employeeTrainingListType | A.35‑1.1
employeeTrainingType | A.36‑1.1
end | A.92‑1.3
endpoint | A.37‑1.2
endPoint | 3.6.4‑1.10
endpointList | A.81‑1.6
endpointListType | A.37‑1.1
endpointProviderName | A.38‑1.3
endpointType | A.38‑1.1
endpointURL | A.38‑1.2
enumeration | A.39‑1.2
enumerations | A.73‑1.7
enumerationsType | A.39‑1.1
enumerationType | A.40‑1.1
environment | 3.5.1‑1.1
environmentTypeType | A.41‑1.1
error | 3.4.4‑1.1, 3.6.1‑1.10, A.20‑1.5, A.34‑1.4, A.107‑1.4
exchange | 3.6.1‑1.5
ExtendedContentType | A.42‑1.1
extension | A.56‑1.3
familyName | A.54‑1.3
familyNameFirst | A.54‑1.6
field | A.43‑1.2
fieldList | A.21‑1.3, A.25‑1.4
fieldListType | A.43‑1.1
fieldName | A.44‑1.2
fieldType | A.44‑1.1
fingerprint | 3.5.1‑1.4
gCoreAddressListType | A.45‑1.1
gCoreAddressType | A.46‑1.1
gCoreContactInfoType | A.47‑1.1
gCoreContactListType | A.48‑1.1
gCoreCountryType | A.49‑1.1
gCoreEmailListType | A.50‑1.1
gCoreEmailType | A.51‑1.1
gCoreGenderType | A.52‑1.1
gCoreLocalIdType | A.53‑1.1
gCoreNameType | A.54‑1.1
gCorePhoneNumberListType | A.55‑1.1
gCorePhoneNumberType | A.56‑1.1
gCoreStateProvinceIdType | A.57‑1.1
gCoreStateProvinceType | A.58‑1.1
givenName | A.54‑1.4
iconURI | A.82‑1.5
idleTimeout | 3.5.4‑1.8
infrastructureService | A.60‑1.2
infrastructureServiceNamesType | A.59‑1.1
infrastructureServices | 3.5.1‑1.13
infrastructureServicesType | A.60‑1.1
infrastructureServiceType | A.61‑1.1
initialization | 3.5.2‑1.11
initializationType | A.62‑1.1
instanceId | 3.5.1‑1.9
internal | 3.6.1‑1.14
issuesNotificationContactList | A.22‑1.5
job | 3.5.2‑1.1
jobStateType | A.63‑1.1
lastAccessed | 3.5.4‑1.12
lastModified | 3.5.2‑1.8, 3.5.4‑1.13, 3.5.5‑1.5
law | A.64‑1.2
lawDescription | A.65‑1.3
lawList | A.16‑1.7
lawListType | A.64‑1.1
lawName | A.65‑1.2
lawType | A.65‑1.1
legalRequirements | A.80‑1.3
legalRequirementsType | A.66‑1.1
level | 3.6.1‑1.6
line1 | A.46‑1.4
line2 | A.46‑1.5
line3 | A.46‑1.6
listedStatus | A.56‑1.4
location | A.87‑1.2
maxConcurrentConnections | 3.5.4‑1.10
maxLength | A.73‑1.10
maxPageSize | A.91‑1.6
mediaType | A.67‑1.2
mediaTypesType | A.67‑1.1
message | 3.4.4‑1.5
messageCount | 3.5.4‑1.14
messageID | 3.6.1‑1.8
method | 3.4.1‑1.6
methodParameter | A.68‑1.2
methodParameters | 3.4.1‑1.7
methodParametersType | A.68‑1.1
methodParameterType | A.69‑1.1
mimeTypes | 3.6.4‑1.9
minLength | A.73‑1.9
minWaitTime | 3.5.4‑1.9
name | 3.5.2‑1.3, 3.5.4‑1.5, A.47‑1.2, A.73‑1.2, A.78‑1.2
namespace | 3.6.3‑1.1, A.3‑1.4, A.12‑1.4
notifyDataControllerOnAccessRequests | A.24‑1.5
number | A.56‑1.2
obligation | A.70‑1.2
obligationDescription | A.71‑1.2
obligationList | A.10‑1.5
obligationListType | A.70‑1.1
obligationType | A.71‑1.1
obligationURL | A.71‑1.3
official | A.13‑1.3
old | A.13‑1.2
organisation | A.74‑1.2
otherGivenNames | A.54‑1.5
ownerId | 3.5.4‑1.4
ownerUri | 3.5.4‑1.7
paged | A.91‑1.5
parameter | A.72‑1.2
parameters | 3.6.5‑1.8
parametersType | A.72‑1.1
parameterType | A.73‑1.1
paramName | A.69‑1.2
paramValue | A.69‑1.3
partyId | 3.2.1‑1.6
partyToDeleteData | A.23‑1.5
partyToDeleteDataType | A.74‑1.1
passwordEmployeeAccessStandard | A.24‑1.17
passwordEmployeeAccessStandardType | A.75‑1.1
payload | A.62‑1.3
personalInformationUpdatedFromSource | A.24‑1.11
phase | A.76‑1.2
phaseCollectionType | A.76‑1.1
phaseName | A.62‑1.2
phases | 3.5.2‑1.10
phaseStateType | A.77‑1.1
phaseType | A.78‑1.1
phoneNumber | A.55‑1.2
phoneNumberList | A.47‑1.9
pod | 3.2.1‑1.1
podStatus | 3.2.1‑1.3
podToken | 3.2.1‑1.4
podVersion | 3.2.1‑1.5
polling | 3.5.4‑1.3
positionTitle | A.47‑1.3
postalCode | A.46‑1.10
preference | A.56‑1.5
preferredName | A.54‑1.7
privacy | A.79‑1.2
privacyContactList | A.22‑1.4, A.24‑1.4, A.27‑1.4
privacyList | 3.2.1‑1.7
privacyListType | A.79‑1.1
privacyObligationsDocument | A.81‑1.10
privacyObligationsDocumentType | A.80‑1.1
privacyPolicyURL | A.22‑1.3, A.24‑1.3, A.27‑1.3
privacyType | A.81‑1.1
productIdentityType | A.82‑1.1
productName | A.82‑1.3
productVersion | A.82‑1.4
properties | 3.6.6‑1.4, A.28‑1.4, A.87‑1.3
propertiesType | A.83‑1.1
property | A.83‑1.2, A.84‑1.2
propertyList | A.15‑1.5
propertyName | A.85‑1.2
propertyNVListType | A.84‑1.1
propertyNVType | A.85‑1.1
propertyType | A.86‑1.1
propertyValue | A.85‑1.3
protocolType | A.87‑1.1
provider | 3.6.4‑1.1
providerName | 3.6.4‑1.7
provisionedZone | A.88‑1.2
provisionedZones | 3.5.1‑1.14, 3.5.3‑1.4
provisionedZonesType | A.88‑1.1
provisionedZoneType | A.89‑1.1
provisionRequest | 3.5.3‑1.1
purpose | A.90‑1.2
purposeList | A.24‑1.7, A.27‑1.5
purposeListType | A.90‑1.1
qualifications | A.47‑1.6
qualifier | 3.6.5‑1.5
queryByExample | A.91‑1.3
querySupport | 3.6.4‑1.8
querySupportType | A.91‑1.1
queue | 3.5.4‑1.1
queueId | 3.5.6‑1.8
queueUri | 3.5.4‑1.6
range | A.73‑1.8
rangeType | A.92‑1.1
referenceURL | A.97‑1.5
registrationDetails | A.47‑1.5
remediationRequiredIn | A.99‑1.4
reporter | 3.6.1‑1.3
required | A.73‑1.6, A.78‑1.4
requirePortability | A.23‑1.7, A.25‑1.6
respondInDays | A.23‑1.6, A.25‑1.5
returnType | 3.6.5‑1.9
right | A.93‑1.2
rights | A.78‑1.5, A.103‑1.6
rightsType | A.93‑1.1
rightType | A.94‑1.1
rightValueType | A.95‑1.1
role | A.47‑1.4
scope | 3.4.4‑1.4
script | 3.6.5‑1.7
securityTechnology | A.96‑1.2
securityTechnologyList | A.105‑1.6
securityTechnologyListType | A.96‑1.1
securityTechnologyType | A.97‑1.1
securityTestRequired | A.98‑1.2
securityTestRequiredList | A.24‑1.18
securityTestRequiredListType | A.98‑1.1
securityTestRequiredType | A.99‑1.1
SelectedContentType | A.100‑1.1
service | A.101‑1.2
serviceName | 3.4.1‑1.5, 3.5.6‑1.7, 3.6.4‑1.4
services | A.89‑1.3
servicesType | A.101‑1.1
serviceSubType | 3.5.6‑1.6
serviceSubTypeType | A.102‑1.1
serviceType | 3.5.6‑1.5, 3.6.4‑1.3, A.103‑1.1
serviceTypeType | A.104‑1.1
sessionToken | 3.5.1‑1.5
shareResults | A.99‑1.5
solutionId | 3.5.1‑1.6
source | 3.6.2‑1.6, A.3‑1.3, A.12‑1.3
standardName | A.75‑1.2
standardURL | A.75‑1.3
start | A.92‑1.2
state | 3.5.2‑1.5, 3.5.5‑1.1
stateDescription | 3.5.2‑1.6
stateProvince | A.46‑1.8
states | A.78‑1.3
statesRights | A.78‑1.6
status | 3.6.5‑1.4
studentDataIPRights | A.16‑1.8
subProcessorName | A.27‑1.2
subscription | 3.5.6‑1.1
supportedInfrastructureVersion | A.6‑1.3
technicalRequirements | A.80‑1.4
technicalRequirementsType | A.105‑1.1
technologyDescription | A.97‑1.4
technologyName | A.97‑1.3
testFrequency | A.99‑1.3
testType | A.99‑1.2
timeout | 3.4.1‑1.4, 3.5.2‑1.9
timestamp | 3.4.1‑1.3, 3.6.2‑1.5, A.12‑1.10
title | A.54‑1.2
totalCount | A.91‑1.7
trainingName | A.36‑1.2
trainingURL | A.36‑1.3
transport | A.6‑1.5
type | 3.5.5‑1.3, 3.6.5‑1.3, A.73‑1.3
typeOfCondition | A.15‑1.2
update | A.106‑1.2
updateResponse | 3.4.5‑1.1
updates | 3.4.5‑1.2
updatesType | A.106‑1.1
updateType | A.107‑1.1
uri | 3.6.3‑1.4
uriType | A.108‑1.1
url | 3.6.3‑1.5
usage | A.18‑1.3
userToken | 3.5.1‑1.10
uuidType | A.109‑1.1
value | A.12‑1.5, A.13‑1.4, A.40‑1.2
vendorName | A.82‑1.2
version | 3.6.2‑1.4
versionMin | A.97‑1.6
versionType | A.110‑1.1
xpath | 3.6.1‑1.11
xquery | 3.6.5‑1.1
zone | 3.6.2‑1.3, 3.6.3‑1.3, 3.6.6‑1.1
zoneContext | A.111‑1.2
zoneContextList | A.81‑1.5
zoneContextListType | A.111‑1.1
zoneContextType | A.112‑1.1
zoneId | 3.5.6‑1.3, 3.6.4‑1.6, A.112‑1.2

470 Total

# Appendix K: Index of Attributes

advisoryId | A.20‑1.3
completionStatus | 3.5.3‑1.3
contextId | A.103‑1.5
id | 3.2.1‑1.2, 3.4.1‑1.2, 3.4.4‑1.2, 3.5.1‑1.3, 3.5.2‑1.2, 3.5.3‑1.2, 3.5.4‑1.2, 3.5.5‑1.2, 3.5.6‑1.2, 3.6.1‑1.2, 3.6.2‑1.2, 3.6.3‑1.2, 3.6.4‑1.2, 3.6.5‑1.2, 3.6.6‑1.2, A.20‑1.2, A.28‑1.2, A.32‑1.2, A.34‑1.2, A.89‑1.2, A.107‑1.2
name | A.61‑1.2, A.86‑1.2, A.103‑1.4
statusCode | A.20‑1.4, A.34‑1.3, A.107‑1.3
subType | A.103‑1.3
type | 3.5.1‑1.2, A.94‑1.2, A.103‑1.2

34 Total

# Appendix L: References

### Data Model