<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- Definition for AppFunctionTypeParameterMetadata -->
    <xs:documentType name="AppFunctionTypeParameterMetadata">
        <xs:element name="isNullable" type="xs:boolean" />
        <xs:element name="schema" type="appfn:AppFunctionSchema" />
        <xs:element name="referenceSchema" type="xs:string" />
    </xs:documentType>

    <!-- Definition for AppFunctionValueParameterMetadata -->
    <xs:documentType name="AppFunctionValueParameterMetadata">
        <xs:element name="name" type="xs:string" />
        <xs:element name="description" type="xs:string" />
        <xs:element name="required" type="xs:boolean" />
        <xs:element name="schema" type="appfn:AppFunctionSchema" />
        <xs:element name="referenceSchema" type="xs:string" />
    </xs:documentType>

    <!-- Definition for SchemaMetadata -->
    <xs:documentType name="SchemaMetadata">
        <xs:element name="schemaCategory" type="xs:string" />
        <xs:element name="schemaName" type="xs:string" />
        <xs:element name="schemaVersion" type="xs:long" />
    </xs:documentType>

    <!-- Definition for AppFunctionResponseMetadata -->
    <xs:documentType name="AppFunctionResponseMetadata">
        <xs:element name="isNullable" type="xs:boolean" />
        <xs:element name="schema" type="appfn:AppFunctionSchema" />
        <xs:element name="referenceSchema" type="xs:string" />
    </xs:documentType>

    <!-- Definition for AppFunctionComponentMetadata -->
    <xs:documentType name="AppFunctionComponentMetadata">
        <xs:element name="schemas" type="appfn:AppFunctionSchema" cardinality="1" />
    </xs:documentType>

    <!-- Definition for AppFunctionSchema -->
    <xs:documentType name="AppFunctionSchema">
        <xs:element name="dataType" type="xs:long" />
        <xs:element name="documentSchemaType" type="xs:string" />
        <xs:element name="itemSchema" type="appfn:AppFunctionTypeParameterMetadata" />
        <xs:element name="properties" type="appfn:AppFunctionValueParameterMetadata"
            cardinality="2" />
        <xs:element name="selfReference" type="appfn:AppFunctionSchema" cardinality="2" />
    </xs:documentType>

    <!-- Definition for AppFunctionStaticMetadata -->
    <xs:documentType name="AppFunctionStaticMetadata">
        <xs:element name="functionId" type="xs:string" cardinality="2" indexingType="1"
            tokenizerType="2" />
        <xs:element name="packageName" type="xs:string" cardinality="2" indexingType="1"
            tokenizerType="2" />
        <xs:element name="schemaName" type="xs:string" cardinality="2" indexingType="1"
            tokenizerType="2" />
        <xs:element name="schemaVersion" type="xs:long" cardinality="2" indexingType="1" />
        <xs:element name="schemaCategory" type="xs:string" cardinality="2" indexingType="1"
            tokenizerType="2" />
        <xs:element name="enabledByDefault" type="xs:boolean" cardinality="2" />
        <xs:element name="restrictCallersWithExecuteAppFunctions" type="xs:boolean"
            cardinality="2" />
        <xs:element name="schemaMetadata" type="appfn:SchemaMetadata" cardinality="2"
            shouldIndexNestedProperties="true" />
        <xs:element name="displayNameStringRes" type="xs:long" cardinality="2" />
        <xs:element name="mobileApplicationQualifiedId" type="xs:string" cardinality="2"
            joinableValueType="1" />
        <xs:element name="description" type="xs:string" cardinality="2" />
        <xs:element name="parameters" type="appfn:AppFunctionValueParameterMetadata"
            cardinality="1" />
        <xs:element name="components" type="appfn:AppFunctionComponentMetadata" cardinality="2" />
        <xs:element name="response" type="appfn:AppFunctionResponseMetadata" cardinality="2" />
    </xs:documentType>
</xs:schema>
