GetCapabilities request/response

These is the structure of a CSW GetCapabilities request:

 http://localhost:8080/geonetwork/srv/en/csw?request=GetCapabilities&service=CSW&acceptVersions=2.0.2&acceptFormats=application/xml

or its POST counterpart:

<?xml version="1.0" encoding="UTF-8"?>
<csw:GetCapabilities 
    service="CSW"
    xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" 
    xmlns:ows="http://www.opengis.net/ows"
>
  <ows:AcceptVersions>
    <ows:Version>2.0.2</ows:Version>
  </ows:AcceptVersions>
  <ows:AcceptFormats>
    <ows:OutputFormat>application/xml</ows:OutputFormat>
  </ows:AcceptFormats>
</csw:GetCapabilities>

Expected response is something like:

<?xml version="1.0" encoding="UTF-8"?>
<csw:Capabilities
    version="2.0.2" 
    xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
    xmlns:gml="http://www.opengis.net/gml"
    xmlns:gmd="http://www.isotc211.org/2005/gmd"
    xmlns:ows="http://www.opengis.net/ows"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd">

  <ows:ServiceIdentification>
    <ows:Title />
    <ows:Abstract />
    <ows:Keywords>
      <!-- Keywords are automatically added by GeoNetwork
            according to catalogue content. -->
      <ows:Keyword>Global</ows:Keyword>
      <ows:Keyword>watersheds</ows:Keyword>

      <ows:Keyword>Biology</ows:Keyword>
      <ows:Keyword>water resources</ows:Keyword>
      <ows:Keyword>endangered plant species</ows:Keyword>
      <ows:Keyword>Africa</ows:Keyword>
      <ows:Keyword>Eurasia</ows:Keyword>
      <ows:Keyword>endangered animal species</ows:Keyword>

      <ows:Keyword>Antarctic ecosystem</ows:Keyword>
      <ows:Keyword>AWRD</ows:Keyword>
      <ows:Type>theme</ows:Type>
    </ows:Keywords>
    <ows:ServiceType>CSW</ows:ServiceType>
    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>

    <ows:Fees />
    <ows:AccessConstraints />
  </ows:ServiceIdentification>
  <ows:ServiceProvider>
    <ows:ProviderName>GeoNetwork opensource</ows:ProviderName>
    <ows:ProviderSite xlink:href="http://localhost:8080/geonetwork" />
    <ows:ServiceContact>
      <ows:IndividualName />

      <ows:PositionName />
      <ows:ContactInfo>
        <ows:Phone>
          <ows:Voice />
          <ows:Facsimile />
        </ows:Phone>
        <ows:Address>
          <ows:DeliveryPoint />
          <ows:City />

          <ows:AdministrativeArea />
          <ows:PostalCode />
          <ows:Country />
          <ows:ElectronicMailAddress />
        </ows:Address>
        <ows:HoursOfService />
        <ows:ContactInstructions />
      </ows:ContactInfo>
      <ows:Role />

    </ows:ServiceContact>
  </ows:ServiceProvider>
  <ows:OperationsMetadata>
    <ows:Operation name="GetCapabilities">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
          <ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
        </ows:HTTP>

      </ows:DCP>
      <ows:Parameter name="sections">
        <ows:Value>ServiceIdentification</ows:Value>
        <ows:Value>ServiceProvider</ows:Value>
        <ows:Value>OperationsMetadata</ows:Value>
        <ows:Value>Filter_Capabilities</ows:Value>
      </ows:Parameter>

      <ows:Constraint name="PostEncoding">
        <ows:Value>XML</ows:Value>
      </ows:Constraint>
    </ows:Operation>
    <ows:Operation name="DescribeRecord">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />

          <ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw">
            <ows:Constraint name="PostEncoding">
              <ows:Value>XML</ows:Value>
              <ows:Value>SOAP</ows:Value>
            </ows:Constraint>
          </ows:Post>
        </ows:HTTP>
      </ows:DCP>

      <ows:Parameter name="typeName">
        <ows:Value>csw:Record</ows:Value>
        <ows:Value>gmd:MD_Metadata</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="outputFormat">
        <ows:Value>application/xml</ows:Value>
      </ows:Parameter>

      <ows:Parameter name="schemaLanguage">
        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="typeName">
        <ows:Value>csw:Record</ows:Value>
        <ows:Value>gmd:MD_Metadata</ows:Value>
      </ows:Parameter>

      <ows:Constraint name="PostEncoding">
        <ows:Value>XML</ows:Value>
      </ows:Constraint>
    </ows:Operation>
    <ows:Operation name="GetDomain">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />

          <ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
    <ows:Operation name="GetRecords">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
          <ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw">

            <ows:Constraint name="PostEncoding">
              <ows:Value>XML</ows:Value>
              <ows:Value>SOAP</ows:Value>
            </ows:Constraint>
          </ows:Post>
        </ows:HTTP>
      </ows:DCP>
      <!-- FIXME : Gets it from enum or conf -->

      <ows:Parameter name="resultType">
        <ows:Value>hits</ows:Value>
        <ows:Value>results</ows:Value>
        <ows:Value>validate</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="outputFormat">
        <ows:Value>application/xml</ows:Value>

      </ows:Parameter>
      <ows:Parameter name="outputSchema">
        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="typeNames">
        <ows:Value>csw:Record</ows:Value>

        <ows:Value>gmd:MD_Metadata</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="CONSTRAINTLANGUAGE">
        <ows:Value>FILTER</ows:Value>
        <ows:Value>CQL_TEXT</ows:Value>
      </ows:Parameter>
      <ows:Constraint name="PostEncoding">

        <ows:Value>XML</ows:Value>
      </ows:Constraint>
      <ows:Constraint name="SupportedISOQueryables">
        <ows:Value>Operation</ows:Value>
        <ows:Value>Format</ows:Value>
        <ows:Value>OrganisationName</ows:Value>
        <ows:Value>Type</ows:Value>

        <ows:Value>ServiceType</ows:Value>
        <ows:Value>DistanceValue</ows:Value>
        <ows:Value>ResourceLanguage</ows:Value>
        <ows:Value>RevisionDate</ows:Value>
        <ows:Value>OperatesOn</ows:Value>
        <ows:Value>GeographicDescriptionCode</ows:Value>

        <ows:Value>AnyText</ows:Value>
        <ows:Value>Modified</ows:Value>
        <ows:Value>PublicationDate</ows:Value>
        <ows:Value>ResourceIdentifier</ows:Value>
        <ows:Value>ParentIdentifier</ows:Value>
        <ows:Value>Identifier</ows:Value>

        <ows:Value>CouplingType</ows:Value>
        <ows:Value>TopicCategory</ows:Value>
        <ows:Value>OperatesOnIdentifier</ows:Value>
        <ows:Value>ServiceTypeVersion</ows:Value>
        <ows:Value>TempExtent_end</ows:Value>
        <ows:Value>Subject</ows:Value>

        <ows:Value>CreationDate</ows:Value>
        <ows:Value>OperatesOnName</ows:Value>
        <ows:Value>Title</ows:Value>
        <ows:Value>DistanceUOM</ows:Value>
        <ows:Value>Denominator</ows:Value>
        <ows:Value>AlternateTitle</ows:Value>

        <ows:Value>Language</ows:Value>
        <ows:Value>TempExtent_begin</ows:Value>
        <ows:Value>HasSecurityConstraints</ows:Value>
        <ows:Value>KeywordType</ows:Value>
        <ows:Value>Abstract</ows:Value>
      </ows:Constraint>

      <ows:Constraint name="AdditionalQueryables">
        <ows:Value>SpecificationDate</ows:Value>
        <ows:Value>ConditionApplyingToAccessAndUse</ows:Value>
        <ows:Value>AccessConstraints</ows:Value>
        <ows:Value>MetadataPointOfContact</ows:Value>
        <ows:Value>SpecificationDateType</ows:Value>

        <ows:Value>Classification</ows:Value>
        <ows:Value>OtherConstraints</ows:Value>
        <ows:Value>Degree</ows:Value>
        <ows:Value>Lineage</ows:Value>
        <ows:Value>SpecificationTitle</ows:Value>
      </ows:Constraint>

    </ows:Operation>
    <ows:Operation name="GetRecordById">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
          <ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw">
            <ows:Constraint name="PostEncoding">
              <ows:Value>XML</ows:Value>

              <ows:Value>SOAP</ows:Value>
            </ows:Constraint>
          </ows:Post>
        </ows:HTTP>
      </ows:DCP>
      <ows:Parameter name="outputSchema">
        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>

      </ows:Parameter>
      <ows:Parameter name="outputFormat">
        <ows:Value>application/xml</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="resultType">
        <ows:Value>hits</ows:Value>
        <ows:Value>results</ows:Value>

        <ows:Value>validate</ows:Value>
      </ows:Parameter>
      <ows:Parameter name="ElementSetName">
        <ows:Value>brief</ows:Value>
        <ows:Value>summary</ows:Value>
        <ows:Value>full</ows:Value>
      </ows:Parameter>

      <ows:Constraint name="PostEncoding">
        <ows:Value>XML</ows:Value>
      </ows:Constraint>
    </ows:Operation>
    <ows:Operation name="Transaction">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />

          <ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
    <!--                
                <ows:Operation name="Harvest">
                        <ows:DCP>
                                <ows:HTTP>
                                        <ows:Get  xlink:href="http://$HOST:$PORT$SERVLET/srv/en/csw" />
                                        <ows:Post xlink:href="http://$HOST:$PORT$SERVLET/srv/en/csw"  />
                                </ows:HTTP>
                        </ows:DCP>
                </ows:Operation>
