Newer
Older
web-services / mapping-tools / README.md
# mapping-tools

Ces services permettent de remplacer des valeurs selon une table de correspondance.

Toutes les tables de correspondance sont gérées par le service APIL, et sont
donc hébergées sur une de leurs machines.

Chaque service web de cette instance commence donc par aller chercher la table
dont il a besoin via HTTP.

## Configuration

Il faut préciser dans le fichier de configuration de l'instance qu'elle utilise
les paquets node:

- `@ezs/basics`
- `@ezs/analytics`

```json
{
    "packages": [
        "@ezs/core@2.1.2",
        "@ezs/analytics@2.0.4",
        "@ezs/basics@1.22.4"
    ]
}
```

Il est impératif d'ajouter, dans la partie `environment` de la configuration,
une variable `TABLE_SERVER_URL` pointant vers la racine du serveur statique des
tables de correspondances.

Par défaut, elle vaut `https://inist-wsdata.dboard.inist.fr/`, qui n'est qu'une
machine d'essai, dont la pérennité n'est pas garantie.

```json
{
  "environnement": {
    "EZS_TITLE": "Mapping tools",
    "EZS_DESCRIPTION": "Outils de mise en correspondance",
    ...
    "TABLE_SERVER_URL": "http://mapping-tables.daf.intra.inist.fr/"
  }
}
```

## Utilisation

- [v1/halAuthorId/idRef/json](#v1/halauthorid/idref/json)
- [v1/homogenize/documentType/json](#v1/homogenize/documenttype/json)
- [v1/homogenize/publisher/json](#v1/homogenize/publisher/json)
- [v1/homogenize/source/json](#v1/homogenize/source/json)
- [v1/idRef/orcid/json](#v1/idref/orcid/json)
- [v1/inspire-category/meta-category/json](#v1/inspire-category/meta-category/json)
- [v1/inspire-labos/in2p3-labos/json](#v1/inspire-labos/in2p3-labos/json)
- [v1/rnsr/instituts-cnrs/json](#v1/rnsr/instituts-cnrs/json)

### v1/halAuthorId/idRef/json

Renvoie l'idRef associé au halAuthorId fourni.

Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec l'idRef associé au halAuthorId fourni.

#### Paramètres de v1/halAuthorId/idRef/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple de v1/halAuthorId/idRef/json

Avec le halAuthorId <https://data.archives-ouvertes.fr/author/1458607>.

```bash
curl -X POST "http://mapping-tools.tdmservices.intra.inist.fr/v1/halAuthorId/idRef/json" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[{\"id\":0,\"value\":\"https://data.archives-ouvertes.fr/author/1458607\"}]"
```

Sortie:

```json
[
  {
    "id": 0,
    "value": "http://www.idref.fr/190260483/id"
  }
]
```

### v1/homogenize/documentType/json

Homogénéise le type de document d'une notice.

Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec la forme canonique du type de document.

#### Paramètres de v1/homogenize/documentType/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple de v1/homogenize/documentType/json

Avec la valeur `"ART"`.

```bash
curl -X POST "http://mapping-tools.tdmservices.intra.inist.fr/v1/homogenize/documentType/json" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[{\"id\":0,\"value\":\"ART\"}]"
```

Sortie:

```json
[
  {
    "id": 0,
    "value": "Article"
  }
]
```

### v1/homogenize/publisher/json

Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec la forme canonique de l'éditeur envoyé dans le champ `value`.

#### Paramètres de v1/homogenize/publisher/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple de v1/homogenize/publisher/json

```bash
curl -X POST "https://mapping-tools.services.inist.fr/v1/homogenize/publisher/json" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[{\"id\":0,\"value\":\"Springer Verlag\"}]"
```

Sortie:

```json
[
  {
    "id": 0,
    "value": "SPRINGER"
  }
]
```

### v1/homogenize/source/json

Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec la forme canonique de la source envoyée dans le champ `value`.

#### Paramètres de v1/homogenize/source/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple de v1/homogenize/source/json

```bash
curl -X POST "https://mapping-tools.services.inist.fr/v1/homogenize/source/json" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[{\"id\":0,\"value\":\"« Gilets jaunes » Hypothèses sur un mouvement\"}]"
```

Sortie:

```json
[
  {
    "id": 0,
    "value": "\"GILETS JAUNES\" : HYPOTHESES SUR UN MOUVEMENT"
  }
]
```

### v1/idRef/orcid/json

Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec les ORCID correspondant à l'idRef envoyé dans le champ `value`.

#### Paramètres de v1/idRef/orcid/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple v1/idRef/orcird/json

```bash
curl -X POST "https://mapping-tools.services.inist.fr/v1/idRef/orcid/json" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[{\"id\":0,\"value\":\"http://www.idref.fr/190260483/id\"}]"
```

Sortie:

```json
[{
    "id": 0,
    "value": "https://orcid.org/0000-0003-1301-3305"
}]
```

### v1/inspire-category/meta-category/json

Prend en entrée du JSON avec deux champs: `id` et `value`.  
Le champ `value` doit contenir une catégorie [Inspire](https://inspirehep.net/).  
Renvoie un JSON avec une méta-catégorie [IN2P3](https://www.in2p3.cnrs.fr/) dans
le champ `value`.

> **Remarque**: quand on ne trouve pas de méta-catégorie correspondante, la
> valeur est `n/a` (*not available*)

#### Paramètres de v1/inspire-category/meta-category/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple

```bash
cat <<EOF | curl -X POST --data-binary @- "https://mapping-tools.services.inist.fr/v1/inspire-category/meta-category/json?indent=true"
[{ "id": 1, "value": "Experiment-HEP" }, { "id": 2, "value": "Astrophysics"}]
EOF
```

Sortie

```json
[{
    "id": 1,
    "value": "Particules et hadronique"
},
{
    "id": 2,
    "value": "Astroparticule et cosmologie"
}]
```

### v1/inspire-labos/in2p3-labos/json

Prend en entrée du JSON avec deux champs: `id` et `value`.  
Le champ `value` doit contenir un code institution de la base
[Inspire](https://inspirehep.net/).  
Renvoie un JSON avec un code labo [IN2P3](https://www.in2p3.cnrs.fr/) dans le
champ `value`.

> **Remarque**: quand on ne trouve pas un code labo IN2P3 correspondant, la
> valeur est `n/a` (*not available*)

#### Paramètres de v1/inspire-labos/in2p3-labos/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple

```bash
cat <<EOF | curl -X POST --data-binary @- "https://mapping-tools.services.inist.fr/v1/inspire-labos/in2p3-labos/json?indent=true"
[{ "id": 1, "value": "903453" }, { "id": 2, "value": "910133"}]
EOF
```

Sortie

```json
[{
    "id": 1,
    "value": "GANIL"
},
{
    "id": 2,
    "value": "APC Paris"
}]
```

### v1/rnsr/instituts-cnrs/json

Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec un institut du CNRS dans le champ `value`.

> **Remarque**: quand on ne trouve pas d'institut, la valeur est `n/a` (*not
> available*)

#### Paramètres de v1/rnsr/instituts-cnrs/json

| nom    | description                                                            |
| :----- | :--------------------------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) |

#### Exemple

```bash
cat <<EOF | curl -X POST --data-binary @- "https://mapping-tools.services.inist.fr/v1/rnsr/instituts-cnrs/json?indent=true"
[{ "id": 1, "value": "200919362L" }, { "id": 2, "value": "200112440X"}]
EOF
```

Sortie

```json
[{
    "id": 1,
    "value": "INEE"
},
{
    "id": 2,
    "value": "STIC"
}]
```