# Overview

## Débuter avec l'API ITCare ? <a href="#apiitcare-gettingstartedwiththeitcare-api" id="apiitcare-gettingstartedwiththeitcare-api"></a>

L'API REST ITCare respecte les spécifications standard OpenAPI.\
La documentation en ligne est disponible à cette adresse : [https://api.cegedim.cloud/](https://api.cegedim.cloud/itcare-console/swagger-ui/index.html)

Exemple:

<pre class="language-bash" data-title="Récupérer le statut de ITCare"><code class="lang-bash"><strong>curl -X GET "https://api.cegedim.cloud/itcare/health"
</strong></code></pre>

## Structure de l'API ITCare <a href="#apiitcare-philosiphy" id="apiitcare-philosiphy"></a>

Chaque ressource appartient à une hiérarchie qui contient : Catégorie, Type, Famille. Une vue d'ensemble de la catégorisation est décrite comme suit :

| Categorie          | Type          | Famille |
| ------------------ | ------------- | ------- |
| Application server | Tomcat        |         |
|                    | Wildfly       |         |
| Container          | Kubernetes    |         |
| Instance           | Linux         | CentOS  |
|                    |               | Debian  |
|                    |               | Oracle  |
|                    |               | RHEL    |
|                    |               | Ubuntu  |
|                    | Windows       |         |
|                    | Unix          |         |
| Load balancer      | Load Balancer |         |
| Managed database   | MariaDB       |         |
|                    | OpenSearch    |         |
|                    | PostgreSQL    |         |
|                    | Redis         |         |
|                    | SQL Server    |         |
| Message broker     | Apache Kafka  |         |
|                    | RabbitMQ      |         |
| Storage            | GlusterFS     |         |

Lors de l'obtention d'une ressource, un attribut nommé `path` est disponible dans la sortie pour informer sur la catégorie-famille-type à parcourir afin d'obtenir des détails sur la ressource.

Le point d'entrée de l'API pourrait être le endpoint : `/compute/resources`. Il peut être utilisé pour explorer les informations de base et naviguer vers la catégorie appropriée pour obtenir les détails.

## Quel format de date / temps est utilisé par l'API ? <a href="#apiitcare-quelformatdedate-tempsestutiliseparlapi" id="apiitcare-quelformatdedate-tempsestutiliseparlapi"></a>

JSON ne supporte pas nativement le format Date/Time.\
Tous les paramètres tagués en tant que Date par l'API sont donc des string au format ISO8601.

```
YYYY-MM-DDTHH:MM:SS.sssZ
```

Z correspond à la timezone : +0200 par exemple.

```
2016-06-01T12:27:19.000+0200
```

Pour les requêtes GET, ne pas oublier d'URL-Encoder ces paramètres.

## Puis-je lancer des actions à blanc via l'API ? <a href="#apiitcare-puis-jelancerdesactionsablancvialapi" id="apiitcare-puis-jelancerdesactionsablancvialapi"></a>

Certaines méthodes autorisent le test des appels API sans que cela ne déclenche réellement l'action dans ITCare.\
La validation s'effectue cependant.\
Pour activer le mode Dry Run, il suffit d'ajouter un header personnalisé dans vos requêtes HTTP :

```
ITCare-DryRun: true
```

Une fois que le serveur traitera votre requête, le même header personnalisé sera inclus dans la réponse.

## Comment fonctionnent les actions asynchrones ? <a href="#apiitcare-commentfonctionnentlesactionsasynchrones" id="apiitcare-commentfonctionnentlesactionsasynchrones"></a>

Certaines méthodes sont asynchrones et nécessitent un délai après leur invocation.\
Cela s'applique à des longues transactions telles que l'administration des ressources ou l'envoi de rapports.\
Les méthodes qui fonctionnent de manière asynchrone répondront :

* un code retour HTTP 202
* un corps contenant un ID de suivi de l'opération asynchrone en cours

Voici un exemple de code en Python qui explique le fonctionnement asynchrone :

{% code overflow="wrap" %}

```</div>

Les statuts des actions peuvent être :

* IN\_PROGRESS
* SUCCESS
* ERROR
```

{% endcode %}
