Accéder à Pilario via l'API (EBS)

Cet article explique comment accéder à Pilario via l'API pour le modèle EBS

Premières étapes

Pour accéder à Pilario via l'API, l'utilisateur doit choisir et configurer l'un des deux systèmes d'identification disponibles :

  • Via des clés individuelles et privées 
  • En utilisant un système de jeton à durée de vie courte

Veuillez configurer l'un des deux accès en suivant les sous-sections ci-dessous.

Génération d'une clé API

  1. Connectez-vous à Pilario en fournissant vos identifiants habituels.
  2. Dans le menu de gauche, allez dans Paramètres – Clés API – Ajouter une nouvelle clé API.
  3. Vous pouvez donner un nom et une description à votre clé d'identification API spécifique.

  4. Trois niveaux d'accès différents peuvent être créés :

    • Visionneur (lecture seule)
    • Éditeur (lecture et écriture)
    • Administrateur (lecture, écriture et suppression).

    Cela accorde les droits de création, d'édition, de suppression et de lecture de vos produits pour tous les appels avec la nouvelle clé API.

  5. Cliquez sur enregistrer
  6. Votre clé API unique sera automatiquement créée, vous pouvez la copier pour l'intégrer dans vos appels API.

Veuillez contacter notre équipe d'assistance si cette section des paramètres API n'est pas accessible à votre profil utilisateur.

Utilisation d'un token

Cette option sera bientôt disponible.

Récupérer des informations sur le modèle LCA.

Utilisez l'API GET comme décrit dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/product-models

Par exemple:

curl -X 'GET' \
  'https://api.pilario.com/v1/product-models/packaging' \
  -H 'accept: application/json' \
-H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxxx'

Le serveur répondra avec ce qui suit (raccourci pour la lisibilité) :

{
  "key": "packaging",
  "name": "Packaging",
  "type": "PRODUCTS",
  "inputs": [
    {
      "name": "pack_rawmat_l2comp_weight_tot",
      "type": "REAL",
      "readOnly": true,
      "computedField": true,
      "label": "Component weight"
    }
  ],
  "sections": [
    {
      "key": "155501a6-4d14-4edb-96a3-2fe5177b77b0",
      "name": "composition",
      "inputs": [
        {
          "name": "general_volume",
          "type": "REAL",
          "unit": "l",
          "minValue": 0,
          "minInclusive": true,
          "maxInclusive": true,
          "readOnly": false,
          "computedField": false,
          "label": "Product volume",
          "defaultValue": 1
      },
...
        {
          "name": "pack_rawmat_custom_weight",
          "type": "REAL",
          "unit": "g",
          "minValue": 0,
          "minInclusive": true,
          "maxInclusive": true,
          "readOnly": false,
          "computedField": false,
          "label": "Material weight",
          "defaultValue": 0
        }
      ]
    }
  ]
}

La réponse de l'API fournit :

  • La liste des paramètres utilisés, y compris, parmi d'autres paramètres :
    • Le niveau d'utilisation dans l'interface (niveau 0, 1 ou 2)
    • Le nom technique du paramètre
    • La traduction en anglais du paramètre tel qu'il apparaît dans l'interface utilisateur
  • La liste des valeurs possibles pour les paramètres SELECT, y compris :
    • Le nom technique de la valeur possible
    • La traduction en anglais de la valeur possible telle qu'elle apparaît dans l'interface utilisateur

Lors de la demande d'informations sur le modèle LCA, une clé spécifique doit être fournie conformément au tableau suivant. Pour le modèle EBS, la clé est ebs.

Récupérer des informations sur vos produits, scénarios, etc.

Utilisez l'API POST comme décrit dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/assets

Pilario utilise un système de requête à inclure dans la demande pour filtrer la réponse de l'API à certains produits seulement. Il existe deux façons d'utiliser le système de filtrage par requête :

  • Créer une requête grâce au générateur de requêtes dans l'interface utilisateur de Pilario, la sauvegarder et utiliser la clé de requête dans l'élément “queryKey” de votre demande.   
    Cela peut être utilisé pour des appels d'API filtrés réutilisables.
  • Saisir votre propre requête dans l'appel API au sein de l'élément “text” de votre demande.
    Cela doit être utilisé pour des appels d'API paramétrés individuellement.

Création d'une requête enregistrée

Connectez-vous d'abord à la plateforme Pilario comme d'habitude.

  1. Dans le menu de gauche, allez dans Paramètres – Requêtes enregistrées – Ajouter une requête.
  2. Donnez un nom à votre requête. 
  3. Utilisez le champ de recherche ou le bouton Filtres. 
  4. Choisissez le paramètre sur lequel vous souhaitez filtrer. 
  5. Indiquez la valeur selon laquelle les produits doivent être filtrés. 
  6. Cliquez sur le bouton enregistrer.

Veuillez contacter notre équipe d'assistance si cette section des paramètres API n'est pas accessible à votre profil utilisateur.

Saisie de votre propre requête

