Main api of the conditor-project
- Installation
- Running the API
- Querying the API
- Access rights
- Token Management
- Human validations
- API Documentation
The API's goal is to expose deduplicated bibliographical records of "conditor platform".
In order to be fully-functionnal, the API must be able to connect a Conditor Elasticsearch cluster.
This API is coded in NodeJS with ExpressJS framework.
It can be run by different ways :
- Basically, with the
node
CLI - Using forever, via the
npm run start-forever
command - With docker, via the
make run-prod
command
Logs are managed with morgan, and written in the $LOG_PATH/conditor-api.log
file
- Node v8+ / NPM5+ (tested with node 8.9.4)
- docker & docker-compose for Docker deployment
git clone https://github.com/conditor-project/api.git
cd api
make install # copy postgresql.conf.dist to postgresql.conf
For native node start or forever start :
npm install
For docker usage
make build
Before launchig the following commands, you MUST set LOG_PATH
, CONDITOR_ES_HOSTS
and RECORD_INDEX
environments variables. For example :
export LOG_PATH="$HOME/var/log"
export CONDITOR_ES_HOSTS="localhost:9200"
export RECORD_INDEX="records"
You can also set other optional environment variables...
export CONDITOR_API_HOST="0.0.0.0"
export CONDITOR_API_PORT="63332"
export REVERSE_PROXY="~"
export JWT_KEY="Secret phrase for generating tokens"
export NODE_ENV="development|production"
... and other variables for PostGres and PGadmin
export PG_HOST="localhost"
export PG_PORT="5432"
export PG_USERNAME="conditor"
export PG_PASSWORD="conditor"
export PG_DATABASE="conditor"
export PG_DATADIR="./pgdata"
export PGADMIN_DEFAULT_EMAIL="[email protected]"
export PGADMIN_DEFAULT_PASSWORD="pgadminpwd"
export PGADMIN_PORT="5432"
For native node start or forever start :
npm run start-forever
For development purpose
npm run dev
For docker deployment in production environment
make run-prod
For docker deployment in development/debugging environment
make run-debug
You can of course simultaneously set environment variables and start the API :
LOG_PATH="$HOME/var/log" \
CONDITOR_ES_HOSTS="localhost:9200" \
make run-prod
The official, production version, of the Conditor API, is available at https://api.conditor.fr
All available URLs are listed and descripted on this page.
Access is restricted to authenticated and authorized users. Authentication is provided via a JWT token.
There are 2 ways to use your JWT token :
- Directly in your URL, via the
access_token
parameter (not very convenient) - In the header of your HTTP request:
Authorization: Bearer <token>
To obtain a token, contact the Conditor team, they will give you a 31 days valid one
Currently, 3 commands can help you for managing tokens :
List all avalaible JWT tokens, with validity ranges.
$ npm run list-registry
Script available at ./bin/list-registry.js
Generate a new JWT token, valid during 31 days (default value)
$ npm run generate-token -- --help
Usage: generate-token [options]
Options:
-V, --version output the version number
-s, --subject <sub> Set subject field on jwt token. Must be an email address
-e, --expiresin <days> Set expiresIn length in days. Must be an integer[1-90]
-h, --help output usage information
Example, generate a token for John DOE valid during 15 days :
$ npm run generate-token -- -s [email protected] -e 15
> [email protected] generate-token /home/rmeja/Dev/conditor/api
> node ./bin/generate-token.js "-s" "[email protected]" "-e" "15"
Jwt token generated
{
token: 'eyJhbG***********************************-vT_Q',
creation: '2019-12-16 10:00:00',
expiration: '2019-12-31 10:00:00',
subject: 'mailto:[email protected]',
jwtid: 'v********O-5********8'
}
Script available at ./bin/generate-token.js
npm run cleanup-registry
Script available at ./bin/cleanup-registry.js
Replay human validations stored in Postgres
$ npm run replay-human-validation
Script available at ./bin/replay-human-validation.js