Skip to content

conditor-project/api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

62bf866 · May 27, 2021
Mar 11, 2019
Feb 21, 2020
Dec 19, 2019
May 21, 2021
May 14, 2019
May 27, 2021
Nov 13, 2019
Nov 13, 2019
Jan 31, 2018
Aug 18, 2020
Dec 19, 2019
May 6, 2019
Jan 26, 2018
Sep 12, 2019
May 14, 2019
Jan 29, 2019
Sep 30, 2019
May 6, 2019
Jan 31, 2018
Jan 31, 2018
Jun 3, 2019
May 21, 2021
Sep 12, 2019
Dec 3, 2020
Dec 3, 2020
May 12, 2020
Dec 3, 2020
Jun 3, 2019

Repository files navigation

DockerHub Badge

Build Status

Conditor api

Main api of the conditor-project

Description

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.

Under the hood

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

Prerequisites

  • Node v8+ / NPM5+ (tested with node 8.9.4)
  • docker & docker-compose for Docker deployment

Installation

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

Running the API

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

Querying the API

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 rights

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

Token Management

Currently, 3 commands can help you for managing tokens :

  • list all tokens

List all avalaible JWT tokens, with validity ranges.

$ npm run list-registry

Script available at ./bin/list-registry.js

  • generate a new token

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

  • cleanup all tokens

npm run cleanup-registry

Script available at ./bin/cleanup-registry.js

Human validations script

Replay human validations stored in Postgres

$ npm run replay-human-validation

Script available at ./bin/replay-human-validation.js

API Documentation

About

🌍 🚀 Main api of the conditor-project

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages