# Appendix A: Common Types

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

## A.1 AbstractContentElementType

`AbstractContentPackageType` used as an element rather than an object, omitting `RefId`, `SIF_Metadata` and `SIF_ExtendedElements`.

Figure A.1-1: AbstractContentElementType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AbstractContentElementType |  | `AbstractContentPackageType` used as an element rather than an object, omitting `RefId`, `SIF_Metadata` and `SIF_ExtendedElements`. |
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| TextData | C | Contains arbitrary text, encoded in UTF-8. | xs:string
@ | MIMEType | O | Optional MIME type to specifically indicate the text type. Otherwise `text/plain` can be assumed. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| BinaryData | C | Contains the base64Binary encoding of binary or text data not encoded in UTF-8. | xs:base64Binary
@ | MIMEType | M | MIME type to indicate the content type. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference | C | References external content via a URL. |
@ | MIMEType | M | MIME type to indicate the content type to be expected when retrieving the external content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference/URL | M | Location of external content. | xs:anyURI

Table A.1-1: AbstractContentElementType

## A.2 AbstractContentPackageType

An abstract type for derived content package types, elements and objects. This structure may be used verbatim, optionally extending with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML contained in `XMLData`. Only one instance of `XMLData`, `TextData`, `BinaryData` or `Reference` can occur in a single instance.

Figure A.2-1: AbstractContentPackageType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AbstractContentPackageType |  | An abstract type for derived content package types, elements and objects. This structure may be used verbatim, optionally extending with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML contained in `XMLData`. Only one instance of `XMLData`, `TextData`, `BinaryData` or `Reference` can occur in a single instance. |
@ | RefId | M | The GUID that uniquely identifies an instance of the package. | RefIdType
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| TextData | C | Contains arbitrary text, encoded in UTF-8. | xs:string
@ | MIMEType | O | Optional MIME type to specifically indicate the text type. Otherwise `text/plain` can be assumed. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| BinaryData | C | Contains the base64Binary encoding of binary or text data not encoded in UTF-8. | xs:base64Binary
@ | MIMEType | M | MIME type to indicate the content type. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference | C | References external content via a URL. |
@ | MIMEType | M | MIME type to indicate the content type to be expected when retrieving the external content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference/URL | M | Location of external content. | xs:anyURI

Table A.2-1: AbstractContentPackageType

## A.3 BaseNameType

Base type, without attributes, for `Name` elements, primarily to allow structure to be leveraged with different `Type` attribute values.

Figure A.3-1: BaseNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| BaseNameType |  | Base type, without attributes, for `Name` elements, primarily to allow structure to be leveraged with different `Type` attribute values. |
| Title | O | A title or prefix associated with the name. If any of: Mr, Mrs, Ms, Miss, Rev, Fr, Dr, Prof, Hon, Sir, Lord, Lady - these must be as shown, otherwise free text. Note that title is not applicable to learners. | xs:normalizedString
| FamilyName | C | Family name. That part of the person's name which is used to describe family, clan, tribal group, or marital association. Note that this element is required when known. However, it may not be possible to know the family name in which case you should add the available information to the FullName element. | xs:normalizedString
| GivenName | C | Given name of the person. Note that this element is required if known. However, it may not be possible to know the given name in which case you should add the available information to the FullName element. | xs:normalizedString
| MiddleName | O | All other given or middle names, each separated with a single space character. | xs:normalizedString
| FamilyNameFirst | O | An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. | AUCodeSetsYesOrNoCategoryType
| PreferredFamilyName | O | The family name preferred most by the person (as written). | xs:normalizedString
| PreferredFamilyNameFirst | O | An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. | AUCodeSetsYesOrNoCategoryType
| PreferredGivenName | O | The given name preferred most by the person (as written). | xs:normalizedString
| Suffix | O | Textual suffix like PHD, JP, BSc. | xs:normalizedString
| FullName | C | A free text field for the complete name for display purposes. If this is associated with a StudentPersonal,StaffPersonal or StudentContactPersonal record and the FamilyName and GivenName are not both specified, then this becomes mandatory. | xs:normalizedString

Table A.3-1: BaseNameType
<Name Type="LGL"> <FamilyName>Wesson</FamilyName> <GivenName>Melanie</GivenName> <MiddleName>Joan</MiddleName> <FamilyNameFirst>N</FamilyNameFirst> <PreferredFamilyName>Wesson</PreferredFamilyName> <PreferredFamilyNameFirst>N</PreferredFamilyNameFirst> <PreferredGivenName>Mel</PreferredGivenName> </Name>
Example A.3-1: BaseNameType

## A.4 DefinedProtocolsType

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

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

Table A.4-1: DefinedProtocolsType

## A.5 ExtendedContentType

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

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

Table A.5-1: ExtendedContentType

## A.6 GUIDType

SIF format for a GUID. This is different for 2.x Infrastructure and 3.x Infrastructure - 2.x xs:pattern value='[0-9A-F]{32}' 3.x - xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}" >
Figure A.6-1: GUIDType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| GUIDType |  | SIF format for a GUID. This is different for 2.x Infrastructure and 3.x Infrastructure - 2.x xs:pattern value='[0-9A-F]{32}' 3.x - xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}" > | xs:token
xs:pattern | [0-9A-F]{32}

Table A.6-1: GUIDType

## A.7 IdRefType

