-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New fields: stac_api_version and stac_api_extensions #27
Comments
(Transferred to api-spec as it seems to be an API issue.) I think you are right, we need stac_* fields also in stac_api_* variants, but to be honest, I don't like that too much. Then our openEO landing page looks like this: api_version: "1.0.0-rc.2", // openEO version
stac_version: "0.9.0",
stac_api_version: "0.9.0",
stac_extensions: [...],
stac_api_extensions: [...], // or do we follow OGCs conformance classes behavior?
... |
I think we need either Here is a good example of a client having to deal with said ambiguity. |
Another idea could be to re-use OGCs /conformances (not saying I like it), but that would be the OGC API way to specify the version. They don't do it in the landing page /.
It would indeed be useful to specify what extensions are implemented.
I don't understand this. It should always be next for next page. If there's a difference it seems like a wrong implementation?! Can you give an example?
What exactly is the issue worked around there? I'm not used to read Python... |
I think this is fine, isn't this the purpose of a conformance page? I would also be fine with a
Apologies I misread the spec, its the query param that can vary not the rel type.
This use case is simply paginating through a |
Only some old STAC versions had a query parameter predefined, but I think all of them had to use next/prev rel types anyway. So using these shouldn't be a problem, I assume. Nevertheless, you don't know without a query to /search whether pagination is a thing or not... Why would you want to know that in advance? |
Just dug into this a bit and I think the best option is probably to re-use OGC's conformance thing. It seems better to re-use it even if we don't love it, especially if no one has any ideas that are clearly a better approach. We'll have to check with OGC, but I think we can probably just make our own 'conformance classes'? We probably won't define these quite as rigorously as OGC, with specific test assertions for each, but perhaps we could evolve to it. So I think we'd have something lile: {
"conformsTo": [
"http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core",
"http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30",
"http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson"
"http://stacspec.org/spec/api/1.0.0-beta.1/conf/stac-search"
"http://stacspec.org/spec/api/1.0.0-beta.1/conf/fields"
"http://stacspec.org/spec/api/1.0.0-beta.1/conf/sort"
"http://stacspec.org/spec/api/1.0.0-beta.1/conf/context"
"http://www.opengis.net/spec/ogcapi-features-3/1.0/req/filter"
"http://www.opengis.net/spec/ogcapi-features-3/1.0/req/features-filter"
"http://www.opengis.net/spec/ogcapi-features-3/1.0/req/simple-cql"
"http://www.opengis.net/spec/ogcapi-features-3/1.0/req/simpletx"
"http://stacspec.org/spec/api/1.0.0-beta.1/conf/versioning"
]
} This assumes #48 and #51 land (likely a few tweaks). I'm not 100% sure if we name each beta version, but probably? And should check to make sure OGC is ok with us adding in our own conformance locations. My hope is still that many of those evolve to be part of OGC API, but we probably need clearer tests. Thoughts? @m-mohr / @matthewhanson / @joshfix / @geospatial-jeff / @philvarner and anyone else? |
Yes, sounds reasonable although I'm not a big fan of the flow with conformances and the landing page: opengeospatial/ogcapi-common#71 It means we need to visit /conformances with all clients before accessing the landing page, which we (usually) don't do yet (AFAIK)... |
My only objection to re-use of conformance classes is that the documents behind those URLs are not guaranteed to be machine readable -- this would make clients responsible for some kind of string parsing? Or arbitrary HTML parsing? to figure out what the link is actually telling it it can do. It would be valuable for the STAC extensions to link to some JSON that describes the extension -- otherwise clients will have to condition on one of the URL or some data extracted from the page's structure, and those both seem like not great outcomes. |
@m-mohr - Just read that thread - fully agree with you. Could we just say in STAC that our landing page should include the conformance page json in line? We can implement /conformance/ for compatibility, but include the same json in our landing page. @jisantuc That's an interesting point. I think in OGC land they're more just considered to be like URI's - a unique string that can be referenced. So I was imagining that clients wouldn't actually resolve them. They'd just be checking for the presence of a particular string. If you follow OGC links some redirect you to the html version of their standard, others are just not found. But I'd potentially be up for doing better in STAC, as I always find it weird in OGC to have a link that does not go to some informative place. Would be nice if it was little or no work to maintain and public the machine readable info. It seems like the only real 'no work' option right now would be to use the openapi fragments in github, like https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/api-spec/extensions/transaction/transaction.fragment.yaml That said we are publishing JSON Schemas for content extensions right now. So I suppose we could come up with some small JSON description for our OGC Features API extensions. I guess I'm not sure what exactly we'd want in it... |
@cholmes I think the fragment link idea is interesting... in Franklin we render an OpenAPI spec from our endpoint definitions, so a client would be able to consult the difference between the conformance class and what Franklin will actually do. The only thing missing I think is the extension name, which I could imagine a STAC API browser wanting to get a hold of instead of passing a raw url to the user in the UI. |
I think we can do that, yes. |
I'm going to try to specify this tomorrow. I'm leaning towards http://stacspec.org/spec/api/1.0.0-beta.1/stac-search and just pushing ahead to get it out. But then circling back and we can publish something (openapi fragment / json / html - perhaps all and return based on request type?) there so it actually resolves. |
Would it make sense to specify multiple conformance classes?
Related to discussions in #58 |
Yeah, I think that makes sense. And then perhaps does make #58 a bit easier - we just say a compliant STAC API is some subset of the conformance classes. Though what does '+ id' mean? |
I'd like that, yes.
I was lazy. It means for example "stac-collections for GET /collections + GET /collections/{id}" |
I think I'll close this issue since we're 'close' and the bulk of the work is merged. And then we can make more informative ticket titles than 'new fields: stac_api_version...' |
Looking at Staccato's root catalog (https://stac.boundlessgeo.io/), links are provided for collections, catalogs, and API endpoints, however, the top of the document displays a stac version field:
"stac_version": "1.0.0-beta.1"
If the API and STAC specs a split, should we introduce a
stac_api_version
field or something similar?The text was updated successfully, but these errors were encountered: