<?xml version="1.0" encoding="UTF-8"?>
<application 
    xmlns="http://wadl.dev.java.net/2009/02"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:common="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common"
    xmlns:message="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message"
    xmlns:types="http://www.sdmx.org/resources/rest/schemas/v2_1/types"
    xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd"> 
    <grammars>
    	<doc title="grammarDoc">The SDMXMessage.xsd is used to import all SDMXML types so as to be referenced in the WADL. The SDMXRestTypes.xsd defines various types used by the WADL's parameters e.g. key pattern, latest and all values.</doc>
        <include href="../schemas/SDMXMessage.xsd"/>
    	<include href="SDMXRestTypes.xsd"/>
    </grammars> 
    
    <resources base="https://iestadis.edatos.io/sdmx-registry/apis/registry/v2.1/"> 
    	<doc title="baseDoc" xml:lang="en">The base URL is a sample. The service base can be named according to the implementor needs</doc>
    	
    	<!-- Resources for Maintainable artefacts -->
    	<resource id="datastructure" path="datastructure/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
	    	<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="categoryscheme" path="categoryscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="conceptscheme" path="conceptscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="codelist" path="codelist/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="organisationscheme" path="organisationscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="agencyscheme" path="agencyscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" fixed="AGENCIES"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" fixed="1.0"/>
    	</resource>
    	<resource id="dataproviderscheme" path="dataproviderscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" fixed="DATA_PROVIDERS"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" fixed="1.0"/>
    	</resource>
    	<resource id="dataconsumerscheme" path="dataconsumerscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" fixed="DATA_CONSUMERS"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" fixed="1.0"/>
    	</resource>
    	<resource id="organisationunitscheme" path="organisationunitscheme/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="dataflow" path="dataflow/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="categorisation" path="categorisation/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	<resource id="contentconstraint" path="contentconstraint/{agencyID}/{resourceID}/{version}" type="#MaintainableArtefact"> 
    		<param name="agencyID" type="types:NCNameIDType" style="template" required="false" default="all"/>    	
    		<param name="resourceID" type="types:IDType" style="template" required="false" default="all"/> 
    		<param name="version" type="types:VersionType" style="template" required="false" default="latest"/>
    	</resource>
    	
    	<!-- Resources for Data/Metadata -->
    	<resource id="data" path="data/{flowRef}/{key}/{providerRef}">
    		<param name="flowRef" type="types:FlowRefType" style="template" required="true"/> 
    		<param name="key" type="types:KeyType" style="template" required="false" default="all"/>
    		<param name="providerRef" type="types:ProviderRefType" style="template" required="false" default="all"/>
    		
    		<method name="GET" id="DataQuery">
    			<request> 
    				<param name="startPeriod" type="common:StandardTimePeriodType" style="query" />
    				<param name="endPeriod" type="common:StandardTimePeriodType" style="query" />
    				<param name="dimensionAtObservation" type="common:NCNameIDType" style="query" />
    				<param name="detail" type="types:DataDetailType" style="query" default="full"/>
    			</request>
    			<response status="200"> 
    				<representation mediaType="application/vnd.sdmx.genericdata+xml;version=2.1" element="message:GenericData"/>
    				<representation mediaType="application/vnd.sdmx.structurespecificdata+xml;version=2.1" element="message:StructureSpecificData"/>
    				<representation mediaType="application/vnd.sdmx.generictimeseriesdata+xml;version=2.1" element="message:GenericTimeSeriesData"/>
    				<representation mediaType="application/vnd.sdmx.structurespecifictimeseriesdata+xml;version=2.1" element="message:StructureSpecificTimeSeriesData"/>
    			</response> 
    			<response status="400 401 404 413 500 501 503"> 
    				<representation mediaType="application/vnd.sdmx.error+xml;version=2.1" element="message:Error"/> 
    			</response>
    		</method>
    	</resource>
    </resources>
	
	<!-- Resource Types definition -->
	<resource_type id="MaintainableArtefact">
		<doc title="maintTypeDoc" xml:lang="en">The MaintainableArtefact resource type defines the common behaviour for all the maintainable artefacts, which inherit from it.</doc>
		<method name="GET" id="MaintainableArtefactQuery"> 
			<request> 
				<param name="detail" type="types:DetailType" style="query" default="full"/>
				<param name="references" type="types:ReferencesType" style="query" default="none"/>
			</request> 
			<response status="200"> 
				<representation mediaType="application/vnd.sdmx.structure+xml;version=2.1" element="message:Structure"/>
			</response> 
			<response status="400 401 404 413 500 501 503"> 
				<representation mediaType="application/vnd.sdmx.error+xml;version=2.1" element="message:Error"/> 
			</response> 
		</method>
	</resource_type>
	
</application>
