<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 14pt; background-color: rgb(255, 255, 255);">
<p>Soren-- good points.</p>
<p>Since I haven't been able to participate in the scoping discussions, and couldn't find any related docs on the ESIP discovery wiki, I'd like to get a clearer idea of the use cases.
</p>
<p>From your mail (paraphrased, embellished by me...)</p>
<p>* basic documentation of a service: defining parameters, route elements (relative paths for resources at an HTTP service endpoint?). I'd add information models (RDA data types) for resources and available representations (interchange formats)</p>
<p> </p>
<p>* enable client application to “Try it out” by generating a correctly formatted request from the method document. (I'm guessing this means generating a web page with example requests for a human to look at and learn from).
</p>
<p> </p>
<p>Amplified use scenarios based on discussions with you and Ruth</p>
<p>--1. Discoverable (crawlable) documents describing service endpoints to allow automated discovery and cataloging of services; ideally be able to catalog the data offered by the service as well.</p>
<p>-- 2.  generation of web pages from description documents (like the swagger UI, e.g.
<a id="LPlnk543868" href="http://petstore.swagger.io/">http://petstore.swagger.io/</a>) to help people figure out how to use a web service</p>
<p> -- 3. provide links in Atom documents (or other metadata interchange docs, e.g. ISO) to enable clients to drill down from search results for aggregate resources (data series, dataset) to more granular search (granule, records, features). Currently based
 on openSearch descriptions, but this generalizes to providing a URI template with an associated description document that specifies the parameters (data type, domains, semantics...) in the template.  Sub cases:</p>
<p> 3.a.   Initial user search is broken into two steps by the query processor--find datasets meeting one set of criteria, then search within those based on additional criteria. The idea would be to automate such a 'chained' search process so its largely invisible
 to the user. Example-- find well logs for boreholes deeper than 500m.  First search is to find a service that provides well logs and includes a property for total depth of log; second search within the discovered datasets is to find logs with TD > 500m</p>
<p>3.b. can't automate the chaining of the query process, but can identify datasets that include the information of interest for the granular search; present user with some kind of form interface to construct the 'drill down' queries against a discovered dataset
 service (related to case 2 above)</p>
<p> </p>
<p>Additional scenario of interest--</p>
<p>a hypermedia document provides a variety of affordances (links) for accessing some resource; a software application needs to parse those affordances to determine which one is appropriate for its requirements, and automate connection to the data source. 
 Basic requirements to address here would be a service protocol, information model and encoding scheme that the client application 'knows'.  Example: a dataset is distributed via file download in several formats (xls, csv, json), via WFS with some identified
 featureType(s), WMS, ESRI REST service with identified feature type, a GeoWS csv RESTful service.  The client is designed to consume GML features of a particular type, so it needs to identify the WFS with a matching featureType and get information necessary
 to connect and access data. </p>
<p> </p>
<p> </p>
<p></p>
<div id="Signature">
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 14pt; background-color: rgb(255, 255, 255);">
<p>Stephen Richard</p>
<p>Chief Geoinformatics Section</p>
<p>Arizona Geological Survey</p>
<p>416 E. Congress #100, Tucson 85745</p>
<p><a id="LPNoLP" href="mailto:steve.richard@azgs.az.gov">steve.richard@azgs.az.gov</a></p>
<p>520-209-4127</p>
</div>
</div>
<div style="color: rgb(33, 33, 33); -ms-word-wrap: break-word;">
<hr tabindex="-1" style="width: 98%; display: inline-block;">
<div id="divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri, sans-serif" style="font-size: 11pt;"><b>From:</b> Esip-discovery <esip-discovery-bounces@lists.esipfed.org> on behalf of Soren Scott via Esip-discovery <esip-discovery@lists.esipfed.org><br>
<b>Sent:</b> Wednesday, May 13, 2015 10:23 AM<br>
<b>To:</b> <esip-discovery@lists.esipfed.org><br>
<b>Subject:</b> Re: [Esip-discovery] Notification of next ESIP Discovery Telecon 1:00pm PST / 4:00pm EST today</font>
<div> </div>
</div>
<div>
<div>Doug and Chris (and Steve),</div>
<div><br>
</div>
<div>It might be useful to clarify the use cases for Swagger, RAML, or any of those RESTful API documentation frameworks and the alignment with OGC and OpenSearch at least. From our scoping round, there’s two main cases - there’s the basic documentation (defining
 parameters, route elements) and then there’s the promise (in Swagger) of being able to “Try it out” so generating a correctly formatted request from the method document. </div>
<div><br>
</div>
<div>The first is just data entry, really. The second one is where the dependencies in the OGC query parameters *and* their values or the OpenSearch parameters differences between datasets cause problems for any of these frameworks. For example, we’re describing
 a WMS so we enter WMS for the service and pick a supported version. There’s no place in Swagger to then say if you have selected SERVICE value WMS and VERSION value 1.3.0, the query parameter key is CRS instead of SRS for 1.1.1. Because it doesn’t grok those
 route or parameter dependencies, the actual generation of a correctly structured URL is back on the dev building the client or the user and not the more generic actionable self-describing services. And where having a solid Swagger and/or RAML OGC extension
 would be fantastic from a dev point of view. But it’s a modification of the spec and the interface and a conceptual understanding that the Swagger group, as of last fall, felt was an edge case that they wouldn’t support (not their idea of RESTful).</div>
<div><br>
</div>
<div>For OpenSearch, it’s a question of not having a way to access the enumerations for a parameter, ie I can’t get a list of dataset names without running the dataset search and understanding how to parse that - pull the granule links and, hopefully, get a
 new OSDD back or something. We have some numbers about OS services supporting that second level OSDD access. Nothing about differing parameter requirements, though.</div>
<div><br>
</div>
<div>I hear whispers of broader implementation of Swagger at different repositories but not of anyone handling the depency issues. And I am very much in favor of someone tackling the first case for things like OGC - just having some structured document that
 could be used to generate the docs for Swagger or RAML or 19119 or whatever would save so much time. But the second case is more what we’re all after. </div>
<div><br>
</div>
<div>My two cents,</div>
<div>Soren</div>
<div><br>
</div>
<div>
<blockquote type="cite"> </blockquote>
</div>
</div>
</div>
</div>
</body>
</html>