La nomenclature suit la même structure que celle utilisée dans l'interface utilisateur du système de filtrage de la table des produits. Vous pouvez effectuer quelques tests dans l'interface utilisateur et vérifier la console du navigateur pour récupérer la requête.

Voici quelques exemples de requêtes qui peuvent être utilisées.

Récupérer tout PRODUIT avec un External Id spécifique

curl -X 'POST' \
  'https://api.pilario.com/v1/assets/search?type=PRODUCT' \
  -H 'accept: application/json' \
-H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
 "text": "{ \"externalId\": \"1322132131\" }"
}'

Le serveur répondra avec tout produit ayant comme externalId la valeur “1322132131”, comme indiqué ci-dessous :

{
    "text": "{ \"externalId\": \"1322132131\"}",
    "page": 0,
    "pageSize": 10,
    "count": 1,
    "data": [
        {
            "id": "3f6e0105-20a1-461f-95ac-77b2475c8f2c",
            "name": "Soda",
            "images": [],
            "type": "PRODUCT",
            "labels": [],
            "computedAttributesStatus": "VALID",
          "updatedBy": "user@pilario.com",
          "createdBy": "user@pilario.com",
            "status": "DRAFT",
            "visibility": "HIDDEN",
            "attributes": {
                "prod_functional_unit": 1.5,
                "filling_volume_in": 1.02,
                "transp_transported_weight": 1530,
                "prod_use_stage_loss": 2,
                "product_volume": 1.5
            },
            "computedAttributes": {
                "prod_functional_unit": 1.5,
                "filling_volume_in": 1.02,
                "transp_transported_weight": 1530
            },
            "createdAt": "2024-07-03T13:48:59.037Z",
            "updatedAt": "2024-07-03T15:09:00.139Z",
            "externalId": "1322132131",
...

 

Récupérer tout PRODUIT correspondant à une condition d'attribut spécifique.

curl -X 'POST' \
  'https://api.pilario.com/v1/assets/  -H 'accept: application/json' \
  -H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "text": "{\"attributes.product_volume\":{\"$gt\":1}}"
}'search?type=PRODUCT' \

Cela fournira une réponse avec tous les produits ayant un volume de produit supérieur à 1 l. Dans ce cas, nous pouvons voir comment Pilario renvoie deux produits trouvés sous cette condition.

{
    "text": "{\"attributes.product_volume\":{\"$gt\":1}}",
    "page": 0,
    "pageSize": 10,
    "count": 2,
    "data": [
        {
            "id": "3f6e0105-20a1-461f-95ac-77b2475c8f2c",
            "name": "Soda",
            "images": [],
            "type": "PRODUCT",
            "labels": [],
            "computedAttributesStatus": "VALID",
            "updatedBy": "user@pilario.com",
            "createdBy": "user@pilario.com",
            "status": "DRAFT",
            "visibility": "HIDDEN",
            "attributes": {
                "prod_functional_unit": 1.5,
                "filling_volume_in": 1.02,
                "transp_transported_weight": 1530,
                "prod_use_stage_loss": 2,
                "product_volume": 1.5
            },
            "computedAttributes": {
                "prod_functional_unit": 1.5,
                "filling_volume_in": 1.02,
                "transp_transported_weight": 1530
            },
            "createdAt": "2024-07-03T13:48:59.037Z",
            "updatedAt": "2024-07-03T15:09:00.139Z",
            "externalId": "1322132131",
            "productModelKey": "pefcr-soda",
...

Veuillez noter que les attributs dépendent du modèle, il est donc nécessaire de connaître l'attribut que vous interrogez. Pour obtenir une liste de tous les attributs disponibles, vous pouvez effectuer une requête sur le modèle LCA comme décrit dans la section précédente.

Fetch a product using the Pilario UUID

Utilisez l'API GET décrite dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/assets/GetAsset

Ce endpoint permet à l'utilisateur d'obtenir toutes les données disponibles pour un seul actif (produit, scénario, etc.) en utilisant son identifiant unique dans la base de données Pilario.

Remarque : l'identifiant unique Pilario UUID est automatiquement généré chaque fois qu'un actif est créé dans la base de données Pilario (que ce soit par une création manuelle dans l'interface utilisateur, par une importation manuelle en masse ou par un appel de création d'API).

Par exemple:

curl -X 'GET' \
  'https://api.pilario.com/v1/assets/4a05193a-1e44-4c78-aad8-4f4b9f49b417' \
  -H 'accept: application/json' \
-H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxx'

Le serveur répondra avec l'actif unique :

{
  "id": "4a05193a-1e44-4c78-aad8-4f4b9f49b417",
  "name": "Plastic bottle",
  "images": [],
  "type": "PRODUCT",
  "labels": [
    "PEFCR Water",
    "Example"
  ],
  "computedAttributesStatus": "QUEUED",
  "updatedBy": "user@pilario.com",
  "createdBy": "user@pilario.com",
  "status": "DRAFT",
  "visibility": "HIDDEN",
  "attributes": {
    "general_weight": 1000,
    "pack_petprod_weight": 300,
    "pack_tot_weight": 699,
    "filling_pack_in": 1,
    "pack_functional_unit": 1
  },
  "computedAttributes": {
    "general_weight": 1000,
    "pack_petprod_weight": 300,
    "pack_tot_weight": 699,
    "filling_pack_in": 1
  },
  "createdAt": "2024-07-03T11:26:48.407Z",
...

Creer un nouveau produit

Utilisez l'API POST décrite dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/assets/AddAsset

Cela permet à l'utilisateur de l'API de créer un nouveau produit dans la base de données Pilario. La structure, les noms des paramètres et les valeurs possibles doivent être alignés avec les informations fournies en réponse à l'appel de l'API getProductModel.

Par example:

curl -X 'POST' \
  'https://api.pilario.com/v1/assets' \
  -H 'accept: application/json' \
-H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "type": "PRODUCT",
  "name": "Another API created product",
  "description": "This product was created via an API POST call",
  "externalId": "APIproduct001",
  "attributes": {
    "product_volume": 2
  },
  "productModelKey": "pefcr-soda",
  "labels": [
    "API"
  ],
 "assets": []
}'

La réponse fournit l'identifiant unique Pilario utilisé pour le nouveau produit. Cette information doit être conservée afin d'utiliser l'API GetAssets (pour récupérer des informations sur un produit existant) ou l'API UpdateAsset (pour mettre à jour certaines informations sur un produit existant).

{
  "id": "b39c33b6-2a36-4ae1-92b2-aaad62b1e377",
  "externalId": "APIproduct001",
  "name": "Another API created product",
  "description": "This product was created via an API POST call",
  "images": [],
  "type": "PRODUCT",
  "labels": [
    "API"
  ],
  "attributes": {
    "product_volume": 2
  },
  "computedAttributes": {},
  "computedAttributesStatus": "EXPIRED",
  "createdBy": "api",
  "status": "DRAFT",
  "visibility": "HIDDEN",
  "createdAt": "2024-10-22T14:33:39.831Z",
  "updatedAt": "2024-10-22T14:33:39.831Z",
  "productModelKey": "pefcr-soda",
  "assets": [],
  "results": {
    "total": {},
    "ingredients": {},
    "packaging": {},
    "supply": {},
    "manufacturing": {},
    "distribution": {},
    "storage": {},
    "usage": {},
    "collect": {},
    "end_of_life": {}
  },
  "groups": {
    "total": {}
  }
}

Nous pouvons également voir le succès dans la capture d'écran suivante.

Mettre à jour un produit existant

Utilisez l'API PATCH décrite dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/assets/UpdateAsset

Cela permet à l'utilisateur de l'API de modifier des actifs existants dans la base de données Pilario. La structure, les noms des paramètres et les valeurs possibles doivent être alignés avec les informations fournies en réponse à l'appel de l'API getProductModel.

Par example:

curl -X 'PATCH' \
  'https://api.pilario.com/v1/assets/b39c33b6-2a36-4ae1-92b2-aaad62b1e377' \
  -H 'accept: application/json' \
  -H 'apiKey: 88edf5a6-0a49-4b90-8135-4a689f7c77dc' \
  -H 'Content-Type: application/json' \
  -d '{
"id": "b39c33b6-2a36-4ae1-92b2-xxxxxx",
  "name": "Another API created product",
  "description": "This product was modified via an API POST call",
  "type": "PRODUCT",
  "productModelKey": "pefcr-soda",
  "assets": []
}'

La réponse fournit toutes les informations sur l'actif.

{
  "id": "b39c33b6-2a36-4ae1-92b2-aaad62b1e377",
  "externalId": "APIproduct001",
  "name": "Another API created product",
  "description": "This product was modified via an API POST call",
  "images": [],
  "type": "PRODUCT",
  "labels": [
    "API"
  ],
  "attributes": {
    "product_volume": 2
  },
  "computedAttributes": {},
  "computedAttributesStatus": "EXPIRED",
...

Publier un produit

Utilisez l'API POST décrite dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/assets/PublishAsset

Cela permet à l'utilisateur de publier un produit.

Par exemple :

curl -X 'POST' \
  'https://api.pilario.com/v1/assets/13f6abfd-dcb0-49b9-94b5-f784175dac36/publish' \
  -H 'accept: */*' \
-H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxxxxxx' \
  -d ''

Le serveur répondra par un simple 200 en cas de succès. Ou par une erreur, si le produit est déjà publié :

{
  "timestamp": "2024-10-23T07:40:23.324Z",
  "message": "Asset has already been published.",
  "eventId": "a34d8841-e02d-4d0d-a9dc-0ee4e829fcd5"
}

Supprimer un produit

Utilisez l'API DELETE décrite dans la documentation Swagger :

https://api.pilario.com/v1/docs/customers/home#/assets/DeleteAsset

Par example:

curl -X 'DELETE' \
  'https://api.pilario.com/v1/assets/13f6abfd-dcb0-49b9-94b5-f784175dac36' \
  -H 'accept: */*' \
-H 'apiKey: 88edf5a6-0a49-4b90-8135-xxxxxx'

Le serveur répondra par un simple 200 en cas de succès.