From 39e8159fdf6673cbaedfe6bab6d855955d5a0675 Mon Sep 17 00:00:00 2001 From: thomas loubrieu Date: Wed, 4 Sep 2024 17:51:42 -0400 Subject: [PATCH 1/3] upgrade for latest version, add -L option to curl to follow redirects --- docs/source/guides/search/cookbook.rst | 14 +- docs/source/guides/search/endpoints.rst | 85 +- docs/source/guides/search/quickstart.rst | 4 +- docs/source/guides/search/responses.rst | 13 +- docs/source/guides/search/tutorials.rst | 2 +- specs/PDS_APIs-search-1.5.0-swagger.yaml | 1072 ++++++++++++++++++++++ 6 files changed, 1101 insertions(+), 89 deletions(-) create mode 100644 specs/PDS_APIs-search-1.5.0-swagger.yaml diff --git a/docs/source/guides/search/cookbook.rst b/docs/source/guides/search/cookbook.rst index f3f14da..bb4524e 100644 --- a/docs/source/guides/search/cookbook.rst +++ b/docs/source/guides/search/cookbook.rst @@ -68,7 +68,7 @@ Search for the 10 latest collections which processing level is "Raw": :caption: curl command :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ --data-urlencode 'limit=10' \ --data-urlencode 'q=(pds:Primary_Result_Summary.pds:processing_level eq "Raw")' @@ -84,7 +84,7 @@ Search for all Observational Products targeting Bennu: :caption: curl command :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ --data-urlencode 'q=(ref_lid_target eq "urn:nasa:pds:context:target:asteroid.101955_bennu")' @@ -97,7 +97,7 @@ Search all products which are referring to a given LID: :caption: curl command :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ --data-urlencode 'limit=200' \ --data-urlencode 'q=((pds:Internal_Reference.pds:lid_reference eq "urn:nasa:pds:context:investigation:mission.orex") or (pds:Internal_Reference.pds:lid_reference like "urn:nasa:pds:context:investigation:mission.orex::*"))' | json_pp @@ -133,7 +133,7 @@ Run the following request to get the DOI associated with the collection the obse :caption: curl command :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:vg1-saturn-pos-hgcoords-96sec:data-spice:spice-hg::1.0/member-of' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:vg1-saturn-pos-hgcoords-96sec:data-spice:spice-hg::1.0/member-of' \ --data-urlencode 'fields=pds:Citation_Information.pds:doi' \ --header 'Accept: application/kvp+json' @@ -171,7 +171,7 @@ To get the DOI associated with the bundle the observational product `urn:nasa:pd :caption: curl command :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight.spice:document:spiceds::1.0/member-of/member-of' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight.spice:document:spiceds::1.0/member-of/member-of' \ --data-urlencode 'fields=pds:Citation_Information/pds:doi' \ --header 'Accept: application/kvp+json' @@ -210,7 +210,7 @@ To get the PDS product metadata associated with a the DOI `10.17189/1517568`: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ --data-urlencode 'q=(pds:Citation_Information.pds:doi eq "10.17189/1522962")' \ --header 'Accept: application/json' @@ -237,7 +237,7 @@ Do query that using curl, it would look like this: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ --data-urlencode 'q=((pds:Time_Coordinates.pds:start_date_time ge "1979-03-01T00:00:00.000Z") and ' \ --data-urlencode '(pds:Time_Coordinates.pds:start_date_time lt "1979-04-01T00:00:00.000Z") and ' \ --data-urlencode '(ref_lid_instrument eq "urn:nasa:pds:context:instrument:vg1.pws"))' \ diff --git a/docs/source/guides/search/endpoints.rst b/docs/source/guides/search/endpoints.rst index 2f1ec8c..13e3439 100644 --- a/docs/source/guides/search/endpoints.rst +++ b/docs/source/guides/search/endpoints.rst @@ -19,32 +19,6 @@ The **base URL** of the PDS Search API, for search across all the PDS nodes, is: https://pds.nasa.gov/api/search/|search_user_guide_api_version|/ -For specific discipline node search, there are node-specific endpoints available giving access to products of one node, for example: - -.. code-block:: - :substitutions: - - https://pds.nasa.gov/api/search-geo/|search_user_guide_api_version|/ - -Where ``geo`` is the **Node ID** - -The **Node IDs** are: - -============= ======================================== -Node ID Node Name -============= ======================================== -atm Atmospheres -en Engineering -geo Geosciences -img Imaging -naif Navigation and Ancillary Information -ppi Planetary Plasma Interactions -psa ESA Planetary Science Archive -rms Ring-Moon Systems -sbnumd Small Bodies, Comets -sbnpsi Small Bodies, Asteroids/Dust -============= ======================================== - The main use cases, to search, crawl products or resolve a product identifier are given in the following sections. Search Products @@ -58,7 +32,7 @@ Get the list of properties which describe the products, which criteria you can s .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/properties' + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/properties' Search for products which processing level is "Raw", using the property "pds:Primary_Result_Summary.pds:processing_level" found before, get 10 results: @@ -66,7 +40,7 @@ Search for products which processing level is "Raw", using the property "pds:Pri .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products' \ --data-urlencode 'limit=10' \ --data-urlencode 'q=(pds:Primary_Result_Summary.pds:processing_level eq "Raw")' @@ -84,24 +58,10 @@ The requests template is a follow: GET /api/search/|search_user_guide_api_version|/classes/{product_class}[?[{query-parameter}={query-parameter-value}]*] HTTP/1.1 Host: pds.nasa.gov -Where `product_class` is one of the following classes: - - - bundles - - collections - - observationals - - documents - - any +Where `product_class` can be any of those found with request `https://pds.nasa.gov/api/search/1/classes`_. The concept of product class is derived from the `PDS4 standard `_. -The list of classes proposed by the API can also be found from URL: - -.. code-block:: - :substitutions: - - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/classes - - Query Detailed Syntax ~~~~~~~~~~~~~~~~~~~~~~ @@ -289,27 +249,6 @@ The request: https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/{lid} -is equivalent to: - -.. code-block:: bash - :substitutions: - - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/{lid}/latest - - -All Versions -.............. - -If you want to retrieve **all** the versions of a product, the request is: - -.. code-block:: bash - :substitutions: - - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/{lid}/all - - -The `all` and `latest` suffixes apply also to all the crawling end-points which description follows. - Crawl a Data Set Hierarchy -------------------------- @@ -324,7 +263,7 @@ Get its **children** (collections): .. code-block:: :substitutions: - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/members[/[all|latest]] + https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/members For example, run: @@ -343,7 +282,7 @@ Get the Observational Products of a Bundle .. code-block:: :substitutions: - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/members/members[/[all|latest]] + https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/members/members For example, run: @@ -351,7 +290,7 @@ For example, run: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1/members/members' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1/members/members' \ --header 'Accept: application/json' @@ -363,7 +302,7 @@ Get its **parent** (collection): .. code-block:: :substitutions: - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/member-of[/[all|latest]] + https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/member-of The same request can be used to get the bundles of a collection from the collection's lidvid. @@ -372,7 +311,7 @@ Get its **grandparent** (bundle): .. code-block:: :substitutions: - https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/member-of/member-of[/[all|latest]] + https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/lidvid1/member-of/member-of For example, run: @@ -380,7 +319,7 @@ For example, run: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad:data_raw:hp3_rad_raw_00004_20181130_085325/member-of/member-of' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad:data_raw:hp3_rad_raw_00004_20181130_085325/member-of/member-of' \ --header 'Accept: application/json' @@ -410,7 +349,7 @@ Sort the results by the harvest time, which is the time when products were loade .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:orex.ovirs:data_calibrated::11.0/members' + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:orex.ovirs:data_calibrated::11.0/members' --header 'Accept: application/json' --data-urlencode 'sort=ops:Harvest_Info.ops:harvest_date_time' @@ -432,7 +371,7 @@ Use this latest harvest date and time as the reference for the next request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:orex.ovirs:data_calibrated::11.0/members' + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:orex.ovirs:data_calibrated::11.0/members' --header 'Accept: application/json' --data-urlencode 'sort=ops:Harvest_Info.ops:harvest_date_time' --data-urlencode 'search-after=2023-05-26T05:53:24.611495Z' @@ -449,7 +388,7 @@ You can adjust the default limit of 100 products per page using the limit parame .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:orex.ovirs:data_calibrated::11.0/members' + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:orex.ovirs:data_calibrated::11.0/members' --header 'Accept: application/json' --data-urlencode 'limit=500' --data-urlencode 'sort=ops:Harvest_Info.ops:harvest_date_time' diff --git a/docs/source/guides/search/quickstart.rst b/docs/source/guides/search/quickstart.rst index bc5cfcf..a622317 100644 --- a/docs/source/guides/search/quickstart.rst +++ b/docs/source/guides/search/quickstart.rst @@ -20,7 +20,7 @@ Search With curl .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=5' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=5' \ --header 'Accept: application/json' 3. Get 5 products' metadata from the API in XML format: @@ -28,7 +28,7 @@ Search With curl .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=5' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=5' \ --header 'Accept: application/xml' diff --git a/docs/source/guides/search/responses.rst b/docs/source/guides/search/responses.rst index 336e440..2dbcab8 100644 --- a/docs/source/guides/search/responses.rst +++ b/docs/source/guides/search/responses.rst @@ -57,6 +57,7 @@ types: ``application/vnd.nasa.pds.pds4+json`` and ``application/vnd.nasa.pds.pds4+xml`` have been chosen to comply with `RFC6838 `_ + Examples +++++++++ @@ -68,7 +69,7 @@ The request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ --header 'Accept: application/json' Returns @@ -135,7 +136,7 @@ The request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ --header 'Accept: application/xml' Returns: @@ -208,7 +209,7 @@ The request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ --header 'Accept: application/vnd.nasa.pds.pds4+json' @@ -291,7 +292,7 @@ The request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products/urn:nasa:pds:insight_rad::2.1' \ --header 'Accept: application/vnd.nasa.pds.pds4+xml' @@ -371,7 +372,7 @@ The request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=10&fields=lidvid&fields=title' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=10&fields=lidvid&fields=title' \ --header 'Accept: application/kvp+json' Returns: @@ -417,7 +418,7 @@ The request: .. code-block:: bash :substitutions: - curl --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=10&fields=lidvid&fields=title' \ + curl -L --get 'https://pds.nasa.gov/api/search/|search_user_guide_api_version|/products?limit=10&fields=lidvid&fields=title' \ --header 'Accept: text/csv' Returns: diff --git a/docs/source/guides/search/tutorials.rst b/docs/source/guides/search/tutorials.rst index 21c5cce..2a4fe13 100644 --- a/docs/source/guides/search/tutorials.rst +++ b/docs/source/guides/search/tutorials.rst @@ -15,7 +15,7 @@ When developing a web client to the API, if you are not from JPL, contact us (pd If you are on JPL's network, develop your application locally on port 80 on your laptop connected to the VPN and test your application with URL http://localhost.jpl.nasa.gov/.... -TO BE COMPLETED +An example implementation of an HTML/Javascript client of the API can be found in the github repository `gis-web-client`_ Search Examples diff --git a/specs/PDS_APIs-search-1.5.0-swagger.yaml b/specs/PDS_APIs-search-1.5.0-swagger.yaml new file mode 100644 index 0000000..541ddce --- /dev/null +++ b/specs/PDS_APIs-search-1.5.0-swagger.yaml @@ -0,0 +1,1072 @@ +openapi: 3.0.0 +info: + description: | + Registry API enabling advanced search on PDS data and metadata. The API provides end-points to search for bundles, collections and any PDS products with advanced search queries. It also enables to browse the archive hierarchically downward (e.g. collection/s products) or upward (e.g. bundles containing a product). + version: 1.5.0 + title: PDS Registry Search API + termsOfService: 'http://pds.nasa.gov' + contact: + email: pds-operator@jpl.nasa.gov + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + +tags: + - name: 1. all products + description: search any classe of product and resolve product's identifiers + - name: 2. product references + description: explore the product hierarchy + - name: 3. by product classes + description: search by class of product, bundles, collections, ... + - name: 4. healthcheck + description: end-point for evaluating system health + - name: 5. all docs + description: access to opensearch API, for experts only + + +externalDocs: + description: User's Guide + url: https://nasa-pds.github.io/pds-api/guides/search.html + +servers: + - url: https://pds.nasa.gov/api/registry/1 + description: production server + +paths: + /healthcheck: + get: + tags: + - 4. healthcheck + summary: | + returns payload of system health information. Detection of any fatal issues results in a non-200 response. The primary intention of this endpoint is to provide an accurate assessment of the service to determine if ECS/Fargate should instantiate a new instance of the task. + operationId: healthcheck + responses: + '200': + description: The system checked out as healthy, returning a JSON payload of results + content: + "*": + schema: + type: object + additionalProperties: true + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '418': + description: The system did not check out as healthy, returning a JSON payload of results, including error messages indicating the source(s) of the failure(s) + content: + "*": + schema: + type: object + additionalProperties: true + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + /classes: + get: + tags: + - 3. by product classes + summary: | + returns a list of the available PDS product class at this API. This is not all of the PDS product class available in the database, but simply the names that can be used in the /classes/{class} endpoints. + operationId: classes + responses: + '200': + description: Successful response is always a JSON list of the available class names + content: + "*": + schema: + type: array + items: + type: string + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + /classes/{class}: + get: + tags: + - 3. by product classes + summary: | + returns all PDS products of the given PDS product class that meet all given constraints. + operationId: class-list + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Class" + - $ref: "#/components/parameters/Keyword" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + + /docs: + post: + tags: + - 5. all docs + summary: | + WORK IN PROGRESS: search on all registry documents by posting an OpenSearch DSL query + operationId: docs + requestBody: + description: OpenSearch DSL query + required: true + content: + application/json: + schema: + type: string + responses: + '200': + description: Successful request + content: + "*": + schema: + type: object + parameters: + - $ref: "#/components/parameters/Indices" + /products: + get: + tags: + - 1. all products + summary: | + search the latest-versioned instances of all PDS data products, including bundles, collections, documentation, context and observational products. + operationId: product-list + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Keyword" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + + /products/{identifier}: + get: + tags: + - 1. all products + summary: | + returns one PDS Product with the identifier selected from all PDS Products, including bundles, collections, data, documentation, context and observational products. See identifier for details on how it determines what is returned. + operationId: select-by-lidvid + responses: + '200': + $ref: "#/components/responses/Singular" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + + /products/{identifier}/latest: + get: + tags: + - 1. all products + summary: | + returns one PDS Product with the identifier selected from all PDS Products. See identifier for details on how it determines what is returned. + operationId: select-by-lidvid-latest + responses: + '200': + $ref: "#/components/responses/Singular" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + + /products/{identifier}/all: + get: + tags: + - 1. all products + summary: | + returns all product versions with the identifier (lid) selected from all PDS Products. See identifier for details on how it determines what is returned. + + note: if given a lidvid, it will be translated to a lid + operationId: select-by-lidvid-all + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + + + /properties: + get: + tags: + - 1. all products + summary: | + return a list of all possible searchable metadata fields for products published in the registry + operationId: product-properties-list + responses: + '200': + $ref: "#/components/responses/PropertiesList" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: [] + + + /products/{identifier}/members: + get: + tags: + - 2. product references + summary: | + returns all of the members of the given lid/lidvid + operationId: product-members + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + /products/{identifier}/members/{versions}: + get: + tags: + - 2. product references + summary: | + returns all of the members of the given lid/lidvid + operationId: product-members-vers + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + - $ref: "#/components/parameters/Versions" + /products/{identifier}/members/members: + get: + tags: + - 2. product references + summary: | + returns all of the members of the members of the given lid/lidvid + operationId: product-members-members + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + /products/{identifier}/members/members/{versions}: + get: + tags: + - 2. product references + summary: | + returns all of the members of the members of the given lid/lidvid + operationId: product-members-members-vers + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + - $ref: "#/components/parameters/Versions" + /products/{identifier}/member-of: + get: + tags: + - 2. product references + summary: | + returns one or more PDS Products that have the given PDS lid/lidvid as a member. + operationId: product-member-of + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + /products/{identifier}/member-of/{versions}: + get: + tags: + - 2. product references + summary: | + returns one or more PDS Products that have the given PDS lid/lidvid as a member. + operationId: product-member-of-vers + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + - $ref: "#/components/parameters/Versions" + /products/{identifier}/member-of/member-of: + get: + tags: + - 2. product references + summary: | + returns one or more PDS Products that have the given PDS lid/lidvid as a member of its members. + operationId: product-member-of-of + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + /products/{identifier}/member-of/member-of/{versions}: + get: + tags: + - 2. product references + summary: | + returns one or more PDS Products that have the given PDS lid/lidvid as a member of its members. + operationId: product-member-of-of-vers + responses: + '200': + $ref: "#/components/responses/Plural" + '400': + $ref: "#/components/responses/Error" + '404': + $ref: "#/components/responses/Error" + '500': + $ref: "#/components/responses/Error" + '501': + $ref: "#/components/responses/Error" + parameters: + - $ref: "#/components/parameters/Fields" + - $ref: "#/components/parameters/Identifier" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Query" + - $ref: "#/components/parameters/Sort" + - $ref: "#/components/parameters/SearchAfter" + - $ref: "#/components/parameters/Versions" + + +components: + parameters: + Fields: + name: fields + in: query + description: | + syntax: fields=field1,field2,... + + behavior: this parameter and the headder Accept: type determine what content is packaged for the result. While the types application/csv, application/kvp+json, and text/csv return only the fields requesteted, all of the other types have a minimal set of fields that must be returned. Duplicating a minimally required field in this parameter has not effect. The types vnd.nasa.pds.pds4+json and vnd.nasa.pds.pds4+xml have a complete set of fields that must be returned; meaning this parameter does not impact their content. When fields is not used, then the minimal set of fields, or all when minimal is an empty set, is returned. + + notes: the blob fields are blocked unless specifically requrested and only for the */csv and application/kvp+csv types. + required: false + schema: + type: array + items: + type: string + Class: + name: class + in: path + description: | + syntax: one of the allowable enum values + + This is a shortcut for doing a query with ... + required: true + schema: + type: string + enum: [any,bundles,collections,documents,observationals] + Indices: + name: indices + in: query + description: | + syntax: indices=index1,index2... + notes: OpenSearch indices + required: true + schema: + type: array + items: + type: string + Identifier: + name: identifier + in: path + description: | + syntax: lidvid or lid + + behavior (lid): returns one or more items whose lid matches this lid exactly. If the endpoint ends with the identifier or /latest then a signle result is returned and it is the highest version. If the endpoint ends with /all then all versions of the lid are returned. + + behavior (lidvid): returns one and only one item whose lidvid matches this lidvid exactly. + + note: the current lid/lidvid resolution will match all the lids that start with lid. In other words, it acts like a glob of foobar*. It behavesn this way from first character to the last + + note: simple sorting of the lidvid is being done to select the latest from the end of the list. However, the versions 1.0, 2.0, and 13.0 will sort to 1.0, 13.0, and 2.0 so the end of the list may not be the latest. + required: true + schema: + type: string + Keyword: + name: keywords + in: query + description: | + syntax: keyword=keyword1,keyword2,... + + behavior: free text search on title and description (if set q is ignored + + required: false + schema: + type: array + items: + type: string + Limit: + name: limit + in: query + description: | + syntax: limit=10 + + behavior: maximum number of matching results returned, for pagination + required: false + schema: + type: integer + minimum: 0 + default: 100 + Query: + name: q + in: query + description: | + syntax: q="vid eq 13.0" + + behavior: query uses eq,ne,gt,ge,lt,le,(,),not,and,or operators. Properties are named as in 'properties' attributes, literals are strings between quotes, like "animal", or numbers. Detailed query specification is available at https://bit.ly/3h3D54T + + note: ignored when keyword is present + required: false + schema: + type: string + Sort: + name: sort + in: query + description: | + syntax: sort=field0,field1,... + + behavior: currently only sorts ascending + required: false + schema: + type: array + items: + type: string + SearchAfter: + name: search-after + in: query + description: | + syntax: search-after=sortField0Value,sortField1Value,... + + behavior: for each field specified in the "sort" qparam, specify the field value for the last result returned in the previous page + It is strongly recommended to use ops:Harvest_Info/ops:harvest_date_time as your final sort field, to ensure successful pagination. + Remember to url-encode special characters, ex. /products?limit=10&sort=ops%3AHarvest_Info%2Fops%3Aharvest_date_time + required: false + schema: + type: array + items: + type: string + Versions: + name: versions + in: path + description: | + syntax: one of the allowable enum values + + This is a shortcut for doing a query with ... + required: true + schema: + type: string + enum: [all,latest] + responses: + Error: + description: Unsuccessful request + content: + "*": + schema: + type: object + "*/*": + schema: + $ref: '#/components/schemas/errorMessage' + application/csv: + schema: + $ref: '#/components/schemas/errorMessage' + application/json: + schema: + $ref: '#/components/schemas/errorMessage' + application/kvp+json: + schema: + $ref: '#/components/schemas/errorMessage' + application/vnd.nasa.pds.pds4+json: + schema: + $ref: '#/components/schemas/errorMessage' + application/vnd.nasa.pds.pds4+xml: + schema: + $ref: '#/components/schemas/errorMessage' + application/xml: + schema: + $ref: '#/components/schemas/errorMessage' + text/csv: + schema: + $ref: '#/components/schemas/errorMessage' + text/html: + schema: + $ref: '#/components/schemas/errorMessage' + text/xml: + schema: + $ref: '#/components/schemas/errorMessage' + Plural: + description: Successful request + content: + "*": + schema: + type: object + "*/*": + schema: + $ref: '#/components/schemas/pdsProducts' + application/csv: + schema: + $ref: '#/components/schemas/wyriwygProducts' + application/json: + schema: + $ref: '#/components/schemas/pdsProducts' + application/kvp+json: + schema: + $ref: '#/components/schemas/wyriwygProducts' + application/vnd.nasa.pds.pds4+json: + schema: + $ref: '#/components/schemas/pds4Products' + application/vnd.nasa.pds.pds4+xml: + schema: + $ref: '#/components/schemas/pds4Products' + application/xml: + schema: + $ref: '#/components/schemas/pdsProducts' + text/csv: + schema: + $ref: '#/components/schemas/wyriwygProducts' + text/html: + schema: + $ref: '#/components/schemas/pdsProducts' + text/xml: + schema: + $ref: '#/components/schemas/pdsProducts' + PropertiesList: + description: An array of all searchable properties of products in the registry. + content: + "*": + schema: + $ref: '#/components/schemas/propertiesList' + "*/*": + schema: + $ref: '#/components/schemas/propertiesList' + application/json: + schema: + $ref: '#/components/schemas/propertiesList' + application/xml: + schema: + $ref: '#/components/schemas/propertiesList' + text/html: + schema: + $ref: '#/components/schemas/propertiesList' + text/xml: + schema: + $ref: '#/components/schemas/propertiesList' + Singular: + description: Successful request + content: + "*": + schema: + type: object + "*/*": + schema: + $ref: '#/components/schemas/pdsProduct' + application/csv: + schema: + $ref: '#/components/schemas/wyriwygProduct' + application/json: + schema: + $ref: '#/components/schemas/pdsProduct' + application/kvp+json: + schema: + $ref: '#/components/schemas/wyriwygProduct' + application/vnd.nasa.pds.pds4+json: + schema: + $ref: '#/components/schemas/pds4Product' + application/vnd.nasa.pds.pds4+xml: + schema: + $ref: '#/components/schemas/pds4Product' + application/xml: + schema: + $ref: '#/components/schemas/pdsProduct' + text/csv: + schema: + $ref: '#/components/schemas/wyriwygProduct' + text/html: + schema: + $ref: '#/components/schemas/pdsProduct' + text/xml: + schema: + $ref: '#/components/schemas/pdsProduct' + schemas: + propertiesList: + type: array + items: + type: object + properties: + property: + type: string + type: + type: string + enum: + - "string" + - "integer" + - "float" + - "boolean" + - "timestamp" + - "unsupported" + summary: + type: object + properties: + q: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + hits: + description: total number of matching results. -1 indicates an excessive amount of resource required to compute it + type: integer + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + took: + description: Number of milliseconds it "took" to do request + type: integer + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + search_after: + type: array + items: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + limit: + type: integer + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + sort: + type: array + items: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + properties: + type: array + items: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + pdsProduct: + type: object + description: default PDS product description format for the API. + required: + - id + - metadata + properties: + id: + type: string + description: identifier lidvid of the collection + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + type: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + title: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + description: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + start_date_time: + type: string + description: start date time of the observations in ISO8601 + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + stop_date_time: + type: string + description: stop date time of the observations in ISO8601 + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + investigations: + type: array + description: list of missions or observing campaigns which produced the data + items: + $ref: '#/components/schemas/reference' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + observing_system_components: + type: array + description: list of instruments or platforms generating the data + items: + $ref: '#/components/schemas/reference' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + targets: + type: array + description: list of targets or feature of interest the observation. + items: + $ref: '#/components/schemas/reference' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + metadata: + $ref: '#/components/schemas/metadata' + properties: + type: object + description: propertie's values extracted from pds4 model, as a dictionnary, syntax for property name is {namespace}:{property}[{namespace}:{property}]* + additionalProperties: + $ref: '#/components/schemas/propertyArrayValues' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + pdsProducts: + type: object + required: + - summary + - data + properties: + summary: + $ref: '#/components/schemas/summary' + data: + items: + $ref: '#/components/schemas/pdsProduct' + wyriwygProduct: + type: object + description: minimalistic description of a pds product with only the key value pairs requested by the user (what you request is what you get) + required: + - key_value_pairs + properties: + key_value_pairs: + type: array + items: + title: wyriwyg_product_key_value_pair + type: object + properties: + key: + type: string + value: + type: string + wyriwygProducts: + type: object + required: + - summary + - data + properties: + summary: + $ref: '#/components/schemas/summary' + data: + items: + $ref: '#/components/schemas/wyriwygProduct' + propertyArrayValues: + type: array + items: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + reference: + type: object + description: object describing a reference to a different product. TODO The properties should be defined by a standard (xlink, json-ld) to be chosen + required: + - id + properties: + title: + type: string + description: name to display for the external reference + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + id: + type: string + description: external reference, here lidvid urn + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + href: + type: string + description: external reference url of the current reference resolvable by the current API server, http://pds.nasa.gov/api/products/urn:nasa... + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + type: + type: string + description: type of the external reference, can be displayed as an icon for example + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + description: + type: string + description: longer description for the external reference, can be displayed in a tooltip + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + metadata: + type: object + required: + - label_url + properties: + archive_status: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + creation_date_time: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + label_url: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + update_date_time: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + version: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + errorMessage: + type: object + required: + - request + - message + properties: + request: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + message: + type: string + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + xml: + prefix: 'pds_api' + namespace: 'http://pds.nasa.gov/api' + example: + { + request: 'https://pds.nasa.gov/api/1.0/collections?q=mission qt 12', + message: 'query operator gt not supported on field mission' + } + pds4Product: + type: object + description: PDS product description as structured by the PDS4 information model (https://pds.nasa.gov/datastandards/documents/im/) + required: + - id + properties: + id: + type: string + description: LIDVID + metadata: + $ref: '#/components/schemas/pds4Metadata' + pds4: + type: object + description: PDS4 JSON + pds4Products: + type: object + required: + - summary + - data + properties: + summary: + $ref: '#/components/schemas/summary' + data: + items: + $ref: '#/components/schemas/pds4Product' + pds4Metadata: + type: object + properties: + node_name: + type: string + ops:Label_File_Info: + type: object + properties: + ops:file_name: + type: string + ops:file_ref: + type: string + ops:creation_date: + type: string + ops:file_size: + type: string + ops:md5_checksum: + type: string + ops:Data_Files: + type: array + items: + title: pds4_metadata_ops_data_file + type: object + properties: + ops:file_name: + type: string + ops:file_ref: + type: string + ops:creation_date: + type: string + ops:file_size: + type: string + ops:md5_checksum: + type: string + ops:mime_type: + type: string + ops:Tracking_Meta: + type: object + properties: + ops:archive_status: + type: string From f47fa29eb673ccc0024c64a77cdb70f0d5ee17e3 Mon Sep 17 00:00:00 2001 From: thomas loubrieu Date: Wed, 4 Sep 2024 18:01:59 -0400 Subject: [PATCH 2/3] fix rst syntax, remove maintainance note --- docs/source/guides/search.rst | 3 --- docs/source/guides/search/cookbook.rst | 1 + docs/source/guides/search/endpoints.rst | 9 ++++++++- docs/source/guides/search/tutorials.rst | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/source/guides/search.rst b/docs/source/guides/search.rst index 9fe87b2..5d5e205 100644 --- a/docs/source/guides/search.rst +++ b/docs/source/guides/search.rst @@ -1,9 +1,6 @@ Search API User Guide ===================== -.. attention:: - The PDS Search API (https://pds.nasa.gov/api/search/) will be down will be down for maintenance for 2-3 weeks beginning May 6, 2024 at 8am Pacific Time. Limited functionality will be released as it becomes available. Apologies for the inconvenience. Please contact the PDS Help Desk if you have any questions. - .. note:: The current guide is based on the PDS Search API version |search_user_guide_api_spec_version| diff --git a/docs/source/guides/search/cookbook.rst b/docs/source/guides/search/cookbook.rst index bb4524e..d36dcb7 100644 --- a/docs/source/guides/search/cookbook.rst +++ b/docs/source/guides/search/cookbook.rst @@ -228,6 +228,7 @@ Here is one of the XML files, rendered: https://search-pdsppi.igpp.ucla.edu/ditd To build this query, we can search by the instrument and time range: .. code-block:: bash + ((pds:Time_Coordinates.pds:start_date_time ge "1979-03-01T00:00:00.000Z") and (pds:Time_Coordinates.pds:start_date_time lt "1979-04-01T00:00:00.000Z") and (ref_lid_instrument eq "urn:nasa:pds:context:instrument:vg1.pws")) diff --git a/docs/source/guides/search/endpoints.rst b/docs/source/guides/search/endpoints.rst index 13e3439..be94dee 100644 --- a/docs/source/guides/search/endpoints.rst +++ b/docs/source/guides/search/endpoints.rst @@ -58,7 +58,14 @@ The requests template is a follow: GET /api/search/|search_user_guide_api_version|/classes/{product_class}[?[{query-parameter}={query-parameter-value}]*] HTTP/1.1 Host: pds.nasa.gov -Where `product_class` can be any of those found with request `https://pds.nasa.gov/api/search/1/classes`_. +The list of `product_class` proposed by the API can also be found from URL: + +.. code-block:: + :substitutions: + + https://pds.nasa.gov/api/search/|search_user_guide_api_version|/classes + + The concept of product class is derived from the `PDS4 standard `_. diff --git a/docs/source/guides/search/tutorials.rst b/docs/source/guides/search/tutorials.rst index 2a4fe13..2287028 100644 --- a/docs/source/guides/search/tutorials.rst +++ b/docs/source/guides/search/tutorials.rst @@ -15,7 +15,7 @@ When developing a web client to the API, if you are not from JPL, contact us (pd If you are on JPL's network, develop your application locally on port 80 on your laptop connected to the VPN and test your application with URL http://localhost.jpl.nasa.gov/.... -An example implementation of an HTML/Javascript client of the API can be found in the github repository `gis-web-client`_ +An example implementation of an HTML/Javascript client of the API can be found in the github repository https://github.com/NASA-PDS/gis-web-client . Search Examples From 0b3bc4806fcf8fd19e6afd740acecd385b38ddb6 Mon Sep 17 00:00:00 2001 From: thomas loubrieu Date: Wed, 4 Sep 2024 18:15:16 -0400 Subject: [PATCH 3/3] minor fix --- docs/source/conf.py | 10 ++++++++-- docs/source/guides/search.rst | 1 + docs/source/index.rst | 3 --- docs/source/overview.rst | 4 ++-- docs/source/specifications.rst | 1 + 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 1604bd5..91acbc3 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -20,8 +20,8 @@ project = 'PDS APIs' copyright = '2022 California Institute of Technology' author = 'NASA Planetary Data System' -release = 'B14.0' -version = 'B14.0' +release = 'B15.0' +version = 'B15.0' # -- General configuration --------------------------------------------------- @@ -73,6 +73,12 @@ redoc_uri = 'https://cdn.jsdelivr.net/npm/redoc@2.0.0-alpha.17/bundles/redoc.standalone.js' redoc = [ + { + 'name': 'PDS Search API', + 'page': 'specifications/search-v1.5.0-redoc', + 'spec': '../../specs/PDS_APIs-search-1.5.0-swagger.yaml', + 'embed': True, + }, { 'name': 'PDS Search API', 'page': 'specifications/search-v1.4.0-redoc', diff --git a/docs/source/guides/search.rst b/docs/source/guides/search.rst index 5d5e205..0f48509 100644 --- a/docs/source/guides/search.rst +++ b/docs/source/guides/search.rst @@ -16,6 +16,7 @@ The PDS Search API provides endpoints: * to **resolve** an identifier (lid or lidvid) and retrieve the product label and data where ever it is in the Planetary Data System. For an introduction to the Search API and what it's capable of, checkout these slides and a presentation given at the 2022 PSIDA conference: + * Slides: https://www.cosmos.esa.int/documents/6109777/9316710/X03+-+Padams+-+NASA_Planetary_Data_System_Search_API.pdf * Presentation Recording: https://www.cosmos.esa.int/web/psida-2022/-/x03 diff --git a/docs/source/index.rst b/docs/source/index.rst index 36adb55..22f2dd4 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,9 +1,6 @@ PDS APIs ======== -.. attention:: - The PDS Search API (https://pds.nasa.gov/api/search/) will be down will be down for maintenance for 2-3 weeks beginning May 6, 2024 at 8am Pacific Time. Limited functionality will be released as it becomes available. Apologies for the inconvenience. Please contact the PDS Help Desk if you have any questions. - The Planetary Data System (PDS) is a federated system of nodes that archive planetary science data. The PDS Application Programming Interface (API) provides a consistent way for planetary science community to discover and diff --git a/docs/source/overview.rst b/docs/source/overview.rst index 2ef76e3..1c9798d 100644 --- a/docs/source/overview.rst +++ b/docs/source/overview.rst @@ -9,7 +9,7 @@ The PDS API base urls are provided under the following pattern: where: -- ``{service}``: the service such as ‘search’ (i.e. registry), ‘doi’, etc.. This component can have an optional node identifier (e.g. ‘search-geo’). Absence of a node implies EN. +- ``{service}``: the service such as ‘search’ (in registry), ‘doi’, etc.. - ``{version}``: the version of the service. - ``{service_path+params}``: the ReST path for the service, including any query parameters - this is essentially the remaining portion of the URI after the version. @@ -18,7 +18,7 @@ API entries currently available are: +----------+-----------+-------------------------+----------------+-----------------+ | service | version | scope | specification | user's guide | +==========+===========+=========================+================+=================+ -| search | 1.1 | search PDS data archive | `search_spec`_ | `search_guide`_ | +| search | 1.5 | search PDS data archive | `search_spec`_ | `search_guide`_ | +----------+-----------+-------------------------+----------------+-----------------+ | doi | 0.2 | manage PDS DOIs | `doi_spec`_ | | +----------+-----------+-------------------------+----------------+-----------------+ diff --git a/docs/source/specifications.rst b/docs/source/specifications.rst index 05482c1..1ff6c7b 100644 --- a/docs/source/specifications.rst +++ b/docs/source/specifications.rst @@ -3,6 +3,7 @@ Specifications Each published version of NASA PDS APIs is documented here: +- `Search API v1.5.0 `_ - `Search API v1.4.0 `_ - `Search API v1.3.0 `_ - `Search API v1.1.1 `_