A reference to a RefId.
Figure A.7-1: IdRefType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| IdRefType |  | A reference to a RefId. | RefIdType

Table A.7-1: IdRefType

## A.8 MonetaryAmountType

A monetary amount.

Figure A.8-1: MonetaryAmountType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| MonetaryAmountType |  | A monetary amount. | xs:decimal
@ | Currency | O | Currency code. Where omitted, defaults to implementation-defined local currency, typically `USD` in the United States. | ISO4217CurrencyNamesAndCodeElementsType

Table A.8-1: MonetaryAmountType

## A.9 MsgIdType

A message identifier.
Figure A.9-1: MsgIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| MsgIdType |  | A message identifier. | GUIDType

Table A.9-1: MsgIdType

## A.10 NameOfRecordType

Extends `BaseNameType` to allow for one `Type` attribute value, indicating the name is the name of record; serves as the primary name in some SIF objects, including `StudentPersonal`.

Figure A.10-1: NameOfRecordType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| NameOfRecordType |  | Extends `BaseNameType` to allow for one `Type` attribute value, indicating the name is the name of record; serves as the primary name in some SIF objects, including `StudentPersonal`. | BaseNameType
@ | Type | M | Code that specifies what type of name this is. Note that type "LGL" must be used here. | values: LGL Name of Record

Table A.10-1: NameOfRecordType

## A.11 ObjectNameType

An unenumerated SIF object name.

Figure A.11-1: ObjectNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ObjectNameType |  | An unenumerated SIF object name. | xs:NCName
xs:maxLength | 64

Table A.11-1: ObjectNameType

## A.12 ObjectType

A SIF XML object.

Figure A.12-1: ObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ObjectType |  | A SIF XML object. | <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" namespace="##any" /> </xs:sequence>

Table A.12-1: ObjectType

## A.13 OtherNameType

Extends `BaseNameType` to allow for `Type` attribute values excluding "name of record." Used for other names to be included in addition to the name of record in objects.

Figure A.13-1: OtherNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| OtherNameType |  | Extends `BaseNameType` to allow for `Type` attribute values excluding "name of record." Used for other names to be included in addition to the name of record in objects. | BaseNameType
@ | Type | M | Code that specifies what type of name this is. Note that type "LGL" is NOT to be used here. | AUCodeSetsNameUsageTypeType

Table A.13-1: OtherNameType

## A.14 PartialDateType

A year, with an optional month/day, or an optional month by itself.

Figure A.14-1: PartialDateType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| PartialDateType |  | A year, with an optional month/day, or an optional month by itself. | union of: xs:date xs:gYearMonth xs:gYear

Table A.14-1: PartialDateType

## A.15 RefIdType

An object or element identifier.
Figure A.15-1: RefIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| RefIdType |  | An object or element identifier. | GUIDType

Table A.15-1: RefIdType

## A.16 ReportDataObjectType

A SIF XML object.

Figure A.16-1: ReportDataObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportDataObjectType |  | A SIF XML object. | <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence>

Table A.16-1: ReportDataObjectType

## A.17 ReportPackageType

This package has exactly the same structure as `AbstractContentPackageType`. `ReportPackage` can be used in addition to SIF objects specifically in reporting situations within `SIF_ReportObject`. At this time, it is not a SIF object. It cannot be requested via `SIF_Query` or `SIF_ExtendedQuery` in a `ReportManifest`. It may be included in `SIF_ReportObject` as part of an external report definition.
Figure A.17-1: ReportPackageType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportPackageType |  | This package has exactly the same structure as `AbstractContentPackageType`. `ReportPackage` can be used in addition to SIF objects specifically in reporting situations within `SIF_ReportObject`. At this time, it is not a SIF object. It cannot be requested via `SIF_Query` or `SIF_ExtendedQuery` in a `ReportManifest`. It may be included in `SIF_ReportObject` as part of an external report definition. | AbstractContentPackageType

Table A.17-1: ReportPackageType

## A.18 SelectedContentType

Allows an XML fragment selected from an object to be used in an element with XML validation skipped.
Figure A.18-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.18-1: SelectedContentType

## A.19 ServiceNameType

An unenumerated SIF object name.

Figure A.19-1: ServiceNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ServiceNameType |  | An unenumerated SIF object name. | xs:NCName

Table A.19-1: ServiceNameType

## A.20 URIOrBinaryType

Allows for a URL or a Base-64 encoding.
Figure A.20-1: URIOrBinaryType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| URIOrBinaryType |  | Allows for a URL or a Base-64 encoding. | union of: xs:anyURI xs:base64Binary

Table A.20-1: URIOrBinaryType

## A.21 VersionType

A SIF version number.
Figure A.21-1: VersionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| VersionType |  | A SIF version number. | xs:token
xs:pattern | [0-9]+[.][0-9]+(r[0-9]+)?
xs:maxLength | 12

Table A.21-1: VersionType

## A.22 VersionWithWildcardsType

A SIF version number, with wildcards for matching multiple versions.
Figure A.22-1: VersionWithWildcardsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| VersionWithWildcardsType |  | A SIF version number, with wildcards for matching multiple versions. | xs:token
xs:pattern | \*|([0-9]+[.]\*)|([0-9]+[.][0-9]+r\*)|([0-9]+[.][0-9]+(r[0-9]+)?)
xs:maxLength | 12

Table A.22-1: VersionWithWildcardsType