-->
    <ows:Parameter name="service">
      <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
    </ows:Parameter>

    <ows:Parameter name="version">
      <ows:Value>2.0.2</ows:Value>
    </ows:Parameter>
    <ows:Constraint name="IsoProfiles">
      <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
    </ows:Constraint>
    <ows:Constraint name="PostEncoding">
      <ows:Value>SOAP</ows:Value>

    </ows:Constraint>
  </ows:OperationsMetadata>
  <ogc:Filter_Capabilities>
    <ogc:Spatial_Capabilities>
      <ogc:GeometryOperands>
        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>
        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>
        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>

        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>
      </ogc:GeometryOperands>
      <ogc:SpatialOperators>
        <ogc:SpatialOperator name="BBOX" />
        <ogc:SpatialOperator name="Equals" />
        <ogc:SpatialOperator name="Overlaps" />
        <ogc:SpatialOperator name="Disjoint" />
        <ogc:SpatialOperator name="Intersects" />

        <ogc:SpatialOperator name="Touches" />
        <ogc:SpatialOperator name="Crosses" />
        <ogc:SpatialOperator name="Within" />
        <ogc:SpatialOperator name="Contains" />
        <!--
                <ogc:SpatialOperator name="Beyond"/>
                <ogc:SpatialOperator name="DWithin"/>
                 The 'SpatialOperator' element can have a GeometryOperands child -->
      </ogc:SpatialOperators>
    </ogc:Spatial_Capabilities>
    <ogc:Scalar_Capabilities>
      <ogc:LogicalOperators />

      <ogc:ComparisonOperators>
        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>

        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>
        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>
        <!-- FIXME : Check NullCheck operation is available -->
      </ogc:ComparisonOperators>
    </ogc:Scalar_Capabilities>

    <ogc:Id_Capabilities>
      <ogc:EID />
      <ogc:FID />
    </ogc:Id_Capabilities>
  </ogc:Filter_Capabilities>
</csw:Capabilities>


back to CSW_sample_requests_and_responses