Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nasa-pds/registry-api
Web API service for the PDS Registry, providing the implementation of the PDS Search API (https://github.com/nasa-pds/pds-api) for the PDS Registry.
https://github.com/nasa-pds/registry-api
data-search java nasa nasa-api pds pds4
Last synced: 3 months ago
JSON representation
Web API service for the PDS Registry, providing the implementation of the PDS Search API (https://github.com/nasa-pds/pds-api) for the PDS Registry.
- Host: GitHub
- URL: https://github.com/nasa-pds/registry-api
- Owner: NASA-PDS
- License: other
- Created: 2022-01-04T20:36:08.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-02T23:34:14.000Z (9 months ago)
- Last Synced: 2024-05-03T19:17:48.060Z (9 months ago)
- Topics: data-search, java, nasa, nasa-api, pds, pds4
- Language: Java
- Homepage: https://nasa-pds.github.io/pds-api
- Size: 5.1 MB
- Stars: 1
- Watchers: 5
- Forks: 5
- Open Issues: 72
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
# Registry API
[![DOI](https://zenodo.org/badge/444555977.svg)](https://zenodo.org/badge/latestdoi/444555977) [![ðĪŠ Unstable integration & delivery](https://github.com/NASA-PDS/registry-api/actions/workflows/unstable-cicd.yaml/badge.svg)](https://github.com/NASA-PDS/registry-api/actions/workflows/unstable-cicd.yaml) [![ð Stable integration & delivery](https://github.com/NASA-PDS/registry-api/actions/workflows/stable-cicd.yaml/badge.svg)](https://github.com/NASA-PDS/registry-api/actions/workflows/stable-cicd.yaml)
This repository implements the [search API v1.0.0-SNAPSHOT](https://nasa-pds.github.io/pds-api/specifications.html) for the PDS registry.
It is composed with the following subcomponents:
- lexer: parse the API request queries (q parameter), based on antlr4 grammar
- model: library end-point controller definition and response objects generated from the openAPI specification (see https://github.com/NASA-PDS/pds-api/)
- service: the API service, a spring-boot application## Prerequisites
For the API to work, you also need ElasticSearch/OpenSearch with some test data loaded in it.
Based on `docker` you can easily start all the prerequisites as configured in the `registry` repository. This repository is also useful to run the [integration tests](#Tests):
git clone https://github.com/NASA-PDS/registry.git
Start the prerequisites by following the [Quick Start Guide](https://github.com/NASA-PDS/registry/tree/main/docker#-quick-start-guide---with-default-configurations)
## Start the application from a released package
Get the latest stable release https://github.com/NASA-PDS/registry-api/releases
Download the zip or tar.gz 'registry-api-service-1.0.0-bin' file.
Follow instructions in README.txt in the decompressed folder
## Developers
### Running the API
#### Prerequisites
To build and run the application you need:
- jdk 17
- mavenAdditionally, harvested data will only be picked up correctly by the API if all of the following are true:
- the data has been given a status of "archived" using registry-mgr
- the registry-sweepers have been executed to update required metadata, see https://github.com/NASA-PDS/registry-sweepersThere are two approaches to running a local development instance of the API
#### [Option 1] Non-Containerized (useful for breakpoint debugging)
1. [Deploy an instance of the registry docker-compose](https://github.com/NASA-PDS/registry/tree/main/docker#readme)
2. Kill the existing API container
docker kill docker-registry-api-13. Temporarily disable certificate verification by making the following modification to [application.properties](./service/src/main/resources/application.properties)
openSearch.sslCertificateCNVerification=false
4. Build the application
mvn clean install
5. Start the application
cd service
mvn spring-boot:run
The API will now be accessible on (by default) https://localhost:8080
6. Specific configuration profile: if you run the application in a specific environment you can define a dedicated `application.properties`, for example `application-dev.properties` that does not need to be commited on git. Launch it as follow:mvn -Dspring-boot.run.profiles=dev spring-boot:run
#### [Option 2] Build a development docker imageYour local docker image will be used in the integration deployment described below.
mvn spring-boot:build-image
## View Swagger UI
Go to http://localhost:8080
## Integration deployment
You can deploy the registry-api together with all other components of the registry (harvest, opensearch, ...) and reference datasets.
Clone the `registry` repository, and launch the docker compose script as described in https://github.com/NASA-PDS/registry/tree/main/docker
For example, launch:
docker compose --profile int-registry-batch-loader up
The integration tests will be automatically applied. Check the results, update/complete them as necessary
## Tests
**Important note:** As a developer you are asked to complete the postman test suite according to the new feature you are developing. Do a pull request in the `registry` project to submit the updates.
Integration test are maintained in postman.
### Edit/Run of the integration tests in postman GUI
Install the postman desktop, from https://www.postman.com/downloads/
Download and open the test suite found in https://github.com/NASA-PDS/registry/tree/main/docker/postman
### Run the integration tests in command line
In the `registry` project.
Launch the test in command line:
npm install newman
newman run docker/postman/postman_collection.json --env-var baseUrl=http://localhost:8080