Schema map (SharePoint Add-in Manifest)

Applies to: SharePoint Add-ins | SharePoint Foundation 2013 | SharePoint Server 2013

This topic shows the schema definition for SharePoint Add-in Manifest.

Note

The string app appears as part of or all of some element, attribute, and file names because SharePoint Add-ins were originally called "apps for SharePoint." To ensure backward compatibility, the schemas have not been changed.


    <xs:schema targetNamespace="http://schemas.microsoft.com/sharepoint/2012/app/manifest" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest" xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="App" type="AppDefinition"></xs:element>
        <xs:complexType name="AppDefinition">
            <xs:all>
                <xs:element name="AppPrincipal" type="AppPrincipalDefinition" minOccurs="1" maxOccurs="1"></xs:element>
                <xs:element name="AppPermissionRequests" type="AppPermissionRequestsDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="Properties" type="PropertiesDefinition" minOccurs="1" maxOccurs="1"></xs:element>
                <xs:element name="RemoteEndpoints" type="RemoteEndpointsDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="AppPrerequisites" type="AppPrerequisiteCollection" minOccurs="0" maxOccurs="1"></xs:element>
            </xs:all>
            <xs:attribute name="ProductID" type="GUID" use="required" />
            <xs:attribute name="Type" type="TypeDefinition" use="optional" />
            <xs:attribute name="Version" type="VersionDefinition" use="required" />
            <xs:attribute name="SharePointMinVersion" type="VersionDefinition" use="required" />
            <xs:attribute name="SharePointMaxVersion" type="VersionDefinition" use="optional" />
            <xs:attribute name="Name" type="NameDefinition" use="required" />
        </xs:complexType>
        <xs:complexType name="AppPrincipalDefinition">
            <xs:choice>
                <xs:element name="RemoteWebApplication">
                    <xs:attribute name="ClientId" type="AppPermissionAppPrincipalDefinition" use="required" />
                </xs:element>
                <xs:element name="Internal">
                    <xs:attribute name="AllowedRemoteHostUrl" type="ManifestUri" use="optional" />
                    <xs:attribute name="RedirectUrl" type="ManifestUri" use="optional" />
                </xs:element>
                <xs:element name="AutoDeployedWebApplication">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="DebugInfo" type="AutoDeployedWebApplicationDebugInfoDefinition" minOccurs="0"></xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
        <xs:complexType name="AutoDeployedWebApplicationDebugInfoDefinition">
            <xs:attribute name="AppUrl" type="AutoDeployedWebApplicationDebugInfoAppUrlDefinition" use="required" />
            <xs:attribute name="ClientSecret" type="xs:base64Binary" use="required" />
            <xs:attribute name="RedirectUri" type="ManifestUri" use="optional" />
        </xs:complexType>
        <xs:complexType name="PropertiesDefinition">
            <xs:all>
                <xs:element name="InstalledEventEndpoint" type="UrlElementDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="StartPage" type="UrlElementDefinition" minOccurs="1" maxOccurs="1"></xs:element>
                <xs:element name="SupportedLanguages" type="SupportedLanguagesDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="SupportedLocales" type="SupportedLocalesDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="Title" type="TitleDefinition" minOccurs="1" maxOccurs="1"></xs:element>
                <xs:element name="UninstallingEventEndpoint" type="UrlElementDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="UpgradedEventEndpoint" type="UrlElementDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="WebTemplate" type="WebTemplateDefinition" minOccurs="0" maxOccurs="1"></xs:element>
                <xs:element name="SettingsPage" type="UrlElementDefinition" minOccurs="0" maxOccurs="1"></xs:element>
            </xs:all>
        </xs:complexType>
        <xs:complexType name="UrlElementDefinition"></xs:complexType>
        <xs:complexType name="AppPermissionRequestsDefinition">
            <xs:sequence>
                <xs:element name="AppPermissionRequest" type="AppPermissionRequestDefinition" minOccurs="0" maxOccurs="1000"></xs:element>
            </xs:sequence>
            <xs:attribute name="AllowAppOnlyPolicy" type="xs:boolean" use="optional" />
        </xs:complexType>
        <xs:complexType name="AppPermissionRequestDefinition">
            <xs:sequence>
                <xs:element name="Property" type="AppPermissionPropertyDefinition" minOccurs="0" maxOccurs="1000"></xs:element>
            </xs:sequence>
            <xs:attribute name="Scope" type="xs:anyURI" use="required" />
            <xs:attribute name="Right" type="AppPermissionRightDefinition" />
        </xs:complexType>
        <xs:complexType name="AppPermissionPropertyDefinition">
            <xs:attribute name="Name" type="xs:string" />
            <xs:attribute name="Value" type="xs:string" />
        </xs:complexType>
        <xs:complexType name="WebTemplateDefinition">
            <xs:attribute name="Id" type="WebTemplateIdDefinition" use="required" />
            <xs:attribute name="FeatureId" type="GUID" use="optional" />
        </xs:complexType>
        <xs:complexType name="RemoteEndpointsDefinition">
            <xs:sequence>
                <xs:element name="RemoteEndpoint" type="RemoteEndpointDefinition" minOccurs="0" maxOccurs="20"></xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="RemoteEndpointDefinition">
            <xs:attribute name="Url" type="ManifestUri" />
        </xs:complexType>
        <xs:complexType name="SupportedLocalesDefinition">
            <xs:sequence>
                <xs:element name="SupportedLocale" type="SupportedLocaleDefinition" minOccurs="1" maxOccurs="256"></xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="SupportedLocaleDefinition">
            <xs:attribute name="CultureName" type="CultureNameDefinition" use="required" />
        </xs:complexType>
        <xs:complexType name="AppPrerequisiteCollection">
            <xs:sequence>
                <xs:element name="AppPrerequisite" type="AppPrerequisite" maxOccurs="500"></xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="AppPrerequisite">
            <xs:attribute name="Type" type="AppPrerequisiteTypeDefinition" use="required" />
            <xs:attribute name="ID" type="xs:string" use="required" />
            <xs:attribute name="MinimumVersion" type="VersionDefinition" use="optional" />
        </xs:complexType>
        <xs:simpleType name="RestrictedInt">
            <xs:restriction base="xs:int">
                <xs:minExclusive value="0" />
                <xs:maxInclusive value="2000" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="ManifestUri">
            <xs:restriction base="xs:anyURI">
                <xs:minLength value="1" />
                <xs:maxLength value="2083" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="DescriptionDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="1024" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TypeDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="255" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="SupportedLanguagesDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="2048" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="CultureNameDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="256" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TitleDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="256" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="WebTemplateIdDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="128" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="AppPermissionRightDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="256" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="AppPermissionAppPrincipalDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="256" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="NameDefinition">
            <xs:restriction base="xs:token">
                <xs:minLength value="1" />
                <xs:maxLength value="64" />
                <xs:pattern value="[A-Za-z0-9][A-Za-z0-9\s-_]*" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="VersionDefinition">
            <xs:restriction base="xs:string">
                <xs:pattern value="\d{1,4}\.\d{1,4}\.\d{1,4}\.\d{1,4}" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="GUID">
            <xs:restriction base="xs:string">
                <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}\})|([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:restriction>
        </xs:simpleType>
        <xs:simpleType name="AppPrincipalTypeDefinition">
            <xs:restriction base="xs:string">
                <xs:enumeration value="Internal" />
                <xs:enumeration value="External" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="AppPrerequisiteTypeDefinition">
            <xs:restriction base="xs:string">
                <xs:enumeration value="Feature" />
                <xs:enumeration value="AutoProvisioning" />
                <xs:enumeration value="Capability" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="AutoDeployedWebApplicationDebugInfoAppUrlDefinition">
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:maxLength value="2048" />
            </xs:restriction>
        </xs:simpleType>
    </xs:schema>