XSD schema
The following XSD can be used to validation Instruction Definition XML files.
XSD schema Expand source
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="http://schemas.1e.com/Tachyon/InstructionDefinition/1.0"
xmlns="http://schemas.1e.com/Tachyon/InstructionDefinition/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="InstructionDefinition">
<xs:complexType>
<xs:all>
<xs:element name="Payload" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="SchemaJson" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="AggregationJson" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="ParameterJson" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="Workflow" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="ResponseTemplateConfiguration" minOccurs="0" maxOccurs="1" />
<xs:element name="Comments" minOccurs="0" maxOccurs="1" />
<xs:element name="Resources" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Resource" type="resourceType" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TaskGroups" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="TaskGroup" type="taskGroupType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="Name" type="xs:string" use="required" />
<xs:attribute name="InstructionType" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Question" />
<xs:enumeration value="Action" />
<xs:enumeration value="EventSubscription" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Description" type="xs:string" use="required" />
<xs:attribute name="ReadablePayload" type="xs:string" use="required" />
<xs:attribute name="InstructionTtlMinutes" type="xs:unsignedInt" use="required" />
<xs:attribute name="ResponseTtlMinutes" type="xs:unsignedInt" use="required" />
<xs:attribute name="Version" type="xs:string" use="required" />
<!-- The following attributes end up the in 'Restrictions' field on InstructionDefinition -->
<xs:attribute name="MinimumInstructionTtlMinutes" type="xs:unsignedInt" use="optional" />
<xs:attribute name="MaximumInstructionTtlMinutes" type="xs:unsignedInt" use="optional" />
<xs:attribute name="MinimumResponseTtlMinutes" type="xs:unsignedInt" use="optional" />
<xs:attribute name="MaximumResponseTtlMinutes" type="xs:unsignedInt" use="optional" />
<xs:attribute name="Author" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:complexType name="resourceType">
<xs:sequence>
<xs:element name="Content" type="contentType" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Name" use="required"/>
</xs:complexType>
<xs:complexType name="contentType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Type" type="xs:string" use="required" />
<xs:attribute name="FileName" type="xs:string" use="required" />
<xs:attribute name="Size" type="xs:unsignedLong" use="required" />
<xs:attribute name="Hash" type="xs:string" use="required" />
<xs:attribute name="Platform" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Windows" />
<xs:enumeration value="MacOS" />
<xs:enumeration value="Linux" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
<!-- Can use this online tool to generate hash - https://md5file.com/calculator -->
</xs:complexType>
<xs:complexType name="taskGroupType">
<xs:attribute name="Name" type="xs:string" use="required" />
</xs:complexType>
</xs:schema>