# API

L'API eFactori permet à un programme externe d'accéder aux fonctions d'eFactori de manière automatisée. Par exemple, un programme externe peut récupérer des listes de clients, créer de nouveaux clients ou créer des documents de manière sécurisée.&#x20;

Une "API" est une interface technique qui peut être utilisée par une application tierce. Pour appeler l'API, des connaissances techniques sont nécessaires et vous devrez programmer de nouvelles fonctions à partir du programme externe pour appeler l'API.&#x20;

L'API suit l'architecture REST classique. Les informations détaillées de chaque fonction API peuvent être trouvées via le lien swagger suivant : [API Reference](https://app.swaggerhub.com/apis-docs/Infinwebs-BVBA/onfact5-api/v1-oas3)

{% embed url="<https://onfact.stoplight.io/>" %}

## Authentification

#### Authentification API-Key

Le moyen le plus simple d'authentifier le lien est d'utiliser une clé API. Cette méthode est destinée aux liens développés spécifiquement pour une entreprise, par cette entreprise. Si vous développez un lien multi-utilisateurs avec eFactori, vous devez utiliser l'authentification 'oAuth 2.0'.&#x20;

Pour l'authentification par clé API, vous devez ajouter deux en-têtes à chaque demande : l'en-tête `X-SESSION-KEY` et l'en-tête `X-COMPANY-UUID`. Vous pouvez les trouver dans eFactori via le menu supérieur droit "Paramètres personnels".

## Récupérer des factures

<mark style="color:blue;">`GET`</mark> `https://api5.onfact.be/v1/invoices.json`

Obtenez une liste de factures

#### Headers

| Name           | Type   | Description          |
| -------------- | ------ | -------------------- |
| X-COMPANY-UUID | String | UUID de l'entreprise |
| X-SESSION-KEY  | String | API Key              |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Extensions URL

L'API REST décrit les 'resource endpoints' sans extension, celle-ci doit être ajoutée à l'URL. L'extension détermine le format dans lequel les ressources sont affichées. Dans presque tous les cas, vous devrez ajouter l'extension `.json` à l'URL. Pour les documents, vous pouvez également utiliser l'extension `.pdf`, `.html` ou `.xml`.&#x20;

Pour récupérer une facture au format json, vous devrez utiliser la requête suivante :&#x20;

## Récupérer les détails de la facture

<mark style="color:blue;">`GET`</mark> `https://api5.onfact.be/v1/invoices/:id.json`

Obtenez les informations d'une facture

#### Path Parameters

| Name | Type   | Description   |
| ---- | ------ | ------------- |
|      | String | ID de facture |

#### Headers

| Name           | Type   | Description          |
| -------------- | ------ | -------------------- |
| X-SESSION-KEY  | String | API Key              |
| X-COMPANY-UUID | String | UUID de l'entreprise |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Fonctions spéciales

Pour simplifier l'utilisation de l'API, certaines fonctions spéciales sont intégrées lors de la création de documents. Lors de la création d'un document, vous pouvez immédiatement ajouter une action afin qu'eFactori lie le document créé à un enregistrement client ou crée un nouvel enregistrement client s'il n'en existe pas. Pour ce faire, vous ajoutez le header `X-ACTIONS` avec la valeur `FIND-OR-CREATE-CUSTOMER`.&#x20;

Les valeurs possibles sont :&#x20;

* `CREATE-CUSTOMER`
* `FIND-OR-CREATE-CUSTOMER`
* `UPDATE-CUSTOMER`
* `FIND-PRODUCTS`
* `USE-FIRST-DESCRIPTION`
* `USE-FIRST-TOPTEXT-DESCRIPTION`

Plusieurs actions peuvent être combinées en les séparant par une virgule.

## Créer une facture

<mark style="color:green;">`POST`</mark> `https://api5.onfact.be/v1/invoices/:id.json`

#### Path Parameters

| Name | Type   | Description |
| ---- | ------ | ----------- |
|      | String | ID Facture  |

#### Headers

| Name           | Type   | Description             |
| -------------- | ------ | ----------------------- |
| X-ACTIONS      | String | FIND-OR-CREATE-CUSTOMER |
| X-SESSION-KEY  | String | API Key                 |
| X-COMPANY-UUID | String | UUID de l'entreprise    |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://efactori.gitbook.io/efactori.be-fr/af/api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
