Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 138 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Français

Loading...

ITCare

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

ITCare API

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Services

Loading...

Loading...

Loading...

Loading...

Analytique

Loading...

Loading...

Loading...

Calcul

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Bases de données

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Documentation

Bienvenue dans la documentation publique de cegedim.cloud, un partenaire de confiance pour l'hébergement de clouds privés !

Débuter avec cegedim.cloud

Apprenez les principes fondamentaux et commencez à construire avec cegedim.cloud. Trouvez le produit qui répond à vos besoins pour vous aider à lancer votre prochaine application et maitrisez ITCare, la plateforme de gestion cloud de cegedim.cloud.

Cover

Produits

Retrouvez la liste complète des produits disponibles dans notre catalogue avec leurs caractéristiques, les guides d'utilisation, les tutoriels et plus encore.

Cover

Plateforme de gestion cloud

ITCare est la pierre angulaire de nos services et permet à nos clients de disposer de produits managés et interactifs en libre-service.

Cover

Notes de mises à jour

Parcourez nos notes de mises à jour avec nos nouveaux produits, les nouvelles fonctionnalités, les améliorations et les corrections de bugs.

Pagination

Certaines méthodes renvoient des résultats paginés. Le formatage d'un résultat paginé presente la structure suivante :

{
    "content": [
        ...
    ],
    "totalElements": ...,
    "last": false,
    "totalPages": ...,
    "sort": {
        "empty": true,
        "sorted": false,
        "unsorted": true
    },
    "first": true,
    "size": ...,
    "number": ...,
    "numberOfElements": ...,
    "empty": false
}

Les valeurs page et size peuvent être ajoutées aux paramètres de la requête afin d'obtenir la page suivante ou précédente.

Example

Pour obtenir les 50 premiers éléments d'une requête GET pour un endpoint paginé : https://api.cegedim.cloud/foo/bar?page=1&size=50

Analytics

Compute

Databases

MariaDB - Didacticiels

Demander un replica MariaDB en lecture seule

Pour demander l'ajout d'une réplique en lecture seule de MariaDB, il est nécessaire de créer un ticket requête via ITCare.

Dans la section Support du menu latéral gauche, cliquer sur le bouton Formuler une demande.

Dans la catégorie Base de données puis MariaDB, sélectionner et remplir le formulaire : Mise en place d'une réplication passive MariaDB

Un ticket d'assistance sera créé à la soumission.

Veuillez prévoir jusqu'à 10 jours ouvrables pour le traitement de votre demande.

Reference API

Messaging

Operations

Storage

Topology

Backup Policies

Environments

Instances

Platform

OpenSearch

Redis

Domains

Networks

Operations

Overdrive

Matomo

Changes

Resource Types

Resources

Services

Databases

MariaDB

SQL Server

RabbitMQ

Topology

PostgreSQL

Enercare

cegedim.cloud fournit dans ITCare une rubrique dédiée à son empreinte carbone.

Cette rubrique permet d'identifier l'impact environnemental des applications de façon détaillée, en affichant à la fois l'émission de CO2 des Services Globaux ainsi que celle des instances associées.

Le calcul de l'empreinte carbone fait partie intégrante du projet Enercare, en se basant sur la répartition de la consommation énergétique des services. Elle prend en compte les équipements IT (serveurs, baies de stockage, réseaux ...) mais également tous les éléments nécessaires à leur bon fonctionnement (climatisation, groupes électrogènes, onduleurs ...). Ces derniers sont associés à l'indicateur de performance énergétique par datacenters calculé par le Power Usage Effectiveness (PUE).

Le périmètre inclut les Datacenters propres à Cegedim ainsi que ceux en colocation.

Principe

cegedim.cloud a travaillé sur des outils internes et une méthodologie pour répartir les consommations des services utilisant des instances mutualisées. Etant en démarche d’amélioration continue, elle sera amenée à évoluer avec la fiabilisation et la précision des données remontées.

Le calcul de l’empreinte carbone de nos services cloud suit les règles du GHG Protocol . Nous incluons les éléments suivants dans la fonctionnalité Enercare :

  • Les émissions directes du scope 1 des datacenters : combustions fossiles des groupes électrogènes, émissions fugitives liées aux fluides frigorigènes des systèmes de refroidissement.

  • Les émissions indirectes du scope 2 : consommation d’électricité des équipements, incluant le PUE.

  • Les émissions indirectes du scope 3 : émissions amont liées aux combustibles et à la production d’électricité, produits et services achetés pour le fonctionnement de nos services, tenant compte de leur fabrication à leur fin de vie, déplacements des collaborateurs.

Les données retranscrites dans Enercare correspondent aux activités de cegedim.cloud, indépendamment de celles des autres filiales et du groupe Cegedim. Le bilan carbone étant réalisé et audité annuellement, nous ne pouvons pas corréler en temps réel les coefficients de calcul à l’utilisation des services.

La section Règles de Calcul ci-dessous explicite la collecte de la consommation énergétique des équipements physiques et la méthode de calcul de l'empreinte carbone pour les services et instances.

Pour en savoir plus sur les actions de diminution de l’impact environnemental entreprises par cegedim.cloud, vous pouvez consulter la page RSE de notre site internet.

Démarrage rapide

Vous pouvez explorer les spécifications de l'API et utiliser la fonctionnalité Test it afin d'exécuter et de tester les points de terminaison.

Deux types d'authentifications sont disponibles : Bearer ou Oauth.

Lorsque vous utilisez l'option Test it en Oauth, veuillez :

  • Sélectionner les scopes : openid et email

  • Saisir le clientId : cgdm-itcare-api-academy.

Pour utiliser l'option Bearer, veuiller consulter la section Authentication.

Notes :

  • Les paramètres Cookies, Headers sont optionels.

  • L'affichage de la fenêtre suite au clique sur Test it peut prendre quelques secondes.

Changes

Linux - Renforcement

Les distributions Linux suivantes peuvent être durcies lors de leur provisionnement :

  • Debian à partir de la version 11 et 12

  • Ubuntu à partir de la version 22.04 et 24.04

  • Oracle Linux à partir de la version 9

Les recommandations des documents de référence du CIS ont été suivies afin de renforcer et sécuriser nos systèmes d'exploitation Linux.

Systèmes de fichiers

  • Certains systèmes de fichiers faibles sont désactivés dans le noyau

  • Points de montage séparés pour les systèmes de fichiers très actifs : /var/log, /var/log/audit, /var/tmp

  • Protection des points de montage /var/log, /tmp et /var/tmp

  • Désactivation du stockage amovible

Démarrage sécurisé

  • S'assurer que le mot de passe root est requis pour démarrer en mode de secours

Utilisation de Sudo

  • Traçage de chaque utilisation de la commande sudo

Durcissement des processus

  • Plusieurs paramètres sont activés dans le noyau pour protéger les processus en cours d'exécution

Réseau

  • Les services réseau inutiles ou faibles sont désactivés (appliqué par le gestionnaire de configuration)

  • Le service de gestion du temps est configuré et actif

  • IPV6 est désactivé

  • Plusieurs paramètres du noyau sont définis pour protéger le réseau

  • Désactiver les protocoles réseau peu courants

Journalisation

  • Centralisation des journaux du système

  • S'assurer que chaque événement est enregistré

Accès et authentification

  • S'assurer que le service cron est actif et configuré

  • S'assurer que les répertoires cron sont protégés

  • S'assurer que ssh est actif et configuré

  • Forcer les protocoles et paramètres sécurisés de ssh

  • S'assurer de la désactivation des sessions inactives

  • S'assurer que les règles de mot de passe fort sont appliquées

  • S'assurer que les fichiers d'authentification sensibles sont protégés

Networking

Hardwares

Politique de patch

Comment cegedim.cloud gère le patching des serveurs ?

Qu'est-ce qu'une Patch Party ?

cegedim.cloud s'assure que tous les serveurs sont patchés lors d'événements appelés Patch Party. Ces événements ont lieu tous les trimestres un dimanche, soit 4 fois par an.

Lors d'une Patch Party, les patchs sont installés sur tous les serveurs non exclus de l'événement puis suivis d'un redémarrage.

Les services seront interrompus pendant une Patch Party !

Quel est le calendrier ?

Les Patch Parties ont lieu tous les trimestres, soit 4 fois par an. Deux Patch Parties sont programmées chaque trimestre :

  • Patch Party de QA : elle a lieu en premier pendant les heures ouvrées, le jeudi, et ne concerne que les environnements de non-production.

  • Patch Party de Production : elle a lieu 3 semaines après la Patch Party de QA, le dimanche, et ne s'applique qu'aux environnements de production.

Les événements Patch Party sont disponibles dans le calendrier de notre outil de gestion de plateforme cloud ITCare.

Que puis-je faire ?

Consulter les informations sur les correctifs

Sur chaque page de détails d'une ressource, un panneau intitulé Patch status vous permet de consulter les informations suivantes :

  • La dernière fois que la ressource a été mise à jour avec succès

    • Le timestamp de la mise à jour

    • Le tag du correctif de la mise à jour avec ce format : YYYY-QQ (par exemple 2022-Q4)

  • La prochaine Patch Party programmée si la ressource n'est pas exclue

  • La personne qui a exclu la ressource et la date si la ressource est exclue

Inclure ou exclure

Sur chaque page de détails d'une ressource, un bouton Patch Party vous permet d'inclure ou d'exclure définitivement la ressource des Patch Party.

L'exclusion d'une ressource doit être motivée par une raison. Inclure vous permet de sélectionner le Patch Group qui affectera le moment où votre ressource sera effectivement mise à jour au cours de la journée de correctifs.

Modifier le groupe de correctifs

Dans le même bouton Patch Party que celui décrit ci-dessus, vous pouvez changer le Patch Group souhaité à tout moment.

3 groupes de patches sont disponibles pour diviser vos ressources. Chaque groupe sera traité à des moments différents.

Ceci est utile si vous ne voulez pas que plusieurs ressources soient patchées (et interrompues) en même temps, améliorant ainsi la résilience de votre application.

Des produits PaaS en topologie cluster auront déjà des assignations de Patch group optimisés pour garantir la disponibilité du cluster pendant les Patch parties.

Démos

Afin de vous aider à appréhender et maitriser chaque aspect de la plateforme ITCare, nous proposons un ensemble de démos interactives spécifiques à des fonctionnalités disponible dans notre Cloud Management Platform.

Ressources

Gérer une ressource

Différentes actions sont possibles pour gérer les ressources sur notre plateforme ITCare. Nous vous les présentons ci-dessous !

Filtres dynamiques

En fonction des ressources sélectionnées dans la fenêtre de filtrage, des filtres dynamiques seront désormais disponibles pour afficher plus efficacement ce qui vous intéresse.

Notifications

Vos notifications sont configurables et personnalisables via des abonnements. Nous vous montrons cela ci-dessous !

Créer un abonnement

La première étape incontournable : créer un abonnement selon vos critères personnalisés.

Gérer les abonnements

Maintenant que vous savez comment créer un abonnement, voyons comment le gérer.

Gérer les groupes de diffusion

Les abonnements tirent partie de groupes de diffusions. Nous vous montrons comment les gérer.

Superviser les notifications

Lorsque vos notifications sont paramétrées, il est essentiel de savoir comment les superviser.

Statuses

Tag Values

ITCare, c'est quoi ?

Qu'est-ce que ITCare ?

ITCare est la plateforme de gestion Cloud de cegedim.cloud.

Elle intègre une interface d'administration web et une API qui offrent une vue à 360° de vos ressources Cloud hébergées et gérées par cegedim.cloud.

Conçue comme un service web unifié, elle régit les points clés suivants :

  • Gestion des ressources Cloud : déployer et administrer vos ressources

  • Supervision : surveiller la santé et la performance de vos applications, être notifié en cas d'incident

  • Support : contactez nos équipes de support pour toute question ou incident

  • Gouvernance : consultez les rapports de sécurité et d'obsolescence, gérez les créneaux de maintenance

  • Intégration : intégrez vos processus d'entreprise à votre cloud via l'API ITCare

Vous pouvez accéder à ITCare à partir de n'importe quelle page de ce site web en utilisant le lien ITCare dans l'en-tête.

Comment puis-je accéder à ITCare ?

La page Débuter avec ITCare explique en détail comment accéder à ITCare, avec des informations sur l'authentification et les autorisations.

ITCare dispose-t-il d'une API ?

Toutes les informations nécessaires à la découverte et à la bonne utilisation de l'API ITCare sont disponibles dans la section ITCare API du menu principal.

Comment joindre le support de cegedim.cloud par téléphone ?

Si vous êtes client, vous pouvez joindre notre Service Desk via cette ligne téléphonique directe pour toute demande de support : +33 (0)1 49 09 22 22

Comment joindre le support de cegedim.cloud par e-mail ?

Pour toute demande d'information ou de contact, vous pouvez utiliser ce formulaire :

Authentication

Comment s'authentifier auprès de l'API ITCare ?

L'API ITCare utilise le protocole OAuth 2.0 pour l'authentification et les autorisations. Elle supporte les scénarios OAuth 2.0 habituels tels que ceux utilisés pour les serveurs web et les applications clientes. Cela signifie que chaque requête API doit contenir un header "Authorization" embarquant un token d'accès précédemment obtenu grâce à des identifiants.

Comment obtenir un compte API ?

Pour interroger l'API ITCare, un compte API est requis afin de pouvoir obtenir le token d'accès obligatoire. Pour obtenir ce compte API, une requête doit être soumise aux équipes support cegedim.cloud en fournissant les informations suivantes :

  • L'organisation cible

  • Une description simple de l'usage cible de l'API

Comment obtenir un token d'accès ?

Pour obtenir un token d'accès, le client doit soumettre une requête au endpoint . Le serveur d'autorisation exige l'authentification (base64-encodé) du client pour délivrer un access_token. Voici un exemple de demande d'access_token :

En général, on peut utiliser la commande base64 pour encoder une chaîne de caractères. L'utilisation d'outils en ligne de commande sous Linux, par exemple :

Si la demande d'access_token est autorisée et valide, voici un exemple de réponse :

Lorsque le token expire, il est possible de :

  • Demander un nouvel access_token

  • Rafraîchir le token en interrogeant le endpoint /token

Politique de support

Comment cegedim.cloud supporte-t-il ses produits managés ?

Politique de support des produits

Les offres managées de cegedim.cloud incluent du support. Ce support se découpe en 4 phases :

  • Phase standard : cegedim.cloud offre un support complet du produit.

  • Phase fin de vente : phase secondaire indiquant qu'une nouvelle version a été élue en phase de support Standard. Il est fortement conseillé d'effectuer une migration vers une version plus récente.

  • Phase support étendu : troisième phase qui débute à la date de fin de vie (EOL) annoncée par l'éditeur pour le produit. Cela signifie que plusieurs services ne sont plus garantis et passent en meilleurs efforts.

  • Phase fin de Support : phase terminale activée quand cegedim.cloud n'est plus en mesure de fournir du support. Des frais peuvent s'appliquer si le système est considéré comme un risque pour la sécurité (violation, compromission des données, nécessité d'isolation).

Voici un listing détaillé des fonctionnalités selon les phases de support :

Description
Standard
Fin de vente
Support étendu
Fin de support

Comment formuler une demande ?

Depuis de notre gestionnaire de plateforme cloud ITCare, vous pouvez créer un ticket de demande d'assistance.

Depuis la page d'accueil ou bien depuis la section Support dans le menu latéral gauche, cliquez sur le bouton Formuler une demande.

Recherchez d'abord le formulaire correspondant au produit pour lequel vous avez besoin d'aide en tapant le nom du produit dans la barre de recherche. Sélectionnez le formulaire et fournissez les informations requises.

Un ticket d'assistance sera créé lors de la soumission.

Veuillez prévoir jusqu'à 7 jours ouvrables pour le traitement de votre demande.

Comment déclarer un incident ?

Les ressources gérées sont surveillées par cegedim.cloud si la surveillance a été activée.

Cependant, un formulaire d'incident est disponible dans notre gestionnaire de plateforme cloud ITCare si vous avez besoin de nous faire part d'un problème que nous aurions manqué.

Depuis la page d'accueil ou la section Support du menu latéral gauche, cliquez sur le bouton Déclarer un incident.

Pour mieux traiter votre incident, un niveau de gravité est requis :

  • Pas d'impact

  • Dégradation

  • Interruption de service

Recherchez le formulaire approprié en recherchant le nom du produit avec lequel vous avez un problème, puis fournissez les informations requises.

Un ticket d'incident sera créé et notre équipe de support vous contactera dès que possible.

Containers

Apache Kafka

Supervision & Support d'incident technique

Requêtes standards

Temps de restauration garantie

Support 24x7 (option)

Sauvegarde, restauration et géo-réplication de données

Reprise d'activité en cas de désastre

Cybersécurité managée

Patches de sécurité et mise à jour mineures trimestrielles

Patches de sécurité critiques et mise à jour

Déploiement via ITCare

curl -X GET "https://itcare.cegedim.cloud/itcare/{api-definition}/{api-endpoint}" -H "Authorization: Bearer {token}"
curl -X POST "https://accounts.cegedim.cloud/auth/realms/cloud/protocol/openid-connect/token" \
-H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials"
$echo -n 'CLIENT_ID:CLIENT_SECRET' | base64
(donne la base64 du couple CLIENT_ID:CLIENT_SECRET)
{
   "access_token":"...",
   "expires_in":1200,
   "refresh_expires_in":7200,
   "refresh_token":"...",
   "token_type":"bearer"
}
curl -X POST "https://accounts.cegedim.cloud/auth/realms/cloud/protocol/openid-connect/token" \
-H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&refresh_token=****************"
/token

Instances virtuelles

Description

L'instance virtuelle est un produit entièrement géré proposé par cegedim.cloud, conçu pour simplifier et améliorer votre expérience d'hébergement. Avec les instances virtuelles, vous n'avez plus à vous soucier de la complexité de la gestion de votre infrastructure d'hébergement - notre équipe d'experts s'occupe de tout.

Notre produit prend en charge une variété de systèmes d'exploitation tels que Linux, Windows et AIX, ce qui vous donne la liberté de choisir l'environnement qui répond le mieux à vos besoins. Il peut être déployé sans effort grâce à notre outil de gestion de plateforme cloud convivial appelé ITCare.

Cet outil vous donne la possibilité de démarrer l'instance souhaitée, de sélectionner le système d'exploitation de votre choix et de personnaliser les ressources pour répondre à vos besoins spécifiques en quelques clics, garantissant ainsi que vos instances sont adaptées aux exigences de votre entreprise.

Nous comprenons l'importance des performances et de la fiabilité, c'est pourquoi les instances virtuelles sont équipées de systèmes de surveillance, de services de sauvegarde et de réplication des données. Cela garantit une visibilité en temps réel de la santé de vos instances et une sécurité accrue.

En résumé, que vous ayez besoin d'un système d'exploitation Linux, Windows ou AIX, et quelles que soient vos exigences en matière de ressources, les instances virtuelles vous offrent la flexibilité et l'évolutivité dont vous avez besoin.

Instances virtuelles en tant que Service

La configuration des ressources peut varier en fonction du système d'exploitation cible.

Instance

Systèmes d'exploitation supportés

  • Linux

  • Windows

  • AIX

CPU (par instance)

2 - 16

RAM (par instance)

4 - 384 Go

Stockage (par instance)

35 - 4096 Go

Surveillance

✅ Option

Surveillance 24x7

✅ Option

Sauvegarde

✅ Option

Réplication de données (PRA)

✅ Option

Disponibilité

99,8%

Choix de la région et de la zone de disponibilité

✅

Libre-service

✅

Pour plus d'information sur les instances virtuelles, vous pouvez consulter https://code.cegedim.cloud/product-management/gitbook/french-documentation/-/blob/main/calcul/instances-virtuelles/instances-virtuelles-architectures.md.

Facturation

La facturation est mensuelle et basée sur le nombre d'instances et les coûts supplémentaires pour le stockage, la sauvegarde, la surveillance 24x7.

L'estimation du coût d'une instance virtuelle est disponible auprès de votre Service Delivery Manager.

Empreinte carbone

Catégories d'équipement et calcul des émissions de CO2

Catégories d'équipement

Un Datacenter utilise trois grandes catégories d'équipement :

  • Les équipements de type Compute (serveurs ESX à base de processeur X86, serveurs IBM à base de processeur Power, etc.), ce sont ces équipements qui hébergent les différentes instances.

  • Les équipements de type Storage (baies de stockage de données, baies de stockage objets, baies de sauvegarde et archivage des données).

  • Les équipements de type Network (switch réseaux, Firewall, BigIP, etc.), qui permettent les échanges de flux internes et externes entre services et instances.

  • NB : Ces trois catégories sont elles-mêmes constituées de sous-catégories permettant de calculer plus finement les répartitions des émissions de CO2 par instance utilisateur. Pour des raisons de simplification, ces sous-catégories ne seront pas prises en compte dans la méthode de calcul explicitée ci-dessous.

Collecte de la consommation énergétique

La consommation énergétique de chaque équipement est collectée chaque minute (puissance instantanée exprimée en Watt) et stockée dans une base de données (base Clef-valeur MIMIR).

En complément, nous collectons les éléments suivants qui permettront de calculer l'émission de CO2 associée :

  • Le PUE (efficacité), calculé quotidiennement sur les Datacenters que nous exploitons, et mensuellement pour les Datacenters en colocation.

  • Les facteurs d'émission de CO2 (en kgCO2e/kWh), dont les valeurs sont actualisées chaque année, sur la base des données ADEME et fournisseurs.

Calcul de l'émission de CO2 des équipements

L'émission de CO2 d'un équipement est calculée à la journée :

  • Transformation de la consommation instantanée en kWh/jour depuis les données collectées dans la base de données Clef-valeur.

  • Application du PUE du Datacenter :

    • Si un équipement consomme 1000 kWh/jour et que le PUE du datacenter est de 1.3, la consommation réelle de l'équipement sera de 1300 kWh.

  • Conversion des kWh/jour en CO2 (kg) avec le facteur d'émission de CO2 du fournisseur :

    • Si 80% de l'énergie du Datacenter provient d'un fournisseur qui émet 0.008 kg de CO2 par kWh et les 20% restant d'un groupe second fournisseur qui émet 0.01 kg de CO2 par kWh, alors l'émission de l'équipement sera de : 1300 * 0.008 * (80 / 100) + 1300 * 0.01 * (20 / 100) , soit 10,92 kg de CO2 par jour.

Calcul de l'émission de CO2 d'un Service Global

Rappel

Un Service Global est le regroupement logique de ressources (principalement des Instances) qui utilisent les ressources des différentes catégories d'équipement physique (Compute, Storage et Network). L'empreinte carbone d'un Service Global sera donc la somme de l'émission de CO2 de ses ressources.

Matomo

Description

Matomo (anciennement appelé Piwik) est un logiciel de mesure open source qui fournit des statistiques de données sur l'utilisation d'une page web, telles que les visites, les pages vues, l'origine des visites et bien plus encore.

Matomo offre la possibilité d'avoir une analyse complète sur certains aspects de vos sites web avec des informations concernant : vos visiteurs, leur comportement, leurs habitudes et plus encore.

Pourquoi Matomo ?

Matomo est un excellent substitut à Google Analytics pour les raisons suivantes :

  • Pleine propriété des données

  • Protection de la vie privée

  • Pas d'échantillonnage de données

  • Conformité RGPD (recommandé par la CNIL)

  • Flexibilité (portabilité des données, accès brut, open source, etc...)

Plateforme en tant que Service

Matomo est déployé sur site dans les centres de données de cegedim.cloud et est fourni en tant que service.

cegedim.cloud garantit le niveau de service managé suivant : le déploiement des instances, le maintien en condition opérationnelle, la flexibilité, la sécurité et le monitoring sont ainsi assurés par nos experts.

Instance

Dimensions

  • XS

  • S

  • M

  • L

  • XL

Surveillance

✅ Option

Surveillance 24x7

✅ Option

Sauvegarde

✅ Option

Réplication de données (PRA)

✅ Option

Disponibilité

99,8%

Choix de la région

✅

Libre-service

✅

Pour plus d'information, veuillez consulter la page Matomo - Architecture.

Facturation

La facturation est mensuelle et varie en fonction de la taille choisie. Veuillez contacter votre Service Delivery Manager pour plus d'informations concernant la tarification.

Resource Filters

Actions

Conteneurs (K8s)

Description

cegedim.cloud fournit des clusters Kubernetes gérés, avec le plus haut niveau de sécurité et de résilience intégré.

En utilisant ces clusters, vous pouvez déployer vos workloads Kubernetes standards dans les centres de données cegedim.cloud afin de maximiser la disponibilité de vos applications.

cegedim.cloud fournit également une console Rancher, où vous pouvez gérer vos workloads, et configurer les capacités d'observabilité intégrées (Logging et Métrologie) pour la connecter à vos propres plateformes (Grafana, ElasticSearch...).

Container en tant que Service

Les principaux objectifs du projet Container en tant que Service sont :

  • Capacité à fournir des clusters Kubernetes de dernière génération à la demande.

  • Application Stateful supportée

  • Prise en charge des volumes persistants avec Auto-Provisioning et Haute Disponibilité

  • Respecter les normes réseau, les règles de stockage et de sécurité.

  • Une sécurité renforcée

  • Système de surveillance et de métriques intégré à la demande pour chaque application

  • Prise en charge des règles de réseau dynamiques

Cluster

Pour plus d'information, veuillez consulter la page .

Facturation

La facturation est mensuelle et basée sur le nombre de nœuds et sur les coûts supplémentaires tel que le stockage et la sauvegarde.

L'estimation des coûts pour un cluster Kubernetes est disponible via votre Service Delivery Manager.

MariaDB

Managed MariaDB

Description

MariaDB est un système de gestion de base de données open-source créé par les développeurs de MySQL. MariaDB utilise des tables pour stocker les données de manière organisée et il est possible d'interagir avec la base de données à l'aide de requêtes SQL.

Il prend en charge des concepts tels que les clés primaires, les index et les relations entre les tables. MariaDB est largement utilisé pour le stockage et la gestion des données dans diverses applications, des sites web aux systèmes d'entreprise. C'est un choix populaire en raison de sa fiabilité, de ses performances et de sa nature open-source.

Plateforme en tant que Service

MariaDB est déployé on-premise dans les centres de données de cegedim.cloud.

La version support à long terme (LTS) peut être déployée en self-service à l'aide d'ITCare.

Le même niveau de service que l'offre Compute est garanti : déploiement d'instances, maintien en condition opérationnelle, flexibilité, sécurité et monitoring sont ainsi assurés par nos experts.

Deux topologies sont disponibles en libre-service :

  • Instance autonome

  • Cluster Galera (3 nœuds)

Le cluster Galera est prêt pour la production avec au moins 3 nœuds répartis sur toutes les zones de disponibilité d'une Région cible.

Le dimensionnement peut être configuré selon vos besoins.

Instance autonome
Cluster Galera

Pour plus d'information, veuillez consulter la page .

Facturation

La facturation est mensuelle et basée sur le nombre d'instance plus des coûts supplémentaires pour le stockage, la sauvegarde, la surveillance 24/7.

L'estimation du coût d'une instance MariaDB est disponible via votre Service Delivery Manager.

OpenSearch - Architecture

Topologies

Le cluster OpenSearch est disponible en tant que :

  • Cluster de 3 nœuds - non recommandé pour une utilisation en production

  • Cluster de 5 nœuds ou plus - recommandé pour une utilisation en production

Topologie à 3 nœuds

Dans la topologie à 3 serveurs, tous les serveurs jouent le rôle de maître, deux d'entre eux sont également utilisés comme nœuds de données. Chaque index est répliqué par défaut sur ces deux nœuds de données.

Topologie d'au moins 5 nœuds

Avec 5 serveurs ou plus, trois nœuds sont utilisés comme nœuds maîtres et n'hébergent pas de données. En fonction de la zone, les nœuds maîtres sont répartis sur 2 ou 3 zones de disponibilité. Les nœuds restants n'hébergent que des données et sont répartis sur deux zones de disponibilité.

Résilience

Dans une Area avec 3 zones de disponibilité, le cluster est résilient face à une défaillance d'une zone de disponibilité.

Dans une Area avec 2 zones de disponibilité, le cluster peut tomber en panne si la zone de disponibilité contenant deux maîtres n'est pas disponible.

Fonctionnalités

Cette section énumère les fonctionnalités / capacités disponibles pour les utilisateurs, ainsi que la manière de les demander / de les exécuter :

Fonctionnalités
Libre-service
Sur requête
Commentaires

Sécurité

Authentification

L'authentification utilise le système de sécurité interne d'OpenSearch. Il peut être configuré sur demande pour accepter Active Directory comme backend d'authentification.

Autorisations

Les autorisations sont effectuées à l'aide de RBAC. Il peut être configuré sur demande pour accepter Active Directory comme fournisseur de rôles.

Transport sécurisé

TLS/SSL est activé par défaut pour les flux réseau entrants et internes.

Mots de passe

Cette section explique comment est gérée la gestion des mots de passe :

Mot de passe
Stocké par cegedim.cloud
Stocké par le client
Enforcé
Commentaires

v2 - Changements

OpenSearch amène plusieurs changements, vous devez donc vérifier la compatibilité de votre application avec ceux-ci.

Remove mapping type

Il s'agit du principal changement induisant une rupture et il n'est pas spécifique à OpenSearch car il était déjà prévu par ElasticSearch avant le fork.

Vous devez donc vous assurer que vos applications n'utilisent plus les paramètres "type".

Voici quelques solutions concernant les produits souvent utilisés avec les solutions élastiques et comment les configurer pour qu'ils fonctionnent avec OpenSearch 2.x

Fluentbit

Si le client est Fluentbit, la solution la plus simple est de définir le paramètre Suppress_Type_Name sur On.

Il est également possible de changer le plugin de sortie pour le plugin natif d'OpenSearch qui fait partie de Fluentbit depuis la version 1.9.

L'article suivant peut s'avérer utile pour débuter avec Fluentbit et OpenSearch :

Fluentd

Si le client est Fluentd, c'est plus délicat. Il existe également unsuppress_type_name mais le plugin n'utilise ce paramètre que s'il détecte une version d'Elastic >= 7.

Nous devons donc ajouter d'autres paramètres :

  • verify_es_version_at_startup = false - pour ne pas laisser le plugin détecter la version

  • default_elasticsearch_version = '7'

Voici par exemple les changements à effectuer sur les spécifications du plugin de sortie que nous utilisons dans Kubernetes.

Avant
Après

Il y a aussi un plugin de sortie pour OpenSearch.

Le plugin OpenSearch n'est pas encore disponible dans le système de journalisation de Rancher.

Redis - Mise à jour

Processus de mise à niveau

Requête

La mise à jour d'un PaaS Redis est de la responsabilité de cegedim.cloud et peut être demandée via un ticket soumis depuis ITCare.

Merci de préciser un créneau de disponibilité pour l'opération et si l'opération doit être effectuée en heures non ouvrées.

Il est recommandé de procéder à la mise à jour de vos environnements de non production d'abord afin de pouvoir estimer le temps d'interruption généré par l'opération ainsi que de recetter vos applications dans la nouvelle version du moteur.

Déroulement

La mise à jour d'un déploiement Redis (mono-instance ou cluster en haute disponibilité) se déroule en deux étapes complètement automatisées :

  • Mise à jour du système d'exploitation préalable

    • Plusieurs mises à jour selon le scénario: Debian 10 → Debian 11 → Debian 12

  • Mise à jour du moteur Redis et Sentinel dans la version cible

Selon les versions source et cible de Redis, il peut être nécessaire de migrer d'abord le système d'exploitation vers une version prise en charge par cegedim.cloud (pour plus d'informations, consultez la matrice de prise en charge OS/Redis ci-dessous).

Impacts

La durée d'une mise à jour est variable selon:

  • La topologie

    • Topologie Standalone: Redis sera mise à jour.

    • Topologie Sentinel: Redis et Sentinel seront mis à jour sur chaque noeuds.

  • Le nombre de mise à jour du système d'exploitation nécessaire

Temps de référence

  • Mise à jour du système d'exploitation Debian: 10 minutes en moyenne

  • Mise à jour des paquets Redis: 5 minutes en moyenne

  • Mise à jour des paquets Sentinel: 5 minutes en moyenne

Matrice de support OS / Redis

Distribution Linux supportées par cegedim.cloud en fonction de la version de Redis:

Redis version
Debian version

La mise à jour du système d'exploitation est requise uniquement si le PaaS Redis 6.2 a été provisionné avant le 31 2024. Après cette date, le Paas Redis a été mis à jour afin d'être déployé sur du Debian 12.

Types

Network Clusters

Message Brokers

Libre-service

Le client peut effectuer des actions de manière autonome à l'aide d'ITCare.

Sur requête

Le client peut demander à l'équipe de support de cegedim.cloud de prendre les mesures nécessaires.

Accès SSH

L'accès SSH est désactivé et réservé aux administrateurs de cegedim.cloud

Changement de configuration

Sur requête via ticket

Ajouter des noeuds

Ajoute deux noeuds de données à un cluster existant (disponible uniquement pour les clusters avec un master dédié)

Redimensionner les noeuds

Redimensionne les noeuds d'un cluster

Ajouter des noeuds d'ingestion

Ajoute deux noeuds à un cluster existant (disponible uniquement pour les clusters avec un master dédié)

Supprimer des noeuds

Supprime deux noeuds d'un cluster existant (les noeuds doivent être dans des zones de disponibilité différentes, assez d'espace doit être disponible dans les noeuds restant du cluster, disponible uniquement pour les clusters avec un master dédié)

Compte admin

Autre compte

Compte kibana

Utilisé par le serveur de tableau de bord pour se connecter au cluster

Compte support

Utilisé par l'équipe de support de cegedim.cloud (il a un accès limité et ne peut pas lire les données d'index)

Compte centreon

Utilisé par le système de surveillance cegedim.cloud (il n'a accès qu'aux informations de surveillance)

Compte prometheus

Utilisé par le système de métrologie de cegedim.cloud (il n'a accès qu'aux informations de surveillance)

Nœuds

2 - 256

CPU (par nœud)

2 - 16

RAM (par nœud)

6 - 256 Go

Surveillance

✅

Surveillance 24x7

✅ Option

Sauvegarde des nœuds

❌

Sauvegarde ETCD

Toutes les 2 heures avec 7 jours de rétention

Sauvegarde des volumes persistants

✅

Réplication de données (PRA)

✅ Option

Haute disponibilité

✅ Option

Disponibilité

99,9%

Choix de la région

✅

Libre-service

✅

K8s - Architecture

6.2.x

Debian 10

6.2.x

Debian 12 (déploiements créés après le 31 mai 2024)

7.2.x

Debian 12

Instances virtuelles - Didacticiels

Comment déployer une instance virtuelle ?

Pour créer une nouvelle instance virtuelle, rendez-vous sur ITCare et recherchez votre service global cible où vous créerez votre nouvelle instance.

Recherchez votre service global dans la barre de recherche supérieure et cliquez dessus pour afficher sa page d'information. Une fois dans votre service global, cliquez sur le bouton Créer une ressource, sélectionnez Linux, Windows ou AIX et la version et/ou la distribution souhaitée.

Remplir les champs :

  • Nom de la machine virtuelle

  • Dimensionnement du CPU/RAM

  • Disques et capacité de stockage pour chaque disque

  • Emplacement de la cible

  • Réseau cible

  • Options de gestion (sauvegarde, surveillance, surveillance 24x7, réplication des données)

Cliquez sur Suivant une fois que tous les champs ont été remplis.

Lors de l'étape de personnalisation, vous pouvez :

  • Formuler une requête spécifique (il est à noter que cela retardera la tâche automatisée car cela déclenchera une intervention humaine)

  • Créer plusieurs instances avec la même configuration (noms et emplacement à fournir)

Cliquez ensuite sur Suivant.

Lisez le résumé avant de soumettre le formulaire.

L'approvisionnement peut prendre jusqu'à 2 heures, en fonction de la charge d'automatisation actuelle.

Une fois que le déploiement est prêt, vous en serez informé par e-mail.

Comment puis-je me connecter à mon instance virtuelle ?

Quelle que soit l'instance ou le système d'exploitation auquel vous devez vous connecter, l'utilisation d'un Bastion est obligatoire. Vous devez d'abord vous connecter au Bastion assigné à votre locataire, à partir duquel vous pouvez ensuite initier une connexion SSH ou RDP à vos instances.

Linux

Connexion SSH en utilisant Putty ou mRemoteNG installé sur votre Bastion. Les identifiants à utiliser sont vos propres identifiants d'utilisateur adm.corp.

La connexion directe en tant qu'utilisateur root est désactivée sur toutes les instances virtuelles Linux. Vous devez vous connecter avec un utilisateur non root, puis utiliser les permissions sudoers pour effectuer des actions à haut privilège.

Comment s'authentifier ?

Deux méthodes d'authentification sont autorisées :

  • LDAP

  • Clé publique et privée

Pour se connecter via SSH en utilisant la méthode d'authentification LDAP, vous devez avoir un compte valide dans le même domaine LDAP que celui dans lequel votre instance virtuelle est inscrite.

Il n'est pas nécessaire de spécifier le nom du domaine LDAP dans votre login.

$ ssh johndoe@myinstance
 johndoe@myinstance's password: xxxxxx 
 Creating directory '/home/johndoe'. 
 johndoe@myinstance:~$

Lors de la première connexion, votre répertoire personnel sera automatiquement créé : /home/<yourlogin>/

Pour obtenir la liste des commandes autorisées, entrez la commande suivante : sudo -l

johndoe@myinstance:~$ sudo -l
Matching Defaults entries for johndoe on myinstance:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
 
User johndoe may run the following commands on myinstance:
    (ALL) NOPASSWD: ALL
    (ALL) NOPASSWD: ALL

Pour se connecter à une instance virtuelle linux avec votre clé publique SSH, votre clé doit être ajoutée au fichier /home/<user>/.ssh/authorized_keys.

Où <user> est le nom du compte local sur le serveur cible et login spécifie le nom de l'utilisateur local : ssh user@host

Window

Connexion RDP en utilisant Remote Desktop de mRemoteNG ou Windows mstsc intégré sur votre Bastion. Les identifiants à utiliser sont ceux de l'utilisateur adm.corp.

AIX

Connexion SSH en utilisant Putty ou mRemoteNG installé sur votre Bastion. Un compte utilisateur local avec un accès sudo ou root sera fourni lors de la livraison de l'instance.

Comment autoriser l'accès à une instance virtuelle linux ?

Autorisation de connexion LDAP

our lister les utilisateurs et groupes LDAP autorisés à se connecter, utilisez la commande suivante :

$ grep allow /etc/sssd/sssd.conf
simple_allow_groups = LDAP_GROUP_ADMIN
simple_allow_users = bernard
  • simple_allow_groups : groupes LDAP

  • simple_allow_users : utilisateurs LDAP

Vous ne pouvez ajouter que des groupes ou des utilisateurs inscrits dans le même domaine LDAP que votre instance virtuelle.

Ajouter des utilisateurs

Pour autoriser la connexion d'un utilisateur LDAP, utilisez la commande suivante :

// add one user
$ realm permit --realm <domain> <user>

// add multiple users
$ realm permit --realm <domain> user1 user2 userX

Ajouter des groupes

Pour autoriser la connexion à un groupe LDAP, utilisez la commande suivante :

// add one group
$ realm permit --realm <domain> --groups <group>

// add multiple groups
$ realm permit --realm <domain> --groups group1 group2 groupX

Supprimer des accès

Pour supprimer l'accès à un utilisateur ou groupe LDAP, utilisez la commande suivante :

// remove user
$ realm permit --withdraw <user>

// remove group
$ realm permit --withdraw --groups <group>

Comment gérer les permissions sous Linux ?

Pour accorder des droits sudo à des utilisateurs ou groupes LDAP (ainsi qu'à des utilisateurs ou groupes locaux), créez un nouveau fichier dans /etc/sudoers.d

Il n'est pas recommandé d'ajouter des instructions sudoers dans le fichier /etc/sudoers. Réservé au système.

$ touch /etc/sudoers.d/devops

Utilisez la commande visudo pour éditer votre fichier sudoers :

$ visudo -f /etc/sudoers.d/devops
# devops
%G_GROUP_DEVOPS    ALL=(ALL)  NOPASSWD:ALL
bernard            ALL=(ALL)  NOPASSWD:ALL

Comme les groupes UNIX, les groupes LDAP dans le fichier sudoers doivent être préfixés par un '%'.

Instances

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Version(s) supportée(s)

10.6

10.6

Surveillance

✅ Option

✅ Option

Surveillance 24x7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication de données (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement multi-AZ

❌

✅

Libre-service

✅

✅

MariaDB - Architecture
 elasticsearch:
    flatten_hashes: true
    host: ostest.es.cegedim.cloud
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: myit-app-prod-frontend
    password:
      valueFrom:
        secretKeyRef:
          key: myit-app-prod_password
          name: it-cloud-eb.es.cegedim.cloud
    port: 443
    prefer_oj_serializer: true
    reconnect_on_error: true
    request_timeout: 30s
    scheme: https
    suppress_type_name: true
    user: myit-app-prod
  elasticsearch:
    default_elasticsearch_version: "7"
    flatten_hashes: true
    host: ostest.es.cegedim.cloud
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: myit-app-prod-frontend
    password:
      valueFrom:
        secretKeyRef:
          key: myit-app-prod_password
          name: it-cloud-eb.es.cegedim.cloud
    port: 443
    prefer_oj_serializer: true
    reconnect_on_error: true
    request_timeout: 30s
    scheme: https
    suppress_type_name: true
    user: myit-app-prod
    verify_es_version_at_startup: false

Matomo - Didacticiels

Créer une instance Matomo

Connectez-vous à la plateforme ITCare, cliquez sur le bouton Statistiques dans le menu principal à gauche. Cliquez sur "Créer une instance Matomo" et suivez les instructions.

Indiquez le service global dans lequel vous souhaitez créer une instance Matomo.

Donnez le nom de l'instance que vous voulez créer. Un nom de site web et une URL par défaut peuvent être configurés pendant le provisionnement. Ils sont facultatifs. S'ils sont laissés vides, des valeurs fictives seront utilisées. Cliquez sur Suivant.

Choisissez la taille de l'instance de Matomo Analytics correspondant à vos besoins et cliquez sur Suivant.

Fournissez le mot de passe du super utilisateur nommé "administrator" qui vous sera donné.

Le mot de passe du super utilisateur n'est pas sauvegardé par cegedim.cloud.

Veillez à sauvegarder votre mot de passe!

A l'étape suivante, vous pouvez configurer les options de gestion :

  • Surveillance (fortement recommandé)

  • Surveillance 24/7

  • Sauvegarde (fortement recommandé)

  • Réplication du stockage

Cliquez sur Suivant.

Sélectionnez la région dans laquelle vous souhaitez créer votre instance Matomo.

Cliquez sur Suivant.

Vérifiez vos entrées dans la page de synthèse. Vous pouvez :

  • Vérifier l'instance qui sera créée

  • Voir le service global cible

  • Enregistrer votre mot de passe administrateur

  • Vérifier les options de gestion

Cliquer sur Soumettre une fois prêt.

Une fois que l'instance est prête, vous recevrez un e-mail contenant les informations nécessaires pour vous y connecter.

La création d'une instance peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation. L'instance sera alors affichée dans la page de gestion, dans la section Analytique.

Démarrer une instance Matomo

Allez dans le menu Statistiques du menu principal de gauche et cliquez sur le lien Gérer.

Une fois que toutes les instances Matomo sont présentées, cliquez sur le bouton de démarrage de l'instance de votre choix. Le démarrage d'une instance Matomo démarre tous les composants.

Une notification par e-mail sera envoyée lorsque le service sera activé.

Arrêter une instance Matomo

Allez dans le menu Statistiques du menu principal de gauche et cliquez sur le lien Gérer.

Une fois que toutes les instances de Matomo sont présentées, cliquez sur le bouton d'arrêt de l'instance de votre choix. Saisissez un numéro RFC pour le suivi (facultatif) puis validez en cliquant sur Stop. L'arrêt d'une instance Matomo arrêtera tous les composants et la surveillance sera désactivée.

Une notification par e-mail sera envoyée lorsque l'instance sera arrêtée.

Supprimer une instance Matomo

Allez dans le menu Statistiques à partir du menu principal de gauche et cliquez sur le lien Gérer.

Une fois que toutes les instances Matomo sont affichées, cliquez sur le bouton de suppression de l'instance de votre choix.

Vous ne pouvez supprimer qu'une instance déjà arrêtée.

Cette action supprimera tous les composants utilisés par cette instance Matomo.

Veuillez noter que cette action n'est pas récupérable.

Saisissez un numéro RFC pour le suivi (facultatif) et le nom de l'instance (captcha obligatoire) pour confirmer votre choix, puis cliquez sur Supprimer.

Une notification par e-mail sera envoyée lorsque l'instance sera supprimée.

Redimensionner une instance Matomo

Allez dans le menu Statistiques du menu principal de gauche et cliquez sur le lien Gérer.

Une fois que toutes les instances de Matomo sont présentées, cliquez sur le bouton de redimensionnement de l'instance de votre choix.

Vous ne pouvez redimensionner que si l'instance est démarrée.

Sélectionnez la nouvelle taille qui ne peut être que supérieure à la taille actuelle et cliquez sur Redimensionner.

Le service sera interrompu pendant la durée de l'opération (quelques minutes).

Une notification par e-mail sera envoyée lorsque l'instance sera redimensionnée.

Installer des plugins Matomo

Connectez-vous à votre instance Matomo Analytics avec l'utilisateur "administrator" que vous avez fourni lors du provisionnement.

Cliquez sur l'icône Administration représenté par une roue crantée :\

Sélectionnez le menu "Extensions" dans la catégorie "Système"

Allez à la fin de la page et cliquez sur le bouton "Installer de nouveaux composants" :

Recherchez, installez et activez les modules à votre guise :\

Mettre à jour la version de Matomo

Connectez-vous à votre instance Matomo Analytics avec l'utilisateur "administrator".

Cliquez sur l'icône d'administration

Cliquez en haut de la page sur le message indiquant une nouvelle version

Confirmer la mise à jour automatique\

Attendre la fin de la mise à jour avec un message de réussite\

PostgreSQL

Description

PostgreSQL est actuellement le principal SGBDR (système de gestion de base de données relationnelle) open source, avec une large gamme de fonctionnalités et une grande communauté qui le soutient.

cegedim.cloud fournit des instances de bases de données PostgreSQL entièrement gérées pour vous permettre de construire vos applications sans vous soucier de la disponibilité, la sécurité et la résilience des bases de données PostgreSQL.

Plateforme en tant que Service

PostgreSQL est déployé sur site dans les centres de données de cegedim.cloud.

cegedim.cloud garantit le même niveau de service que l'offre Compute & Database : déploiement des instances, maintien en condition opérationnelle, flexibilité, sécurité et monitoring sont ainsi assurés par nos experts.

Deux types de déploiements PostgreSQL sont disponibles :

  • Le mode Instance autonome fournit une instance PostgreSQL standard.

  • Le mode Haute disponibilité fournit un déploiement PostgreSQL multi-instances avec des capacités de résilience et d'évolutivité améliorées.

Le dimensionnement peut être configuré en fonction de vos besoins.

Instance autonome
Haute disponibilité

Instance

1

2

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Versions supportées

10, 11, 12, 13, 14, 15, 16

12, 13, 14, 15, 16

Surveillance

✅ Option

✅ Option

Surveillance 24x7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication de données (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement multi-AZ

❌

✅

Libre-service

✅

✅

Pour plus d'information, veuillez consulter la page PostgreSQL - Architecture.

Facturation

La facturation est mensuelle et basée sur le nombre de nœuds plus les coûts supplémentaires pour le stockage, la sauvegarde et le monitoring 24x7.

L'estimation du coût d'un nœud PostgreSQL est disponible via votre Service Delivery Manager.

Redis

Description

Redis qui signifie Remote Dictionary Server, est un magasin de données clé-valeur rapide, open source, en mémoire.

Il fournit une réplication intégrée, différents niveaux de persistance sur le disque, et offre une haute disponibilité avec Sentinel.

Il existe un large éventail d'outils de développement pour les langages les plus courants.

Plateforme en tant que Service

Redis est déployé sur site dans les centres de données cegedim.cloud.

cegedim.cloud garantit le même niveau de service que l'offre Compute : déploiement des instances, maintien en condition opérationnelle, flexibilité, sécurité et monitoring sont ainsi assurés par nos experts.

Deux topologies sont disponibles :

  • Instance autonome

  • Cluster Sentinel de 3 instances

La topologie cluster Sentinel est prête pour la production avec 3 instances réparties sur toutes les Zones de Disponibilité d'une Area cible.

Chaque instance exécute les processus Redis et Sentinel. Une instance est primaire et les deux autres sont des répliques.

Le dimensionnement peut être configuré en fonction de vos besoins.

Instance autonome
Cluster

Instance(s)

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Version(s) supportée(s)

  • 6.2

  • 7.2

  • 6.2

  • 7.2

TLS/SSL

✅ Option

✅ Option

Surveillance

✅ Option

✅ Option

Surveillance 24x7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication de données (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement multi-AZ

❌

✅

Libre-service

✅

✅

Pour plus d'information, veuillez consulter la page Redis - Architecture.

Facturation

L'estimation des coûts pour un PaaS Redis est disponible via votre Service Delivery Manager.

La facturation est basée sur le nombre de nœuds auquel s'ajoutent les frais supplémentaires de stockage, de sauvegarde, surveillance 24/7.

Matomo - Architecture

Description

Matomo est disponible en libre-service dans ITCare pour tous les utilisateurs autorisés.

En fonction du dimensionnement choisi (voir les dimensionnements ci-dessous), plusieurs composants seront déployés avec un strict minimum de :

  • 1 serveur web frontal

  • 1 serveur de base de données

  • 1 équilibreur de charge avec une adresse IP publique (certificat inclus)

Les tailles supérieures (pour suivre plus de pages vues par mois) peuvent inclure plus de serveurs web pour l'équilibrage de charge. Pour les tailles supérieures à XL, un ticket de demande sera nécessaire.

Une fois provisionnée, votre instance Matomo est accessible au public via l'URL fournie dans ITCare.

L'installation de plugins et les mises à jour de Matomo peuvent être effectuées par le client en toute autonomie.

Architecture

Régions

Matomo est disponible dans les régions suivantes :

  • EMEA - France - Boulogne-Billancourt

  • EMEA - France - Toulouse

Dimensions

Les tailles suivantes sont disponibles :

Tailles
Capacité estimée

Redimensionner votre instance Matomo

Le redimensionnement est disponible dans le self-service ITCare mais ne permet que le redimensionnement vers le haut.

Le redimensionnement vers le bas n'est pas possible !

Versions supportées

La version de Matomo déployée dépend de la dernière mise à jour de nos repository lors de la dernière patch party.

La dernière version sera souvent disponible mais il peut arriver que la version déployée ne soit pas la dernière.

Dans ce cas, la mise à jour peut être déclenchée par le client en autonomie directement depuis l'interface web UI ou sur demande en créant un ticket de demande dans ITCare.

Fonctionnalités

Cette section énumère les fonctionnalités / capacités disponibles pour le client, ainsi que la manière de les demander / de les exécuter :

Fonctionnalités
Libre-service
Sur requête
Commentaires

Sécurité

Authentification et autorisations

Le client dispose d'un compte local super utilisateur.

OpenOIDC est configuré pour ajouter et autoriser facilement d'autres utilisateurs à accéder à Matomo.

Transport sécurisé

L'accès à votre instance Matomo se fait de manière sécurisée via HTTPS.

Localisation des données

Toutes les données sont stockées dans les centres de données de cegedim.cloud sur des baies de stockage cryptées.

Mots de passe

Le mot de passe du compte super utilisateur fourni au client n'est pas stocké ni sauvegardé par cegedim.cloud.

Surveillance

Matomo et les composants associés sont surveillés par notre équipe de support. Un état de santé global est affiché dans ITCare pour votre confort.

Instances virtuelles - Architectures

Systèmes d'exploitation supportés

Linux

Les distributions Linux suivantes sont disponibles lorsque vous sélectionnez Linux comme système d'exploitation pour votre Instance Virtuelle :

  • Centos

  • Debian

  • Ubuntu

  • Red Hat Linux Enterprise (RHEL)

  • Oracle Linux

Oracle Linux 9 propose deux noyaux : l'un entièrement compatible avec RedHat 9 et l'autre qualifié d'« incassable », optimisé pour les applications Oracle.

Renforcement de la sécurité sur Linux

Le renforcement (hardening) est appliqué sur certaines distributions Linux récentes telles que Debian 11, Debian 12, Ubuntu 22, Ubuntu 24 et Oracle Linux 9. Voici les différentes parties du système concernées par ce durcissement :

  • Application stricte des paramètres de sécurité réseau

  • Protection des systèmes de fichiers sensibles

  • Limitation des méthodes de connexion aux protocoles robustes et schémas de chiffrement renforcés utilisés via SSH

  • Désactivation du chargement dynamique des modules du noyau

Windows

Windows Server est disponible comme système d'exploitation pour votre Instance Virtuelle. cegedim.cloud supporte plusieurs versions de Windows Server 2022 à Windows Server 2012R2.

AIX

cegedim.cloud supporte le système d'exploitation IBM AIX sur les systèmes IBM Power. La version actuellement supportée est la version majeure 7 et les versions de niveau technologique associées.

Régions

Les instances virtuelles sont disponibles dans les centres de données cegedim.cloud suivants :

  • EB4 - Boulogne-Billancourt, France

  • EB5 - Magny-les-Hameaux, France

  • ET1 - Labège, France

  • ET2 - Balma, France

Ressources

Une Instance Virtuelle peut être configurée et personnalisée selon vos besoins :

  • Calcul : nombre de vCPU

  • RAM : quantité de mémoire allouée (varie en fonction du nombre de vCPU)

  • Stockage : disques et stockage supplémentaires en Go à allouer à l'instance virtuelle

Fonctionnalités

Cette section énumère les fonctions / capacités disponibles pour le client, et la manière de les demander / de les exécuter :

Fonctionnalités
Libre service
Sur demande
Commentaires

Sécurité

Authentification

L'authentification dans l'instance virtuelle est basée sur Active Directory pour Linux et Windows (pas pour AIX qui reste en utilisateurs locaux). L'utilisateur demandeur sera automatiquement ajouté en tant qu'administrateur de l'instance virtuelle. Cet utilisateur est ensuite libre de configurer et d'ajouter d'autres utilisateurs avec les privilèges souhaités.

Sauvegarde

La sauvegarde est une option qui peut être activée pour votre instance virtuelle. Dans un environnement de production, l'option de sauvegarde sera toujours activée par défaut dans ITCare.

Vous pouvez désactiver l'option de sauvegarde à vos risques et périls.

Les sauvegardes sont effectuées tous les jours et sauvegardées dans le centre de données local, puis répliquées dans un second centre de données sur le campus. La durée de conservation des sauvegardes pour les instances virtuelles est de 28 jours par défaut, mais elle peut être adaptée à vos besoins avec votre Service Delivery Manager.

La date de la dernière sauvegarde et l'empreinte de stockage de la sauvegarde peuvent être consultées directement dans ITCare sur la page des détails de la ressource de votre instance virtuelle.

Surveillance

Comme indiqué, les instances virtuelles sont gérées et la surveillance est donc assurée si l'option a été cochée. Dans un environnement de production, l'option de surveillance est toujours activée par défaut.

Vous pouvez désactiver l'option de surveillance à vos risques et périls.

En activant la surveillance, plusieurs contrôles de santé seront déployés pour s'assurer que votre instance virtuelle fonctionne et reste saine. Si l'un de ces contrôles est déclenché, notre équipe de support est avertie par un ticket afin de résoudre le problème dans le cadre du niveau d'accord de service autorisé.

Ces alertes de surveillance peuvent être consultées directement dans ITCare et des métriques de performance sont également fournies pour les indicateurs clés tels que le CPU, la mémoire, le disque et la consommation du réseau.

Surveillance 24x7

Lorsque la surveillance est activée, elle n'est effective que pendant les heures ouvrées. Pour étendre la surveillance en dehors des heures ouvrées, l'option 24x7 peut être activée et des frais supplémentaires seront appliqués.

Cette option garantit que votre instance virtuelle est surveillée à tout moment par notre équipe de support et que des mesures seront prises pour escalader et résoudre tout problème.

La surveillance 24x7 n'est pas obligatoire et ne peut être activée que lorsque l'option de surveillance est activée.

Réplication de données

La réplication des données est une fonction qui permet la protection de la reprise après sinistre. Lorsque cette fonction est activée, les données de votre instance virtuelle sont répliquées depuis la baie de stockage locale vers une baie de stockage hors site.

Cela signifie qu'en cas de perte du centre de données local, vos données sont toujours en sécurité dans un autre centre de données et la procédure de restauration et de relance de votre Instance Virtuelle peut être activée.

Vous pouvez désactiver l'option de réplication à vos risques et périls.

Stockage Persistant

Introduction

cegedim.cloud propose désormais une plateforme de stockage Ceph multi-locataires en tant que fournisseur de CSI avec les spécifications suivantes :

  • Les données sont répliquées 4 fois et réparties uniformément (à l'aide de Ceph Crush Map) sur 2 centres de données afin de garantir que, dans les scénarios de catastrophe, 2 répliques de données sont toujours disponibles.

  • Chaque cluster Kubernetes, en tant que client Ceph, dispose de son propre pool de données sur le serveur Ceph et consomme des services avec ses propres identifiants.

  • Seul le RBD Ceph CSI est fourni pour le moment.

De plus amples informations sur le Ceph CSI sont disponibles via le lien ci-dessous

Versions

Composant
Version

Classe de stockage

Nom
Description

Haute disponibilité

EB
ET

Caractéristiques du CSI

CSI Ceph-rbd

Snapshot et restauration de PVC dans Kubernetes

cegedim.cloud utilise External Snapshotter pour prendre des clichés et restaurer le PVC de vos clusters Kubernetes.

Toutes les informations relatives à cette application sont disponibles à l'adresse suivante :

Comment savoir si j'ai un snapshotclass actif sur mon cluster ?

Il est recommandé de nommer la classe d'instantanés d'après la classe de stockage. Il suffit d'exécuter la commande ci-dessous pour vérifier :

Comment lister les CSI disponibles dans mon cluster ?

Pour répertorier tous les CSI disponibles dans un cluster Kubernetes, procédez comme suit :

Voici une correspondance entre la classe de stockage et le CSI :

Classes de stockage
CSI

PostgreSQL - Didacticiels

Comment provisionner un PaaS PostgreSQL ?

Pour commencer, rendez-vous sur ITCare et recherchez votre service global cible où vous créerez votre nouveau PostgreSQL.

Recherchez votre service Global dans la barre de recherche supérieure et cliquez dessus pour afficher sa page d'information.

Une fois dans votre Service Global, cliquez sur le bouton Créer une ressource et sélectionnez PostgreSQL.

Aller sur Bases de données managées, choisir PostgreSQL et sélectionner la version requise.

Remplir le formulaire et cliquer sur Suivant. Définir les personnalisations et cliquer sur Suivant.

Valider la synthèse et soumettre le formulaire.

Le provisionnement peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation.

Une fois le déploiement prêt, vous en serez informé par e-mail.

Comment gérer votre PostgreSQL ?

Sur la page de ressources de votre PostgreSQL, vous pouvez effectuer toutes les actions disponibles en utilisant le bouton Gérer dans le coin supérieur droit. Cela inclut le démarrage, l'arrêt, la suppression, le redémarrage, le redimensionnement et bien plus encore.

Comment accéder à votre cluster PostgreSQL ?

Lorsque votre cluster est créé avec ITCare, vous avez obtenu un rôle sql avec des informations d'identification.

Avec ces informations d'identification, vous pouvez vous connecter au cluster avec son nom sur le port tcp 5432. Vous pouvez utiliser la base de données postgres pour vous connecter.

Si votre cluster s'appelle "mycluster" vous pouvez utiliser le code python suivant :

Comment accéder à votre cluster PostgreSQL avec TLS/SSL ?

Lorsque votre cluster est créé avec ITCare, vous avez obtenu un rôle sql avec des informations d'identification.

Si vous choisissez d'activer TLS, vous avez reçu le certificat racine auquel vous devez faire confiance et que vous devez donner à la bibliothèque que vous utilisée pour vous connecter, par exemple psycopg2.

Avec ces informations d'identification, vous pouvez vous connecter au cluster avec son nom sur le port tcp 5432. Vous pouvez utiliser la base de données postgres pour vous connecter.

Si votre cluster s'appelle "mycluster" vous pouvez utiliser le code python suivant :

Comment créer un rôle ?

Il est plus sûr de ne pas utiliser un rôle d'administrateur pour les applications. Une fois connecté, vous pouvez créer un rôle standard comme suit (remplacez <a_role> et <very_strong_password> par vos propres informations d'identification) :

Comment créer une base de données ?

Si vous voulez créer une base de données dont le propriétaire sera le rôle que vous venez de créer, utilisez les requêtes SQL suivantes :

Comment créer une base de données avec un autre encodage et/ou collation ?

Vous pouvez utiliser les requêtes SQL suivantes avec la base de données template0 comme base de données template :

Comment restaurer en libre-service ?

Le PaaS PostgreSQL dispose d'une fonctionnalité permettant de restaurer un PaaS PostgreSQL (source) vers un autre PaaS PostgreSQL (destination) à un moment donné (en utilisant le Point-In-Time Recovery) sous les contraintes suivantes :

  • l'utilisateur doit avoir accès au cloud de la ferme source et de la ferme de destination

  • la source doit être sauvegardée (option choisie lors de la création)

  • la source et la destination doivent être actives

  • la source et la destination doivent être différentes

  • la source et la destination doivent être dans la même version de PostgreSQL

  • la source et la destination doivent être en version 12 ou supérieure

  • l'heure cible ne doit pas être dans le futur (délimitée à droite par l'heure actuelle).

  • l'heure cible ne doit pas être inférieure à 7 jours (pour les services de non-production) ou à 14 jours (pour les services de production) avec pour référence l'heure actuelle (délimitée à gauche par la rétention des sauvegardes).

Vous pouvez choisir d'inclure ou d'exclure la cible temporelle dans le processus de restauration.

Démo

Restauration d'une base de données PostgreSQL

Le processus de restauration d'une base de données PostgreSQL est une étape importante. Voyons comment procéder ci-dessous :

SQL Server - Didacticiels

Créer une instance

Pour commencer, connectez-vous à ITCare et recherchez votre service global cible où vous créerez votre nouveau serveur SQL. Une fois dans votre service global, cliquez sur le bouton Créer une ressource dans le coin supérieur droit.

Dans la catégorie Bases de données managées, sélectionnez SQL Server :

Choisissez la version et l'édition souhaitées :

  • Nom : Indiquez le nouveau nom de la machine virtuelle SQL Server.

    • En mode Cluster AlwaysOn, spécifiez le nom du groupe de disponibilité.

    • Prefix : indiqué un prefix pour initialier les machines virtuelles du cluster.

  • Dimensionnement : Sélectionnez un dimensionnement pour votre instance. La valeur par défaut et le dimensionnement le plus bas est 2 CPUs / 4 Go RAM.

  • Stockage : Sélectionnez la capacité de stockage requise pour SQL Server. Cinq disques sont nécessaires.

    • La valeur par défaut et la capacité de stockage minimale sont de 30 Go pour les disques de l'instance racine et des bases de données utilisateur, de 10 Go pour les disques du journal utilisateur et de tempdb.

  • Localisation : Sélectionnez la région dans laquelle vous souhaitez effectuer le déploiement. Choisissez une zone dans cette région et enfin une zone de disponibilité.

  • Réseau : Sélectionnez le VLAN dans lequel vous voulez déployer. Idéalement, il s'agit du VLAN de votre backend.

  • Authentification : Sélectionnez le domaine d'authentification dans lequel vous souhaitez vous déployer.

  • Options de gestion : Activez les options de gestion.

    • Activer ou désactiver la surveillance

    • Activer ou désactiver la surveillance 24/7

    • Activer la sauvegarde de votre machine virtuelle

    • Activer la réplication de vos machines virtuelles (sur le site de Reprise d'activité après sinistre)

Personnalisation

Indiquez le mot de passe de l'administrateur que vous utiliserez pour l'utilisateur de l'administrateur du serveur SQL.

cegedim.cloud n'enregistrera pas ce mot de passe. Veuillez donc le conserver en lieu sûr dans votre coffre-fort.

  • Confirmez votre mot de passe.

  • Choisissez votre collation SQL.

  • Ajouter des technologies supplémentaires disponibles dans SQL Server : SSIS, SSAS, SSRS

Vous pouvez ajouter une demande spécifique avant de la soumettre, mais cela retardera le provisionnement automatique.

Cliquez sur Suivant lorsque vous avez terminé.

Synthèse

Cette page reprendra vos données, veuillez vérifier que tout est correct avant de les soumettre. Vous pouvez afficher et enregistrer votre mot de passe administrateur. Une fois les données vérifiées, cliquez sur Soumettre.

Notification

Une fois que le déploiement est prêt, vous serez notifié par email. Le provisionnement peut prendre jusqu'à une heure en fonction de la charge actuelle de l'automatisation.

Démarrer un déploiement

En haut de la page de la ressource, cliquez sur le bouton Gérer, puis sur Démarrer et confirmer.

Le démarrage du cluster démarre toutes les machines virtuelles attachées au cluster.

Une notification par courrier électronique sera envoyée lorsque le service sera activé.

Arrêter un déploiement

En haut de la page de la ressource, cliquez sur le bouton Gérer, puis sur Arrêter. Saisissez un numéro RFC pour le suivi (facultatif). Cliquez sur Soumettre.

L'arrêt d'un cluster entraîne l'arrêt de toutes les machines virtuelles attachées au cluster et la désactivation de la surveillance.

Une notification par courrier électronique sera envoyée lorsque le cluster sera arrêté.

Redimensionner les nœuds

En haut de la page des ressources, cliquez sur le bouton Gérer, puis sur Redimensionner. Sélectionnez la nouvelle taille (CPU / RAM).

Chaque nœud sera redimensionné et redémarré séquentiellement. Le redimensionnement interrompra le service SQL Server !

Une notification par courrier électronique sera envoyée lorsque tous les nœuds auront été redimensionnés.

Supprimer un déploiement

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Supprimer. Cela arrêtera et supprimera toutes les machines virtuelles.

Veuillez noter que cette action n'est pas récupérable !

Saisissez un numéro RFC pour le suivi (facultatif), puis cliquez sur Soumettre. Une notification par courrier électronique sera envoyée lorsque le déploiement sera supprimé.

Load Balancers

Hardwares

XS

Suivi de 100 000 pages vues par mois ou moins

S

Suivi de 1 million de pages vues par mois ou moins

M

Suivi de 10 millions de pages vues par mois ou moins

L

Suivi de 100 millions de pages vues par mois ou moins

XL

Suivi de plus de 100 millions de pages vues par mois

Libre-service

Le client peut effectuer des actions de manière autonome à l'aide d'ITCare.

Sur requête

Le client peut demander à l'équipe de support de cegedim.cloud de prendre les mesures nécessaires.

Mise à jour de Matomo

La mise à jour peut être effectuée par le super utilisateur.

Installer et activer des plugins

Les plugins peuvent être installés par le super utilisateur à partir de l'interface web.

Gérer les privilèges

Le super utilisateur peut accorder des privilèges à n'importe quel utilisateur.

Accès SSH

L'accès SSH est désactivé et réservé aux administrateurs de cegedim.cloud.

Modifier des fichiers de configuration

Sur demande avec un ticket.

Libre service

Le client peut effectuer une action de manière autonome.

Sur demande

Le client peut demander à l'équipe de support de cegedim.cloud de prendre les mesures nécessaires via un ticket.

Accès SSH ou RDP

L'accès SSH ou RDP est autorisé et automatiquement fourni au demandeur de l'instance virtuelle.

Démarrer, arrêter, redémarrer, supprimer et redimensionner une instance virtuelle

Actions disponibles en libre-service dans notre outil de gestion de la plateforme en nuage ITCare.

Créer, supprimer, restaurer un instantané

Actions disponibles en libre-service dans notre outil de gestion de la plateforme en nuage ITCare.

Activer ou désactiver la surveillance, le 24x7, la sauvegarde et la réplication des données

Actions disponibles en libre-service dans notre outil de gestion de la plateforme en nuage ITCare.

Ajouter ou supprimer une plage de maintenance

Actions disponibles en libre-service dans notre outil de gestion de la plateforme en nuage ITCare.

Modifier l'allocation de l'espace de stockage

Un ticket de requête est nécessaire pour modifier l'allocation de stockage d'une Instance Virtuelle.

Modifier un fichier de configuration

Certains fichiers de configuration (tels que les repository) seront gérés par cegedim.cloud. Un ticket requête est nécessaire pour modifier certains de ces composants.

Aperçu

Débuter avec l'API ITCare ?

L'API REST ITCare respecte les spécifications standard OpenAPI. La documentation en ligne est disponible à cette adresse : https://api.cegedim.cloud/

Exemple:

Récupérer le statut de ITCare
curl -X GET "https://api.cegedim.cloud/itcare/health"

Structure de l'API ITCare

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 ?

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 ?

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 ?

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 :

/"""
Launch action and get its descriptor
"""
action = itcare.post('/api/resource', payload=my_payload)
  
"""
Loop on getting its status
"""
while action['status']=='IN_PROGRESS':
    time.sleep(1)
    action = itcare.get('/api/actions/{}'.format(action['id']))
  
"""
Print its status
"""
print action['status']

Les statuts des actions peuvent être :

  • IN_PROGRESS

  • SUCCESS

  • ERROR

SQL Server

Microsoft SQL Server est un système de gestion de base de données relationnelle développé par Microsoft.

Il est conçu pour stocker et récupérer des données telles que demandées par d’autres applications logicielles. Les fonctionnalités principales de SQL Server incluent :

  • Stockage et récupération de données : SQL Server offre une plateforme sécurisée et scalable pour stocker une grande quantité de données structurées et semi-structurées de manière efficace.

  • Interrogation et manipulation de données : Il propose des capacités avancées d’interrogation, telles que la possibilité d’écrire des requêtes complexes en utilisant le langage SQL, de joindre des tables, de créer des vues et de récupérer des données en fonction de critères spécifiques.

  • BI et analytique : SQL Server fournit des outils et des services pour l’analyse, le reporting et la visualisation des données, permettant aux utilisateurs de tirer des enseignements des données stockées afin de prendre des décisions basées sur les données.

  • Sécurité et intégrité des données : Il propose des fonctionnalités de sécurité solides, telles que l’authentification, le contrôle d’accès et le chiffrement, pour protéger les données sensibles contre tout accès ou modification non autorisé.

  • Haute disponibilité et évolutivité : SQL Server prend en charge des fonctionnalités comme le clustering, la bascule en cas de panne et la réplication pour assurer une disponibilité continue des données et pour répondre aux exigences croissantes en adaptant l’infrastructure de la base de données en termes de taille ou de performance.

Plateforme en tant que Service

SQL Server est déployé sur site dans les centres de données de cegedim.cloud .

Le même niveau de service que l'offre Compute est garanti : le déploiement des instances, la maintenance en condition opérationnelle, la flexibilité, la sécurité et la surveillance sont ainsi assurés par nos experts.

SQL Server 2016, 2017, 2019 et 2022 sont déployables en libre-service via notre plateforme de gestion de cloud ITCare.

Deux éditions sont supportées : Standard et Entreprise.

Deux topologies sont disponibles :

  • Instance autonome

  • Cluster Always On

La topologie de cluster Always On est prête pour la production mais n'est produite que sur demande. Seule la version SQL Server 2022 Enterprise est disponible en libre-service.

Le dimensionnement peut être configuré selon vos besoins.

Instance autonome
Cluster Always On

Instances

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

8 - 384 Go

8 - 384 Go

Version(s) supportée(s)

  • 2016

  • 2017

  • 2019

  • 2022

  • 2016

  • 2017

  • 2019

  • 2022

Sauvegarde

✅ Option

✅ Option

Surveillance

✅ Option

✅ Option

Surveillance 24x7

✅ Option

✅ Option

Réplication de données (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement Multi-AZ

❌

✅

Libre-service

✅

❌

Pour plus d'information, veuillez consulter la page SQL Server - Architecture.

Facturation

La facturation est basée sur le nombre de nœuds, plus des coûts supplémentaires pour le stockage, la sauvegarde, surveillance 24/7.

Les coûts sont disponibles auprès de votre Service Delivery Manager.

Get available backup policies

get
Authorizations
Query parameters
serviceIdinteger · int64Required

Service Id, example: 1234

availabilityZonestringOptional

availabilityZone

policyTypestring · enumRequired

policyType, example: SERVER

Possible values:
backupReplicatedbooleanOptional

backupReplicated

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/backup-policies HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "ANY_ADDITIONAL_PROPERTY": [
    {
      "availableInAZ": [
        "text"
      ],
      "cloudId": "text",
      "cloudName": "text",
      "default": true,
      "durationInHours": 1,
      "frequencies": {},
      "id": 1,
      "label": "text",
      "name": "text",
      "policyId": "text",
      "replication": true,
      "scope": "text",
      "startTime": "text",
      "timezone": "text",
      "type": "text"
    }
  ]
}

Get a backup policy by its id

get
Authorizations
Path parameters
idinteger · int64Required

BackupPolicy Id, example: 123

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/backup-policies/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "availableInAZ": [
    "text"
  ],
  "cloudId": "text",
  "cloudName": "text",
  "default": true,
  "durationInHours": 1,
  "frequencies": {},
  "id": 1,
  "label": "text",
  "name": "text",
  "policyId": "text",
  "replication": true,
  "scope": "text",
  "startTime": "text",
  "timezone": "text",
  "type": "text"
}

List Compute Environments

get

findComputeEnvironment

Authorizations
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/environments HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "name": "text",
    "types": [
      {
        "name": "text"
      }
    ]
  }
]

List Instances

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

typesstring[]Optional

Types, example: WINDOWS,AIX,LINUX

familiesstring[]Optional

Families, example: DEBIAN,CENTOS,RHEL

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

backupStatusbooleanOptional

Filter list by backup status

recoveryStatusbooleanOptional

Filter list by DRP status

includedInPatchPartybooleanOptional

Filter list by patch party status

azstring[]Optional

Availability Zone, example: EB-A, EB-B, EB-C, etc...

ipstring[]Optional

IPs, example: 10.59.13.29

vlanstring[]Optional

VLAN, example: EB_1125_DMZ8

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/instances HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "area": {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      },
      "authenticationDomain": "text",
      "availabilityZone": {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      },
      "backup": {
        "backupSystem": "text",
        "filesNb": 1,
        "lastDate": "2025-07-04T04:15:11.161Z",
        "size": 1,
        "type": "text"
      },
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "imageCode": "text",
      "internalResourceId": 1,
      "internalType": "text",
      "ipAddress": "text",
      "isExternalIngressNode": true,
      "isInternalIngressNode": true,
      "isMemberOFLoadBalancer": true,
      "label": "text",
      "labelArea": "text",
      "labelAvailabilityZone": "text",
      "labelDataCenter": "text",
      "labelRegion": "text",
      "loadbalancers": [
        {
          "id": 1,
          "memberCount": 1,
          "monitoringEnabled": true,
          "name": "text",
          "serviceId": 1,
          "status": "text"
        }
      ],
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "network": {
        "area": "text",
        "cidr": "text",
        "cloud": "text",
        "defaultNetwork": true,
        "description": "text",
        "dns": [
          {
            "alias": "text",
            "domain": "text"
          }
        ],
        "environment": "text",
        "gateway": "text",
        "id": 1,
        "ipAddress": "text",
        "ipFreeNumber": 1,
        "isIpRangePublic": true,
        "mask": "text",
        "networkShortDescription": "text",
        "region": "text",
        "scope": "text",
        "shortDescription": "text",
        "technicalId": "text",
        "usedPercent": 1
      },
      "osName": "text",
      "osType": "text",
      "parentResourceType": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "region": {
        "areas": [
          {
            "availabilityZones": [
              {
                "availabilityZoneGroup": "text",
                "datacenterId": "text",
                "defaultZone": true,
                "id": "text",
                "location": "text",
                "routable": true
              }
            ],
            "defaultArea": true,
            "id": "text",
            "location": "text",
            "regulation": "text"
          }
        ],
        "dataCenter": "text",
        "id": "text",
        "location": "text"
      },
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replication": {
        "noStoRplExplanation": "text",
        "storageClass": "text",
        "storageClassOverride": "text",
        "storageMoveInProgress": true,
        "storageMoveTicket": "text",
        "storageReplicationClass": "text"
      },
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "snapshot": {
        "changeReference": "text",
        "createdAt": "2025-07-04T04:15:11.161Z",
        "createdBy": "text",
        "description": "text",
        "expiresAt": "2025-07-04T04:15:11.161Z",
        "id": "text",
        "label": "text",
        "recoveredAt": "2025-07-04T04:15:11.161Z",
        "snapshotSize": 1
      },
      "status": "text",
      "storage": 1,
      "storageInformation": {
        "fileSystems": [
          {
            "free": 1,
            "mountingPoint": "text",
            "sizeOf": 1,
            "type": "text"
          }
        ],
        "totalSizeDisks": 1,
        "totalSizeFileSystems": 1
      },
      "storageMoveInProgress": true,
      "supportPhase": "text",
      "technology": "text",
      "type": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Create an instance

post

This method allows to create an instance.

You will have to know at the minimum :

  • where you want to host your instance (region attribute)
  • which platform you want (platform attribute)
  • name of instance (name attribute)
  • sizing of instance (resourceId attribute)
  • service in which you want to put your instance (serviceId attribute)

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /instances
{
	"name": "PINSTANCE01",
	"region": "EB4",
	"serviceId": 13,
	"platform": "deb8",
	"resourceId": "1cpu2gb"
}

This will create a Debian 8 machine (1cpu 2gb RAM) in EB4 region, named PINSTANCE01, and put it into service of ID 13.

By setting only these parameters, ITCare will use default profile of image (disk configuration) and choose most appropriate Availability Zone and network to host your instance. If you want to specify those parameters take a look at other examples in this documentation.

Response :

  {
    "id": "1333",
    "status": "IN_PROGRESS"
    
  }

With some python code, you can create instance and wait for completion like this:

instance = {
	"name": "PINSTANCE01",
	"region": "EB4",
	"serviceId": 13,
	"platform": "deb8",
	"resourceId": "1cpu2gb"
}

action = itcare.post('/api/instances', payload=instance)

while action['status']=='IN_PROGRESS':
    time.sleep(1)
    action = itcare.get('/api/actions/{}'.format(action['id']))

print action['status']

Choose target Platform and properties

You'll have to know which platform you want to create, and so use Platforms methods to properly fill in relevant attributes (disks / custom properties / allocated resources...).

Choose Availability Zone and Network

You may want to choose your availability zone and network, you can do this by adding availabilityZone and networkId parameters to your request.

To discover both availability zones and networks, you can use methods Regions, AZ, and Networks.

Authorizations
Body

Describes the instance to be created.

areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

authenticationDomainIdstringOptional

authentication domain id, if not set, will take default, example: CGDM-EMEA

availabilityZonestringOptional

Availability zone id. Refer to AZ available in List Availability Zones method. If absent, default AZ of region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

backupOffSiteEnabledbooleanOptional

Indicates if backup off site (data replicated to another region) has to be setup on instance. If absent, backup off site will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

hostname of instance. Must be unique, and fit naming rules convention., example: PEB4MYAPP01

networkIdinteger · int64Optional

Network id. Refer to networks available in List Networks method. If absent, a default network of AZ will be used.

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

id of platform (image) of instance. To discover available platforms, use ListPlatforms method, example: deb8 for Debian 8

productCodestringOptional

code of product., example: rmq11 for RabbitMQ 11

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

resourceIdstringRequired

identifier of resources (cpu/ram) that will be allocated to the instance. Use List Platforms method to see resources available for each of them., example: 1cpu2gb

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

specificRequeststringOptional

specific request to be done by an administrator. Can differ delivery of instance up to 24h., example: Could you please install .NET framework 4.5 on instance ? Thanks.

storagePoolstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/compute/instances HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 851

{
  "area": "text",
  "authenticationDomainId": "text",
  "availabilityZone": "text",
  "backupEnabled": true,
  "backupOffSiteEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "onCallSupervision": true,
  "platform": "text",
  "productCode": "text",
  "properties": [
    {
      "defaultValue": "text",
      "description": "text",
      "displayed": true,
      "editable": true,
      "key": "text",
      "mandatory": true,
      "value": "text"
    }
  ],
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "resourceId": "text",
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "specificRequest": "text",
  "storagePool": "text",
  "volumes": [
    {
      "description": "text",
      "editable": 1,
      "exclFromSnap": 1,
      "id": "data",
      "mandatory": true,
      "max": 1,
      "min": 1,
      "order": 1,
      "sizeGb": 1,
      "system": true
    }
  ]
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get snapshot of a resource. Only one active snapshot is allowed and the snapshot is kept during 3 days in our system.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/instances/{id}/snapshots HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "changeReference": "text",
  "createdAt": "2025-07-04T04:15:11.161Z",
  "createdBy": "text",
  "description": "text",
  "expiresAt": "2025-07-04T04:15:11.161Z",
  "id": "text",
  "label": "text",
  "recoveredAt": "2025-07-04T04:15:11.161Z",
  "snapshotSize": 1
}

Create a snapshot for a resource.

post
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Body
changeReferencestring · max: 10Optional

Optional change reference

descriptionstring · max: 100Optional

Snapshot description

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/compute/instances/{id}/snapshots HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "changeReference": "text",
  "description": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Recover a snapshot for a resource.

patch
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/compute/instances/{id}/snapshots HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get detailled information for an instance.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/instances/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "area": {
    "availabilityZones": [
      {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      }
    ],
    "defaultArea": true,
    "id": "text",
    "location": "text",
    "regulation": "text"
  },
  "authenticationDomain": "text",
  "availabilityZone": {
    "availabilityZoneGroup": "text",
    "datacenterId": "text",
    "defaultZone": true,
    "id": "text",
    "location": "text",
    "routable": true
  },
  "backup": {
    "backupSystem": "text",
    "filesNb": 1,
    "lastDate": "2025-07-04T04:15:11.161Z",
    "size": 1,
    "type": "text"
  },
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "imageCode": "text",
  "internalResourceId": 1,
  "internalType": "text",
  "ipAddress": "text",
  "isExternalIngressNode": true,
  "isInternalIngressNode": true,
  "isMemberOFLoadBalancer": true,
  "label": "text",
  "labelArea": "text",
  "labelAvailabilityZone": "text",
  "labelDataCenter": "text",
  "labelRegion": "text",
  "loadbalancers": [
    {
      "id": 1,
      "memberCount": 1,
      "monitoringEnabled": true,
      "name": "text",
      "serviceId": 1,
      "status": "text"
    }
  ],
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "network": {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  },
  "osName": "text",
  "osType": "text",
  "parentResourceType": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "region": {
    "areas": [
      {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      }
    ],
    "dataCenter": "text",
    "id": "text",
    "location": "text"
  },
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replication": {
    "noStoRplExplanation": "text",
    "storageClass": "text",
    "storageClassOverride": "text",
    "storageMoveInProgress": true,
    "storageMoveTicket": "text",
    "storageReplicationClass": "text"
  },
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "snapshot": {
    "changeReference": "text",
    "createdAt": "2025-07-04T04:15:11.161Z",
    "createdBy": "text",
    "description": "text",
    "expiresAt": "2025-07-04T04:15:11.161Z",
    "id": "text",
    "label": "text",
    "recoveredAt": "2025-07-04T04:15:11.161Z",
    "snapshotSize": 1
  },
  "status": "text",
  "storage": 1,
  "storageInformation": {
    "fileSystems": [
      {
        "free": 1,
        "mountingPoint": "text",
        "sizeOf": 1,
        "type": "text"
      }
    ],
    "totalSizeDisks": 1,
    "totalSizeFileSystems": 1
  },
  "storageMoveInProgress": true,
  "supportPhase": "text",
  "technology": "text",
  "type": "text"
}

Delete an existing instance

delete

This method allows to delete an instance.

Instance has to be in INACTIVE status, meaning that you have to stop it before deleting it. Use Update Instance PATCH method with stop operation prior to this deletion.

This operation cannot be undone afterwards.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

Example (no body required) :

DELETE /instances/1233

With additional change reference :

DELETE /instances/1233
{
   "changeReference": "RFC_123"
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body

Parameters when deleting a resource

changeReferencestring · max: 10Optional

Optional reference for change

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/compute/instances/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 26

{
  "changeReference": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs action on an existing instance

patch

This method allows to update an instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options to pass to operation to have the operation performed.

Below are different operations currently implemented.

Stop an Instance

Use the stop operation to perform the stop of instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

Use this method only if instance is running and is in the ACTIVE state. Otherwise a 400 status error code will be returned.

PATCH /instances/1234
{
	"operation": "stop"
}

You can also put an optional changeReference if you want ITCare keep a reference to external change management system :

PATCH /instances/1234
{
	"operation": "stop",
	"options": {
	   "changeReference": "RFC_123"
	}
}

Start an Instance

Use the start operation to perform the start of instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

Use this method only if instance is not running and is in the INACTIVE state. Otherwise a 400 status error code will be returned.

PATCH /instances/1234
{
	"operation": "start"
}

You can also put an optional changeReference if you want ITCare keep a reference to external change management system :

PATCH /instances/1234
{
	"operation": "start",
	"options": {
	   "changeReference": "RFC_123"
	}
}

Reset an Instance

Use the reset operation to perform the reset of instance.

Reset operation will perform a hard reset of instance, like power off/power on.

This operation may result in data loss, your applications and services will not be stopped gracefully.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

Use this method only if instance is running and is in the ACTIVE state. Otherwise a 400 status error code will be returned.

PATCH /instances/1234
{
	"operation": "reset"
}

You can also put an optional comment that will be display in monitoring system :

PATCH /instances/1234
{
	"operation": "reset",
	"options": {
	   "comment": "Reset instance because OS is freezed"
	}
}

Resize an Instance

Use the resize operation to perform the resize of instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

Use this method only if instance is not running and is in the INACTIVE or ACTIVE state. Otherwise a 400 status error code will be returned.

PATCH /instances/1234
{
    "operation": "resize",
    "options": {
        "sizing": "2cpu4gb",
        "changeReference": ""
    }
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the instance.

Use the state option to turn on/off monitoring.

Use the alerting option to turn on/off alerting. When alerting is desactivated, no incident will be handled when the ressource is has alerts.

This method is asynchronous (status code 202).

PATCH /instances/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "alerting": false
 }
}

Update Patch Party Statuses

Use the operation update_patch_party to manage the patch party settings of your instances.

2 options are available :

  • If the instance is to be excluded from the patch parties, an explanation must be given.
PATCH /instances/1234
{
	"operation": "update_patch_party",
	"options": {
	   "patchParty": {
	      "excluded": true,
	      "exclusionReason": "I want to handle this App. by myself"
	   }
	}
}
  • If the instance is to be included to a patch party, you can specify the group on which the instance will be patched.

There are 3 groups available defining the sequence on which the instance should be updated: 1 (First Group), 2 (Second Group) or 3 (Third Group).

If no group is set, it means that you have no preference while defining the sequences.

PATCH /instances/1234
{
	"operation": "update_patch_party",
	"options": {
	   "patchParty": {
	      "excluded": false,
	      "patchGroup": 3
	   }
	}
}

Replication management

Use the operation update_storage_replication to manage the replication settings of your instances.

2 options are available :

  • Deactivation of replication.
PATCH /instances/1234
{
	"operation": "update_storage_replication",
	"options": {
	   "state": false
	}
}
  • Activation of replication.
PATCH /instances/1234
{
	"operation": "update_storage_replication",
	"options": {
	   "state": true
	}
}
  • For production resource, if the replication is to be deactivated , an explanation must be given.
PATCH /instances/1234
{
	"operation": "update_storage_replication",
	"options": {
	   "state": true,
	   "deactivationReason": "I want it ..."
	}
}

Instance Backup Management

Use the update_backup operation to enable/disable instance backup.

Requirements to update manage backup are :

  • The platform supporting the instance must allow backup
  • Only virtual appliances are manageable For 'disable backup'
  • For production resource, a reason must be given under the 'option' attribute

2 options are available:

  • Enable backup.
PATCH /instances/1234
{
    "operation": "update_backup",
    "options": {
       "state": true
    }
}
  • Disable backup.
PATCH /instances/1234
{
    "operation": "update_backup",
    "options": {
       "state": false,
       "deactivationReason": "Because.."    
    }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/compute/instances/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get storage information of a resource.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/instances/{id}/storage HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "fileSystems": [
    {
      "free": 1,
      "mountingPoint": "text",
      "sizeOf": 1,
      "type": "text"
    }
  ],
  "totalSizeDisks": 1,
  "totalSizeFileSystems": 1
}

Get network information of a resource.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/instances/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "area": "text",
  "cidr": "text",
  "cloud": "text",
  "defaultNetwork": true,
  "description": "text",
  "dns": [
    {
      "alias": "text",
      "domain": "text"
    }
  ],
  "environment": "text",
  "gateway": "text",
  "id": 1,
  "ipAddress": "text",
  "ipFreeNumber": 1,
  "isIpRangePublic": true,
  "mask": "text",
  "networkShortDescription": "text",
  "region": "text",
  "scope": "text",
  "shortDescription": "text",
  "technicalId": "text",
  "usedPercent": 1
}

Remove snapshot from a resource. The Id of the snapshot of is retrieved using [getSnapshot](#/instances/getSnapshot of the resource)

delete
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

snapshotIdstringRequired

Snapshot Id, example: 123-snap-42

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/compute/instances/{id}/snapshots/{snapshotId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get Platforms Support Policy

get

Returns list of platforms, their current support phase and milestones concerning their phases of support.

Authorizations
Query parameters
platformstringOptional

Platform name, example: PaaS OpenSearch

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/platform/support-policy HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "category": "text",
    "comment": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "id": "text",
    "img": "text",
    "label": "text",
    "name": "text",
    "rawSupportPhase": "STANDARD,END_OF_SALES,EXTENDED,END_OF_SUPPORT",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "supportPhase": "STANDARD",
    "technology": "text"
  }
]

Measures obsolescence platforms per phase per cloud

get
Authorizations
Query parameters
cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/platform/stats/global HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "phasesStatistic": {
    "ANY_ADDITIONAL_PROPERTY": {
      "count": 1,
      "platforms": [
        {
          "count": 1,
          "label": "text",
          "name": "text",
          "resourceType": "text"
        }
      ]
    }
  }
}

Measures obsolescence of the resources per cloud

get
Authorizations
Query parameters
resourcesinteger · int64[]Optional

Resource Id, example: 1234

servicesinteger · int64[]Optional

Service Id, example: 56789

platformsstring[]Optional

Platform, example: Debian 8

phasesstring[]Optional

Support Phases, example: STANDARD,EXTENDED

startstring · date-timeOptional

Start Date (ISO8601 format), example: 2022-07-22T00:00:00.000Z

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/platform/resources-obsolescence HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "category": "text",
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "description": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "label": "text",
      "name": "text",
      "path": "text",
      "platform": "text",
      "prettyLabel": "text",
      "productName": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "status": "ACTIVE,INACTIVE,PREPARATION",
      "supportPhase": "text",
      "tags": [
        {
          "tagKey": "text",
          "tagValue": "text"
        }
      ],
      "technology": "text",
      "type": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Get products avaible in the catalog

get
Authorizations
Query parameters
typestringOptional

Type, example: KUBERNETES

cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/platform/products HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyType": "text",
    "category": "text",
    "categoryWeight": 1,
    "code": "text",
    "comment": "text",
    "configuration": {
      "topologies": [
        {
          "alwaysOn": "text",
          "cluster": "text",
          "galera": "text",
          "ha": "text",
          "replica": "text",
          "sentinel": "text",
          "single": "text",
          "standalone": "text"
        }
      ]
    },
    "edition": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "familyWeight": 1,
    "id": "text",
    "label": "text",
    "name": "text",
    "platform": "text",
    "productDisplayable": true,
    "productIsDisabled": true,
    "productIsInBetaMode": true,
    "productSkipTechnology": true,
    "productVersion": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "status": "text",
    "supportFormAvailable": true,
    "supportFormId": "text",
    "supportPhase": "text",
    "technology": "text",
    "technologyFormOnly": true,
    "technologyWeight": 1,
    "type": "text",
    "version": "text"
  }
]

Get detailled information of a Product. Storage / Sizing / Profile configuration of a product. These information are usefull while creating a Resource linked to this product

get
Authorizations
Path parameters
idstringRequired

Platform, example: cent7, ubu22

Query parameters
storagebooleanOptional

Storage specification of platform (disks / max sizes...)

sizingsbooleanOptional

Resource profiles (CPU/RAM) that can be allocated to instances.

propertiesbooleanOptional

Properties specification of platform (package / script, backup type...)

cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/platform/products/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "code": "text",
  "enforcedAuthDomain": true,
  "properties": [
    {
      "defaultValue": "text",
      "description": "text",
      "displayed": true,
      "editable": true,
      "key": "text",
      "mandatory": true,
      "value": "text"
    }
  ],
  "resources": [
    {
      "available": true,
      "id": "text",
      "optionDescrEn": "text",
      "optionDescrFr": "text",
      "optionName": "text",
      "optionOrder": "text",
      "ram": 1,
      "vcpus": 1
    }
  ],
  "storage": {
    "maxVolumes": 1,
    "minVolumeSize": 1,
    "totalSizeAuthorized": 1,
    "totalVolumesSize": 1,
    "volumes": [
      {
        "description": "text",
        "editable": 1,
        "exclFromSnap": 1,
        "id": "data",
        "mandatory": true,
        "max": 1,
        "min": 1,
        "order": 1,
        "sizeGb": 1,
        "system": true
      }
    ]
  }
}

Get regions on which the product can be instantiated.

get
Authorizations
Path parameters
idstringRequired

Platform, example: cent7, ubu22

Query parameters
cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/platform/products/{id}/regions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "areas": [
      {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      }
    ],
    "dataCenter": "text",
    "id": "text",
    "location": "text"
  }
]

Create an OpenSearch Cluster

post

This method allows to create an OpenSearch instance.

You will have to know at the minimum :

  • the area of the region where you want to host your cluster (area attribute). Areas can be available in List Regions method.
  • name of OpenSearch cluster (name attribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
  • Size of nodes in the OpenSearch cluster (nodeSizing attribute). Ex: 2cpu4gb
  • storage needed on each data node of the OpenSearch cluster (diskSize attribute). The possible values are at least 40 and maximum 1024 (representing GB).
  • how to connect to the instance (admPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • version of the OpenSearch cluster (clusterVersion attribute). Example: 1.2.3
  • On which service the OpenSearch instance belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).
  • Number of instances in the OpenSearch cluster (instanceCount attribute). Must be odd and at least be 3, recommended is 5, Maximum is 51
  • Node prefix of the OpenSearch cluster (nodePrefix attribute). 4 to 60 uppercase characters

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /opensearch
{
  "clusterVersion": "1.2.3",
  "region" : "EB",
  "area": "EB-QA",
  "az": "az",
  "name": "Test123",
  "nodeSizing": "2cpu4gb",
  "diskSize": 40,
  "networkId": 1234511,
  "serviceId": 46922,
  "admPassword": "Test123@2022",
  "instanceCount": "3",
  "nodePrefix" : "OPESTC"
}
Authorizations
Body
admPasswordstringRequired

The admin password

Pattern: ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–{}:;',?/*~$^+=<>]).{12,20}$
areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
clusterVersionstringRequired
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

diskSizeinteger · int32Required

The storage needed on each data node of the ELS cluster

instanceCountstringRequired

Number of instances to create in ELS cluster

Pattern: [13579]$
monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of els cluster

Pattern: [a-z0-9_\-]{4,60}$
networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodePrefixstringRequired

Prefix of the node names for els cluster

Pattern: [A-Z0-9-.]{4,60}$
nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/databases/opensearch HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 516

{
  "admPassword": "text",
  "area": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "clusterVersion": "text",
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "instanceCount": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodePrefix": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a OpenSearch Cluster Instance available in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500060248

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/opensearch/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "dedicatedIngest": true,
  "elsType": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "farmTopology": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "managementUrls": [
    "text"
  ],
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": 1,
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text",
  "version": "text"
}

Delete an existing OpenSearch Cluster

delete

This method allows to delete an OpenSearch instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /opensearch/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/databases/opensearch/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs update state actions to an existing OpenSearch Cluster instance

patch

This method allows to update an OpenSearch instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start OpenSearch instance

Use the start operation to start an OpenSearch instance.

Starts OpenSearch instance.

This method is synchronous (status code 202).

Example :

PATCH /opensearch/1234
{
    "operation": "start"
}

Stop OpenSearch instance

Use the stop operation to stop the nodes of the OpenSearch instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /opensearch/1234
{
	"operation":"stop"
}

Add nodes the OpenSearch instance

Use the add_nodes operation to add nodes to the OpenSearch instance. nodesCount must be even

This method is synchronous (status code 202).

PATCH /opensearch/1234
{
	"operation":"add_nodes",
	"options" : {
	  "diskSize" : 10,
	  "nodeSize" : "2cpu4gb",
	  "nodesCount": 2
	}
}

Resize OpenSearch instance

Use the resize_nodes operation to resize the sizing of the OpenSearch nodes.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /opensearch/1234
{
	"operation":"resize_nodes",
	"options" : {
	  "nodeSize" : "2cpu4gb",
	  "nodes" : ["node1"]
	}
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the cluster.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /opensearch/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the OpenSearch instance.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /opensearch/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /opensearch/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/databases/opensearch/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get an OpenSearch node information

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/opensearch/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "autoRestart": true,
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "caHostName": "text",
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "clusterId": 1,
    "comment": "text",
    "configOverwrite": true,
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "dashboards": true,
    "elsKibana": true,
    "elsType": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "masters": [
      "text"
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "nodeAttributes": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "roles": [
      "text"
    ],
    "serviceEnable": true,
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "specificConfNodeTemp": "text",
    "specificConfNodeTest": true,
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "version": "text"
  }
]

Get an OpenSearch network information

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/opensearch/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

Create a Redis DB instance

post

This method allows to create a redis instance.

You will have to know at the minimum :

  • the area of the region where you want to host your cluster (area attribute). Areas can be available in List Regions method.
  • name of redis cluster (name attribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
  • Size of nodes in the redis cluster (nodeSizing attribute). Ex: 2cpu2gb
  • storage needed on each data node of the redis cluster (diskSize attribute). The possible values are at least 40 and maximum 1024 (representing GB).
  • how to connect to the instance (admPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • version of the redis cluster (redisVersion attribute). Example: 6.2.5
  • On which service the redis instance belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).
  • Number of instances in the redis cluster (instanceCount attribute). Minimum 1 and maximum 3
  • Persistence mode of the redis cluster (persistenceMode attribute).

optional fields:

  • Availability zone of the redis cluster (az attribute).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /redis
{
  "redisVersion": "6.2.5",
  "region" : "EB",
  "area": "EB-QA",
  "az": "az",
  "name": "Test123",
  "nodeSizing": "2cpu2gb",
  "diskSize": 40,
  "networkId": 1234511,
  "serviceId": 46922,
  "admPassword": "Test123@2022",
  "instanceCount": 1,
  "persistenceMode" : "PERSISTENT"
}
Authorizations
Body
admPasswordstringRequired

The admin password

Pattern: ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–{}:;',?/*~$^+=<>]).{12,20}$
areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

azstringOptional

Availability zone of the maria DB

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

diskSizeinteger · int32Required

The storage needed on each data node of the maria DB

instanceCountinteger · int32Required

Number of instances to create for mariadb

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of Redis DB

networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

persistenceModestringRequired
platformstringRequired

Product platform of the cluster

redisVersionstringRequired
regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

tlsEnabledbooleanOptional
vmPrefixstringOptional

Prefix of the virtual machine names for Redis DB

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/databases/redis HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 562

{
  "admPassword": "text",
  "area": "text",
  "az": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "instanceCount": 1,
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "persistenceMode": "text",
  "platform": "text",
  "redisVersion": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "tlsEnabled": true,
  "vmPrefix": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a Redis DB Instance available in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500059535

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/redis/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": 1,
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "persistenceMode": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "tlsEnabled": true,
  "topology": "text",
  "type": "text",
  "url": "text",
  "version": "text"
}

Delete an existing RedisDB instance

delete

This method allows to delete a redis instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /redis/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/databases/redis/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs update state actions to an existing Redis DB instance

patch

This method allows to update a Redis instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start Redis instance

Use the start operation to start a Redis instance.

Starts kafka instance.

This method is synchronous (status code 202).

Example :

PATCH /redis/1234
{
    "operation": "start"
}

Stop Redis instance

Use the stop operation to stop the nodes of the Redis instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /redis/1234
{
	"operation":"stop"
}

Resize Redis instance

Use the resize operation to resize the nodes of the Redis instance and the instance itself.

This operation cannot be undone afterwards.

This method is asynchronous (status code 202).

PATCH /redis/1234
{
	"operation":"resize",
	"options": {
        "sizing": "2cpu4gb"
    }
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the cluster.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /redis/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the cluster.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /redis/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /redis/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/databases/redis/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a RedisDB node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/redis/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get a RedisDB network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/redis/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

Get domains by name. By default,The user's clouds are used to filter the final output

get

Gets domains by name.

By default,The user's clouds are used to filter the final output

Authorizations
Query parameters
namestringOptional
withSNIbooleanOptional
cloudsintegerOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/networking/domains HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "description": "text",
    "id": 1,
    "isManagedByCegedim": true,
    "isPublic": true,
    "name": "text",
    "sniDefault": true
  }
]

Get domain by its id.

get
Authorizations
Path parameters
domainIdinteger · int64Required

1234, example: 1234

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/networking/domains/{domainId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "description": "text",
  "id": 1,
  "isManagedByCegedim": true,
  "isPublic": true,
  "name": "text",
  "sniDefault": true
}

List Compute Networks

get
Authorizations
Query parameters
filtersstring[]Optional

Filter, example: resource01,!resource02,resource42

publicIpbooleanOptional

publicIp

environmentsstring[]Optional

Environments, example: QA

scopesstring[]Optional

Scopes, example: frontend , backend

regionsstring[]Optional

Regions, example: EB,NK

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/networking/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

List Load Balancing Networks

get

List Load Balancing Networks

This method returns the list of accessible networks from a Load balancing Zone.

Available Parameters:

  • scope query parameter to filter private, interco, internet networks. for 'frontend' and 'backend' networks, use scope=private
  • environment query parameter to filter production, non_production networks. for 'production' networks, use environment=production
  • onlyNonFull if you want only networks with available IP addresses to be listed.
  • clouds parameter (comma-separated list of long) to restrict results to specified Clouds IDs (use the /me to obtain the list of your Clouds).
Authorizations
Path parameters
idinteger · int64Required
Query parameters
scope, example: frontendstringOptional
environment, example: productionstringOptional
onlyNonFullbooleanOptional
cloudsintegerOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/networking/networks/{id}/loadbalancers-networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List actions and available actions for resources

get
Authorizations
Query parameters
resourceIdinteger · int64Optional

Resource Id, example: 123

nodeinteger · int64[]Optional

Resource/Node Ids, example: 123

Default: []
urlinteger · int64[]Optional

LB/URL Ids, example: 123

Default: []
idinteger · int64[]Optional

Resource Ids : urls or members, example: 123

Default: []
typestringOptional

Operation Type, example: available|available-nodes|in-progress|in-progress-nodes|list-actions-in-progress|list-available-actions

Default: available
Responses
200
OK
application/vnd.cegedim-it.v1+json
Responseobject[]
400
Bad Request
*/*
get
GET /itcare/operations HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {}
]

List OverDrive Instances

get
Authorizations
Query parameters
namesstring[]Optional

Names, example: overdrive1

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/storage/overdrive HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "actionsInProgress": [
        {
          "family": "text",
          "id": 1,
          "internalId": 1,
          "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
          "message": "text",
          "process": "text",
          "resourceName": "text",
          "resourceType": "text",
          "status": "SUCCESS,IN_PROGRESS,ERROR"
        }
      ],
      "availableActions": [
        {
          "available": true,
          "operation": "text",
          "unavailabilityCauses": [
            "text"
          ]
        }
      ],
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "sizing": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "type": "text",
      "url": "text",
      "version": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Create an OverDrive instance

post

This method allows to create an OverDrive instance.

You will have to know at the minimum :

  • where you want to host your instance (region attribute)
  • name of instance (name attribute)
  • sizing of the instance (sizing attribute). The possible values are : XS (Up to 50 users total), S(Up to 1M ppm), M(Up to 10M ppm), L(Up to 100M ppm), XL(More than 100M ppm)
  • how to connect to the instance (password attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • On which service the OverDrive instance belongs to (serviceId attribute).
  • Define the Drive URL to be configured in your service (driveSiteUri).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /storage/overdrive
{
	"name": "poverdrive01",
	"region": "EB",
	"sizing":"XS",
	"serviceId":"123",
	"password": "Password!!??",
	"driveSiteUri": "demo.mydrive.cegedim.cloud"
	
}
Authorizations
Body
backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

driveSiteUristringRequired

Define the Drive URL to be configured in OverDrive

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of OverDrive Instance

Pattern: [a-z0-9\-]{4,60}$
noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

passwordstringRequired

Password to connect to the OverDrive instance.

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

sizingstringRequired

Sizing. L, XL , XS, S, M. Sizing for OverDrive instances

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/storage/overdrive HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 405

{
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "driveSiteUri": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "onCallSupervision": true,
  "password": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "sizing": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get an OverDrive Instance

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/storage/overdrive/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "actionsInProgress": [
    {
      "family": "text",
      "id": 1,
      "internalId": 1,
      "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
      "message": "text",
      "process": "text",
      "resourceName": "text",
      "resourceType": "text",
      "status": "SUCCESS,IN_PROGRESS,ERROR"
    }
  ],
  "availableActions": [
    {
      "available": true,
      "operation": "text",
      "unavailabilityCauses": [
        "text"
      ]
    }
  ],
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "sizing": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text",
  "url": "text",
  "version": "text"
}

Delete an OverDrive instance

delete

This method allows to delete an Overdrive instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /storage/overdrive/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/storage/overdrive/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Update an OverDrive instance

patch

This method allows to update an Overdrive instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start Overdrive instance

Use the start operation to start an Overdrive instance.

Starts overdrive instance.

This method is synchronous (status code 202).

Example :

PATCH /storage/overdrive/1234
{
    "operation": "start"
}

Stop Overdrive instance

Use the stop operation to stop the nodes of the Overdrive instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /storage/overdrive/1234
{
	"operation":"stop"
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/storage/overdrive/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

List Matomo Instances

get
Authorizations
Query parameters
namesstring[]Optional

Names, example: matomo1

cloudsstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/analytics/matomo HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "actionsInProgress": [
        {
          "family": "text",
          "id": 1,
          "internalId": 1,
          "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
          "message": "text",
          "process": "text",
          "resourceName": "text",
          "resourceType": "text",
          "status": "SUCCESS,IN_PROGRESS,ERROR"
        }
      ],
      "availableActions": [
        {
          "available": true,
          "operation": "text",
          "unavailabilityCauses": [
            "text"
          ]
        }
      ],
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "sizing": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "type": "text",
      "url": "text",
      "version": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Create a Matomo instance

post

This method allows to create a matomo instance.

You will have to know at the minimum :

  • where you want to host your instance (region attribute)
  • name of instance (name attribute)
  • sizing of the instance (sizing attribute). The possible values are : XS (Up to 100K ppm), S(Up to 1M ppm), M(Up to 10M ppm), L(Up to 100M ppm), XL(More than 100M ppm)
  • how to connect to the instance (password attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • On which service the matomo instance belongs to (serviceId attribute).
  • Other settings (defaultWebSiteName, defaultWebUri).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /analytics/matomo
{
	"name": "pmatomo01",
	"region": "EB",
	"sizing":"XS",
	"serviceId":"123",
	"password": "Password!!??",
	"defaultWebSiteName": "ITCare",
	"defaultWebUri": "https://itcare.cegedim.cloud"
	
}
Authorizations
Body
backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

defaultWebSiteNamestringRequired

Default website name to be configured in Matomo, if left empty, a dummy value will be configured

defaultWebUristringRequired

Default website url to be configured in Matomo, if left empty, a dummy value will be configured

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of Matomo Instance

Pattern: [a-z0-9\-]{4,60}$
noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

passwordstringRequired

Password to connect to the matomo instance.

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

sizingstringRequired

Sizing. L, XL , XS, S, M. Sizing for matomo instances

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/analytics/matomo HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 434

{
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "defaultWebSiteName": "text",
  "defaultWebUri": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "onCallSupervision": true,
  "password": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "sizing": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a Matomo Instance

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/analytics/matomo/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "actionsInProgress": [
    {
      "family": "text",
      "id": 1,
      "internalId": 1,
      "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
      "message": "text",
      "process": "text",
      "resourceName": "text",
      "resourceType": "text",
      "status": "SUCCESS,IN_PROGRESS,ERROR"
    }
  ],
  "availableActions": [
    {
      "available": true,
      "operation": "text",
      "unavailabilityCauses": [
        "text"
      ]
    }
  ],
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "sizing": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text",
  "url": "text",
  "version": "text"
}

Delete a Matomo instance

delete

This method allows to delete a matomo instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /analytics/matomo/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/analytics/matomo/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Update a Matomo instance

patch

This method allows to update a matomo instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start matomo instance

Use the start operation to start a matomo instance.

Starts matomo instance.

This method is synchronous (status code 202).

Example :

PATCH /analytics/matomo/1234
{
    "operation": "start"
}

Stop matomo instance

Use the stop operation to stop the nodes of the matomo instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /analytics/matomo/1234
{
	"operation":"stop"
}

Extend matomo instance

Use the extend operation to stop the nodes of the matomo instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /analytics/matomo/1234
{
	"operation":"extend",
	"options" : {
	  "sizing" : "M"
	}
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/analytics/matomo/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

List Compute Types Hierarchy

get
Authorizations
Query parameters
allbooleanOptional

true = display all technologies, false = display only technologies on which resources are available, example: false

cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resource-types HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "name": "text",
    "skipTechnology": true,
    "types": [
      {
        "description": "text",
        "disabled": true,
        "families": [
          {
            "description": "text",
            "name": "text",
            "weight": "text"
          }
        ],
        "inBetaMode": true,
        "name": "text",
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "skipTechnology": true,
        "weight": 1
      }
    ],
    "weight": 1
  }
]

List Compute Types Hierarchy

get
Authorizations
Path parameters
typestringRequired

Type, example: LINUX, WINDOWS, SQLSERVER, APACHE_KAFKA

Query parameters
cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resource-types/{type}/technologies HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyType": "text",
    "category": "text",
    "categoryWeight": 1,
    "code": "text",
    "comment": "text",
    "configuration": {
      "topologies": [
        {
          "alwaysOn": "text",
          "cluster": "text",
          "galera": "text",
          "ha": "text",
          "replica": "text",
          "sentinel": "text",
          "single": "text",
          "standalone": "text"
        }
      ]
    },
    "edition": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "familyWeight": 1,
    "id": "text",
    "label": "text",
    "name": "text",
    "platform": "text",
    "productDisplayable": true,
    "productIsDisabled": true,
    "productIsInBetaMode": true,
    "productSkipTechnology": true,
    "productVersion": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "status": "text",
    "supportFormAvailable": true,
    "supportFormId": "text",
    "supportPhase": "text",
    "technology": "text",
    "technologyFormOnly": true,
    "technologyWeight": 1,
    "type": "text",
    "version": "text"
  }
]

List available Tags

get

Tags allows you to qualify your resources with a custom set of key-value pairs. Tags will be accessible using ITCare search.

Authorizations
Path parameters
idinteger · int64Required

Resource Id

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/tags HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "tagKey": "text",
    "tagValue": "text"
  }
]

Replaces all Tags

put

Tags allows you to qualify your resources with a custom set of key-value pairs. Tags will be accessible using ITCare search.

Authorizations
Path parameters
idinteger · int64RequiredExample: 123
Bodyobject[]

Simple key/value object to put on resources (services, instances, loadbalancers) to be able to search across resources easily, and to benefit dynamic resource groups.

tagKeystringRequired

Key of tag

tagValuestringRequired

Value of tag

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
put
PUT /itcare/compute/resources/{id}/tags HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 37

[
  {
    "tagKey": "text",
    "tagValue": "text"
  }
]
[
  {
    "tagKey": "text",
    "tagValue": "text"
  }
]

Adds created Tag on Resource

post

Tags allows you to qualify your resources with a custom set of key-value pairs. Tags will be accessible using ITCare search.

Authorizations
Path parameters
idinteger · int64RequiredExample: 123
Body

Simple key/value object to put on resources (services, instances, loadbalancers) to be able to search across resources easily, and to benefit dynamic resource groups.

tagKeystringRequired

Key of tag

tagValuestringRequired

Value of tag

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/compute/resources/{id}/tags HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 35

{
  "tagKey": "text",
  "tagValue": "text"
}
[
  {
    "tagKey": "text",
    "tagValue": "text"
  }
]

Removes Tags

delete

Tags allows you to qualify your resources with a custom set of key-value pairs. Tags will be accessible using ITCare search.

Authorizations
Path parameters
idinteger · int64RequiredExample: 123
Body

Simple key/value object to put on resources (services, instances, loadbalancers) to be able to search across resources easily, and to benefit dynamic resource groups.

tagKeystringRequired

Key of tag

tagValuestringRequired

Value of tag

Responses
204
No Content
400
Bad Request
*/*
delete
DELETE /itcare/compute/resources/{id}/tags HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 35

{
  "tagKey": "text",
  "tagValue": "text"
}

No content

Get a DNS record

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/dns-aliases HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "fqdn": "text",
    "type": "text",
    "value": "text",
    "zone": "text"
  }
]

Adds a DNS Record

post
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Body

Model to update a DNS Record

fqdnstringOptional
typestringOptional
valuestringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/compute/resources/{id}/dns-aliases HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 44

{
  "fqdn": "text",
  "type": "text",
  "value": "text"
}
[
  {
    "fqdn": "text",
    "type": "text",
    "value": "text",
    "zone": "text"
  }
]

Update attribut comment of a resource (service or instance or PaaS)

patch
Authorizations
Path parameters
idinteger · int64Required
Body
descriptionstringOptional
Responses
204
No Content
400
Bad Request
*/*
patch
PATCH /itcare/compute/resources/{id}/comments HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 22

{
  "description": "text"
}

No content

Verifies the existence of a resource

head
Authorizations
Path parameters
namestringRequired
Query parameters
typestringOptional
Responses
200
OK
400
Bad Request
*/*
head
HEAD /itcare/compute/resources/{name} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

List Compute Resources

get

Allows to list resources available in your cloud.

This endpoint could be used as a main entry to get informations about the other kind of resource types.

When the resource is retrieved, the *path* attribut allows to navigate to the right category of the resource.

For example : *path=/compute/containers/kubernetes* tells to check the sections *compute > containers > kubernetes* for more details.

Authorizations
Query parameters
servicesinteger · int64[]Optional
idsinteger · int64[]Optional

IDs, example: 123,456,789

namesstring[]Optional

Names, example: resource01,!resource02,resource42

typesstring[]Optional

Types, example: WINDOWS,AIX,LINUX

familiesstring[]Optional

Families, example: DEBIAN,CENTOS,RHEL

versionsstring[]Optional

Versions, example: DEBIAN_10,CENTOS_6,RHEL_5

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resources HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "category": "text",
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "description": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "label": "text",
      "name": "text",
      "path": "text",
      "platform": "text",
      "prettyLabel": "text",
      "productName": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "status": "ACTIVE,INACTIVE,PREPARATION",
      "supportPhase": "text",
      "tags": [
        {
          "tagKey": "text",
          "tagValue": "text"
        }
      ],
      "technology": "text",
      "type": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Get a compute Resource by its id

get

Gets a compute Resource by its Id.

A Resource is the ITCare base object.

A resource is composed of :

  • *id* : Unique identifier of the resource
  • *name* : Name of the resource
  • *serviceId* : Each resource must be linked to a service . The service is a logical entity that hosts resources per environment, application ...
  • *environment* : The environment of the resource. Can be for example 'PRODUCTION', 'QA', 'RECETTE_UAT', 'DEV' ...
  • *creationUser* : The creator of the resource
  • *creationTime* : When the resource has been created
  • *comment* : Description of the resource
  • *category* : High level categorization of the resource
  • *family* : Family of the resource belonging the category
  • *status* : status of the resource. It can be 'ACTIVE' (running), 'INACTIVE' (stopped)
  • *resourceType* : Type of the resource
  • *cloudId* : Each cloud
  • *cloudName* : name of the related cloud
  • *path* : Helper that gives a path or location about which category to find the resource for more details operations

When the resource is retrieved, the *path* attribut allows to navigate to the right category of the resource.

Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "category": "text",
  "cloudName": "text",
  "comment": "text",
  "creationTime": "text",
  "creationUser": "text",
  "description": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "label": "text",
  "name": "text",
  "path": "text",
  "platform": "text",
  "prettyLabel": "text",
  "productName": "text",
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "ACTIVE,INACTIVE,PREPARATION",
  "supportPhase": "text",
  "tags": [
    {
      "tagKey": "text",
      "tagValue": "text"
    }
  ],
  "technology": "text",
  "type": "text"
}

Get a managed url

get

Gets URLs linked to a resource. For example : URLs linked to a Load Balancer.

Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/urls HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "category": "text",
  "cloudId": 1,
  "environment": "text",
  "id": 1,
  "name": "text",
  "parentId": 1,
  "parentType": "text",
  "serviceId": 1,
  "status": "text",
  "technology": "text"
}

Get patch party policy for a resource.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/patch-policy HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "excluded": true,
  "excludedBy": "text",
  "exclusionDate": "2025-07-04T04:15:11.161Z",
  "exclusionReason": "text",
  "id": 1,
  "name": "text",
  "patchDate": "2025-07-04T04:15:11.161Z",
  "patchGroup": "text",
  "patchTag": "text"
}

Get a managed node information of the given resource

get

#managed-node

Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/parent HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "category": "text",
  "cloudId": 1,
  "environment": "text",
  "id": 1,
  "name": "text",
  "parentId": 1,
  "parentType": "text",
  "serviceId": 1,
  "status": "text",
  "technology": "text"
}

Get a resources' list of nodes

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500060340

Query parameters
typestringRequired

type, example: MESSAGE_BROKERS

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get network information of a resource

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "area": "text",
  "cidr": "text",
  "cloud": "text",
  "defaultNetwork": true,
  "description": "text",
  "dns": [
    {
      "alias": "text",
      "domain": "text"
    }
  ],
  "environment": "text",
  "gateway": "text",
  "id": 1,
  "ipAddress": "text",
  "ipFreeNumber": 1,
  "isIpRangePublic": true,
  "mask": "text",
  "networkShortDescription": "text",
  "region": "text",
  "scope": "text",
  "shortDescription": "text",
  "technicalId": "text",
  "usedPercent": 1
}

Get a resources' list of nodes

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500060340

Query parameters
typestringRequired

type, example: MESSAGE_BROKERS

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/loadbalancers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "botDefenseEnabled": true,
    "botDefenseUpdating": true,
    "category": "text",
    "certificate": {
      "certificateName": "text",
      "commonName": "text",
      "description": "text",
      "expirationDate": "text",
      "id": 1
    },
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "defaultPersistence": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "fallbackPersistence": "text",
    "family": "text",
    "healthChecks": [
      {
        "comment": "text",
        "description": "text",
        "id": 1,
        "name": "text"
      }
    ],
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "irules": [
      {
        "description": "text",
        "name": "text"
      }
    ],
    "label": "text",
    "loadBalancingMode": "text",
    "members": [
      {
        "area": {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        },
        "authenticationDomain": "text",
        "availabilityZone": {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        },
        "backup": {
          "backupSystem": "text",
          "filesNb": 1,
          "lastDate": "2025-07-04T04:15:11.161Z",
          "size": 1,
          "type": "text"
        },
        "backupPolicyDetails": {
          "backups": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "id": 1,
              "type": "text"
            }
          ],
          "policies": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "durationInHours": 1,
              "frequencies": {},
              "label": "text",
              "name": "text",
              "policyId": "text",
              "replication": true,
              "scope": "text",
              "startTime": "text",
              "timezone": "text",
              "type": "text"
            }
          ]
        },
        "backupStatus": true,
        "category": "text",
        "cloudId": 1,
        "cloudName": "text",
        "comment": "text",
        "cpu": 1,
        "creationTime": "text",
        "creationUser": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "family": "text",
        "id": 1,
        "imageCode": "text",
        "internalResourceId": 1,
        "internalType": "text",
        "ipAddress": "text",
        "isExternalIngressNode": true,
        "isInternalIngressNode": true,
        "isMemberOFLoadBalancer": true,
        "label": "text",
        "labelArea": "text",
        "labelAvailabilityZone": "text",
        "labelDataCenter": "text",
        "labelRegion": "text",
        "loadbalancers": [
          {
            "id": 1,
            "memberCount": 1,
            "monitoringEnabled": true,
            "name": "text",
            "serviceId": 1,
            "status": "text"
          }
        ],
        "metrologyUrl": "text",
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringOnCallEnabled": true,
        "monitoringRequested": true,
        "name": "text",
        "network": {
          "area": "text",
          "cidr": "text",
          "cloud": "text",
          "defaultNetwork": true,
          "description": "text",
          "dns": [
            {
              "alias": "text",
              "domain": "text"
            }
          ],
          "environment": "text",
          "gateway": "text",
          "id": 1,
          "ipAddress": "text",
          "ipFreeNumber": 1,
          "isIpRangePublic": true,
          "mask": "text",
          "networkShortDescription": "text",
          "region": "text",
          "scope": "text",
          "shortDescription": "text",
          "technicalId": "text",
          "usedPercent": 1
        },
        "osName": "text",
        "osType": "text",
        "parentResourceType": "text",
        "patchParty": {
          "excluded": true,
          "excludedBy": "text",
          "exclusionDate": "2025-07-04T04:15:11.161Z",
          "exclusionReason": "text",
          "id": 1,
          "name": "text",
          "patchDate": "2025-07-04T04:15:11.161Z",
          "patchGroup": "text",
          "patchTag": "text"
        },
        "path": "text",
        "prettyLabel": "text",
        "productCode": "text",
        "productName": "text",
        "productVersion": "text",
        "ram": 1,
        "region": {
          "areas": [
            {
              "availabilityZones": [
                {
                  "availabilityZoneGroup": "text",
                  "datacenterId": "text",
                  "defaultZone": true,
                  "id": "text",
                  "location": "text",
                  "routable": true
                }
              ],
              "defaultArea": true,
              "id": "text",
              "location": "text",
              "regulation": "text"
            }
          ],
          "dataCenter": "text",
          "id": "text",
          "location": "text"
        },
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "replication": {
          "noStoRplExplanation": "text",
          "storageClass": "text",
          "storageClassOverride": "text",
          "storageMoveInProgress": true,
          "storageMoveTicket": "text",
          "storageReplicationClass": "text"
        },
        "replicationStatus": true,
        "resourceType": "text",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "snapshot": {
          "changeReference": "text",
          "createdAt": "2025-07-04T04:15:11.161Z",
          "createdBy": "text",
          "description": "text",
          "expiresAt": "2025-07-04T04:15:11.161Z",
          "id": "text",
          "label": "text",
          "recoveredAt": "2025-07-04T04:15:11.161Z",
          "snapshotSize": 1
        },
        "status": "text",
        "storage": 1,
        "storageInformation": {
          "fileSystems": [
            {
              "free": 1,
              "mountingPoint": "text",
              "sizeOf": 1,
              "type": "text"
            }
          ],
          "totalSizeDisks": 1,
          "totalSizeFileSystems": 1
        },
        "storageMoveInProgress": true,
        "supportPhase": "text",
        "technology": "text",
        "type": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "nodeCount": 1,
    "parentResource": {
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "type": "text"
    },
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "protocols": [
      {
        "comment": "text",
        "isCertificateRequired": true,
        "name": "text",
        "order": 1,
        "persistence": true,
        "port": 1,
        "profileNoPersistenceNoRedirect": "text",
        "profileNoPersistenceOnly": "text",
        "profileNoPersistenceRedirect": "text",
        "profilePersistenceNoRedirect": "text",
        "profilePersistenceOnly": "text",
        "profilePersistenceRedirect": "text",
        "protocol": "text",
        "redirectToHttps": true
      }
    ],
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "securityProfile": {
      "comment": "text",
      "description": "text",
      "enforcement": "text",
      "id": "text",
      "name": "text",
      "profile": "text",
      "template": "text",
      "whiteList": [
        {
          "comment": "text",
          "ip": "text",
          "url": "text"
        }
      ]
    },
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snatAutomap": true,
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "urls": [
      {
        "comment": "text",
        "creationTime": "text",
        "creationUser": "text",
        "description": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "id": 1,
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringMode": "text",
        "monitoringOnCallEnabled": true,
        "name": "text",
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "specificChecks": [
          {
            "name": "text",
            "parameter": {
              "authentification": {
                "password": "text",
                "user": "text"
              },
              "criticalContent": "text",
              "criticalStatus": "text",
              "expectedContent": "text",
              "headers": [
                {
                  "key": "text",
                  "value": "text"
                }
              ],
              "method": "text",
              "parameters": [
                {
                  "key": "text",
                  "value": "text"
                }
              ],
              "path": "text",
              "port": 1,
              "prefix": "text",
              "protocol": "text",
              "warningContent": "text"
            }
          }
        ],
        "status": "text",
        "supportPhase": "text",
        "tags": [
          {
            "tagKey": "text",
            "tagValue": "text"
          }
        ],
        "type": "text"
      }
    ]
  }
]

List the action history of a resource.

get

Retrieves all operations and events that occurs on a resource : start, stop, monitoring operations ...

Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Query parameters
actionsstring[]Optional

Actions, example: enable_monitoring

statusesstring[]Optional

Statuses, example: SUCCESS

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/history HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "completedAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
    "message": "text",
    "process": "text",
    "resourceName": "text",
    "resourceType": "text",
    "status": "SUCCESS,IN_PROGRESS,ERROR",
    "submittedAt": "2025-07-04T04:15:11.161Z",
    "submittedBy": "text"
  }
]

Get networks information of a farm resource.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/farm-networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

Get a resource backup policy details

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resources/{id}/backup-policies HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "backups": [
    {
      "backupLastDate": "2025-07-04T04:15:11.161Z",
      "backupSize": 1,
      "id": 1,
      "type": "text"
    }
  ],
  "policies": [
    {
      "backupLastDate": "2025-07-04T04:15:11.161Z",
      "backupSize": 1,
      "durationInHours": 1,
      "frequencies": {},
      "label": "text",
      "name": "text",
      "policyId": "text",
      "replication": true,
      "scope": "text",
      "startTime": "text",
      "timezone": "text",
      "type": "text"
    }
  ]
}

List actions and available actions for resources

get
Authorizations
Query parameters
resourceIdinteger · int64Optional

Resource Id, example: 123

nodeinteger · int64[]Optional

Resource/Node Ids, example: 123

Default: []
typestringOptional

Operation Type, example: available|available-nodes|in-progress|in-progress-nodes|list-actions-in-progress|list-available-actions

Default: available
Responses
200
OK
application/vnd.cegedim-it.v1+json
Responseobject[]
400
Bad Request
*/*
get
GET /itcare/compute/resources/operations HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {}
]

Measures resource types count resources per cloud, Measures obsolescence of the consummable resources per cloud

get
Authorizations
Query parameters
servicesinteger · int64[]Optional

Service Ids, example: 1234

environmentsstring[]Optional

Environment, example: PRODUCTION,QA

typesstring[]Optional

Technologies of resource. For exemple LINUX,KUBERNETES

consummablebooleanOptional

Count statistic with uncategorized types

kindstringOptional

global|count|obsolescence|service|network, example: global

startstring · date-timeOptional

Start Date (ISO8601 format), example: 2022-07-22T00:00:00.000Z

cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resources/metrics HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "backupGb": 1,
  "coresCount": 1,
  "count": 1,
  "instancesCount": 1,
  "phasesDistribution": {
    "ANY_ADDITIONAL_PROPERTY": 1
  },
  "ramGb": 1,
  "score": 1,
  "servicesCount": 1,
  "storageGb": 1
}

Delete a DNS Record

delete
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

fqdnstringRequired

FQDN to delete, example: my.fqdn.cegedim.cloud

Responses
200
OK
400
Bad Request
*/*
delete
DELETE /itcare/compute/resources/{id}/dns-aliases/{fqdn} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Get a list of the resources excluded from Patch Party

get

This method allows to update the partch party informations related to the given service.

Structure of payload is generic and describes :

  • an array containing the patch party configuration to apply for each resource of the given service
  • If the resource is to be excluded from the patch parties, an explanation must be given.
  • If the resource is to be included to the patch parties, an patchGroup should be given unless the resource is part of a cluster.

Update Patch Party Statuses

PATCH /services/1234/patch-policies
[
    {
        "resourceId": 500079802,
        "excluded": false,
        "exclusionReason": "I don't want to include this resource"
    },
    {
        "resourceId": 500079545,
        "excluded": true,
        "patchGroup": "2"
    },
    {
        "resourceId": 500057033,
        "excluded": false,
        "exclusionReason": "Wrong patch group is set",
        "patchGroup": "1c"
    },
    {
        "resourceId": 500057055,
        "excluded": false,
        "patchGroup": "1"
    }
]
  • The response will give the status of all the submitted resources, for example :
[
    {
        "status": "FAILED",
        "message": "The patch group is only allowed when the farm has one member",
        "id": -1,
        "internalId": 500057055
    },
    {
        "status": "IN_PROGRESS",
        "message": "Include PatchParty SQLServer rhutsql20",
        "process": "INCLUDE_PATCHPARTY",
        "id": 500079545,
        "lastUpdatedAt": "2023-11-16T11:53:42.888+00:00"
    },
    {
        "status": "FAILED",
        "message": "Wrong patch party group set",
        "id": -1,
        "internalId": 500057033
    },
    {
        "id": 202
    }
]

There are 3 groups available defining the sequence on which the instance should be updated: 1 (First Group), 2 (Second Group) or 3 (Third Group).

If no group is set, it means that you have no preference while defining the sequences.

Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
withHistorybooleanOptional

boolean flag to fetch history details for every ci

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/patch-policies HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  }
]

Update patch party configuration for resources for a service

patch
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Bodyobject[]

Update Patch party configuration for resources of a service

excludedbooleanOptional
exclusionReasonstringOptional
patchGroupstringOptional
resourceIdinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/compute/services/{id}/patch-policies HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 79

[
  {
    "excluded": true,
    "exclusionReason": "text",
    "patchGroup": "text",
    "resourceId": 1
  }
]
[
  {
    "family": "text",
    "id": 1,
    "internalId": 1,
    "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
    "message": "text",
    "process": "text",
    "resourceName": "text",
    "resourceType": "text",
    "status": "SUCCESS,IN_PROGRESS,ERROR"
  }
]

List Compute Resources

get
Authorizations
Query parameters
namesstring[]Optional

Names, example: resource01,!resource02,resource42

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

directionstringOptional
cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/services HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "advancedMonitoringAllowed": true,
      "cloud": "text",
      "cloudId": 1,
      "comment": "text",
      "environment": "text",
      "id": 1,
      "key": "text",
      "name": "text",
      "relations": {
        "dependencies": [
          {
            "advancedMonitoringAllowed": true,
            "cloud": "text",
            "cloudId": 1,
            "comment": "text",
            "environment": "text",
            "id": 1,
            "key": "text",
            "name": "text",
            "relations": "[Circular Reference]",
            "smsSubscribed": true,
            "status": "ACTIVE,PREPARATION"
          }
        ],
        "impacts": [
          {
            "advancedMonitoringAllowed": true,
            "cloud": "text",
            "cloudId": 1,
            "comment": "text",
            "environment": "text",
            "id": 1,
            "key": "text",
            "name": "text",
            "relations": "[Circular Reference]",
            "smsSubscribed": true,
            "status": "ACTIVE,PREPARATION"
          }
        ]
      },
      "smsSubscribed": true,
      "status": "ACTIVE,PREPARATION"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

List the action history of a service. Retrieves all operations / events that occurs on a resource : start, stop, monitoring operations ...

get
Authorizations
Path parameters
serviceIdinteger · int64Required

Service Id, example: 500063721

Query parameters
actionsstring[]Optional

Actions, example: enable_monitoring

statusesstring[]Optional

Statuses, example: SUCCESS

namesstring[]Optional

Names, example: REBITTEST01

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{serviceId}/history HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "completedAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
    "message": "text",
    "process": "text",
    "resourceName": "text",
    "resourceType": "text",
    "status": "SUCCESS,IN_PROGRESS,ERROR",
    "submittedAt": "2025-07-04T04:15:11.161Z",
    "submittedBy": "text"
  }
]

Get detailed information of a service by its Id

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "advancedMonitoringAllowed": true,
  "cloud": "text",
  "cloudId": 1,
  "comment": "text",
  "environment": "text",
  "id": 1,
  "key": "text",
  "name": "text",
  "relations": {
    "dependencies": [
      {
        "advancedMonitoringAllowed": true,
        "cloud": "text",
        "cloudId": 1,
        "comment": "text",
        "environment": "text",
        "id": 1,
        "key": "text",
        "name": "text",
        "relations": {
          "dependencies": [
            "[Circular Reference]"
          ],
          "impacts": [
            "[Circular Reference]"
          ]
        },
        "smsSubscribed": true,
        "status": "ACTIVE,PREPARATION"
      }
    ],
    "impacts": [
      {
        "advancedMonitoringAllowed": true,
        "cloud": "text",
        "cloudId": 1,
        "comment": "text",
        "environment": "text",
        "id": 1,
        "key": "text",
        "name": "text",
        "relations": {
          "dependencies": [
            "[Circular Reference]"
          ],
          "impacts": [
            "[Circular Reference]"
          ]
        },
        "smsSubscribed": true,
        "status": "ACTIVE,PREPARATION"
      }
    ]
  },
  "smsSubscribed": true,
  "status": "ACTIVE,PREPARATION"
}

Get Resources related to Storage (e.g : Glusterfs ...) of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: devvcaglfs02

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

sizesstringOptional

Sizing of the resource, example: 2cpu4gb

nodeCountinteger · int32Optional

Number of nodes, example: 2

vipstringOptional

IP Address, ex: 10.10.10.10

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/storage HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "label": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "nodeCount": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "sizing": "text",
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "topology": "text",
    "type": "text",
    "version": "text",
    "virtualIp": "text",
    "volumeCount": "text"
  }
]

Get service statistics such as number of Computable items linked to the service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/stats HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "ANY_ADDITIONAL_PROPERTY": 1
}

Get a service Resources List. It is possible to filter by category : See the '/resource-types' endpoint for all available options

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: REBMYAPP01,REBMYSRV

categoriesstring[]Optional

Categories, example: INSTANCES,APPLICATION_SERVERS,LOAD_BALANCERS

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/resources HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "label": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get Relations of a service : dependencies and impacts

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/relations HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "dependencies": [
    {
      "advancedMonitoringAllowed": true,
      "cloud": "text",
      "cloudId": 1,
      "comment": "text",
      "environment": "text",
      "id": 1,
      "key": "text",
      "name": "text",
      "relations": {
        "dependencies": [
          {
            "advancedMonitoringAllowed": true,
            "cloud": "text",
            "cloudId": 1,
            "comment": "text",
            "environment": "text",
            "id": 1,
            "key": "text",
            "name": "text",
            "relations": "[Circular Reference]",
            "smsSubscribed": true,
            "status": "ACTIVE,PREPARATION"
          }
        ],
        "impacts": [
          {
            "advancedMonitoringAllowed": true,
            "cloud": "text",
            "cloudId": 1,
            "comment": "text",
            "environment": "text",
            "id": 1,
            "key": "text",
            "name": "text",
            "relations": "[Circular Reference]",
            "smsSubscribed": true,
            "status": "ACTIVE,PREPARATION"
          }
        ]
      },
      "smsSubscribed": true,
      "status": "ACTIVE,PREPARATION"
    }
  ],
  "impacts": [
    {
      "advancedMonitoringAllowed": true,
      "cloud": "text",
      "cloudId": 1,
      "comment": "text",
      "environment": "text",
      "id": 1,
      "key": "text",
      "name": "text",
      "relations": "[Circular Reference]",
      "smsSubscribed": true,
      "status": "ACTIVE,PREPARATION"
    }
  ]
}

Get a service Relations Stats: counts of dependencies and impacts of service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/relations/stats HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "dependencies": 1,
  "impacts": 1
}

Get NetworkCluster list of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: PET1

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/network-clusters HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "allowMonitoringDisplay": true,
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "label": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "nodeCount": 1,
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "sizing": "text",
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "version": "text"
  }
]

Get Managed DataBases of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: www.cegedim.com,www.egypt.eg

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/managed-databases HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "backupSystem": "text",
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "drpClass": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "label": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "nodeCount": 1,
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "sizing": "text",
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "topology": "text",
    "type": "text",
    "version": "text"
  }
]

Get LOADBALANCERS of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: www.cegedim.com,www.egypt.eg

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

nodesinteger · int32Optional

Number of Members, example: 2

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/loadbalancers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "botDefenseEnabled": true,
    "botDefenseUpdating": true,
    "category": "text",
    "certificate": {
      "certificateName": "text",
      "commonName": "text",
      "description": "text",
      "expirationDate": "text",
      "id": 1
    },
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "defaultPersistence": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "fallbackPersistence": "text",
    "family": "text",
    "healthChecks": [
      {
        "comment": "text",
        "description": "text",
        "id": 1,
        "name": "text"
      }
    ],
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "irules": [
      {
        "description": "text",
        "name": "text"
      }
    ],
    "label": "text",
    "loadBalancingMode": "text",
    "members": [
      {
        "area": {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        },
        "authenticationDomain": "text",
        "availabilityZone": {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        },
        "backup": {
          "backupSystem": "text",
          "filesNb": 1,
          "lastDate": "2025-07-04T04:15:11.161Z",
          "size": 1,
          "type": "text"
        },
        "backupPolicyDetails": {
          "backups": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "id": 1,
              "type": "text"
            }
          ],
          "policies": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "durationInHours": 1,
              "frequencies": {},
              "label": "text",
              "name": "text",
              "policyId": "text",
              "replication": true,
              "scope": "text",
              "startTime": "text",
              "timezone": "text",
              "type": "text"
            }
          ]
        },
        "backupStatus": true,
        "category": "text",
        "cloudId": 1,
        "cloudName": "text",
        "comment": "text",
        "cpu": 1,
        "creationTime": "text",
        "creationUser": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "family": "text",
        "id": 1,
        "imageCode": "text",
        "internalResourceId": 1,
        "internalType": "text",
        "ipAddress": "text",
        "isExternalIngressNode": true,
        "isInternalIngressNode": true,
        "isMemberOFLoadBalancer": true,
        "label": "text",
        "labelArea": "text",
        "labelAvailabilityZone": "text",
        "labelDataCenter": "text",
        "labelRegion": "text",
        "loadbalancers": [
          {
            "id": 1,
            "memberCount": 1,
            "monitoringEnabled": true,
            "name": "text",
            "serviceId": 1,
            "status": "text"
          }
        ],
        "metrologyUrl": "text",
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringOnCallEnabled": true,
        "monitoringRequested": true,
        "name": "text",
        "network": {
          "area": "text",
          "cidr": "text",
          "cloud": "text",
          "defaultNetwork": true,
          "description": "text",
          "dns": [
            {
              "alias": "text",
              "domain": "text"
            }
          ],
          "environment": "text",
          "gateway": "text",
          "id": 1,
          "ipAddress": "text",
          "ipFreeNumber": 1,
          "isIpRangePublic": true,
          "mask": "text",
          "networkShortDescription": "text",
          "region": "text",
          "scope": "text",
          "shortDescription": "text",
          "technicalId": "text",
          "usedPercent": 1
        },
        "osName": "text",
        "osType": "text",
        "parentResourceType": "text",
        "patchParty": {
          "excluded": true,
          "excludedBy": "text",
          "exclusionDate": "2025-07-04T04:15:11.161Z",
          "exclusionReason": "text",
          "id": 1,
          "name": "text",
          "patchDate": "2025-07-04T04:15:11.161Z",
          "patchGroup": "text",
          "patchTag": "text"
        },
        "path": "text",
        "prettyLabel": "text",
        "productCode": "text",
        "productName": "text",
        "productVersion": "text",
        "ram": 1,
        "region": {
          "areas": [
            {
              "availabilityZones": [
                {
                  "availabilityZoneGroup": "text",
                  "datacenterId": "text",
                  "defaultZone": true,
                  "id": "text",
                  "location": "text",
                  "routable": true
                }
              ],
              "defaultArea": true,
              "id": "text",
              "location": "text",
              "regulation": "text"
            }
          ],
          "dataCenter": "text",
          "id": "text",
          "location": "text"
        },
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "replication": {
          "noStoRplExplanation": "text",
          "storageClass": "text",
          "storageClassOverride": "text",
          "storageMoveInProgress": true,
          "storageMoveTicket": "text",
          "storageReplicationClass": "text"
        },
        "replicationStatus": true,
        "resourceType": "text",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "snapshot": {
          "changeReference": "text",
          "createdAt": "2025-07-04T04:15:11.161Z",
          "createdBy": "text",
          "description": "text",
          "expiresAt": "2025-07-04T04:15:11.161Z",
          "id": "text",
          "label": "text",
          "recoveredAt": "2025-07-04T04:15:11.161Z",
          "snapshotSize": 1
        },
        "status": "text",
        "storage": 1,
        "storageInformation": {
          "fileSystems": [
            {
              "free": 1,
              "mountingPoint": "text",
              "sizeOf": 1,
              "type": "text"
            }
          ],
          "totalSizeDisks": 1,
          "totalSizeFileSystems": 1
        },
        "storageMoveInProgress": true,
        "supportPhase": "text",
        "technology": "text",
        "type": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "nodeCount": 1,
    "parentResource": {
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "type": "text"
    },
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "protocols": [
      {
        "comment": "text",
        "isCertificateRequired": true,
        "name": "text",
        "order": 1,
        "persistence": true,
        "port": 1,
        "profileNoPersistenceNoRedirect": "text",
        "profileNoPersistenceOnly": "text",
        "profileNoPersistenceRedirect": "text",
        "profilePersistenceNoRedirect": "text",
        "profilePersistenceOnly": "text",
        "profilePersistenceRedirect": "text",
        "protocol": "text",
        "redirectToHttps": true
      }
    ],
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "securityProfile": {
      "comment": "text",
      "description": "text",
      "enforcement": "text",
      "id": "text",
      "name": "text",
      "profile": "text",
      "template": "text",
      "whiteList": [
        {
          "comment": "text",
          "ip": "text",
          "url": "text"
        }
      ]
    },
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snatAutomap": true,
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "urls": [
      {
        "comment": "text",
        "creationTime": "text",
        "creationUser": "text",
        "description": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "id": 1,
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringMode": "text",
        "monitoringOnCallEnabled": true,
        "name": "text",
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "specificChecks": [
          {
            "name": "text",
            "parameter": {
              "authentification": {
                "password": "text",
                "user": "text"
              },
              "criticalContent": "text",
              "criticalStatus": "text",
              "expectedContent": "text",
              "headers": [
                {
                  "key": "text",
                  "value": "text"
                }
              ],
              "method": "text",
              "parameters": [
                {
                  "key": "text",
                  "value": "text"
                }
              ],
              "path": "text",
              "port": 1,
              "prefix": "text",
              "protocol": "text",
              "warningContent": "text"
            }
          }
        ],
        "status": "text",
        "supportPhase": "text",
        "tags": [
          {
            "tagKey": "text",
            "tagValue": "text"
          }
        ],
        "type": "text"
      }
    ]
  }
]

Get K8sContainers of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: REBMYAPP01,REBMYSRV

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

versionsstring[]Optional

Versions, example: EB,ET,NK

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/kubernetes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "allowMonitoringDisplay": true,
    "availableAZs": [
      "text"
    ],
    "availableDCs": [
      "text"
    ],
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "ingressProvider": "NGINX",
    "internalResourceId": 1,
    "internalType": "text",
    "label": "text",
    "labelAreaList": [
      "text"
    ],
    "labelRegion": "text",
    "managementUrl": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "nodeCount": 1,
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "status": "text",
    "supportPhase": "text",
    "supportsHAMode": true,
    "technicalId": "text",
    "technology": "text",
    "topology": "text",
    "type": "text",
    "version": "text",
    "versionDetailed": "text"
  }
]

Get INSTANCES of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: REBMYAPP01,REBMYSRV

familiesstring[]Optional

Families, example: DEBIAN,RHEL

backupbooleanOptional

Backup

drpbooleanOptional

Drp

withManagedNodesbooleanOptional

withManagedNodes

withApplicationServersbooleanOptional

withApplicationServers

withOracleDbsbooleanOptional

withOracleDbs

withMongoNodeJsbooleanOptional

withMongoNodeJs

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/instances HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get Hardware list of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: PET1

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/hardwares HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "dc": "text",
    "endOfCoverDate": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "ip": "text",
    "label": "text",
    "location": "text",
    "maintenanceType": "text",
    "metrologyUrl": "text",
    "model": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "rack": "text",
    "region": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serial": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "status": "text",
    "sticker": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get MessageBrokers of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Broker name, example: deblaprmq01

statusesstring[]Optional

Broker status, example: ACTIVE

versionsstring[]Optional

Broker version, example: 3.9

sizesstring[]Optional

Broker size, example: 4cpu8gb

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/brokers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "label": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "nodeCount": 1,
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "sizing": "text",
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "topology": "text",
    "type": "text",
    "version": "text"
  }
]

Get Application servers of a service

get
Authorizations
Path parameters
idinteger · int64Required

Service Id, example: 44411

Query parameters
namesstring[]Optional

Names, example: REBMYAPP01,REBMYSRV

backupbooleanOptional

Backup

drpbooleanOptional

Drp

statusesstring[]Optional

Statuses, example: ACTIVE,INACTIVE,PREPARATION

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/application-servers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

List actions in progress for a list of resources of a service by category. No category means all resources of the service

get
Authorizations
Path parameters
idinteger · int64Required
Query parameters
categorystringOptional

Category, example: INSTANCES

Default: ""
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/services/{id}/actions-in-progress HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "family": "text",
    "id": 1,
    "internalId": 1,
    "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
    "message": "text",
    "process": "text",
    "resourceName": "text",
    "resourceType": "text",
    "status": "SUCCESS,IN_PROGRESS,ERROR"
  }
]

List managed databases

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

typesstring[]Optional

Types, example: WINDOWS,AIX,LINUX

familiesstring[]Optional

Families, example: DEBIAN,CENTOS,RHEL

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

restorebooleanOptional

Filter List for Restore

versioninteger · int32Optional

Database Version, example: 11

monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

backupStatusbooleanOptional

Filter list by backup status

recoveryStatusbooleanOptional

Filter list by DRP status

includedInPatchPartybooleanOptional

Filter list by patch party status

topologiesstring[]Optional

Topology, example: AlwaysOn, Galera, Replica Set, Cluster, Standalone, HA, etc..

versionsstring[]Optional

Version, example: 2.11.0, 2022 EE, etc...

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/databases HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "backupSystem": "text",
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "drpClass": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "nodeCount": 1,
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "sizing": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "topology": "text",
      "type": "text",
      "version": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Create a MariaDB instance

post

This method allows to create a Maria DB instance.

You will have to know at the minimum :

  • the area of the region where you want to host your cluster (area attribute). Areas can be available in List Regions method.
  • name of Maria DB cluster (name attribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
  • Size of nodes in the maria DB cluster (nodeSizing attribute). Ex: 2cpu2gb
  • storage needed on each data node of the Maria DB cluster (diskSize attribute). The possible values are at least 40 and maximum 1024 (representing GB).
  • how to connect to the instance (admPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • version of the Maria DB cluster (Maria DBVersion attribute). Example: 13
  • On which service the Maria DB instance belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).
  • Number of instances in the Maria DB cluster (instanceCount attribute). Minimum 1 and maximum 3
  • topology of the Maria DB cluster (topology attribute). Either single or cluster

optional fields:

  • Availability zone of the Maria DB cluster (az attribute).
  • TLS enabled boolean for the redis cluster (tlsEnabled attribute).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /mariadb
{
  "version": "10.6",
  "region" : "EB",
  "area": "EB-QA",
  "az": "az",
  "name": "Test123",
  "nodeSizing": "2cpu2gb",
  "diskSize": 40,
  "networkId": 1234511,
  "serviceId": 46922,
  "admPassword": "Test123@2022",
  "instanceCount": 1,
  "topology" : "SINGLE"
}
Authorizations
Body
admPasswordstringRequired

The admin password

Pattern: ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–{}:;',?/*~$^+=<>]).{12,20}$
areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

authenticationDomainstringOptional
azstringOptional

Availability zone of the maria DB

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

diskSizeinteger · int32Required

The storage needed on each data node of the maria DB

instanceCountinteger · int32Required

Number of instances to create for mariadb

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of maria DB

Pattern: [a-z0-9\-]{4,60}$
networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

topologystring · enumRequiredPossible values:
versionstringOptional

Version of maria DB cluster

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/databases/mariadb HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 546

{
  "admPassword": "text",
  "area": "text",
  "authenticationDomain": "text",
  "az": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "instanceCount": 1,
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "topology": "SINGLE",
  "version": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a MariaDB Instance available in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

Id, example: 500062133

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/mariadb/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": 1,
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "topology": "text",
  "type": "text",
  "url": "text",
  "version": "text"
}

Delete an existing MariaDB instance

delete

This method allows to delete a Maria DB instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /mariadb/123

Authorizations
Path parameters
idinteger · int64Required

Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/databases/mariadb/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs update state actions to an existing MariaDB instance

patch

This method allows to update a MariaDB instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start MariaDB instance

Use the start operation to start a MariaDB instance.

Starts kafka instance.

This method is synchronous (status code 202).

Example :

PATCH /mariadb/1234
{
    "operation": "start"
}

Stop MariaDB instance

Use the stop operation to stop the nodes of the MariaDB instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /compute/databases/mariadb/1234
{
	"operation":"stop"
}

Resize MariaDB instance

Use the resize operation to resize the sizing of the MariaDB instance.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /compute/databases/mariadb/1234
{
	"operation":"resize",
	"options" : {
	  "sizing" : "2cpu4gb"
	}
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the MariaDB instance.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /mariadb/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan for the MariaDB instance.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /mariadb/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /mariadb/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required

Id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/databases/mariadb/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a MariaDB node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/mariadb/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "initialized": true,
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "version": "text"
  }
]

Get a MariaDB network information

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/mariadb/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List SQLServer

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/sqlserver HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "agOptions": {
        "agListener": "text",
        "agListenerIp": "text",
        "agName": "text",
        "agWitness": "text"
      },
      "allowMonitoringDisplay": true,
      "area": {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      },
      "availabilityZone": {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      },
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "network": {
        "area": "text",
        "cidr": "text",
        "cloud": "text",
        "defaultNetwork": true,
        "description": "text",
        "dns": [
          {
            "alias": "text",
            "domain": "text"
          }
        ],
        "environment": "text",
        "gateway": "text",
        "id": 1,
        "ipAddress": "text",
        "ipFreeNumber": 1,
        "isIpRangePublic": true,
        "mask": "text",
        "networkShortDescription": "text",
        "region": "text",
        "scope": "text",
        "shortDescription": "text",
        "technicalId": "text",
        "usedPercent": 1
      },
      "nodeCount": 1,
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "region": {
        "areas": [
          {
            "availabilityZones": [
              {
                "availabilityZoneGroup": "text",
                "datacenterId": "text",
                "defaultZone": true,
                "id": "text",
                "location": "text",
                "routable": true
              }
            ],
            "defaultArea": true,
            "id": "text",
            "location": "text",
            "regulation": "text"
          }
        ],
        "dataCenter": "text",
        "id": "text",
        "location": "text"
      },
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "sizing": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "topology": "text",
      "type": "text",
      "version": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Create a SQL server instance

post

This method allows to create a SQL Server 2022 platform.

You will have to know at the minimum :

  • name of the SQL server (name attribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
  • storage needed on each disk of the SQL server (volumes attribute). Initially, 5 disks are allocated and you can create one more. The first disk with id disk0 represents the "C: System", its maximum possible value is 70 and minimum is 1 (representing GB). disk1 represents "D: Root Instance", disk2 represents "E: User Databases", disk 3 represents "F: User Log" and disk4 represents "G: TempDB". The maximum possible value for these disks is 4096 and the minimum is 10 (representing GB).
  • password to connect to the server (customerPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 8.
  • On which service the SQL server belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).
  • the area where you want to host your cluster (area attribute).
  • the database collation you want to use (collation attribute).
  • the SQL server edition (edition attribute) whether it's "STD" or "ENT"

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

optional fields:

  • Availability zone of the SQL server (az attribute) default az of area will be used if not provided
  • Authentication domain (authenticationDomainId attribute)
  • Whether SQL server is cluster AlwaysOn or standalone (alwaysOn attribute) default is false
  • Installing SQL Server Integration Services (SSIS) (ssis attribute) default is false
  • Installing SQL Server Reporting Services (SSRS) (ssrs attribute) default is false
  • Installing SQL Server Analysis Services (SSAS) (ssas attribute) default is false
  • Modelisation type (asServerModeStd attribute) which will be considered only if ssas is true
  • Collation for Analysis Services (asCollation attribute) which will be considered only if ssas is true
  • Whether Full-Text search is enabled or not (fullText attribute) default is false
  • Availability mode when sql server is cluster AlwaysOn (availabilityMode attribute)
  • Failover mode when sql server is cluster AlwaysOn (failoverMode attribute)
  • Readable secondary when sql server is cluster AlwaysOn (readableSecondary attribute)
  • Witness when sql server is cluster AlwaysOn (witness attribute)
  • Listener name when sql server is cluster AlwaysOn (listenerName attribute)
POST /sqlserver
{
   "name":"RSQL22",
   "nodeSizing":"2cpu8gb",
   "volumes":[
      {
         "id":"disk3",
         "sizeGb":10
      },
      {
         "id":"disk4",
         "sizeGb":10
      },
      {
         "id":"disk2",
         "sizeGb":30
      },
      {
         "id":"disk1",
         "sizeGb":30
      },
      {
         "id":"disk0",
         "sizeGb":70
      }
   ],
   "area":"EB-QA",
   "customerPassword":"P@ssw0rd",
   "collation":"French_BIN",
   "edition":"STD",
   "serviceId":2423,
   "networkId":5000802
}
Authorizations
Body
alwaysOnbooleanOptional

Cluster/Basic Always On, example: true

areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

asCollactionstringOptional

Collation for Analysis Services

asServerModeEntstringOptional

Modelisation type

asServerModeStdstringOptional

Modelisation type, example: TABULAR

authenticationDomainIdstringOptional

authentication domain id, example: CGDM-EMEA

availabilityModestringOptional

Cluster availability mode, example: Synchronous_commit

azstringRequired

Availability zone of SQL Server

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
collationstringRequired

Database Collation, example: French_BIN

customerPasswordstringRequired

Customer Password

dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

editionstringRequired

SQL Server edition, example: ENT

failoverModestringOptional

Cluster failover mode, example: Read-intent_only

fullTextbooleanOptional

Whether Full-Text search is enabled or not

listenerNamestringOptional

Cluster listener name, example: rhusqllsnr01

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of SQL Server

networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodeCountinteger · int32Optional

cluster nodes number, example: 3

nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

prefixstringOptional

Prefix name of SQL Server

readableSecondarystringOptional

Cluster readable secondary, example: YES, NO, READ_ONLY

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

specificRequeststringOptional

specific request to be done by an administrator. Can differ delivery of instance up to 24h., example: Could you please install .NET framework 4.5 on instance ? Thanks.

ssasbooleanOptional

SQL Server Analysis Services (SSAS)

ssisbooleanOptional

SQL Server Integration Services (SSIS)

ssrsbooleanOptional

SQL Server Reporting Services (SSRS)

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/databases/sqlserver HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 958

{
  "alwaysOn": true,
  "area": "text",
  "asCollaction": "text",
  "asServerModeEnt": "text",
  "asServerModeStd": "text",
  "authenticationDomainId": "text",
  "availabilityMode": "text",
  "az": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "collation": "text",
  "customerPassword": "text",
  "dbBackupPolicyId": "text",
  "edition": "text",
  "failoverMode": "text",
  "fullText": true,
  "listenerName": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeCount": 1,
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "prefix": "text",
  "readableSecondary": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "specificRequest": "text",
  "ssas": true,
  "ssis": true,
  "ssrs": true,
  "volumes": [
    {
      "description": "text",
      "editable": 1,
      "exclFromSnap": 1,
      "id": "data",
      "mandatory": true,
      "max": 1,
      "min": 1,
      "order": 1,
      "sizeGb": 1,
      "system": true
    }
  ]
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

get SQLServer instance by its id

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/sqlserver/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "agOptions": {
    "agListener": "text",
    "agListenerIp": "text",
    "agName": "text",
    "agWitness": "text"
  },
  "allowMonitoringDisplay": true,
  "area": {
    "availabilityZones": [
      {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      }
    ],
    "defaultArea": true,
    "id": "text",
    "location": "text",
    "regulation": "text"
  },
  "availabilityZone": {
    "availabilityZoneGroup": "text",
    "datacenterId": "text",
    "defaultZone": true,
    "id": "text",
    "location": "text",
    "routable": true
  },
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "network": {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  },
  "nodeCount": 1,
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "region": {
    "areas": [
      {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      }
    ],
    "dataCenter": "text",
    "id": "text",
    "location": "text"
  },
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "sizing": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "topology": "text",
  "type": "text",
  "version": "text"
}

Delete an existing SQL Server instance

delete

This method allows to delete a SQL Server instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

  • by id
DELETE /compute/databases/sqlserver/1234
  • by id and changeReference (RFC)
DELETE /compute/databases/sqlserver/1234
{
	"changeReference": "56789"
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body

Parameters when deleting a resource

changeReferencestring · max: 10Optional

Optional reference for change

Responses
202
Accepted
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/databases/sqlserver/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 26

{
  "changeReference": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs update actions to an existing SQLServer instance

patch

This method allows to update a SQL Server Farm.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start SQL Server Farm

Use the start operation to start the SQL Server Farm.

This method is synchronous (status code 202).

Example :

PATCH /compute/databases/sqlserver/1234
{
    "operation": "start"
}

Stop SQL Server Farm

Use the stop operation to stop the SQL Server Farm.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

  • by SQL Server id
PATCH /compute/databases/sqlserver/1234
{
	"operation": "stop"
}
  • by sql server id and changeReference number (RFC)
PATCH /compute/databases/sqlserver/1234
{
	"operation": "stop",
	"options": {
	    "changeReference": "56789"
	}
}

Reset SQLServer Farm

Use the reset operation to reset the SQL Server Farm.

This method is synchronous (status code 202).

Example :

PATCH /compute/databases/sqlserver/1234
{
    "operation": "reset"
}

Resize SQLServer instance

Use the resize operation to resize the nodes of the SQLServer instance and the instance itself.

This operation cannot be undone afterwards.

This method is asynchronous (status code 202).

PATCH /compute/databases/sqlserver/1234
{
	"operation":"resize",
	"options": {
        "sizing": "2cpu4gb"
    }
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the SQL Server.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /compute/databases/sqlserver/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the SQLServer.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /compute/databases/sqlserver/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /compute/databases/sqlserver/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body

Object describing a partial modification of an object to perform. Please refer to documentation to get list of operations available and their specific payload.

operationstringRequired

Operation to perform on target object, example: operation_name

Responses
202
Accepted
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/databases/sqlserver/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Verify the existence of a FARM_MSSQL by FARM_AG_LISTENER.

head
Authorizations
Path parameters
namestringRequired
Query parameters
propertystring · enumOptionalDefault: NAMEPossible values:
Responses
200
OK
400
Bad Request
*/*
head
HEAD /itcare/databases/sqlserver/{name} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Get a SQLServer node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/sqlserver/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get a SQLServer network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/sqlserver/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

Create a RabbitMQ broker instance

post

This method allows to create a RabbitMQ instance.

You will have to know at the minimum :

  • the area of the region where you want to host your broker (area attribute). Areas can be available in List Regions method.
  • name of RabbitMQ broker (name attribute).
  • prefix od the RabbitMQ Broker (vmPrefix attribute).
  • number of brokers to create in RabbitMQ cluster (brokerCount attribute). The possible values are at least 1 or 3 and maximum 5.
  • storage needed on each data node of the RabbitMQ cluster (diskSize attribute). The possible values are at least 10 and maximum 2048 (representing GB).
  • how to connect to the instance (admPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • version of the RabbitMQ cluster (rabbitMqVersion attribute). Example: 3.8.9
  • On which service the RabbitMQ instance belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).

Optional parameters that might be helpful:

  • prefix of the virtual machine names for RabbitMQ Broker (vmPrefix attribute).
  • availability zone of the broker (az attribute).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /message-brokers/rabbitmq
{
  "rabbitMqVersion": "3.8.9",
  "area": "EB-QA",
  "name": "Test123",
  "nodeSizing": "2cpu4gb",
  "brokerCount": 3,
  "diskSize": 40,
  "networkId": 1234511,
  "serviceId": 46922,
  "admPassword": "Test123@2022",
  "vmPrefix" : "AAAAAA"
}
Authorizations
Body
admPasswordstringRequired

The admin password

Pattern: ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–{}:;',?/*~$^+=<>]).{12,20}$
areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

azstringOptional

Availability zone of the RabbitMQ Broker

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

brokerCountinteger · int32 · min: 1 · max: 5Required

Number of brokers to create in RabbitMQ Broker

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

diskSizeinteger · int32 · min: 10 · max: 2048Required

The storage needed on each data node of the RabbitMQ Broker

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of RabbitMQ Broker

networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

rabbitMqVersionstringRequired
regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

tlsEnabledbooleanOptional
vmPrefixstringRequired

Prefix of the virtual machine names for RabbitMQ Broker (Clusters)

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/message-brokers/rabbitmq HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 538

{
  "admPassword": "text",
  "area": "text",
  "az": "text",
  "backupEnabled": true,
  "brokerCount": 1,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "rabbitMqVersion": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "tlsEnabled": true,
  "vmPrefix": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a RabbitMQ broker Instance available in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/message-brokers/rabbitmq/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "brokerCount": 1,
  "brokerSize": "text",
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "managementUrl": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "tlsEnabled": true,
  "type": "text",
  "version": "text"
}

Delete an existing RabbitMQ broker instance

delete

This method allows to delete a RabbitMQ broker instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /message-brokers/rabbitmq/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/message-brokers/rabbitmq/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs update state actions to an existing RabbitMQ broker instance

patch

This method allows to update a RabbitMQ instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start RabbitMQ instance

Use the start operation to start a RabbitMQ instance.

Starts RabbitMQ instance.

This method is synchronous (status code 202).

Example :

PATCH /message-brokers/rabbitmq/1234
{
    "operation": "start"
}

Stop RabbitMQ instance

Use the stop operation to stop the nodes of the RabbitMQ instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /message-brokers/rabbitmq/1234
{
	"operation":"stop"
}

Resize RabbitMQ instance

Use the resize operation to resize the sizing of the RabbitMQ.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /message-brokers/rabbitmq/1234
{
	"operation":"resize",
	"options" : {
	  "sizing" : "2cpu4gb"
	}
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the cluster.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /message-brokers/rabbitmq/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the broker.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /message-brokers/rabbitmq/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /message-brokers/rabbitmq/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/message-brokers/rabbitmq/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a RabbitMQ node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/message-brokers/rabbitmq/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "erlangVersion": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "nodesNumber": "text",
    "osImage": "text",
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "product": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get a RabbitMQ network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/message-brokers/rabbitmq/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List Regions where resources can be hosted

get

List Region

List Regions where resources are hosted

Authorizations
Query parameters
platformId, example: deb8stringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "areas": [
      {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      }
    ],
    "dataCenter": "text",
    "id": "text",
    "location": "text"
  }
]

Get Region by Id

get

List Area

A low-latency network area, in which we can create load balancers to address several availabilty-zones within this area.

Use param withAvailabilityZones=true to retrieve Availability Zones of the region.

Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

Query parameters
withAreasbooleanOptional

Include Areas

Default: false
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "areas": [
    {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    }
  ],
  "dataCenter": "text",
  "id": "text",
  "location": "text"
}

List Areas

get

List Area

A low-latency network area, in which we can create load balancers to address several availabilty-zones within this area.

Use param withAvailabilityZones=true to retrieve Availability Zones of the region.

Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

Query parameters
platformIdstringOptional

Platform Id, example: deb10

withAvailabilityZonesbooleanOptional

Include Availability Zone

Default: true
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region}/areas HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "availabilityZones": [
      {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      }
    ],
    "defaultArea": true,
    "id": "text",
    "location": "text",
    "regulation": "text"
  }
]

List Area Networks

get

List Area Network

This method returns the list of accessible networks from an Area.

Parameters

  • scope filter by network scope
  • onlyNonFull if you want only networks with available IP addresses to be listed
Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

areastringRequired

Area Name, example: EB-QA

Query parameters
scope, example: frontendstringOptional
onlyNonFull, example: falsebooleanOptional
onlyLoadBalancer, example: falsebooleanOptional
cloudsintegerOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region}/areas/{area}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List Load Balancing Networks

get

List Load Balancing Networks

This method returns the list of accessible networks from a Load balancing Zone.

Available Parameters:

  • scope query parameter to filter private, interco, internet networks. for 'frontend' and 'backend' networks, use scope=private
  • environment query parameter to filter production, non_production networks. for 'production' networks, use environment=production
  • onlyNonFull if you want only networks with available IP addresses to be listed.
  • clouds parameter (comma-separated list of long) to restrict results to specified Clouds IDs (use the /me to obtain the list of your Clouds).
Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

areastringRequired

Area Name, example: EB-QA

Query parameters
scope, example: privatestringOptional
environment, example: productionstringOptional
onlyNonFull, example: falsebooleanOptional
cloudsintegerOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region}/areas/{area}/loadbalancers-networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List health checks that are present for a given region and area

get

List health checks that are present for a given region and area

A healthcheck is a test performed on a loadbalanced url to retrieve the status of the service Use the clouds parameter (comma-separated list of long) to restrict results to specified Clouds IDs (use the /me to obtain the list of your Clouds).

Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

areastringRequired

Area Name, example: EB-QA

Query parameters
cloudsintegerOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region}/areas/{area}/healthchecks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "comment": "text",
    "description": "text",
    "id": 1,
    "name": "text"
  }
]

List Availability Zones Networks

get

List Availability Zones Network

This method returns the list of accessible networks from an Availability Zone.

You can use scope query parameter to filter frontend/backend networks,

and onlyNonFull if you want only networks with available IP addresses to be listed

Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

areastringRequired

Area Name, example: EB-QA

azstringRequired

AZ Name, example: EB-QA-A

Query parameters
scope, example: frontendstringOptional
environment, example: productionstringOptional
onlyNonFull, example: falsebooleanOptional
onlyLoadBalancer, example: falsebooleanOptional
cloudsintegerOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region}/areas/{area}/availability-zones/{az}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List Authentication Domains

get

List Authentication Domains

This method returns the list of accessible authentication domains within a network.

Authorizations
Path parameters
regionstringRequired

Region Name, example: EB

areastringRequired

Area Name, example: EB-QA

azstringRequired

AZ Name, example: EB-QA-A

networkstringRequired

Network Id, example: 123

Query parameters
platform, example: deb11stringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{region}/areas/{area}/availability-zones/{az}/networks/{network}/authentication-domains HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "description": "text",
    "id": "text",
    "isDefault": true
  }
]

List SSL Profiles available in a load balancing and related to a certificates in a specific region and area

get
Authorizations
Path parameters
regionIdstringRequiredExample: EB
areaIdstringRequiredExample: EB-INT
Query parameters
certificatestringOptionalDefault: ""
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{regionId}/areas/{areaId}/ssl-profiles HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "certificat": "text",
    "description": "text",
    "id": 1,
    "name": "text",
    "serverName": "text",
    "sniDefault": true
  }
]

List Certificates available in a specific region and area

get
Authorizations
Path parameters
regionIdstringRequiredExample: EB
areaIdstringRequiredExample: EB-INT
Query parameters
domainstringRequired
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/topology/regions/{regionId}/areas/{areaId}/certificates HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "certificateName": "text",
    "commonName": "text",
    "description": "text",
    "expirationDate": "text",
    "id": 1
  }
]

Create a Postgre SQL instance

post

This method allows to create a postgre SQL instance.

You will have to know at the minimum :

  • the area of the region where you want to host your cluster (area attribute). Areas can be available in List Regions method.
  • name of postgre SQL cluster (name attribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
  • Size of nodes in the postgre SQL cluster (nodeSizing attribute). Ex: 2cpu2gb
  • storage needed on each data node of the postgre SQL cluster (diskSize attribute). The possible values are at least 40 and maximum 1024 (representing GB).
  • how to connect to the instance (admPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • version of the postgre SQL cluster (postgreVersion attribute). Example: 13
  • On which service the postgre SQL instance belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).
  • Topology of the postgre SQL cluster (topology attribute). Either standalone / HA
  • trigram of the postgre SQL cluster (trigram attribute).
  • Allowed replication Lag of the postgre SQL (allowedReplicationLag attribute). The minimum size is 1 MB and maximum is 10240 MB

HA topology extra fields: These fields are required for HA clusters:

  • prefix of the node names for postgre cluster (nodePrefix attribute). The prefix should be from 5 to 12 characters and can contain any uppercase character.
  • Availability zone of the postgre cluster (az attribute).
  • Trigram of the postgre cluster (trigram attribute).
  • TLS enabled boolean for the postgre cluster (tls attribute).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /postgresql
{
  "serviceId" : 123,
  "nodeSizing" : "2cpu4gb",
  "networkId" : 132,
  "area" : "EB-QA",
  "diskSize" : 40,
  "admPassword" : "Test123@2022",
  "postgreVersion" : "13",
  "allowedReplicationLag" : 10,
  "az" : "az",
  "topology" : "STANDALONE",
  "trigram" : "tri",
  "tls" : true,
  "name" : "NEWPOSTGRE01"
}
Authorizations
Body
one ofOptional
all ofOptional
or
all ofOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/databases/postgresql HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 599

{
  "admPassword": "text",
  "allowedReplicationLag": 1,
  "area": "text",
  "az": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "postgreVersion": "text",
  "prefix": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "tls": true,
  "topology": "STANDALONE",
  "trigram": "text",
  "name": "text",
  "nodePrefix": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Delete an existing PostgreSQL instance

delete

This method allows to delete a postgre SQL instance.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /postgresql/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/databases/postgresql/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a Postgre SQL Instance available in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500061854

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/postgresql/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "allowedReplicationLag": 1,
  "area": "text",
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "instanceCount": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "ipAddress": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "networkId": 1,
  "nodeCount": 1,
  "nodeSizing": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "storage": 1,
  "supportPhase": "text",
  "technology": "text",
  "tlsEnabled": true,
  "topology": "text",
  "trigram": "text",
  "type": "text",
  "url": "text",
  "version": "text"
}

Performs update state actions to an existing Postgre SQL instance

patch

This method allows to update a PostgreSQL instance.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start PostgreSQL instance

Use the start operation to start a PostgreSQL instance.

Starts PostgreSQL instance.

This method is asynchronous (status code 202).

Example :

PATCH /postgresql/1234
{
    "operation": "start"
}

Stop PostgreSQL instance

Use the stop operation to stop the nodes of the PostgreSQL instance and the instance itself.

This operation cannot be undone afterwards.

This method is asynchronous (status code 202).

PATCH /postgresql/1234
{
	"operation":"stop"
}

Resize PostgreSQL instance

Use the resize operation to resize the nodes of the PostgreSQL instance and the instance itself.

This operation cannot be undone afterwards.

This method is asynchronous (status code 202).

PATCH /postgresql/1234
{
	"operation":"resize",
	"options": {
        "sizing": "2cpu4gb"
    }
}

Restore PostgreSQL instance

Use the restore operation to restore a PostgreSQL instance to another PostgreSQL instance with the same farm version.

  • the source instance must be backed up.
  • the source instance and destination farm must be ACTIVE
  • the timestamp must be between now and now - 14 days for production service and now - 7 days for non production service→ raise exception
  • timestamp should respect the format described in Json Schema (date-time) The following is correct : 2022-11-02T09:32:02.000+00:00

The available stop options are BEFORE and AFTER.

This method is asynchronous (status code 202).

PATCH /postgresql/5678
{
	"operation": "restore",
	"options": {
	    "sourceId": 1234,
	    "stop": "BEFORE",
	    "timestamp": "2022-11-02T09:32:02.000+00:00"
	}
}

Convert from Standalone to HA PostgreSQL instance

Use the enable_ha operation to convert a PostgreSQL instance from Standalone to HA mode.

  • the replicationLag must be between 1 and 500.
  • The standalone instance must have a version greater or egal to 12.
  • changeReference is optional

This method is asynchronous (status code 202).

PATCH /postgresql/5678
{
	"operation": "enable_ha",
	"options": {
	    "replicationLag": 50,
	    "changeReference": "000"
	}
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the cluster.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is asynchronous (status code 202).

PATCH /postgresql/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the cluster.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /postgresql/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /postgresql/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}

Install PostgreSQL extension

Use the install_extension operation to install an extension in the PostgreSQL.

This method is asynchronous (status code 202).

PATCH /postgresql/1234
{
	"operation":"install_extension",
	"options": {
        "dbname": "mydb",
        "extensions_list": [
        		{"name": "ext1"},
        		{"name": "ext2"}
        ]
    }
}

Upgrade PostgreSQL version

Use the upgrade operation to upgrade the PostgreSQL version.

This method is asynchronous (status code 202).

PATCH /postgresql/1234
{
	"operation":"upgrade",
	"options": {
        "targetVersion": "12",
        "changeReference": "RFC 1234"
    }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/databases/postgresql/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get available databases for a Postgre SQL Farm in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500061854

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/postgresql/{id}/databases HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "extensions": [
      {
        "name": "text",
        "schema": "text",
        "version": "text"
      }
    ],
    "name": "text"
  }
]

Get available extensions for a Postgre SQL Farm in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500061854

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/postgresql/{id}/extensions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "comment": "text",
    "link": "text",
    "name": "text",
    "requiresRestarting": true,
    "version": "text"
  }
]

Get a PostgreSQL network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/postgresql/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

Get a PostgreSQL node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/databases/postgresql/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "enableProfileBaseNtp": true,
    "enableProfileBaseResolve": true,
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "firewallBlockIntraSubnetTraffic": true,
    "firewallEnable": true,
    "firewallPurge": true,
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "manageSentinelOne": true,
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "ntpServers": [
      "text"
    ],
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "relayHost": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get available versions for a Postgre SQL Farm in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500061854

Responses
200
OK
application/vnd.cegedim-it.v1+json
Responseinteger · int64[]
400
Bad Request
*/*
get
GET /itcare/databases/postgresql/{id}/versions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  1
]

List Compute Statuses

get
Authorizations
Query parameters
typestring · enumRequired

Compute resource types : a compute can be a service or a resource (instance, db, url, ... )

Possible values:
Responses
200
OK
*/*
Responsestring[]
400
Bad Request
*/*
get
GET /itcare/compute/statuses HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  "text"
]

List all tag values matching the given value, if value is empty it will return all tag values

get
Authorizations
Query parameters
keystringOptionalDefault: ""
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/tag-values HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "tagKey": "text",
    "tagValue": "text"
  }
]

List K8S Container

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: agkey:mytagvalue,application:itcare

monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

backupStatusbooleanOptional

Filter list by backup status

recoveryStatusbooleanOptional

Filter list by DRP status

includedInPatchPartybooleanOptional

Filter list by patch party status

topologiesstring[]Optional

Topology, example: Standard, HA

versionsstring[]Optional

Version, example: v1.26.15, v1.28.13, etc...

regionsstring[]Optional

Region, example: EB,ET

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "allowMonitoringDisplay": true,
      "availableAZs": [
        "text"
      ],
      "availableDCs": [
        "text"
      ],
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "ingressProvider": "NGINX",
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "labelAreaList": [
        "text"
      ],
      "labelRegion": "text",
      "managementUrl": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "nodeCount": 1,
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "status": "text",
      "supportPhase": "text",
      "supportsHAMode": true,
      "technicalId": "text",
      "technology": "text",
      "topology": "text",
      "type": "text",
      "version": "text",
      "versionDetailed": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Create K8s Cluster

post

This method allows to create a cluster.

You will have to know at the minimum :

  • where you want to host your cluster (area attribute)
  • which network is used (networkId attribute)
  • name of cluster (name attribute)
  • sizing of cluster (nodeSizing attribute)
  • number of nodes instances of your cluster (instanceCount attribute)
  • service in which you want to put your cluster (serviceId attribute)

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /clusters
{
	"name": "PCLUSTER01",
	"area": "EB",
	"networkId": "ED145",
	"serviceId": 123,
	"nodeSizing":, "1cpu2gb"
	"instanceCount": 2
}
Authorizations
Body

Describes the k8s container to be created.

areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

ingressProviderstring · enumRequired

Kubernetes Container Ingress Providers

Possible values:
instanceCountinteger · int32 · min: 2 · max: 12Required

Number of instances to create in k8s cluster

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of k8s cluster

Pattern: [a-z0-9\-]+
networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/compute/containers/kubernetes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 459

{
  "area": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "ingressProvider": "NGINX",
  "instanceCount": 1,
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get K8s Container loadbalancer list.

get
Authorizations
Path parameters
idinteger · int64Required

K8sCluster Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes/{id}/loadbalancers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "botDefenseEnabled": true,
    "botDefenseUpdating": true,
    "category": "text",
    "certificate": {
      "certificateName": "text",
      "commonName": "text",
      "description": "text",
      "expirationDate": "text",
      "id": 1
    },
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "defaultPersistence": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "fallbackPersistence": "text",
    "family": "text",
    "healthChecks": [
      {
        "comment": "text",
        "description": "text",
        "id": 1,
        "name": "text"
      }
    ],
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "irules": [
      {
        "description": "text",
        "name": "text"
      }
    ],
    "label": "text",
    "loadBalancingMode": "text",
    "members": [
      {
        "area": {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        },
        "authenticationDomain": "text",
        "availabilityZone": {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        },
        "backup": {
          "backupSystem": "text",
          "filesNb": 1,
          "lastDate": "2025-07-04T04:15:11.161Z",
          "size": 1,
          "type": "text"
        },
        "backupPolicyDetails": {
          "backups": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "id": 1,
              "type": "text"
            }
          ],
          "policies": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "durationInHours": 1,
              "frequencies": {},
              "label": "text",
              "name": "text",
              "policyId": "text",
              "replication": true,
              "scope": "text",
              "startTime": "text",
              "timezone": "text",
              "type": "text"
            }
          ]
        },
        "backupStatus": true,
        "category": "text",
        "cloudId": 1,
        "cloudName": "text",
        "comment": "text",
        "cpu": 1,
        "creationTime": "text",
        "creationUser": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "family": "text",
        "id": 1,
        "imageCode": "text",
        "internalResourceId": 1,
        "internalType": "text",
        "ipAddress": "text",
        "isExternalIngressNode": true,
        "isInternalIngressNode": true,
        "isMemberOFLoadBalancer": true,
        "label": "text",
        "labelArea": "text",
        "labelAvailabilityZone": "text",
        "labelDataCenter": "text",
        "labelRegion": "text",
        "loadbalancers": [
          {
            "id": 1,
            "memberCount": 1,
            "monitoringEnabled": true,
            "name": "text",
            "serviceId": 1,
            "status": "text"
          }
        ],
        "metrologyUrl": "text",
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringOnCallEnabled": true,
        "monitoringRequested": true,
        "name": "text",
        "network": {
          "area": "text",
          "cidr": "text",
          "cloud": "text",
          "defaultNetwork": true,
          "description": "text",
          "dns": [
            {
              "alias": "text",
              "domain": "text"
            }
          ],
          "environment": "text",
          "gateway": "text",
          "id": 1,
          "ipAddress": "text",
          "ipFreeNumber": 1,
          "isIpRangePublic": true,
          "mask": "text",
          "networkShortDescription": "text",
          "region": "text",
          "scope": "text",
          "shortDescription": "text",
          "technicalId": "text",
          "usedPercent": 1
        },
        "osName": "text",
        "osType": "text",
        "parentResourceType": "text",
        "patchParty": {
          "excluded": true,
          "excludedBy": "text",
          "exclusionDate": "2025-07-04T04:15:11.161Z",
          "exclusionReason": "text",
          "id": 1,
          "name": "text",
          "patchDate": "2025-07-04T04:15:11.161Z",
          "patchGroup": "text",
          "patchTag": "text"
        },
        "path": "text",
        "prettyLabel": "text",
        "productCode": "text",
        "productName": "text",
        "productVersion": "text",
        "ram": 1,
        "region": {
          "areas": [
            {
              "availabilityZones": [
                {
                  "availabilityZoneGroup": "text",
                  "datacenterId": "text",
                  "defaultZone": true,
                  "id": "text",
                  "location": "text",
                  "routable": true
                }
              ],
              "defaultArea": true,
              "id": "text",
              "location": "text",
              "regulation": "text"
            }
          ],
          "dataCenter": "text",
          "id": "text",
          "location": "text"
        },
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "replication": {
          "noStoRplExplanation": "text",
          "storageClass": "text",
          "storageClassOverride": "text",
          "storageMoveInProgress": true,
          "storageMoveTicket": "text",
          "storageReplicationClass": "text"
        },
        "replicationStatus": true,
        "resourceType": "text",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "snapshot": {
          "changeReference": "text",
          "createdAt": "2025-07-04T04:15:11.161Z",
          "createdBy": "text",
          "description": "text",
          "expiresAt": "2025-07-04T04:15:11.161Z",
          "id": "text",
          "label": "text",
          "recoveredAt": "2025-07-04T04:15:11.161Z",
          "snapshotSize": 1
        },
        "status": "text",
        "storage": 1,
        "storageInformation": {
          "fileSystems": [
            {
              "free": 1,
              "mountingPoint": "text",
              "sizeOf": 1,
              "type": "text"
            }
          ],
          "totalSizeDisks": 1,
          "totalSizeFileSystems": 1
        },
        "storageMoveInProgress": true,
        "supportPhase": "text",
        "technology": "text",
        "type": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "nodeCount": 1,
    "parentResource": {
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "type": "text"
    },
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "protocols": [
      {
        "comment": "text",
        "isCertificateRequired": true,
        "name": "text",
        "order": 1,
        "persistence": true,
        "port": 1,
        "profileNoPersistenceNoRedirect": "text",
        "profileNoPersistenceOnly": "text",
        "profileNoPersistenceRedirect": "text",
        "profilePersistenceNoRedirect": "text",
        "profilePersistenceOnly": "text",
        "profilePersistenceRedirect": "text",
        "protocol": "text",
        "redirectToHttps": true
      }
    ],
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "securityProfile": {
      "comment": "text",
      "description": "text",
      "enforcement": "text",
      "id": "text",
      "name": "text",
      "profile": "text",
      "template": "text",
      "whiteList": [
        {
          "comment": "text",
          "ip": "text",
          "url": "text"
        }
      ]
    },
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snatAutomap": true,
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "urls": [
      {
        "comment": "text",
        "creationTime": "text",
        "creationUser": "text",
        "description": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "id": 1,
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringMode": "text",
        "monitoringOnCallEnabled": true,
        "name": "text",
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "specificChecks": [
          {
            "name": "text",
            "parameter": {
              "authentification": {
                "password": "text",
                "user": "text"
              },
              "criticalContent": "text",
              "criticalStatus": "text",
              "expectedContent": "text",
              "headers": [
                {
                  "key": "text",
                  "value": "text"
                }
              ],
              "method": "text",
              "parameters": [
                {
                  "key": "text",
                  "value": "text"
                }
              ],
              "path": "text",
              "port": 1,
              "prefix": "text",
              "protocol": "text",
              "warningContent": "text"
            }
          }
        ],
        "status": "text",
        "supportPhase": "text",
        "tags": [
          {
            "tagKey": "text",
            "tagValue": "text"
          }
        ],
        "type": "text"
      }
    ]
  }
]

Create K8s Container custom loadbalancer

post
Authorizations
Path parameters
idinteger · int64Required

K8sCluster Id, example: 123

Body

Describes a load balancer.

areastringOptional

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

certificateNamestringOptional

certificate of the load balancer., example: wildcard_cegedim.com

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

healthcheckstringRequired

healtcheck of load balancer., example: http

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

networkIdinteger · int64Optional

Network id. Refer to networks available in List Networks method. If absent, a default network of AZ will be used.

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

persistencebooleanOptional
portMembersstringRequired

port member of load balancer., example: 80, 443, ...

profileNamestringRequired

profile name of load balancer.

redirectToHttpsbooleanOptional
regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

setUpDNSEnabledbooleanOptional

Indicates if a DNS record is to be set. If absent, set to false.

sslProfilestringOptional

ssl profile of the load balancer., example: profile_wildcard.cegedim.com_secure

urlstringRequired

url of load balancer. Must be unique, and fit naming rules convention., example: url.cegedim.com

Pattern: ^(https?:\\/\\/)?(www\\.)?[a-zA-Z][a-zA-Z0-9.-]{2,63}+$
vsPortinteger · int32Optional

port of load balancer in case of TCP VS Profile

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/compute/containers/kubernetes/{id}/loadbalancers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 560

{
  "area": "text",
  "backupEnabled": true,
  "certificateName": "text",
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "healthcheck": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "onCallSupervision": true,
  "persistence": true,
  "portMembers": "text",
  "profileName": "text",
  "redirectToHttps": true,
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "setUpDNSEnabled": true,
  "sslProfile": "text",
  "url": "text",
  "vsPort": 1
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get detailed information for an k8s container.

get
Authorizations
Path parameters
idinteger · int64Required

Resource Id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "availableAZs": [
    "text"
  ],
  "availableDCs": [
    "text"
  ],
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "ingressProvider": "NGINX",
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "labelAreaList": [
    "text"
  ],
  "labelRegion": "text",
  "managementUrl": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": 1,
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "supportPhase": "text",
  "supportsHAMode": true,
  "technicalId": "text",
  "technology": "text",
  "topology": "text",
  "type": "text",
  "version": "text",
  "versionDetailed": "text"
}

Delete an existing k8s container

delete

This method allows to delete a K8s Cluster Container.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /k8s-clusters/123

DELETE /k8s-clusters/123
{
    "changeReference": "rfc nunmber 456"
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body

Parameters when deleting a resource

changeReferencestring · max: 10Optional

Optional reference for change

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/compute/containers/kubernetes/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 26

{
  "changeReference": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

update K8s Cluster

patch

This method allows to update a cluster.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details.

Below are different operations currently implemented.

Create Nodes

Use the create_nodes operation to create the nodes of a cluster.

Create nodes operation will add the new nodes in the cluster by availability zone. You can specify the availability zone you need in the request.

This method is synchronous (status code 202).

Example :

PATCH /containers/kubernetes/1234
{
    "operation": "create_nodes",
    "options": {
        "nodes": [
            {
                "nodesNb": 1,
                "nodeSizing": "2cpu4gb",
                "az": "EB-A"
            },
            {
                "nodesNb": 2,
                "nodeSizing": "4cpu8gb",
                "az": "EB-B"
            }
        ]
    }
}

Delete Nodes

Use the delete_nodes operation to delete the nodes of a cluster.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /containers/kubernetes/1234
{
	"operation":"delete_nodes",
	"options":{
	    "nodes": ["11112","11113","11114"]
	}
}

Enable High Availability - HA

Use the enable_ha operation to enable the HA of a cluster.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /containers/kubernetes/1234
{
	"operation":"enable_ha"
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the cluster.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /containers/kubernetes/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the cluster.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /containers/kubernetes/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /containers/kubernetes/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}

Upgrade

Use the upgrade operation to upgrade the cluster.

  • Use the version option to set the target version to be installed.

The requirements are :

  • step by step upgrade only : Use the /compute/platform/products?type=KUBERNETES to list all versions available for the cluster.
  • no downgrade possibility

This method is synchronous (status code 202).

PATCH /containers/kubernetes/1234
{
  "operation": "upgrade",
  "options": {
    "version": "1.24"
 }
}
Authorizations
Path parameters
idinteger · int64Required

K8s Cluster Id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/compute/containers/kubernetes/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get a Kubernetes containter node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get a Kubernetes containter network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

Get K8s Container stats distribution of Availability Zone and Datacenter of the nodes the cluster

get
Authorizations
Path parameters
idinteger · int64Required

K8sCluster Id, example: 123

Query parameters
typestringRequired

type, example: az-distribution | dc-distribution

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes/{id}/metrics HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "ANY_ADDITIONAL_PROPERTY": {
    "cpuCount": 1,
    "nodeCount": 1,
    "ramCount": 1
  }
}

List ingress providers

get
Authorizations
Responses
200
OK
*/*
Responsestring[]
400
Bad Request
*/*
get
GET /itcare/compute/containers/kubernetes/ingress-providers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  "text"
]

Delete a Kubernetes container node

delete

This method allows to delete a Kubernetes cluster node.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

To delete a Kubernetes node, the id of the Kubernetes cluster and the id of the node to delete must be specified.

To list the nodes of the Kubernetes cluster, use the endpoint : GET /containers/kubernetes/{kuberneteId}/nodes/{nodeId}.

Use the following to delete a node of a Kubernetes cluster.

DELETE /containers/kubernetes/1234/nodes/4567

To keep consistency on the Kubernetes cluster, please note that :

  • All nodes cannot be deleted.

  • All ingress nodes cannot be deleted.

API users will have a BAD_REQUEST when trying to break one of the rule above.

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

nodeIdinteger · int64Required

id, example: 456

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/compute/containers/kubernetes/{id}/nodes/{nodeId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Create an Apache Kafka platform

post

This method allows to create an Apache Kafka platform.

You will have to know at the minimum :

  • the area of the region where you want to host your broker (area attribute). Areas can be available in List Regions method.
  • name of the Apache Kafka platform (name attribute). The name can contain any lowercase characters or numbers (5-60). It must not be the keyword 'cluster'.
  • prefix of the node names for Apache Kafka platform (nodePrefix attribute). The prefix should be from 5 to 12 characters and can contain any uppercase character.
  • number of brokers to create in Apache Kafka platform (brokerCount attribute). The possible values are at least 3 and maximum 5.
  • storage needed on each data node of the Apache Kafka platform (diskSize attribute). The possible values are at least 40 and maximum 1024 (representing GB).
  • how to connect to the instance (admPassword attribute). The password must be At least one lowercase, one uppercase, one digit, one special character, minimum length must be 12.
  • version of the Apache Kafka platform (kafkaVersion attribute). Example: 2.7.0
  • On which service the Apache Kafka platform belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /message-brokers/apache-kafka
{
  "kafkaVersion": "2.7.0",
  "area": "EB-QA",
  "name": "testkafka",
  "nodePrefix": "DM123",
  "nodeSizing": "2cpu4gb",
  "brokerCount": 3,
  "diskSize": 40,
  "networkId": 1234511,
  "serviceId": 46922,
  "admPassword": "Test123@2022"
}
Authorizations
Body
admPasswordstringRequired

The admin password

Pattern: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–{}:;',?/*~$^+=<>]).{12,20}$
areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

brokerCountinteger · int32 · min: 3 · max: 5Required

Number of brokers to create in Kafka cluster

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

diskSizeinteger · int32 · min: 40 · max: 1024Required

The storage needed on each data node of the ELS cluster

kafkaVersionstringRequired
monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of Kafka cluster

Pattern: (?!cluster$)([a-z0-9_]{5,60})$
networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodePrefixstring · min: 5 · max: 12Required

Prefix of the node names for Kafka cluster

Pattern: [A-Z0-9]{5,12}$
nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post
POST /itcare/message-brokers/apache-kafka HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 507

{
  "admPassword": "text",
  "area": "text",
  "backupEnabled": true,
  "brokerCount": 1,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "kafkaVersion": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodePrefix": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get an Apache Kafka platform available in the cloud

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/message-brokers/apache-kafka/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "bootstrapServer": "text",
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": 1,
  "nodeSizing": "text",
  "overloadedParams": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "restEndpoint": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text",
  "version": "text",
  "zooKeeper": "text"
}

Delete an existing an Apache Kafka platform

delete

This method allows to delete an Apache Kafka platform.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /message-brokers/apache-kafka/123

Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete
DELETE /itcare/message-brokers/apache-kafka/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Performs update state actions to an existing Apache Kafka platform

patch

This method allows to update an Apache Kafka platform.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details - optional.

Below are different operations currently implemented.

Start Apache Kafka instance

Use the start operation to start an Apache Kafka instance.

Starts Apache Kafka instance.

This method is synchronous (status code 202).

Example :

PATCH /message-brokers/apache-kafka/1234
{
    "operation": "start"
}

Stop Apache Kafka instance

Use the stop operation to stop the nodes of the Apache Kafka instance and the instance itself.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /message-brokers/apache-kafka/1234
{
	"operation":"stop"
}

Resize Apache Kafka instance

Use the resize operation to resize the sizing of the Apache Kafka instance.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /message-brokers/apache-kafka/1234
{
	"operation":"resize",
	"options" : {
	  "sizing" : "2cpu4gb"
	}
}

Reconfigure Apache Kafka instance

Use the reconfigure operation to update the Apache Kafka instance params.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /message-brokers/apache-kafka/1234
{
	"operation":"reconfigure",
	"options" : {
	  "param" : "param"
	}
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the Apache Kafka instance.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /message-brokers/apache-kafka/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the Apache Kafka instance.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /message-brokers/apache-kafka/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /message-brokers/apache-kafka/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required

id, example: 123

Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch
PATCH /itcare/message-brokers/apache-kafka/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}

Get an Apache Kafka node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/message-brokers/apache-kafka/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "brokerNodes": [
      "text"
    ],
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "controllerNodes": [
      "text"
    ],
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get an Apache Kafka network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/message-brokers/apache-kafka/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List default values for different resource filters

get
Authorizations
Query parameters
technologiesstring[]Optional

Product technology, example: MARIADB or KUBERNETES or...

cloudsintegerOptional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/resource-filters HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "az": [
    "text"
  ],
  "defaultPersistence": [
    "text"
  ],
  "fallbackPersistence": [
    "text"
  ],
  "iRules": [
    "text"
  ],
  "k8sRegions": [
    "text"
  ],
  "loadBalancingMode": [
    "text"
  ],
  "protocols": [
    "text"
  ],
  "topologies": [
    {
      "topology": "text",
      "type": "text"
    }
  ],
  "versions": [
    {
      "type": "text",
      "version": "text"
    }
  ]
}

Given a resource, looks at its status. SUCCESS will mean action has been successfully terminated.

get
Authorizations
Query parameters
resourceNamestringOptional
resourceIdinteger · int64Optional
serviceIdinteger · int64Optional
statusesstring[]Optional
requestIdinteger · int64Optional
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/actions HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "completedAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
    "message": "text",
    "process": "text",
    "resourceName": "text",
    "resourceType": "text",
    "status": "SUCCESS,IN_PROGRESS,ERROR",
    "submittedAt": "2025-07-04T04:15:11.161Z",
    "submittedBy": "text"
  }
]

Use this method to look for status of an asynchronously launched action (with 202 status code). SUCCESS will mean action has been successfully terminated.

get
Authorizations
Path parameters
actionIdinteger · int64Required
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/actions/{actionId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "completedAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR",
  "submittedAt": "2025-07-04T04:15:11.161Z",
  "submittedBy": "text"
}

List Compute Types

get
Authorizations
Responses
200
OK
*/*
Responsestring[]
400
Bad Request
*/*
get
GET /itcare/compute/types HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  "text"
]

Get Network cluster by id

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/networking/network-clusters/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "ipAddress": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": 1,
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "sizing": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text",
  "version": "text"
}

Get a Network cluster node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/networking/network-clusters/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  }
]

Get a Network cluster informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
GET /itcare/networking/network-clusters/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]

List brokers

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

typesstring[]Optional

Types, example: WINDOWS,AIX,LINUX

familiesstring[]Optional

Families, example: DEBIAN,CENTOS,RHEL

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

backupStatusbooleanOptional

Filter list by backup status

recoveryStatusbooleanOptional

Filter list by DRP status

includedInPatchPartybooleanOptional

Filter list by patch party status

topologiesstring[]Optional

Topology, example: Cluster, Standalone, etc..

versionsstring[]Optional

Version, example: 2.7.0, 3.6.0, 3.9.29-1, etc...

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/message-brokers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "nodeCount": 1,
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "sizing": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "topology": "text",
      "type": "text",
      "version": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Ceph Cluster

17.2.5

CSI Ceph

3.9.0

cgdm-rwo

Utiliser CSI Ceph rbd pour provisioner des volumes persistants ReadWriteOnce

Réplication

x4

x4

Tolérance de panne : Une AZ indisponible

✅

✅

Tolérance de panne : Un DC indisponible

✅

✅

Approvisionnement de nouveaux PV

✅

Remonter le PV existant

✅

Compatible avec toutes les applications K8S

✅

Montage multiple (RWX)

❌

Redimensionnable

✅

Aperçu

✅

Tolérance de panne : perte de 1 AZ

✅

Tolérance de panne : perte de 1 DC

✅

Compatible avec K8S 1.22+

✅

Compatible avec K8S 1.22-

✅

$ kubectl get sc
NAME                 PROVISIONER           RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
cgdm-rwo (default)   rbd.csi.ceph.com      Delete          Immediate           true                   57d
$ kubectl get  volumesnapshotclass
NAME       DRIVER                DELETIONPOLICY   AGE
cgdm-rwo   rbd.csi.ceph.com      Delete           36d
kubectl get sc
NAME               PROVISIONER      RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
cgdm-rwo (default) rbd.csi.ceph.com Delete        Immediate         true                 42d

cgdm-rwo

Ceph RBD

:
import psycopg2

# Connect to the postgres database
conn = psycopg2.connect(database='postgres', user='myuser', password='mystrongpwd',host='mycluster.pg.cegedim.cloud')
# Open a cursor to perform database operations
cursor = conn.cursor()
# Execute a query
cursor.execute("SELECT datname from pg_database")
# Retrieve query results
records = cursor.fetchall()
# Print all results
for record in records:
  print(record)
import psycopg2
 
# Connect to the postgres database
conn = psycopg2.connect(database='postgres', user='myuser', password='mystrongpwd', host='mycluster.pg.cegedim.cloud', sslmode='verify-full', sslrootcert='cegedimcloud.pg.crt')
# Open a cursor to perform database operations
cursor = conn.cursor()
# Execute a query
cursor.execute("SELECT datname from pg_database")
# Retrieve query results
records = cursor.fetchall()
# Print all results
for record in records:
  print(record)
create role <a_role> login password '<very_strong_password>';
grant <a_role> to admin;
create database <my_database> owner <a_role>;
create database <my_database> owner <a_role> template template0 LC_COLLATE 'fr_FR.utf8';
create database <my_database> owner <a_role> template template0 encoding 'LATIN1' LC_COLLATE 'fr_FR';

List Load Balancer

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

botdefensebooleanOptional
monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

urlsstring[]Optional

URLs, example: .cegedim.cloud

iRulesstring[]Optional

IRules, iRule-Redirect-gis-workflow

defaultPersistencestring[]Optional

Default Persistence, example: cookie,hash, or source_addr etc...

fallbackPersistencestring[]Optional

Fallback Persistence, example: dest_addr, source_addr, etc...

loadBalancingModestring[]Optional

Load Balancing Mode, example: least-connections-node, round-robin, etc...

protocolsstring[]Optional

Protocols, example: HTTP, HTTPS, MYSQL, etc...

vlanstring[]Optional

VLAN, example: EB_1125_DMZ8

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Create a new load balancer

post

This method allows to create a LoadBalancer.

You will have to know at the minimum :

  • the area of the region where you want to host your cluster (area attribute). Areas can be available in List Regions method.

  • url (url attribute). The url you want to create and respect URLs naming convention.

  • network ID of the cluster (networkId attribute).

  • On which service the LoadBalancer belongs to (serviceId attribute).

  • On which domain the url should be belong to (domain attribute).

  • Healthcheck to check that your url is responding (healthcheck attribute).

  • Persistence configuration (persistence attribute).

  • Port member : port on which the members of the loadbalancer should be listening to (portMembers attribute). Example: 80

  • Profile Names (profileName attribute). Ex : HTTP, HTTPS, TCP. For HTTP, profileName = 80.

  • Redirection rules (redirectToHttps attribute). Redirect to HTTPS or not.

  • Members (members attribute). Members of the loadbalancer

optional fields:

  • Region (region attribute).
  • DNS setup (setUpDNSEnabled attribute). If True, the domain must support the DNS creation. If the attribut is set to True and the domain do not support DNS setup, an error 400 will be raised.
  • Network (networkId attribute). If not set, the system will choose the default network available on the Availability Zone.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /loadbalancers
{
  "url": "url.cegedim.com",
  "serviceId": 46922,
  "area": "EB-QA",
  "networkId": 4242,
  "healthcheck":"CDGM",
  "persistence": true,
  "portMembers": 80,
  "profileName": "HTTP",
  "redirectToHttps":false,
  "setUpDNSEnabled":false,
  "members": [
  {
	 "id": 42,
	 "network": {
	   "id": 42,
	   "ipAddress" : "1.2.3.4"
	 }
  }
  ]
}

When the LoadBalancer supports SSL

POST /loadbalancers
{
  "url": "url.cegedim.com",
  "serviceId": 46922,
  "area": "EB-QA",
  "networkId": 4242,
  "healthcheck":"CDGM",
  "persistence": true,
  "portMembers": 80,
  "profileName": "HTTPS",
  "redirectToHttps":true,
  "setUpDNSEnabled":false,
  "sslProfile":"my_ssl_profle",
  "certificateName":"my_cert.crt",
  "members": [
  {
	 "id": 42,
	 "network": {
	   "id": 42,
	   "ip" : "1.2.3.4"
	 }
  }
  ]
}
Authorizations
Body

Describes a load balancer.

areastringOptional

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

certificateNamestringOptional

certificate of the load balancer., example: wildcard_cegedim.com

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

healthcheckstringRequired

healtcheck of load balancer., example: http

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

networkIdinteger · int64Optional

Network id. Refer to networks available in List Networks method. If absent, a default network of AZ will be used.

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

persistencebooleanOptional
portMembersstringRequired

port member of load balancer., example: 80, 443, ...

profileNamestringRequired

profile name of load balancer.

redirectToHttpsbooleanOptional
regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

setUpDNSEnabledbooleanOptional

Indicates if a DNS record is to be set. If absent, set to false.

sslProfilestringOptional

ssl profile of the load balancer., example: profile_wildcard.cegedim.com_secure

urlstringRequired

url of load balancer. Must be unique, and fit naming rules convention., example: url.cegedim.com

Pattern: ^(https?:\\/\\/)?(www\\.)?[a-zA-Z][a-zA-Z0-9.-]{2,63}+$
vsPortinteger · int32Optional

port of load balancer in case of TCP VS Profile

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post

Get Load Balancer URLs

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Create a new load balancer url

post

This method allows to create a URL for a LoadBalancer.

  • name is the name of the url.
  • setUpDNSEnabled setup dns or not.
  • monitoringEnabled enable monitoring for url
  • onCallSupervision enable 24/7 monitoring for url

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /loadbalancers/124/urls
{
  "name": "url.cegedim.com",
  "setUpDNSEnabled": false,
  "monitoringEnabled": true,
  "onCallSupervision": true
}
Authorizations
Path parameters
idinteger · int64Required
Body

Describes a load balancer.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup.

namestringRequired

url of load balancer. Must be unique, and fit naming rules convention., example: url.cegedim.com

Pattern: ^(https?:\\/\\/)?(www\\.)?[a-zA-Z][a-zA-Z0-9.-]{2,63}+$
onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

setUpDNSEnabledbooleanOptional

Indicates if a DNS record is to be set. If absent, set to false.

sslProfilestringOptional

ssl profile of the load balancer., example: profile_wildcard.cegedim.com_secure

Responses
202
Accepted
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post

Get Load Balancer pool members

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Add Load Balancer pool member.

post

Add a member to an existing loadbalancer.

The member must be a valid ITCare resource and must be in the same network as the other members of the loadbalancer.

Request example :

POST /compute/loadbalancers/my-service.cegedim.cloud/members
{
    "resourceId": 5050706,
    "port": 80,
    "state": "enabled",
    "name": "REBITCGDM1032",
    "ip": "10.25.19.158"
}

Minimum payload must contain the following information :

  • resourceId : Mandatory, ITCare's resource's id to add
  • port : Mandatory, port of the member (0 to 65535)

Other field will be ignored. The following payload is valid:

POST /compute/loadbalancers/my-service.cegedim.cloud/members
{
    "resourceId": 5050706,
    "port": 80,
}

This method is synchronous (status code 200) and will return loadbalancer's members list with the new member added :

[
  {
    "resourceId": 1050975,
    "name": "PEB4APP01",
    "port": 443,
    "state": "enabled",
    "status": "up",
    "ip": "10.26.12.11"
  },
  {
    "resourceId": 1050976,
    "name": "PEB4APP02",
    "port": 443,
    "state": "enabled",
    "status": "up",
    "ip": "10.26.12.12"
  },
  {
    "resourceId": 898734,
    "name": "PEB4APP03",
    "port": 443,
    "state": "enabled",
    "status": "up",
    "ip": "10.26.12.13"
  }
]

Note: New member will added with state enabled.

Note: Member statistic are not included in the response body

Authorizations
Path parameters
idinteger · int64Required
Body
addressstringOptional

IP address of the member.

categorystringOptional

Category of the member

familystringOptional

Family of the member

internalTypestringOptional

Internal type of the member of the member

labelAreastringOptional

Area on which the member is located

namestringOptional

Name of the member on the loadbalancer

portinteger · int32 · max: 65535Required

port of the member., example: 80, 443, ...

productNamestringOptional

Name of the member of the member

resourceIdinteger · int64Required

Id of the resource. Required when an operation is performed.

serviceIdinteger · int64Optional

serviceId on which this member belongs to

statestringOptional

Member state. (enabled, disabled, offline)

statusstringOptional

Status of the member. (up, down, user_down)

technicalIdstringOptional

Technical Network on which the member is located

technologystringOptional

Technology of the member

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post

Get Load Balancers by id

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Delete load balancer

delete
Authorizations
Path parameters
idinteger · int64Required
Body

Parameters when deleting a resource

changeReferencestring · max: 10Optional

Optional reference for change

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete

Update Load Balancer

patch

This method allows to update a load balancer.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details.

Below are different operations currently implemented.

Start Load Balancer

Use the start operation to start the load balancer.

This method is synchronous (status code 202).

Example :

PATCH /loadbalancers/1234
{
    "operation": "start",
    "options": {
        "changeReference": "5678"
    }
}

Stop Load Balancer

Use the stop operation to stop the load balancer.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234
{
    "operation": "stop",
    "options": {
        "changeReference": "5678"
    }
}

Create Bot Defense for Load Balancer

Use the activate_bot operation to Update Security Profile for load balancer. Use the template with values strict, standard to set the template to be applied. Default template value is standard. Use the mode with values transparent, blocking to set the mode to be applied. Mode is optional and default mode is blocking.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234
{
    "operation": "activate_bot",
    "options": {
        "changeReference": "5678",
        "template": "strict",
        "mode" : "blocking"
    }
}

Update Bot Defense for Load Balancer

Use the update_bot operation to Update Security Profile for load balancer. Use the template with values strict, standard to set the template to be applied. Default template value is standard. Use the mode with values transparent, blocking to set the mode to be applied. Mode is optional and default mode is blocking.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234
{
    "operation": "update_bot",
    "options": {
        "changeReference": "5678",
        "template": "strict",
        "mode" : "blocking"
    }
}

When the Security Profile is applied, Use the mode with values transparent, blocking to set the mode to be applied. Mode is optional and default mode is blocking. In transparent mode, requests considered to be malicious generate an alarm but are not blocked. blocking mode blocks the requests identified as malicious by Bot Defense

PATCH /loadbalancers/1234
{
    "operation": "update_bot",
    "options": {
        "changeReference": "5678",
        "mode" : "transparent"
    }
}

Delete Bot Defense Security Profile from Load Balancer

When Security Profile is activated on a Load Balancer, the attribut botDefenseEnabled on the PATCH /loadbalancers/1234 is true. To remove the Bot Defense Security Profile from a Load Balancer, use : Use the delete_bot operation to remove Security Profile from the load balancer.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234
{
    "operation": "delete_bot",
    "options": {
        "changeReference": "5678"
    }
}

Update IP to whitelist for Load Balancer

Use the edit_bot_whitelist operation to update/add IP to whitelist for load balancer.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234
{
    "operation": "edit_bot_whitelist",
    "options": {
        "ip": "10.0.3.40",
        "changeReference": "5678"
    }
}

Remove IP Address from whitelist for Load Balancer

Use the delete_bot_whitelist operation to remove IP from whitelist for load balancer.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234
{
    "operation": "delete_bot_whitelist",
    "options": {
        "ip": "10.0.3.40",
        "changeReference": "5678"
    }
}

** changeReference (optional) is the RFC Number if available.

Update Monitoring for Load Balancer and its URLs

Use the update_monitoring operation to update monitoring status for load balancer.

This method is synchronous (status code 202).

  • Update Monitoring for load balancer and all related URLs.
PATCH /loadbalancers/1234
{
    "operation": "update_monitoring",
    "options": {
       "state": true,
       "on_call": true
    }
}
  • Update Monitoring for load balancer and url1 and url4 form its list of URLs.
PATCH /loadbalancers/1234
{
    "operation": "update_monitoring",
    "options": {
       "state": true,
       "on_call": true,
       "updateUrls": [
        "url1",
        "url4"
       ]
    }
}
Authorizations
Path parameters
idinteger · int64Required

Load Balancer Id, example: 123

Body

Object describing a partial modification of an object to perform. Please refer to documentation to get list of operations available and their specific payload.

operationstringRequired

Operation to perform on target object, example: operation_name

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch

Delete load balancer url

delete

This method allows to delete a URL of Load Balancer.

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

DELETE /loadbalancers/123/urls/456

Authorizations
Path parameters
idinteger · int64Required

Load Balancer Id, example: 123

urlIdinteger · int64Required

Load Balancer Url Id, example: 123

Responses
202
Accepted
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete

Update Load Balancer Url

patch

This method allows to update a url of load balancer.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details.

Below are different operations currently implemented.

Update Monitoring for Load Balancer and its URLs

Use the update_monitoring operation to update monitoring status for load balancer.

This method is synchronous (status code 202).

PATCH /loadbalancers/1234/urls/5678
{
    "operation": "update_monitoring",
    "options": {
       "state": true,
       "onCall": true
    }
}
Authorizations
Path parameters
idinteger · int64Required

Load Balancer Id, example: 123

urlIdinteger · int64Required

Load Balancer Url Id, example: 123

Body

Object describing a partial modification of an object to perform. Please refer to documentation to get list of operations available and their specific payload.

operationstringRequired

Operation to perform on target object, example: operation_name

Responses
202
Accepted
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch

Delete a member from a Load Balancer pool

delete
Authorizations
Path parameters
idinteger · int64Required
memberIdstringRequired
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete

Update Load Balancer pool member

patch

Set the state of a loadbalancer member.

The member must be a valid ITCare resource and must be a member of the specified loadbalancer.

Possible state value are :

  • enabled : Member is up and accept connection
  • disabled : Member is disabled and no longer accept new connection. Connections already established remain.
  • offline : Member is disabled and no longer accept new connection. Connections already established are interrupted.

Example :

PATCH /compute/loadbalancers/123/members/1050975
{
  "operation": "disabled"
}

This method is synchronous (status code 200) and will return loadbalancer's member object :

  {
    "resourceId": 1050975,
    "name": PEB4APP01,
    "port": 443,
    "state": "disabled",
    "status": "up",
    "name": "PEB4APP01",
    "address": "10.26.12.11"
  }
Authorizations
Path parameters
idinteger · int64Required
memberIdstringRequired
Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch

Get Load Balancer Stats

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Get Load Balancer SSL profile configuration

get
Authorizations
Path parameters
idinteger · int64Required
Query parameters
urlstringOptional

url, example: url

Default: url
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Get Load Balancer Events

get
Authorizations
Path parameters
idinteger · int64Required

id, example: 500067154

Query parameters
fromstring · date-timeRequired

From Date (ISO8601 format), example: 2023-03-15T00:00:00.000Z

tostring · date-timeRequired

To Date (ISO8601 format), example: 2023-03-16T00:00:00.000Z

typestringOptional

type, example: security

Default: security
criteriastringOptional

criteria, example: bot

Default: bot
sizeinteger · int32Optional

size, example: 20

Default: 20
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Get Load Balancers protocols

get
Authorizations
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Get Load Balancers Internal Whitelist

get
Authorizations
Responses
200
OK
application/vnd.cegedim-it.v1+json
Responsestring[]
400
Bad Request
*/*
get

Get Hardware by id

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

OpenSearch

OpenSearch managé

Description

OpenSearch est une suite de recherche et d'analyse open source pilotée par la communauté et dérivée d'Elasticsearch 7.10.2 & Kibana 7.10.2 sous licence Apache 2.0.

Il se compose d'un démon de moteur de recherche, OpenSearch, et d'une interface de visualisation et d'utilisation, OpenSearch Dashboards. Il permet d'ingérer, de sécuriser, de rechercher, d'agréger, de visualiser et d'analyser facilement les données.

Ces capacités sont populaires pour des cas d'utilisation tels que la recherche d'applications, l'analyse des journaux, etc.

Plateforme en tant que Service

Les serveurs OpenSearch Cluster et la configuration des services sont gérés par cegedim.cloud. Le produit est disponible en libre-service dans ITCare.

Les utilisateurs ont un accès complet à la base de données et aux tableaux de bord d'OpenSearch. Il est de la responsabilité des utilisateurs de gérer la sécurité des index et de leur cycle de vie.

OpenSearch est déployé en tant que cluster sur site dans nos centres de données.

Le même niveau de service que l'offre Compute est garanti : déploiement d'instances, maintien en condition opérationnelle, flexibilité, sécurité et monitoring sont ainsi assurés par nos experts.

Le dimensionnement peut être configuré en fonction de vos besoins.

Le nombre minimum de nœuds pour un cluster est de 3 serveurs mais n'est pas recommandé pour la production. Il est conseillé de déployer au moins 5 nœuds ou plus pour une utilisation en production.

Cluster

Instances

  • 3

  • 5 (recommandé)

CPU (par instance)

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

Version(s) supportée(s)

  • 2.11.0

  • 2.15.0

  • 2.19.0

Surveillance

✅ Option

Surveillance 24x7

✅ Option

Sauvegarde

✅ Option

Réplication de données (PRA)

✅ Option

Disponibilité

99,9%

Déploiement multi-AZ

✅

Libre-service

✅

Pour plus d'information, veuillez consulter la page OpenSearch - Architecture.

Facturation

La facturation est mensuelle et basée sur le nombre de nœuds, plus des coûts supplémentaires pour le stockage, la sauvegarde et la surveillance 24/7.

L'estimation du coût d'un cluster OpenSearch est disponible auprès de votre Responsable de compte Technique.

Tag Keys

Application Servers

Erreurs

L'API ITCare utilise les codes de réponse HTTP conventionnels pour indiquer le succès ou l'échec d'une demande API.

En règle générale :

  • Les codes 2xx indiquent un succès.

  • Les codes 4xx indiquent des paramètres incorrects ou incomplets (par exemple, un paramètre requis a été omis, ou une opération a échoué avec une tierce partie, etc.)

  • Les codes de l'ordre de 5xx indiquent une erreur avec les serveurs d'ITCare.

Ce tableau présente d'autres exemples de codes de réponse HTTP.

Code
Description
Réponse

ITCare produit également un message d'erreur et un code d'erreur formaté en JSON :

Glusterfs

List events of type Request for Change (RFC), Customer events and Maintenance slot

get
Authorizations
Query parameters
environmentsstring[]Optional

Event environments

Example: ALL,NON_PROD,PROD
startstring · date-timeOptional

Start Date (ISO8601 format)

Example: 2022-04-01T22:00:00.000Z
endstring · date-timeOptional

End Date (ISO8601 format)

Example: 2022-04-30T22:00:00.000Z
Responses
200
OK
application/vnd.cegedim-it.v1+json
get
200

OK

GET /itcare/networking/loadbalancers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "botDefenseEnabled": true,
      "botDefenseUpdating": true,
      "category": "text",
      "certificate": {
        "certificateName": "text",
        "commonName": "text",
        "description": "text",
        "expirationDate": "text",
        "id": 1
      },
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "defaultPersistence": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "fallbackPersistence": "text",
      "family": "text",
      "healthChecks": [
        {
          "comment": "text",
          "description": "text",
          "id": 1,
          "name": "text"
        }
      ],
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "ipAddress": "text",
      "irules": [
        {
          "description": "text",
          "name": "text"
        }
      ],
      "label": "text",
      "loadBalancingMode": "text",
      "members": [
        {
          "area": {
            "availabilityZones": [
              {
                "availabilityZoneGroup": "text",
                "datacenterId": "text",
                "defaultZone": true,
                "id": "text",
                "location": "text",
                "routable": true
              }
            ],
            "defaultArea": true,
            "id": "text",
            "location": "text",
            "regulation": "text"
          },
          "authenticationDomain": "text",
          "availabilityZone": {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          },
          "backup": {
            "backupSystem": "text",
            "filesNb": 1,
            "lastDate": "2025-07-04T04:15:11.161Z",
            "size": 1,
            "type": "text"
          },
          "backupPolicyDetails": {
            "backups": [
              {
                "backupLastDate": "2025-07-04T04:15:11.161Z",
                "backupSize": 1,
                "id": 1,
                "type": "text"
              }
            ],
            "policies": [
              {
                "backupLastDate": "2025-07-04T04:15:11.161Z",
                "backupSize": 1,
                "durationInHours": 1,
                "frequencies": {},
                "label": "text",
                "name": "text",
                "policyId": "text",
                "replication": true,
                "scope": "text",
                "startTime": "text",
                "timezone": "text",
                "type": "text"
              }
            ]
          },
          "backupStatus": true,
          "category": "text",
          "cloudId": 1,
          "cloudName": "text",
          "comment": "text",
          "cpu": 1,
          "creationTime": "text",
          "creationUser": "text",
          "endOfSalesAt": "2025-07-04T04:15:11.161Z",
          "endOfSupportAt": "2025-07-04T04:15:11.161Z",
          "environment": "text",
          "extendedSupportAt": "2025-07-04T04:15:11.161Z",
          "family": "text",
          "id": 1,
          "imageCode": "text",
          "internalResourceId": 1,
          "internalType": "text",
          "ipAddress": "text",
          "isExternalIngressNode": true,
          "isInternalIngressNode": true,
          "isMemberOFLoadBalancer": true,
          "label": "text",
          "labelArea": "text",
          "labelAvailabilityZone": "text",
          "labelDataCenter": "text",
          "labelRegion": "text",
          "loadbalancers": [
            {
              "id": 1,
              "memberCount": 1,
              "monitoringEnabled": true,
              "name": "text",
              "serviceId": 1,
              "status": "text"
            }
          ],
          "metrologyUrl": "text",
          "monitoringAlerting": true,
          "monitoringEnabled": true,
          "monitoringOnCallEnabled": true,
          "monitoringRequested": true,
          "name": "text",
          "network": {
            "area": "text",
            "cidr": "text",
            "cloud": "text",
            "defaultNetwork": true,
            "description": "text",
            "dns": [
              {
                "alias": "text",
                "domain": "text"
              }
            ],
            "environment": "text",
            "gateway": "text",
            "id": 1,
            "ipAddress": "text",
            "ipFreeNumber": 1,
            "isIpRangePublic": true,
            "mask": "text",
            "networkShortDescription": "text",
            "region": "text",
            "scope": "text",
            "shortDescription": "text",
            "technicalId": "text",
            "usedPercent": 1
          },
          "osName": "text",
          "osType": "text",
          "parentResourceType": "text",
          "patchParty": {
            "excluded": true,
            "excludedBy": "text",
            "exclusionDate": "2025-07-04T04:15:11.161Z",
            "exclusionReason": "text",
            "id": 1,
            "name": "text",
            "patchDate": "2025-07-04T04:15:11.161Z",
            "patchGroup": "text",
            "patchTag": "text"
          },
          "path": "text",
          "prettyLabel": "text",
          "productCode": "text",
          "productName": "text",
          "productVersion": "text",
          "ram": 1,
          "region": {
            "areas": [
              {
                "availabilityZones": [
                  {
                    "availabilityZoneGroup": "text",
                    "datacenterId": "text",
                    "defaultZone": true,
                    "id": "text",
                    "location": "text",
                    "routable": true
                  }
                ],
                "defaultArea": true,
                "id": "text",
                "location": "text",
                "regulation": "text"
              }
            ],
            "dataCenter": "text",
            "id": "text",
            "location": "text"
          },
          "releasedAt": "2025-07-04T04:15:11.161Z",
          "replication": {
            "noStoRplExplanation": "text",
            "storageClass": "text",
            "storageClassOverride": "text",
            "storageMoveInProgress": true,
            "storageMoveTicket": "text",
            "storageReplicationClass": "text"
          },
          "replicationStatus": true,
          "resourceType": "text",
          "serviceId": 1,
          "serviceKey": "text",
          "serviceName": "text",
          "snapshot": {
            "changeReference": "text",
            "createdAt": "2025-07-04T04:15:11.161Z",
            "createdBy": "text",
            "description": "text",
            "expiresAt": "2025-07-04T04:15:11.161Z",
            "id": "text",
            "label": "text",
            "recoveredAt": "2025-07-04T04:15:11.161Z",
            "snapshotSize": 1
          },
          "status": "text",
          "storage": 1,
          "storageInformation": {
            "fileSystems": [
              {
                "free": 1,
                "mountingPoint": "text",
                "sizeOf": 1,
                "type": "text"
              }
            ],
            "totalSizeDisks": 1,
            "totalSizeFileSystems": 1
          },
          "storageMoveInProgress": true,
          "supportPhase": "text",
          "technology": "text",
          "type": "text"
        }
      ],
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "network": {
        "area": "text",
        "cidr": "text",
        "cloud": "text",
        "defaultNetwork": true,
        "description": "text",
        "dns": [
          {
            "alias": "text",
            "domain": "text"
          }
        ],
        "environment": "text",
        "gateway": "text",
        "id": 1,
        "ipAddress": "text",
        "ipFreeNumber": 1,
        "isIpRangePublic": true,
        "mask": "text",
        "networkShortDescription": "text",
        "region": "text",
        "scope": "text",
        "shortDescription": "text",
        "technicalId": "text",
        "usedPercent": 1
      },
      "nodeCount": 1,
      "parentResource": {
        "backupPolicyDetails": {
          "backups": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "id": 1,
              "type": "text"
            }
          ],
          "policies": [
            {
              "backupLastDate": "2025-07-04T04:15:11.161Z",
              "backupSize": 1,
              "durationInHours": 1,
              "frequencies": {},
              "label": "text",
              "name": "text",
              "policyId": "text",
              "replication": true,
              "scope": "text",
              "startTime": "text",
              "timezone": "text",
              "type": "text"
            }
          ]
        },
        "backupStatus": true,
        "category": "text",
        "cloudId": 1,
        "cloudName": "text",
        "comment": "text",
        "creationTime": "text",
        "creationUser": "text",
        "endOfSalesAt": "2025-07-04T04:15:11.161Z",
        "endOfSupportAt": "2025-07-04T04:15:11.161Z",
        "environment": "text",
        "extendedSupportAt": "2025-07-04T04:15:11.161Z",
        "family": "text",
        "id": 1,
        "internalResourceId": 1,
        "internalType": "text",
        "label": "text",
        "metrologyUrl": "text",
        "monitoringAlerting": true,
        "monitoringEnabled": true,
        "monitoringOnCallEnabled": true,
        "monitoringRequested": true,
        "name": "text",
        "patchParty": {
          "excluded": true,
          "excludedBy": "text",
          "exclusionDate": "2025-07-04T04:15:11.161Z",
          "exclusionReason": "text",
          "id": 1,
          "name": "text",
          "patchDate": "2025-07-04T04:15:11.161Z",
          "patchGroup": "text",
          "patchTag": "text"
        },
        "path": "text",
        "prettyLabel": "text",
        "productCode": "text",
        "productName": "text",
        "productVersion": "text",
        "releasedAt": "2025-07-04T04:15:11.161Z",
        "replicationStatus": true,
        "resourceType": "text",
        "serviceId": 1,
        "serviceKey": "text",
        "serviceName": "text",
        "status": "text",
        "supportPhase": "text",
        "technology": "text",
        "type": "text"
      },
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "protocols": [
        {
          "comment": "text",
          "isCertificateRequired": true,
          "name": "text",
          "order": 1,
          "persistence": true,
          "port": 1,
          "profileNoPersistenceNoRedirect": "text",
          "profileNoPersistenceOnly": "text",
          "profileNoPersistenceRedirect": "text",
          "profilePersistenceNoRedirect": "text",
          "profilePersistenceOnly": "text",
          "profilePersistenceRedirect": "text",
          "protocol": "text",
          "redirectToHttps": true
        }
      ],
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "securityProfile": {
        "comment": "text",
        "description": "text",
        "enforcement": "text",
        "id": "text",
        "name": "text",
        "profile": "text",
        "template": "text",
        "whiteList": [
          {
            "comment": "text",
            "ip": "text",
            "url": "text"
          }
        ]
      },
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "snatAutomap": true,
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "type": "text",
      "urls": [
        {
          "comment": "text",
          "creationTime": "text",
          "creationUser": "text",
          "description": "text",
          "endOfSalesAt": "2025-07-04T04:15:11.161Z",
          "endOfSupportAt": "2025-07-04T04:15:11.161Z",
          "environment": "text",
          "extendedSupportAt": "2025-07-04T04:15:11.161Z",
          "id": 1,
          "monitoringAlerting": true,
          "monitoringEnabled": true,
          "monitoringMode": "text",
          "monitoringOnCallEnabled": true,
          "name": "text",
          "releasedAt": "2025-07-04T04:15:11.161Z",
          "serviceId": 1,
          "serviceKey": "text",
          "serviceName": "text",
          "specificChecks": [
            {
              "name": "text",
              "parameter": {
                "authentification": {
                  "password": "text",
                  "user": "text"
                },
                "criticalContent": "text",
                "criticalStatus": "text",
                "expectedContent": "text",
                "headers": [
                  {
                    "key": "text",
                    "value": "text"
                  }
                ],
                "method": "text",
                "parameters": [
                  {
                    "key": "text",
                    "value": "text"
                  }
                ],
                "path": "text",
                "port": 1,
                "prefix": "text",
                "protocol": "text",
                "warningContent": "text"
              }
            }
          ],
          "status": "text",
          "supportPhase": "text",
          "tags": [
            {
              "tagKey": "text",
              "tagValue": "text"
            }
          ],
          "type": "text"
        }
      ]
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}
POST /itcare/networking/loadbalancers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 712

{
  "area": "text",
  "backupEnabled": true,
  "certificateName": "text",
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "healthcheck": "text",
  "members": [
    {
      "id": 1,
      "name": "text",
      "network": {
        "area": "text",
        "cidr": "text",
        "id": 1,
        "ipAddress": "text",
        "name": "text",
        "region": "text",
        "technicalId": "text"
      }
    }
  ],
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "onCallSupervision": true,
  "persistence": true,
  "portMembers": "text",
  "profileName": "text",
  "redirectToHttps": true,
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "setUpDNSEnabled": true,
  "sslProfile": "text",
  "url": "text",
  "vsPort": 1
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
GET /itcare/networking/loadbalancers/{id}/urls HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "description": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "id": 1,
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringMode": "text",
    "monitoringOnCallEnabled": true,
    "name": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "specificChecks": [
      {
        "name": "text",
        "parameter": {
          "authentification": {
            "password": "text",
            "user": "text"
          },
          "criticalContent": "text",
          "criticalStatus": "text",
          "expectedContent": "text",
          "headers": [
            {
              "key": "text",
              "value": "text"
            }
          ],
          "method": "text",
          "parameters": [
            {
              "key": "text",
              "value": "text"
            }
          ],
          "path": "text",
          "port": 1,
          "prefix": "text",
          "protocol": "text",
          "warningContent": "text"
        }
      }
    ],
    "status": "text",
    "supportPhase": "text",
    "tags": [
      {
        "tagKey": "text",
        "tagValue": "text"
      }
    ],
    "type": "text"
  }
]
POST /itcare/networking/loadbalancers/{id}/urls HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 108

{
  "monitoringEnabled": true,
  "name": "text",
  "onCallSupervision": true,
  "setUpDNSEnabled": true,
  "sslProfile": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
GET /itcare/networking/loadbalancers/{id}/members HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "address": "text",
    "category": "text",
    "family": "text",
    "internalType": "text",
    "labelArea": "text",
    "name": "text",
    "port": 1,
    "productName": "text",
    "resourceId": 1,
    "serviceId": 1,
    "state": "text",
    "status": "text",
    "technicalId": "text",
    "technology": "text"
  }
]
POST /itcare/networking/loadbalancers/{id}/members HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 238

{
  "address": "text",
  "category": "text",
  "family": "text",
  "internalType": "text",
  "labelArea": "text",
  "name": "text",
  "port": 1,
  "productName": "text",
  "resourceId": 1,
  "serviceId": 1,
  "state": "text",
  "status": "text",
  "technicalId": "text",
  "technology": "text"
}
[
  {
    "address": "text",
    "category": "text",
    "family": "text",
    "internalType": "text",
    "labelArea": "text",
    "name": "text",
    "port": 1,
    "productName": "text",
    "resourceId": 1,
    "serviceId": 1,
    "state": "text",
    "status": "text",
    "technicalId": "text",
    "technology": "text"
  }
]
GET /itcare/networking/loadbalancers/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "botDefenseEnabled": true,
  "botDefenseUpdating": true,
  "category": "text",
  "certificate": {
    "certificateName": "text",
    "commonName": "text",
    "description": "text",
    "expirationDate": "text",
    "id": 1
  },
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "creationTime": "text",
  "creationUser": "text",
  "defaultPersistence": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "fallbackPersistence": "text",
  "family": "text",
  "healthChecks": [
    {
      "comment": "text",
      "description": "text",
      "id": 1,
      "name": "text"
    }
  ],
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "ipAddress": "text",
  "irules": [
    {
      "description": "text",
      "name": "text"
    }
  ],
  "label": "text",
  "loadBalancingMode": "text",
  "members": [
    {
      "area": {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      },
      "authenticationDomain": "text",
      "availabilityZone": {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      },
      "backup": {
        "backupSystem": "text",
        "filesNb": 1,
        "lastDate": "2025-07-04T04:15:11.161Z",
        "size": 1,
        "type": "text"
      },
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "imageCode": "text",
      "internalResourceId": 1,
      "internalType": "text",
      "ipAddress": "text",
      "isExternalIngressNode": true,
      "isInternalIngressNode": true,
      "isMemberOFLoadBalancer": true,
      "label": "text",
      "labelArea": "text",
      "labelAvailabilityZone": "text",
      "labelDataCenter": "text",
      "labelRegion": "text",
      "loadbalancers": [
        {
          "id": 1,
          "memberCount": 1,
          "monitoringEnabled": true,
          "name": "text",
          "serviceId": 1,
          "status": "text"
        }
      ],
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "network": {
        "area": "text",
        "cidr": "text",
        "cloud": "text",
        "defaultNetwork": true,
        "description": "text",
        "dns": [
          {
            "alias": "text",
            "domain": "text"
          }
        ],
        "environment": "text",
        "gateway": "text",
        "id": 1,
        "ipAddress": "text",
        "ipFreeNumber": 1,
        "isIpRangePublic": true,
        "mask": "text",
        "networkShortDescription": "text",
        "region": "text",
        "scope": "text",
        "shortDescription": "text",
        "technicalId": "text",
        "usedPercent": 1
      },
      "osName": "text",
      "osType": "text",
      "parentResourceType": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "region": {
        "areas": [
          {
            "availabilityZones": [
              {
                "availabilityZoneGroup": "text",
                "datacenterId": "text",
                "defaultZone": true,
                "id": "text",
                "location": "text",
                "routable": true
              }
            ],
            "defaultArea": true,
            "id": "text",
            "location": "text",
            "regulation": "text"
          }
        ],
        "dataCenter": "text",
        "id": "text",
        "location": "text"
      },
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replication": {
        "noStoRplExplanation": "text",
        "storageClass": "text",
        "storageClassOverride": "text",
        "storageMoveInProgress": true,
        "storageMoveTicket": "text",
        "storageReplicationClass": "text"
      },
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "snapshot": {
        "changeReference": "text",
        "createdAt": "2025-07-04T04:15:11.161Z",
        "createdBy": "text",
        "description": "text",
        "expiresAt": "2025-07-04T04:15:11.161Z",
        "id": "text",
        "label": "text",
        "recoveredAt": "2025-07-04T04:15:11.161Z",
        "snapshotSize": 1
      },
      "status": "text",
      "storage": 1,
      "storageInformation": {
        "fileSystems": [
          {
            "free": 1,
            "mountingPoint": "text",
            "sizeOf": 1,
            "type": "text"
          }
        ],
        "totalSizeDisks": 1,
        "totalSizeFileSystems": 1
      },
      "storageMoveInProgress": true,
      "supportPhase": "text",
      "technology": "text",
      "type": "text"
    }
  ],
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "network": {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  },
  "nodeCount": 1,
  "parentResource": {
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "id": 1,
    "internalResourceId": 1,
    "internalType": "text",
    "label": "text",
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "status": "text",
    "supportPhase": "text",
    "technology": "text",
    "type": "text"
  },
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "protocols": [
    {
      "comment": "text",
      "isCertificateRequired": true,
      "name": "text",
      "order": 1,
      "persistence": true,
      "port": 1,
      "profileNoPersistenceNoRedirect": "text",
      "profileNoPersistenceOnly": "text",
      "profileNoPersistenceRedirect": "text",
      "profilePersistenceNoRedirect": "text",
      "profilePersistenceOnly": "text",
      "profilePersistenceRedirect": "text",
      "protocol": "text",
      "redirectToHttps": true
    }
  ],
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "securityProfile": {
    "comment": "text",
    "description": "text",
    "enforcement": "text",
    "id": "text",
    "name": "text",
    "profile": "text",
    "template": "text",
    "whiteList": [
      {
        "comment": "text",
        "ip": "text",
        "url": "text"
      }
    ]
  },
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "snatAutomap": true,
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text",
  "urls": [
    {
      "comment": "text",
      "creationTime": "text",
      "creationUser": "text",
      "description": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "id": 1,
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringMode": "text",
      "monitoringOnCallEnabled": true,
      "name": "text",
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "specificChecks": [
        {
          "name": "text",
          "parameter": {
            "authentification": {
              "password": "text",
              "user": "text"
            },
            "criticalContent": "text",
            "criticalStatus": "text",
            "expectedContent": "text",
            "headers": [
              {
                "key": "text",
                "value": "text"
              }
            ],
            "method": "text",
            "parameters": [
              {
                "key": "text",
                "value": "text"
              }
            ],
            "path": "text",
            "port": 1,
            "prefix": "text",
            "protocol": "text",
            "warningContent": "text"
          }
        }
      ],
      "status": "text",
      "supportPhase": "text",
      "tags": [
        {
          "tagKey": "text",
          "tagValue": "text"
        }
      ],
      "type": "text"
    }
  ]
}
DELETE /itcare/networking/loadbalancers/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 26

{
  "changeReference": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
PATCH /itcare/networking/loadbalancers/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
DELETE /itcare/networking/loadbalancers/{id}/urls/{urlId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
PATCH /itcare/networking/loadbalancers/{id}/urls/{urlId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
DELETE /itcare/networking/loadbalancers/{id}/members/{memberId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "address": "text",
    "category": "text",
    "family": "text",
    "internalType": "text",
    "labelArea": "text",
    "name": "text",
    "port": 1,
    "productName": "text",
    "resourceId": 1,
    "serviceId": 1,
    "state": "text",
    "status": "text",
    "technicalId": "text",
    "technology": "text"
  }
]
PATCH /itcare/networking/loadbalancers/{id}/members/{memberId} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "address": "text",
  "category": "text",
  "family": "text",
  "internalType": "text",
  "labelArea": "text",
  "name": "text",
  "port": 1,
  "productName": "text",
  "resourceId": 1,
  "serviceId": 1,
  "state": "text",
  "status": "text",
  "technicalId": "text",
  "technology": "text"
}
GET /itcare/networking/loadbalancers/{id}/stats HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "ANY_ADDITIONAL_PROPERTY": {
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  }
]
GET /itcare/networking/loadbalancers/{id}/ssl-profiles HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "isValidSSLProfilInstalled": true,
  "validSSLProfiles": [
    {
      "certificat": "text",
      "description": "text",
      "id": 1,
      "name": "text",
      "serverName": "text",
      "sniDefault": true
    }
  ]
}
GET /itcare/networking/loadbalancers/{id}/events HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "ANY_ADDITIONAL_PROPERTY": "text"
  }
]
GET /itcare/networking/loadbalancers/protocols HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "comment": "text",
    "isCertificateRequired": true,
    "name": "text",
    "order": 1,
    "persistence": true,
    "port": 1,
    "profileNoPersistenceNoRedirect": "text",
    "profileNoPersistenceOnly": "text",
    "profileNoPersistenceRedirect": "text",
    "profilePersistenceNoRedirect": "text",
    "profilePersistenceOnly": "text",
    "profilePersistenceRedirect": "text",
    "protocol": "text",
    "redirectToHttps": true
  }
]
GET /itcare/networking/loadbalancers/internal-whitelist HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  "text"
]
GET /itcare/hardwares/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "creationTime": "text",
  "creationUser": "text",
  "dc": "text",
  "endOfCoverDate": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "ip": "text",
  "label": "text",
  "location": "text",
  "maintenanceType": "text",
  "metrologyUrl": "text",
  "model": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "rack": "text",
  "region": "text",
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serial": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "status": "text",
  "sticker": "text",
  "supportPhase": "text",
  "technology": "text",
  "type": "text"
}

200

Demande traitée avec succès

Varie en fonction de la demande

201

Objet créé avec succès

Objet créé

202

Ordre de création de l'objet traité avec succès, la demande sera traitée de manière asynchrone

Objet vide ou objet de suivi décrivant le traitement de la demande asynchrone

400

Mauvaise requête - Erreur de syntaxe ou de cohérence dans la requête. Doit être corrigée par l'émetteur

Blanc ou indication de l'erreur à corriger du côté du client

401

Accès non autorisé à la ressource

Vide

403

Accès non autorisé

Vide

404

Ressource non existante

Vide

409

Conflit

Vide

422

Donnée incohérente

Vide

500

Erreur fatale de l'API

Vide

503

Service temporairement indisponible

Vide


{
    "status": "BAD_REQUEST",
    "errorCode": "INVALID_FIELD_VALUE",
    "errorDesc": "name",
    "errorMessage": "Error on field 'name'
}

GET /itcare/changes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "cloudId": 1,
    "cloudName": "text",
    "createdAt": "2025-07-04T04:15:11.161Z",
    "createdBy": "text",
    "description": "text",
    "descriptionFr": "text",
    "detail": "text",
    "detailFr": "text",
    "endAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "executionEndAt": "2025-07-04T04:15:11.161Z",
    "executionStartAt": "2025-07-04T04:15:11.161Z",
    "id": 1,
    "impact": "MAJOR",
    "maintenanceType": "text",
    "number": 1,
    "organizationId": 1,
    "patchTag": "text",
    "startAt": "2025-07-04T04:15:11.161Z",
    "title": "text",
    "titleFr": "text",
    "type": "CUSTOMER",
    "updatedAt": "2025-07-04T04:15:11.161Z",
    "updatedBy": "text"
  }
]

List all tag keys matching the given key, if key is empty it will return all tag keys

get
Authorizations
Query parameters
keystringOptionalDefault: ""
Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/tag-keys HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "tagKey": "text",
    "tagValue": "text"
  }
]

List Application servers

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

typesstring[]Optional

Types, example: TOMCAT or WILDFLY or WEB_ZONE

familiesstring[]Optional

Families, example: DEBIAN,CENTOS,RHEL

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

backupStatusbooleanOptional

Filter list by backup status

recoveryStatusbooleanOptional

Filter list by DRP status

includedInPatchPartybooleanOptional

Filter list by patch party status

azstring[]Optional

Availability Zone, example: EB-A, EB-B, EB-C, etc...

ipstring[]Optional

IPs, example: 10.59.13.29

vlanstring[]Optional

VLAN, example: EB_1125_DMZ8

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
*/*
400
Bad Request
*/*
get
GET /itcare/compute/application-servers HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "area": {
        "availabilityZones": [
          {
            "availabilityZoneGroup": "text",
            "datacenterId": "text",
            "defaultZone": true,
            "id": "text",
            "location": "text",
            "routable": true
          }
        ],
        "defaultArea": true,
        "id": "text",
        "location": "text",
        "regulation": "text"
      },
      "authenticationDomain": "text",
      "availabilityZone": {
        "availabilityZoneGroup": "text",
        "datacenterId": "text",
        "defaultZone": true,
        "id": "text",
        "location": "text",
        "routable": true
      },
      "backup": {
        "backupSystem": "text",
        "filesNb": 1,
        "lastDate": "2025-07-04T04:15:11.161Z",
        "size": 1,
        "type": "text"
      },
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "imageCode": "text",
      "internalResourceId": 1,
      "internalType": "text",
      "ipAddress": "text",
      "isExternalIngressNode": true,
      "isInternalIngressNode": true,
      "isMemberOFLoadBalancer": true,
      "label": "text",
      "labelArea": "text",
      "labelAvailabilityZone": "text",
      "labelDataCenter": "text",
      "labelRegion": "text",
      "loadbalancers": [
        {
          "id": 1,
          "memberCount": 1,
          "monitoringEnabled": true,
          "name": "text",
          "serviceId": 1,
          "status": "text"
        }
      ],
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "network": {
        "area": "text",
        "cidr": "text",
        "cloud": "text",
        "defaultNetwork": true,
        "description": "text",
        "dns": [
          {
            "alias": "text",
            "domain": "text"
          }
        ],
        "environment": "text",
        "gateway": "text",
        "id": 1,
        "ipAddress": "text",
        "ipFreeNumber": 1,
        "isIpRangePublic": true,
        "mask": "text",
        "networkShortDescription": "text",
        "region": "text",
        "scope": "text",
        "shortDescription": "text",
        "technicalId": "text",
        "usedPercent": 1
      },
      "osName": "text",
      "osType": "text",
      "parentResourceType": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "region": {
        "areas": [
          {
            "availabilityZones": [
              {
                "availabilityZoneGroup": "text",
                "datacenterId": "text",
                "defaultZone": true,
                "id": "text",
                "location": "text",
                "routable": true
              }
            ],
            "defaultArea": true,
            "id": "text",
            "location": "text",
            "regulation": "text"
          }
        ],
        "dataCenter": "text",
        "id": "text",
        "location": "text"
      },
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replication": {
        "noStoRplExplanation": "text",
        "storageClass": "text",
        "storageClassOverride": "text",
        "storageMoveInProgress": true,
        "storageMoveTicket": "text",
        "storageReplicationClass": "text"
      },
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "snapshot": {
        "changeReference": "text",
        "createdAt": "2025-07-04T04:15:11.161Z",
        "createdBy": "text",
        "description": "text",
        "expiresAt": "2025-07-04T04:15:11.161Z",
        "id": "text",
        "label": "text",
        "recoveredAt": "2025-07-04T04:15:11.161Z",
        "snapshotSize": 1
      },
      "status": "text",
      "storage": 1,
      "storageInformation": {
        "fileSystems": [
          {
            "free": 1,
            "mountingPoint": "text",
            "sizeOf": 1,
            "type": "text"
          }
        ],
        "totalSizeDisks": 1,
        "totalSizeFileSystems": 1
      },
      "storageMoveInProgress": true,
      "supportPhase": "text",
      "technology": "text",
      "type": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}

Redis - Didacticiels

Comment provisionner un PaaS Redis ?

Pour commencer, rendez-vous sur ITCare et recherchez votre service global cible où vous créerez votre nouveau déploiement Redis.

Recherchez votre service Global dans la barre de recherche supérieure et cliquez dessus pour afficher sa page d'information.

Une fois dans votre Service Global, cliquez sur le bouton Créer une ressource, sélectionnez Redis et la version requise.

Remplir le formulaire :

  • Sélectionner une topologie

  • Définir le nom du futur déploiement

  • Le dimensionnement

  • Le stockage requis sur chaque instance

  • La localisation cible

  • Le réseau cible

  • Les options de gestion (sauvegarde, surveillance, 24/7, réplication site distant)

Cliquer sur Suivant une fois les champs remplis.

A l'étape de personnalisation :

  • Saisir le mot de passe du compte administrateur qui sera fourni

  • Sélectionner les options de persistance requises

  • Activer ou non le chiffrement TLS

Puis cliquer sur Suivant.

Les mots de passe ne sont pas sauvegardés par cegedim.cloud.

Assurez-vous de sauvegarder votre mot de passe!

Réviser la synthèse avant de soumettre le formulaire.

Le provisionnement peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation.

Une fois le déploiement prêt, vous en serez informé par e-mail.

Comment se connecter à une instance autonome Redis ?

Ce code décrit comment se connecter sur Redis lorsque la topologie est une instance unique. Ce code est volontairement simplifié (les erreurs ne sont pas gérées), il est destiné à la démonstration uniquement.

Le langage Python est utilisé. Nous supposons que l'instance Redis est nommée pcluredis01.hosting.cegedim.cloud.

Exemple Python sans TLS
import redis
 
def main():
    try:
        myRedis = redis.Redis(host='redis01.hosting.cegedim.cloud', port=6379, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True)
        pong = myRedis.ping()
        print(pong) # should be True
        myRedis.set('mykey','myvalue')
        print(myRedis.get('mykey')) # should be myvalue
        myRedis.close()
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()
Exemple Python avec TLS
import redis
 
def main():
    try:
        myRedis = redis.Redis(host='redis01.hosting.cegedim.cloud', port=6379, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True)
        pong = myRedis.ping()
        print(pong) # should be True
        myRedis.set('mykey','myvalue')
        print(myRedis.get('mykey')) # should be myvalue
        myRedis.close()
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()

Comment se connecter à un cluster Redis ?

Ce code décrit comment se connecter sur Redis lorsque la topologie est Cluster (avec Sentinel). Il est volontairement simplifié (les erreurs ne sont pas gérées), il est destiné à la démonstration uniquement.

Le langage Python est utilisé.

Nous supposons que le cluster Redis est nommé redis-cluster avec un préfixe pclu. Il existe donc 3 machines :

  • pcluredis01.hosting.cegedim.cloud

  • pcluredis02.hosting.cegedim.cloud

  • pcluredis03.hosting.cegedim.cloud

Deux exemples sont proposés, avec et sans TLS.

Exemple Python sans TLS
from redis.sentinel import Sentinel
import redis
 
def main():
    try:
        mySentinel = Sentinel(
          [
            ('pcluredis01.hosting.cegedim.cloud', 26379),
            ('pcluredis02.hosting.cegedim.cloud', 26379),
            ('pcluredis03.hosting.cegedim.cloud', 26379)
          ],
          sentinel_kwargs={
            'username': 'redis',
            'password': '1MyStrongPassword!',
            'socket_connect_timeout': 0.5
          }
        )
         
        master_host, master_port = mySentinel.discover_master('redis-cluster')
        print("Redis master address: {}, TCP port {}".format(master_host, master_port))
        myMaster = redis.Redis(
          host=master_host,
          port=master_port,
          db=0,
          password='1MyStrongPassword!',
          username='redis',
          decode_responses=True
        )
        pong = myMaster.ping()
        print(pong) # should be True
        myMaster.set('mykey','myvalue')
        print(myMaster.get('mykey')) # should be myvalue
        myMaster.close()
        replicas = mySentinel.discover_slaves('redis-cluster')
        for replica in replicas:
            replica_host = replica[0]
            replica_port = replica[1]
            myReplica = redis.Redis(host=replica_host, port=replica_port, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True)
            print("replica address {} port {} mykey {}".format(replica_host, replica_port, myReplica.get('mykey'))) # should be myvalue
            myReplica.close()
         
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()
Exemple Python avec TLS
from redis.sentinel import Sentinel
import redis
 
def main():
    try:
        mySentinel = Sentinel(
          [
            ('pcluredis01.hosting.cegedim.cloud', 26379),
            ('pcluredis02.hosting.cegedim.cloud', 26379),
            ('pcluredis03.hosting.cegedim.cloud', 26379)
          ],
          sentinel_kwargs={
            'username': 'redis',
            'password': '1MyStrongPassword!',
            'ssl': True,
            'ssl_ca_certs': '/tmp/ca-redis.crt',
            'ssl_cert_reqs': None,
            'ssl_certfile': None,
            'ssl_keyfile': None,
            'ssl_check_hostname': False,
            'socket_connect_timeout': 0.5
          }
        )
         
        master_host, master_port = mySentinel.discover_master('redis-cluster')
        print("Redis master address: {}, TCP port {}".format(master_host, master_port))
        myMaster = redis.Redis(
          host=master_host,
          port=master_port,
          db=0,
          password='1MyStrongPassword!',
          username='redis',
          decode_responses=True,
          ssl=True,
          ssl_ca_certs='/tmp/ca-redis.crt'
        )
        pong = myMaster.ping()
        print(pong) # should be True
        myMaster.set('mykey','myvalue')
        print(myMaster.get('mykey')) # should be myvalue
        myMaster.close()
        replicas = mySentinel.discover_slaves('redis-cluster')
        for replica in replicas:
            replica_host = replica[0]
            replica_port = replica[1]
            myReplica = redis.Redis(host=replica_host, port=replica_port, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True, ssl=True, ssl_ca_certs='/tmp/ca-redis.crt')
            print("replica address {} port {} mykey {}".format(replica_host, replica_port, myReplica.get('mykey'))) # should be myvalue
            myReplica.close()
         
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()

List GlusterFS

get
Authorizations
Query parameters
servicesinteger · int64[]Optional
namesstring[]Optional

Names, example: resource01,!resource02,resource42

environmentsstring[]Optional

Environments, example: PRODUCTION,DEVELOPMENT

statusesstring[]Optional

Status, example: ACTIVE,INACTIVE

tagsstring[]Optional

Tags, example: mytagkey:mytagvalue,application:itcare

monitoringStatusbooleanOptional

Filter list by monitoring status

monitoringOnCallStatusbooleanOptional

Filter list by monitoring on call status

backupStatusbooleanOptional

Filter list by backup status

recoveryStatusbooleanOptional

Filter list by DRP status

includedInPatchPartybooleanOptional

Filter list by patch party status

topologiesstring[]Optional

Topology, example: Cluster

versionsstring[]Optional

Version, example: v1.26.15, v1.28.13, etc...

virtualIpsstring[]Optional

VirtualIp, example: 127.0.0.1, 127.0, 127, 10.%.62

cloudsintegerOptional
pagestringOptional

Results page you want to retrieve (0..N)

sizestringOptional

Number of records per page.

sortanyOptional

Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria is not supported.

Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Create GlusterFS

post

This method allows to create a GlusterFS cluster.

You will have to know at the minimum :

  • the area of the region where you want to host your GlusterFS (area attribute). Areas can be available in List Regions method.
  • name of GlusterFS cluster (name attribute). The name can contain any lowercase characters, dashes and underscores.
  • storage needed (diskSize attribute). The possible values are at least 10 and maximum 1024 (representing GB).
  • how to connect to the cluster (admPassword attribute). The password must be between 12 and 20 characters with at least one lowercase character, one uppercase character, one digit and one special character
  • userName of the volume (userName attribute). Maximum size is 32 characters, lowercase characters, underscore and dashe are allowed
  • On which service the GlusterFS cluster belongs to (serviceId attribute).
  • network ID of the cluster (networkId attribute).

This method is asynchronous (status code 202) and you'll have to wait for async action to be completed by checking its status.

POST /storage/glusterfs
{
  "name": "mygluster01",
  "diskSize": "15",
  "admPassword": "mySuperPassword123!!",
  "userName": "dda",
  "networkId": 123,
  "area":"EB-A",
  "serviceId": 46922
}
Authorizations
Body
admPasswordstringRequired

The user password

Pattern: ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–{}:;',?/*~$^+=<>]).{12,20}$
areastringRequired

Area. Refer to an Area of a Region, that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

backupEnabledbooleanOptional

Indicates if backup has to be setup on instance. If absent, backup will be setup automatically if instance is in a production service.

cloudIdinteger · int64Optional
dbBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the database, must be set when backup is enabled.

diskSizeinteger · int32Required

The volume configured within the configuration process of the GlusterFs cluster

monitoringAlertingbooleanOptional

Indicates if alerting should be activated. If absent, set to false.

monitoringEnabledbooleanOptional

Indicates if monitoring will be setup. If absent, it will be automatically be setup if this is an production environment, or if backup is enabled.

namestringRequired

Name of GlusterFs cluster

Pattern: [a-z0-9_\-]{5,60}$
networkIdinteger · int64Required

The network Id of the ELS cluster

noBackupProdReasonstringOptional

Indicates why a production resource is not under backup.

noMonitoringProdReasonstringOptional

Indicates why a production resource is not under monitoring.

noReplicationProdReasonstringOptional

Indicates why a production resource is not replicated.

nodeSizingstringRequired

Node sizing for cluster

onCallSupervisionbooleanOptional

Indicates if on call teams will be called on non business hours if an incident occurs on instance. If absent, set to false.

platformstringRequired

Product platform of the cluster

regionstringRequired

Region. that is a low-latency network area, available in List Regions method. If absent, default Area of Region will be used.

regulationstringOptional

Regulation. Refer to the regulation of the Area (HDS|STANDARD). If absent, default 'STANDARD' will be used.

replicationEnabledbooleanOptional

Indicates if replication will be setup. If absent, it will be automatically be setup if this is an production environment

serverBackupPolicyIdstringOptional

BackupPolicy id. Refers to desired backup policy to be applied for the virtual machine, must be set when backup is enabled.

serviceIdinteger · int64Required

id of service to put instance in.

user_namestringRequiredPattern: [a-z0-9_\-]{1,32}$
Responses
201
Created
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
post

Get a GlusterFS

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Delete a GlusterFS by id

delete
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
delete

Update a GlusterFS

patch

This method allows to update a GlusterFS cluster.

Structure of payload is generic and describes :

  • operation you want to be performed
  • options data relative to the operation performed - see details.

Below are different operations currently implemented.

Start

Use the start operation to start a GlusterFS cluster.

Create nodes operation will add the new nodes in the cluster by availability zone. You can specify the availability zone you need in the request.

This method is synchronous (status code 202).

Example :

PATCH /storage/glusterfs/1234
{
	"operation": "start",
	"options": {
	   "changeReference": "RFC_123"
	}
}

Stop

Use the stop operation to stop a GlusterFS cluster.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /storage/glusterfs/1234
{
	"operation": "start",
	"options": {
	   "changeReference": "RFC_123"
	}
}

Resize GlusterFS instance

Use the resize operation to resize the nodes of the GlusterFS instance and the instance itself.

This operation cannot be undone afterwards.

This method is asynchronous (status code 202).

PATCH /storage/glusterfs/1234
{
	"operation":"resize",
	"options": {
        "sizing": "2cpu4gb"
    }
}

Add Volume

Use the add_volume operation to add a Volume to a GlusterFS cluster.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /storage/glusterfs/1234
{
	"operation": "add_volume",
	"options": {
	   "diskSize": "42",
	   "userName": "dda",
	   "userPass":"mySuperPassw0rd42"
	}
}

Resize Volume

Use the resize_volume operation to resize a Volume to a GlusterFS cluster.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /storage/glusterfs/1234
{
	"operation": "resize_volume",
	"options": {
	   "name":"dda",
	   "diskSize": "42",
	   "userName": "dda"
	}
}

Resize Volume

Use the delete_volume operation to delete a Volume from a GlusterFS cluster.

This operation cannot be undone afterwards.

This method is synchronous (status code 202).

PATCH /storage/glusterfs/1234
{
	"operation": "delete_volume",
	"options": {
	   "name":"dda"
	}
}

Update Monitoring

Use the update_monitoring operation to update the monitoring state of the GlusterFS cluster.

Use the state option to turn on/off monitoring. Use the on_call option to turn on/off 24/7 monitoring.

This method is synchronous (status code 202).

PATCH /storage/glusterfs/1234
{
  "operation": "update_monitoring",
  "options": {
       "state": true,
       "on_call": true
 }
}

Update Patch Party

Use the update_patch_party operation to update the patch party scheduled plan of the GlusterFS cluster.

  • Use the excluded option to turn on/off patch party.
  • Use the patchGroup option to select the patching group, the patchGroup is optional, and is only allowed when the farm has one member.
  • Use the exclusionReason option to explain the reason of excluding the resource from patch part.

This method is synchronous (status code 202).

  • Include from patch party body:
PATCH /storage/glusterfs/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": false,
        "patchGroup": "3"
    }
 }
}
  • Exclude from patch party body:
PATCH /storage/glusterfs/1234
{
  "operation": "update_patch_party",
  "options": {
    "patchParty": {
        "excluded": true,
        "exclusionReason": "I want to handle this by myself"
    }
 }
}
Authorizations
Path parameters
idinteger · int64Required
Body
operationstringOptional
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
patch

Get GlusterFS volumes

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Get a GlusterFS node informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get

Get GlusterFS network informations

get
Authorizations
Path parameters
idinteger · int64Required
Responses
200
OK
application/vnd.cegedim-it.v1+json
400
Bad Request
*/*
get
Contact - Cegedim CloudCegedim Cloud

Hardening

Contexte et motivation

Kubernetes dispose de fonctionnalités et de mécanismes intégrés pour maintenir en bonne santé les nœuds et les workoads kubernetes :

  • kube-scheduler décide sur quels nœuds placer les pods en fonction des ressources demandées par les pods et des ressources non réservées des nœuds.

  • kubelet Out-Of-Memory tue les pods qui consomment plus de ressources que les valeurs limitées définies dans la spécification (OOM killed).

  • Pour quelque raison que ce soit, si le nœud est à court de ressources, kubelet expulse les pods afin d'alléger la pression sur les nœuds (éviction des pods). La décision d'éviction des pods est basée sur la qualité de service des pods.

Gardez à l'esprit que cegedim.cloud fournit des clusters Kubernetes standard avec ces fonctionnalités et a qualifié les documentations officielles de Kubernetes ci-dessous :

Le problème se situe au niveau de l'application dans la vie réelle :

  • toutes les technologies ne sont pas nativement compatibles avec les conteneurs

  • les mesures d'utilisation des ressources collectées par le kubelet (ou l'exportateur de nœuds, etc.) ne sont pas en temps réel

  • les mesures d'utilisation des ressources ne sont pas prises en compte par le planificateur kube

  • kubelet, en tant que processus Linux, n'est pas toujours le processus le plus prioritaire, en particulier lorsque les nœuds n'ont plus de CPU.

L'incapacité à gérer les contraintes de ressources sur les nœuds par kubelet conduit à des défaillances de nœuds et au redéploiement de toutes les charges de travail correspondantes. Dans le pire des cas, un effet domino sur la défaillance des nœuds peut se produire.

La solution cegedim.cloud

cegedim.cloud fournit une solution de hardening appelée cgdm-hardening :

  • Un esclave de hardening de pods par nœuds de travail : écrit la consommation de CPU et de RAM dans une base de données centralisée.

  • Un pod de hardening-maître déployé sur les nœuds maîtres : il lit les métriques dans la base de données et prend des mesures en cas de crise.

  • L'empreinte de la pile de hardening sur les ressources est très faible

Le pod Hardening-master peut agir selon deux modes :

  • Mode préventif (en tant qu'assistant du planificateur kube, mode par défaut) :

    • Place le taint cegedim.io/overload=true:NoSchedule pour éviter de placer plus de pods sur des nœuds sous pression (85% RAM ou 90% CPU). Lorsque le CPU est inférieur à 85% et que la RAM est inférieure à 80%, l'altération est supprimée.

  • Mode de protection (en tant qu'assistant du contrôleur de kube) :

    • Lorsque la consommation de RAM atteint 95 %, il tue les pods les plus récents, l'un après l'autre, pour soulager la pression. Il n'est pas activé par défaut.

Vous ne devez jamais utiliser la wildcard tolérance dans les applications, sinon l'effet préventif de cette solution ne sera pas valable.

Limitation : cette solution ne permet pas de protéger les nœuds qui tombent en panne en raison d'un pic d'utilisation extrêmement élevé du CPU pendant une période de temps très courte.

Comment désactiver / activer le hardening

Le nouveau cluster Kubernetes sera provisionné avec le hardeing préventif activé.

Si les charges de travail déployées par les clients entraînent un grand nombre de défaillances de nœuds (TLS_K8_NODES), le mode de protection sera activé.

Le client peut désactiver ce hardening en créant un ticket requête dans ITCare.

Par conséquent, la vérification TLS_K8_NODES de centreon au niveau du cluster et la vérification de l'état de santé de centreon sur les nœuds de travail seront désactivées.

Cela signifie que les clients doivent redémarrer eux-mêmes les nœuds en cas de crise.

Le client peut réactiver ce hardening en faisant un ticket requête ITCare à tout moment.

Supademo
Supademo
GET /itcare/storage/glusterfs HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "content": [
    {
      "allowMonitoringDisplay": true,
      "backupPolicyDetails": {
        "backups": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "id": 1,
            "type": "text"
          }
        ],
        "policies": [
          {
            "backupLastDate": "2025-07-04T04:15:11.161Z",
            "backupSize": 1,
            "durationInHours": 1,
            "frequencies": {},
            "label": "text",
            "name": "text",
            "policyId": "text",
            "replication": true,
            "scope": "text",
            "startTime": "text",
            "timezone": "text",
            "type": "text"
          }
        ]
      },
      "backupStatus": true,
      "category": "text",
      "cloudId": 1,
      "cloudName": "text",
      "comment": "text",
      "cpu": 1,
      "creationTime": "text",
      "creationUser": "text",
      "endOfSalesAt": "2025-07-04T04:15:11.161Z",
      "endOfSupportAt": "2025-07-04T04:15:11.161Z",
      "environment": "text",
      "extendedSupportAt": "2025-07-04T04:15:11.161Z",
      "family": "text",
      "id": 1,
      "internalResourceId": 1,
      "internalType": "text",
      "label": "text",
      "metrologyUrl": "text",
      "monitoringAlerting": true,
      "monitoringEnabled": true,
      "monitoringOnCallEnabled": true,
      "monitoringRequested": true,
      "name": "text",
      "nodeCount": "text",
      "patchParty": {
        "excluded": true,
        "excludedBy": "text",
        "exclusionDate": "2025-07-04T04:15:11.161Z",
        "exclusionReason": "text",
        "id": 1,
        "name": "text",
        "patchDate": "2025-07-04T04:15:11.161Z",
        "patchGroup": "text",
        "patchTag": "text"
      },
      "path": "text",
      "prettyLabel": "text",
      "productCode": "text",
      "productName": "text",
      "productVersion": "text",
      "ram": 1,
      "releasedAt": "2025-07-04T04:15:11.161Z",
      "replicationStatus": true,
      "resourceType": "text",
      "serviceId": 1,
      "serviceKey": "text",
      "serviceName": "text",
      "sizing": "text",
      "status": "text",
      "supportPhase": "text",
      "technology": "text",
      "topology": "text",
      "type": "text",
      "url": "text",
      "version": "text",
      "virtualIp": "text"
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": [
      {
        "ascending": true,
        "direction": "text",
        "ignoreCase": true,
        "nullHandling": "text",
        "property": "text"
      }
    ],
    "unpaged": true
  },
  "size": 1,
  "sort": [
    {
      "ascending": true,
      "direction": "text",
      "ignoreCase": true,
      "nullHandling": "text",
      "property": "text"
    }
  ],
  "totalElements": 1,
  "totalPages": 1
}
POST /itcare/storage/glusterfs HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/vnd.cegedim-it.v1+json
Accept: */*
Content-Length: 468

{
  "admPassword": "text",
  "area": "text",
  "backupEnabled": true,
  "cloudId": 1,
  "dbBackupPolicyId": "text",
  "diskSize": 1,
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "name": "text",
  "networkId": 1,
  "noBackupProdReason": "text",
  "noMonitoringProdReason": "text",
  "noReplicationProdReason": "text",
  "nodeSizing": "text",
  "onCallSupervision": true,
  "platform": "text",
  "region": "text",
  "regulation": "text",
  "replicationEnabled": true,
  "serverBackupPolicyId": "text",
  "serviceId": 1,
  "user_name": "text"
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
GET /itcare/storage/glusterfs/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "allowMonitoringDisplay": true,
  "backupPolicyDetails": {
    "backups": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "id": 1,
        "type": "text"
      }
    ],
    "policies": [
      {
        "backupLastDate": "2025-07-04T04:15:11.161Z",
        "backupSize": 1,
        "durationInHours": 1,
        "frequencies": {},
        "label": "text",
        "name": "text",
        "policyId": "text",
        "replication": true,
        "scope": "text",
        "startTime": "text",
        "timezone": "text",
        "type": "text"
      }
    ]
  },
  "backupStatus": true,
  "category": "text",
  "cloudId": 1,
  "cloudName": "text",
  "comment": "text",
  "cpu": 1,
  "creationTime": "text",
  "creationUser": "text",
  "endOfSalesAt": "2025-07-04T04:15:11.161Z",
  "endOfSupportAt": "2025-07-04T04:15:11.161Z",
  "environment": "text",
  "extendedSupportAt": "2025-07-04T04:15:11.161Z",
  "family": "text",
  "id": 1,
  "internalResourceId": 1,
  "internalType": "text",
  "label": "text",
  "metrologyUrl": "text",
  "monitoringAlerting": true,
  "monitoringEnabled": true,
  "monitoringOnCallEnabled": true,
  "monitoringRequested": true,
  "name": "text",
  "nodeCount": "text",
  "patchParty": {
    "excluded": true,
    "excludedBy": "text",
    "exclusionDate": "2025-07-04T04:15:11.161Z",
    "exclusionReason": "text",
    "id": 1,
    "name": "text",
    "patchDate": "2025-07-04T04:15:11.161Z",
    "patchGroup": "text",
    "patchTag": "text"
  },
  "path": "text",
  "prettyLabel": "text",
  "productCode": "text",
  "productName": "text",
  "productVersion": "text",
  "ram": 1,
  "releasedAt": "2025-07-04T04:15:11.161Z",
  "replicationStatus": true,
  "resourceType": "text",
  "serviceId": 1,
  "serviceKey": "text",
  "serviceName": "text",
  "sizing": "text",
  "status": "text",
  "supportPhase": "text",
  "technology": "text",
  "topology": "text",
  "type": "text",
  "url": "text",
  "version": "text",
  "virtualIp": "text"
}
DELETE /itcare/storage/glusterfs/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
PATCH /itcare/storage/glusterfs/{id} HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "operation": "text",
  "options": {
    "ANY_ADDITIONAL_PROPERTY": {}
  }
}
{
  "family": "text",
  "id": 1,
  "internalId": 1,
  "lastUpdatedAt": "2025-07-04T04:15:11.161Z",
  "message": "text",
  "process": "text",
  "resourceName": "text",
  "resourceType": "text",
  "status": "SUCCESS,IN_PROGRESS,ERROR"
}
GET /itcare/storage/glusterfs/{id}/volumes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "free": 1,
    "mountingPoint": "text",
    "sizeOf": 1,
    "type": "text"
  }
]
GET /itcare/storage/glusterfs/{id}/nodes HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": {
      "availabilityZones": [
        {
          "availabilityZoneGroup": "text",
          "datacenterId": "text",
          "defaultZone": true,
          "id": "text",
          "location": "text",
          "routable": true
        }
      ],
      "defaultArea": true,
      "id": "text",
      "location": "text",
      "regulation": "text"
    },
    "authenticationDomain": "text",
    "availabilityZone": {
      "availabilityZoneGroup": "text",
      "datacenterId": "text",
      "defaultZone": true,
      "id": "text",
      "location": "text",
      "routable": true
    },
    "backup": {
      "backupSystem": "text",
      "filesNb": 1,
      "lastDate": "2025-07-04T04:15:11.161Z",
      "size": 1,
      "type": "text"
    },
    "backupPolicyDetails": {
      "backups": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "id": 1,
          "type": "text"
        }
      ],
      "policies": [
        {
          "backupLastDate": "2025-07-04T04:15:11.161Z",
          "backupSize": 1,
          "durationInHours": 1,
          "frequencies": {},
          "label": "text",
          "name": "text",
          "policyId": "text",
          "replication": true,
          "scope": "text",
          "startTime": "text",
          "timezone": "text",
          "type": "text"
        }
      ]
    },
    "backupStatus": true,
    "category": "text",
    "cloudId": 1,
    "cloudName": "text",
    "comment": "text",
    "cpu": 1,
    "creationTime": "text",
    "creationUser": "text",
    "endOfSalesAt": "2025-07-04T04:15:11.161Z",
    "endOfSupportAt": "2025-07-04T04:15:11.161Z",
    "environment": "text",
    "extendedSupportAt": "2025-07-04T04:15:11.161Z",
    "family": "text",
    "glfsType": "text",
    "id": 1,
    "imageCode": "text",
    "internalResourceId": 1,
    "internalType": "text",
    "ipAddress": "text",
    "isExternalIngressNode": true,
    "isInternalIngressNode": true,
    "isMemberOFLoadBalancer": true,
    "label": "text",
    "labelArea": "text",
    "labelAvailabilityZone": "text",
    "labelDataCenter": "text",
    "labelRegion": "text",
    "loadbalancers": [
      {
        "id": 1,
        "memberCount": 1,
        "monitoringEnabled": true,
        "name": "text",
        "serviceId": 1,
        "status": "text"
      }
    ],
    "metrologyUrl": "text",
    "monitoringAlerting": true,
    "monitoringEnabled": true,
    "monitoringOnCallEnabled": true,
    "monitoringRequested": true,
    "name": "text",
    "network": {
      "area": "text",
      "cidr": "text",
      "cloud": "text",
      "defaultNetwork": true,
      "description": "text",
      "dns": [
        {
          "alias": "text",
          "domain": "text"
        }
      ],
      "environment": "text",
      "gateway": "text",
      "id": 1,
      "ipAddress": "text",
      "ipFreeNumber": 1,
      "isIpRangePublic": true,
      "mask": "text",
      "networkShortDescription": "text",
      "region": "text",
      "scope": "text",
      "shortDescription": "text",
      "technicalId": "text",
      "usedPercent": 1
    },
    "osName": "text",
    "osType": "text",
    "parentResourceType": "text",
    "patchParty": {
      "excluded": true,
      "excludedBy": "text",
      "exclusionDate": "2025-07-04T04:15:11.161Z",
      "exclusionReason": "text",
      "id": 1,
      "name": "text",
      "patchDate": "2025-07-04T04:15:11.161Z",
      "patchGroup": "text",
      "patchTag": "text"
    },
    "path": "text",
    "prettyLabel": "text",
    "productCode": "text",
    "productName": "text",
    "productVersion": "text",
    "ram": 1,
    "region": {
      "areas": [
        {
          "availabilityZones": [
            {
              "availabilityZoneGroup": "text",
              "datacenterId": "text",
              "defaultZone": true,
              "id": "text",
              "location": "text",
              "routable": true
            }
          ],
          "defaultArea": true,
          "id": "text",
          "location": "text",
          "regulation": "text"
        }
      ],
      "dataCenter": "text",
      "id": "text",
      "location": "text"
    },
    "releasedAt": "2025-07-04T04:15:11.161Z",
    "replication": {
      "noStoRplExplanation": "text",
      "storageClass": "text",
      "storageClassOverride": "text",
      "storageMoveInProgress": true,
      "storageMoveTicket": "text",
      "storageReplicationClass": "text"
    },
    "replicationStatus": true,
    "resourceType": "text",
    "serviceId": 1,
    "serviceKey": "text",
    "serviceName": "text",
    "snapshot": {
      "changeReference": "text",
      "createdAt": "2025-07-04T04:15:11.161Z",
      "createdBy": "text",
      "description": "text",
      "expiresAt": "2025-07-04T04:15:11.161Z",
      "id": "text",
      "label": "text",
      "recoveredAt": "2025-07-04T04:15:11.161Z",
      "snapshotSize": 1
    },
    "status": "text",
    "storage": 1,
    "storageInformation": {
      "fileSystems": [
        {
          "free": 1,
          "mountingPoint": "text",
          "sizeOf": 1,
          "type": "text"
        }
      ],
      "totalSizeDisks": 1,
      "totalSizeFileSystems": 1
    },
    "storageMoveInProgress": true,
    "supportPhase": "text",
    "technology": "text",
    "type": "text",
    "version": "text"
  }
]
GET /itcare/storage/glusterfs/{id}/networks HTTP/1.1
Host: api.cegedim.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "area": "text",
    "cidr": "text",
    "cloud": "text",
    "defaultNetwork": true,
    "description": "text",
    "dns": [
      {
        "alias": "text",
        "domain": "text"
      }
    ],
    "environment": "text",
    "gateway": "text",
    "id": 1,
    "ipAddress": "text",
    "ipFreeNumber": 1,
    "isIpRangePublic": true,
    "mask": "text",
    "networkShortDescription": "text",
    "region": "text",
    "scope": "text",
    "shortDescription": "text",
    "technicalId": "text",
    "usedPercent": 1
  }
]
Supademo
Supademo
Supademo
Supademo
Supademo
Tolérance à éviter dans l'app
tolerations:
  - effect: NoSchedule
    operator: Exists
Matomo - The Google Analytics alternative that protects your dataAnalytics Platform - Matomo
RedisRedis
PostgreSQLPostgreSQL
Welcome to Ceph — Ceph Documentation

PostgreSQL - Architecture

Description

PostgreSQL est actuellement le principal SGBDR (système de gestion de base de données relationnelle) open source, avec une large gamme de fonctionnalités et une grande communauté qui le soutient.

cegedim.cloud fournit des instances de bases de données PostgreSQL entièrement gérées pour vous permettre de construire vos applications sans exploiter la disponibilité, la sécurité et la résilience des bases de données PostgreSQL.

Architecture

Versions prises en charge

Les versions de PostgreSQL actuellement supportées sont : 10, 11, 12, 13, 14, 15, 16.

Mise à jour

Pour mettre à jour votre PaaS PostgreSQL, veuillez vous référer à cette page : PostgreSQL - Mise à jour

Topologies

cegedim.cloud prend en charge deux types de déploiements PostgreSQL :

  • Le mode Single Instance fournit une instance PostgreSQL standard.

  • Le mode Haute disponibilité fournit une instance PostgreSQL multi-instances, avec des capacités de résilience et d'évolutivité améliorées

Régions

PostgreSQL est disponible à la fois sur le centre de données de cegedim.cloud :

  • EB4 (Boulogne-Billancourt, France)

  • ET1 (Labège, France)

Dans certains cas, lorsqu'un deuxième nœud est déployé (haute disponibilité), un centre de données secondaire proche peut également être utilisé pour assurer une résilience maximale :

  • EB5 (Magny-les-Hameaux, France)

  • ET2 (Balma, France)

Résilience

Dans le cas d'une topologie à haute disponibilité, le PaaS est construit de manière à être résilient au DC si possible.

Ci-dessous, un exemple de répartition des nœuds :

Déploiement haute disponibilité

Diagramme de haute disponibilité

Diagramme de haute disponibilité

Features

Cette section énumère les fonctionnalités disponibles pour le client, ainsi que la manière de les demander ou de les exécuter :

Libre-service

Le client peut effectuer une action de manière autonome.

Sur requête

Le client peut demander que l'action soit effectuée auprès de l'équipe de support de cegedim.cloud.

Fonctionnalité
Libre-service
Sur requête
Commentaires

Accès SSH

L'accès SSH est désactivé et réservé aux administrateurs de cegedim.cloud.

Modifier le fichier de configuration

Sur demande via un ticket. Seulement possible si cela n'affecte pas la surveillance et la résilience.

Installer une extension

Les extensions PostgreSQL autorisées sont installables en libre service par les utilisateurs depuis ITCare à partir de la version 15 et supérieure. Autrement, une demande via ticket requête est toujours requise.

Extensions

Il est possible d'ajouter des fonctionnalités à PostgreSQL à travers ce qu'on appelle des extensions. Ces extensions peuvent ajouter de nouveaux types, des fonctions supplémentaires aussi bien pour les administrateurs que pour des utilisateurs "classiques", voire même des applications complètes.

Certaines de ces extensions sont développées au sein même du projet PostgreSQL et suivent donc les évolutions des différentes version de PostgreSQL. Vous pouvez en trouver la liste ici.

D'autres sont développées par des entreprises tierces et suivent leur propre rythme à l'instar de Timescaledb ou de Postgis pour ne citer que les plus connues.

Une fois que le PaaS PostgreSQL 15 et supérieur a été provisionné, vous pouvez installer certaines de ces extensions à travers ITCare.

Ci-dessous la liste des extensions supportées par le PaaS PostgreSQL à partir de la version 15:

  • btree_gist

  • citext

  • fuzzystrmatch

  • hstore

  • pg_trgm

  • pgcrypto

  • postgis

  • tablefunc

  • timescaledb

  • unaccent

  • uuid-ossp

  • vector

Attention l'installation de certaines extensions peut nécessiter un redémarrage de PostgreSQL et donc entrainer une indisponibilité de votre PaaS PostgreSQL.

Sécurité

Authentification

Le client se voit attribuer un rôle dont il choisit le mot de passe.

Le mot de passe de cet utilisateur n'est pas stocké ni sauvegardé par cegedim.cloud. Veillez à l'enregistrer dans votre propre coffre-fort.

Autorisations

Le rôle fourni au client dispose des autorisations suivantes :

  • LOGIN

  • CREATEROLE

  • CREATEDB

Ainsi, le client peut créer un rôle d'application et des bases de données dédiées.

Transport sécurisé

Le transport sécurisé est une option lors du provisionnement et n'est disponible qu'à partir de la version 13.

Si le transport sécurisé est sélectionné, TLS/SSL sera activé pour le protocole PostgreSQL et seule une connexion TLS des clients sera acceptée.

Emplacement des données

Toutes les données sont stockées dans les centres de données cegedim.cloud sur des baies de stockage cryptées.

Mots de passe

Cette section énumère la gestion des mots de passe :

Mot de passe
Stocké par cegedim.cloud
Stocké par le client
Enforcé
Algorithme de Hash

compte client dédié

SCRAM-SHA-256

TOUT autre compte

SCRAM-SHA-256

compte cegedim.cloud

SCRAM-SHA-256

compte de surveillance

SCRAM-SHA-256

Sauvegarde

Si la sauvegarde est activée lors du provisionnement (activée par défaut pour un service de type Production), les politiques de sauvegarde suivantes s'appliquent :

PostgreSQL version 11 et inférieure
PostgreSQL version 12 et supérieure

Sauvegarde complète tous les jours conservée pendant 14 jours

  • Sauvegarde complète une fois par semaine.

  • Sauvegardes différentielles entre les deux.

  • Les journaux de type Write-ahead (WAL) sont archivés.

Point-in-Time recovery prise en charge pendant 14 jours.

Surveillance

Dans le cadre de notre offre de bases de données gérées, PostgreSQL fait l'objet d'une surveillance spécifique au-dessus du système sous-jacent afin de garantir la disponibilité et les performances du service.

Les indicateurs clés PostgreSQL suivants sont surveillés et suivis :

  • Connexions

  • Utilisation de la mémoire

  • Dépassement des IDs de transactions (TXID wraparround)

  • État de santé

Removal of mapping types | Elasticsearch Guide [7.17] | ElasticElastic
OpenSearchFluent Bit: Official Manual
ElasticsearchFluent Bit: Official Manual
Changements de rupture
OpenSearchOpenSearch

SQL Server - Mise à jour

Processus de mise à niveau

Requête

La mise à jour d'un PaaS SQL Server est sous la responsabilité de cegedim.cloud. Elle doit être demandée via un , en précisant un créneau de disponibilité pour la réalisation de l'opération.

Merci de préciser si l'opération doit se faire en dehors des heures ouvrées, afin de permettre l'organisation d'une RFC.

Il est fortement recommandé de réaliser la mise à jour en environnement de non-production en premier lieu, afin de valider la compatibilité de l'ensemble du processus avec les contraintes techniques et applicatives du client.

La migration d'un cluster SQL Server antérieur à la version 2016 n'est pas prise en charge par cegedim.cloud.

Cette restriction est liée aux évolutions majeures du moteur SQL Server introduites à partir de la version 2016, notamment sur les fonctionnalités AlwaysOn et la suppression de composants historiques.

Les upgrades de version majeure de SQL Server (par exemple, de 2019 à 2022) nécessitent une approche différente, à savoir le reprovisionnement complet de l'instance. Dans ce contexte, il convient de reprovisionner une nouvelle instance PaaS avec la version cible, puis de puis de réaliser une demande de basculement manuel des bases de données.

Le présent processus concerne uniquement l'application des Cumulative Updates (CU) publiées par Microsoft. Ces mises à jour contiennent des correctifs de sécurité, de stabilité et de performance de SQL Server.

Déroulement

Le processus de mise à jour avec application de Cumulative Updates se déroule selon les étapes suivantes :

  1. Snapshot des machines virtuelles (point de restauration en cas d'échec)

  2. Sauvegarde intégrale des bases clientes via Rubrik

  3. Installation des Cumulative Updates SQL Server (patchs officiels Microsoft)

  4. Redémarrage du serveur pour prise en compte des mises à jour

  5. Contrôle d'intégrité des bases et vérification des journaux d'erreurs

Pour les clusters AlwaysOn :

  • Les nœud secondaires sont mis à jour

  • Une bascule manuelle vers le nœud secondaire est réalisée avant la mise à jour

  • Redémarrage contrôlé du serveur

  • Opération répétée sur les autres nœuds

Impacts

L'application de Cumulative Updates peut entraîner des interruptions de service temporaires ou impacter certains comportements applicatifs.

Points de vigilance :

  • Indisponibilité temporaire du service SQL Server pendant le redémarrage

  • Risque de régression fonctionnelle si une CU modifie des comportements internes

  • Nécessité de rollback en cas déchec de l'installation

Risques potentiels :

  • Échec de réintégration dans le cluster AlwaysOn

  • Données corrompues si les sauvegardes préalables sont défaillantes

  • Dépendances applicatives rompues par des changements introduits par la CU

Temps de référence

La durée d'une mise à jour dépend de plusieurs facteurs, notamment le volume de données à sauvegarder et le mode de déploiement (standalone ou AlwaysOn).

Temps estimés :

  • Instance standalone avec volume modeste : ~1 heure

  • Cluster AlwaysOn avec bascule : ~2 à 3 heures

Mise à jour du système d'exploitation

Les mises à jour de Windows Server sont réalisées uniquement durant les "Patch Party", c'est-à-dire des fenêtres de maintenance planifiées au cours desquelles les correctifs de sécurité et de stabilité sont appliqués de manière coordonnée, conformément au calendrier de maintenance de cegedim.cloud.

Elles sont hors du périmètre de la mise à jour SQL Server. Si un changement de version de l'OS est requis, les étapes suivantes sont nécessaires :

  • Demande de reprovisionnement d'une instance PaaS à jour via ITCare

  • Migration manuelle des bases de données vers la nouvelle instance

Les montées de version de l'OS "in-place" ne sont pas supportées.

ticket ITCare
Logo

SQL Server - Architecture

Architecture

Topologies

Deux topologies sont disponibles :

  • Instance autonome

  • Cluster AlwaysOn

Always On - Topology

La configuration du cluster Always On repose sur une topologie à 3 nœuds :

Nœuds actifs

  • Deux nœuds situés sur le même site.

  • Ces nœuds sont configurés pour partager la charge ou être en basculement automatique en cas de défaillance.

  • Une règle d'anti-affinité garantit que les nœuds actifs ne cohabitent pas sur le même hôte hyperviseur, renforçant ainsi la résilience.

Nœud passif

  • Localisé sur un site secondaire pour assurer la reprise après sinistre (DRP).

  • Ce nœud ne traite aucune requête active et est réservé uniquement au basculement en cas de défaillance des nœuds actifs.

Règles et restrictions du nœud passif

Le nœud passif est soumis à des restrictions strictes pour respecter les règles de licence Microsoft License Mobility with Failover Rights :

  • Aucune charge active : Le nœud passif ne peut pas exécuter de requêtes SQL, de rapports ou de charges de travail utilisateur.

  • Opérations autorisées :

    • Vérifications de la cohérence des bases de données.

    • Sauvegardes complètes et des journaux de transactions.

    • Surveillance des performances et des ressources.

  • Licences optimisées : Grâce à la Software Assurance, l'utilisation du nœud passif est incluse sans coût supplémentaire, à condition que ces restrictions soient respectées.

Avantages de l'Always On

  • Tolérance aux pannes : La réplication synchronisée garantit que les données sont disponibles en temps réel sur les nœuds actifs.

  • Reprise après sinistre (DRP) : Le déploiement d'un nœud passif sur un site secondaire renforce la sécurité et la continuité des activités.

  • Maintenance simplifiée : Les basculements planifiés permettent d'effectuer des mises à jour ou des interventions techniques sans interruption de service.

Supervision et conformité

Une supervision spécifique adaptée au cluster Always On est en place pour :

  • Garantir que les restrictions liées au nœud passif sont respectées.

  • Surveiller les performances et les basculements automatiques.

  • Prévenir les risques de non-conformité avec les règles de licence.

Régions

SQL Server est disponible dans les centres de données de cegedim.cloud dans les régions suivantes :

  • EB4 - Boulogne-Billancourt, France

  • ET1 - Labège, France

Dans le cadre de la topologie AlwaysOn, un nœud inactif est automatiquement déployé dans un site secondaire proche pour renforcer la résilience du cluster :

  • EB5 (Magny-les-Hameaux, France)

  • ET2 (Balma, France)

Hébergement et Versions

Hébergement
Version
OS
Edition

Virtuel

SQL Server 2022

Windows Server 2022

Standard ou Entreprise

Virtuel

SQL Server 2019

Windows Server 2019

Standard ou Entreprise

Virtuel

SQL Server 2017

Windows Server 2019

Standard ou Entreprise

Virtuel

SQL Server 2016

Windows Server 2016

Standard ou Entreprise

Système de fichiers

Disposition du système de fichiers pour le PaaS SQL Server de cegedim.cloud :

Disque
Label
Taille par défaut
Description

D:\

MSSQL

30 Go

Racine de l'instance

E:\

MSSQL_USER_DATA

30 Go

Base de données utilisateurs

F:\

MSSQL_USER_LOG

10 Go

Log des bases de données utilisateurs

G:\

MSSQL_TEMPDB

10 Go

TempDB

Restriction du nom de la machine virtuelle

En raison des préfixes appliqués aux objets Active Directory, le nom de la machine virtuelle provisionnée est limité à 13 caractères maximum pour un PaaS SQL Server.

Ports

Liste des ports :

Ports
Description
Protocol

1433

Écouteur de port statique du serveur

TCP

1434

SQL Server Browser

UDP

2382

Serveur d'écoute de SQL Server Analysis Services

UDP

2383

Serveur d'écoute de SQL Server Analysis Services

TCP

5022

SQL Server BDM/AG Endpoint

TCP

Seuls les ports de l'écouteur SQL Server et du navigateur SQL Server sont ouverts en entrée dans le pare-feu Windows par défaut et appliqués via une GPO sur l'unité organisationnelle.

Modules installés

Liste des modules installés par défaut lors de la provision :

  • Moteur de base de données

  • Réplication

  • Recherche en texte intégral

  • Connectivité des outils client

  • SDK

Fonctionnalités

Cette section vise à répertorier les fonctionnalités/capacités disponibles pour le client, et comment les demander/exécuter :

Libre-service

Le client peut effectuer l'action de manière autonome.

A la demande

Le client peut demander que l'équipe de support de cegedim.cloud effectue l'action.

Fonctionnalités
Libre-service
A la demande
Commentaires

Database Collation

Integration Services

Analysis Services

Reporting Services

Recherche en texte intégral

Export, Import SQL Server backup

Création de cluster Always On

Disponible exclusivement pour l'édition SQL Server 2022 Enterprise, demander conseil à votre responsable de prestation de services

Sécurité

Connexion système

Le PaaS SQL Server fonctionne exclusivement dans un environnement Windows. La méthode standard de connexion à l'instance est le RDP (Remote Desktop Protocol).

Pour vous connecter à la machine virtuelle, vous devez disposer des privilèges requis au niveau du domaine ou au niveau de la machine locale.

Connexion à l'instance

L'authentification est configurée par défaut en mode mixte, ce qui offre deux types de connexion :

  • Connexion SQL Server: au niveau de l'instance

  • Utilisateur Active directory: au niveau du domaine - Authentification Windows intégrée

La connexion à l'instance est disponible localement ou à distance :

  • Localement : une fois connecté en RDP, lancez le SQL Server Management Studio local

  • A distance: lancez le SQL Server Management Studio et spécifiez l'instance cible Localement

Localement

SSMS peut utiliser les informations d'identification de l'utilisateur Windows avec lequel vous êtes déjà connecté via RDP pour vous connecter à l'instance SQL Server.

L'authentification avec un login SQL est également possible localement.

A distance

Spécifiez une instance cible dans le champ du nom du serveur en imposant le protocole : tcp:HOSTNAME\INSTANCENAME

Sélectionnez simplement "SQL Server Authentication" et fournissez le login SQL avec le mot de passe associé.

Autorisations

Les autorisations pour cegedim.cloud sont gérées par GPO.

Autorisation et mots de passe

Cette section répertorie la gestion des mots de passe pour le PaaS SQL Server :

Mot de passe
Stocké par cegedim.cloud
Stocké par le client
Enforcé

compte admin

AUTRE compte

compte cgdm_admin

compte monitoring

Clients

Les autorisations pour les clients sont gérées par les clients eux-mêmes.

Le client qui demande une instance SQL Server via ITCare sera automatiquement autorisé à se connecter à l'instance. Il peut accorder l'accès à tout utilisateur ou groupe Active Directory.

Patching

Les patchs sont installés lors des "Patch parties" gérées par cegedim.cloud tous les trimestres. Une instance peut être patchée manuellement exceptionnellement si la sécurité ou la correction de bugs l'exige.

Localisation des données

Les données pour le PaaS SQL Server de cegedim.cloud sont stockées sur les machines virtuelles dédiées créées lors de la demande d'un PaaS. Ces machines virtuelles et le stockage associé sont hébergés et gérés dans les propres centres de données de cegedim.cloud.

https://opensearch.org/blog/technical/2022/03/getting-started-with-fluent-bit-and-opensearch/opensearch.org
GitHub - uken/fluent-plugin-elasticsearchGitHub
Breaking changesOpenSearch documentation
opensearchFluentd
MariaDB FoundationMariaDB.org
GitHub - kubernetes-csi/external-snapshotter: Sidecar container that watches Kubernetes Snapshot CRD objects and triggers CreateSnapshot/DeleteSnapshot against a CSI endpoint.GitHub
Logo

K8s - Architecture

Il existe 3 topologies possibles pour le cluster K8s fourni par cegedim.cloud :

  • Standalone : les charges de travail sont déployées dans un seul centre de données sans plan de reprise après sinistre.

  • Standard : les charges de travail sont toujours déployées dans un seul centre de données, mais elles sont protégées contre un désastre du centre de données en utilisant un centre de données secondaire comme basculement.

  • Haute disponibilité : les charges de travail sont déployées dans deux centres de données et aucune interruption des services en cas de sinistre du centre de données ne peut être obtenue avec un déploiement multi-réplica correctement distribué.

Topologies

Topologie de calcul

cegedim.cloud fournit une topologie de calcul basée sur :

  • Région : une paire de centres de données

  • Area : isolation du réseau d'infrastructure entre les locataires

  • Zones de disponibilité : à l'intérieur d'une zone, infrastructure isolée pour le calcul et le stockage.

Topologies des clusters Kubernetes

Les clusters Kubernetes peuvent être déployés à l'aide de 2 topologies :

Topologies
Centre de données des masters
Centre de données des workers
Zones de disponibilité des workers
Zones de disponibilité du cluster
Protection reprise après sinistre
Recovery Time Objective (RTO)

En fonction de vos exigences en termes de RTO et de coûts, vous pouvez choisir la topologie la mieux adaptée à vos besoins.

Disponibilité des topologies

Topology
EB-EMEA
EB-HDS
ET-EMEA
ET-HDS

Pour plus de détails sur la topologie de haute disponibilité, veuillez suivre cette page :

Clés de topologie

cegedim.cloud utilise des clés topologiques standard :

Clé
Composant

Depuis Kubernetes > 1.20, failure-domain.beta.kubernetes.io/zone est obsolète mais reste disponible en cas de préexistence. Seul topology.kubernetes.io/zone sera officiellement maintenu.

Composants et versions

Voici la liste des composants et des outils qui sont déployés dans un cluster standard livré :

Composants
Versions

Architecture réseau

Voici un schéma avec tous les composants du réseau expliqués :

  • Deux pods de 2 namespaces appartenant au même projet Rancher peuvent communiquer entre eux.

  • Deux pods de 2 namespaces appartenant à deux projets Rancher différents ne peuvent pas communiquer entre eux à moins que l'utilisateur ne définisse une Network Policy dédiée à ce besoin.

  • Les pods d'un projet Rancher nommé System peuvent communiquer avec les pods d'autres projets Rancher.

  • Les pods ne peuvent envoyer des requêtes qu'aux serveurs du même VLAN, à moins qu'une règle d'ouverture de réseau spécifique ne soit configurée entre les deux VLANs.

  • Les pods ne peuvent pas envoyer de requêtes à Internet à moins qu'un proxy ne soit configuré à l'intérieur du pod ou qu'une règle d'ouverture de réseau spécifique ne soit configurée pour le VLAN concerné.

Flux entrants

  • Les requêtes vers le serveur api kube peuvent faire l'objet d'une proxy inverse par l'URL Rancher.

  • La charge de travail hébergée par les pods ne peut pas être directement accessible depuis l'extérieur du cluster K8S, mais via une couche d'entrée pour le protocole HTTP ou via un service NodePort pour le protocole TCP avec un équilibreur de charge respectif.

Ingress Controller : nginx

nginx est l'ingress controller déployé pour exposer vos workloads. Vous pouvez trouver la documentation pertinente sur le Github officiel à l'adresse :

Deux ingress controllers sont déployés :

  • Un exposé au réseau interne de Cegedim

    • ingress controller nginx

    • écoute sur chaque nœud de travail sur le port :80

    • il s'agit de la classe d'entrée par défaut (aucune classe d'entrée ne doit être spécifiée).

  • Un exposé à internet

    • nginx ingress controller - vous pouvez demander à avoir un ingress controller externe pour nginx.

    • écoute de chaque nœud de travail sur le port : 8081

    • cette ingress classe est : nginx-ext

      • en utilisant l'annotation : kubernetes.io/ingress.class:"nginx-ext"

Équilibrage de charge, DNS et certificats

Un cluster K8s est livré avec :

  • Un Elastic Secured Endpoint, géré par des appliances F5, exposant la charge de travail K8s au réseau interne de Cegedim (une fois que vous êtes connecté au LAN de Cegedim, soit physiquement, soit par VPN).

  • Une résolution DNS *.<votreclustername>.ccs.cegedim.cloud vers ce point d'accès.

  • Un certificat SSL *.<votreclustername>.ccs.cegedim.cloud configuré

Demande de configuration spécifique

Vous pouvez utiliser ITCare en cas de besoin d'une configuration spécifique :

  • Exposition de vos charges de travail à l'Internet ou à un lien privé

  • Utilisation d'un FQDN spécifique pour déployer votre charge de travail

  • Utilisation d'un certificat spécifique pour déployer votre charge de travail

  • Utilisation de Traefik comme fournisseur d'intrusion au lieu de nginx

  • Ajout d'autres fournisseurs d'entrée

  • Accès aux ressources en dehors du cluster

Hardening des clusters

Pour plus d'informations concernant le hardening de Kubernetes, nous vous invitons à consulter cette page :

Stockage persistant

Pour plus d'informations sur la solution de stockage persistant disponible pour cegedim.cloud de cegedim.cloud, veuillez suivre cette page :

Standard

1

1

2

2

4h

Haute Disponibilité

3

2

3

4

0 - 5 min

Standard

High Availability

topology.kubernetes.io/region

Région

topology.kubernetes.io/zone

Zone de disponibilité

kubernetes.io/hostname

FQDN du noeud

Rancher

2.10.3

Kubernetes

1.31

Ingress controllers

ingress-nginx 1.12.0, traefik 3.3.4, istio 1.20.3

Prometheus

2.42.0

Grafana

9.1.5

Helm

3.16.1

CSI Ceph

3.11.0

Node OS

Ubuntu 22.04

CNI - canal (Calico+Flannel)

3.29.0

Docker

27.1.2

Haute Disponibilité
Hardening
Stockage Persistant
Topologie de calcul
Logo

MariaDB - Architecture

Description

L'édition communautaire de MariaDB est disponible en libre-service en deux topologies :

  • Une instance autonome (avec une réplique GTID sur demande)

  • Un cluster Galera s'appuyant sur 3 instances actives/actives

Pour plus d'informations sur l'architecture de MariaDB :

Les instances MariaDB sont accessibles sur le port 3306 par défaut.

Régions

MariaDB est disponible dans les centres de données cegedim.cloud suivants :

  • EB4 (Boulogne-Billancourt, France)

  • ET1 (Labège, France)

Dans certains cas, lorsqu'un troisième nœud est déployé (cluster Galera), des centres de données secondaires proches peuvent également être utilisés pour assurer une résilience maximale :

  • EB5 (Magny-les-Hameaux, France)

  • ET2 (Balma, France)

Ressources

La plateforme en tant que service de MariaDB est hébergée sur la distribution Linux Debian 10.

La taille minimale requise est de 2 CPU et 4GB de RAM.

Le stockage peut être configuré pendant le provisionnement et augmenté par la suite sur demande.

Topologies

Instance autonome

Il s'agit d'une instance simple déployée dans un seul centre de données.

Réplication active/passive

Deux instances MariaDB sont déployées dans le même centre de données : le nœud principal avec une réplique en lecture seule.

Déployé uniquement sur requête !

Réplication active/passive

Cluster Galera

Un cluster MariaDB Galera est un cluster multi-primaire virtuellement synchrone pour MariaDB.

Un cluster basé sur 3 instances actives/actives est déployable dans n'importe quel centre de données de cegedim.cloud.

Cluster MariaDB Galera

Versions prises en charge

La version prise en charge est la dernière LTS (long term support) actuellement disponible.

Pour plus d'informations, veuillez consulter les versions de MariaDB.

Restrictions

Cette section énumère les fonctionnalités disponibles pour le client, ainsi que la manière de les demander ou de les exécuter :

Libre service

Le client peut effectuer des actions de manière autonome sur ses propres bases de données.

Sur demande

Le client peut demander à l'équipe de support de cegedim.cloud de prendre les mesures nécessaires.

Caractéristiques
Libre service
Sur demande
Commentaires

Accès SSH

L'accès SSH n'est pas autorisé.

Modifier le fichier de configuration de MariaDB

Sur demande via un ticket. Revue par l'équipe de cegedim.cloud.

Paramètres par défaut

Quelques paramètres MariaDB par défaut configurés par cegedim.cloud :

Paramètre
Valeur
Description

Jeu de caractères

utf

Jeu de caractères par défaut de la base de données

transaction_isolation

READ-COMMITTED

Type de transaction

max_connexions

1000

Nombre maximum de connexions autorisées à l'instance

innodb_buffer_pool_size

50% de la RAM

Mémoire tampon Innodb allouée à l'instance

requêtes lentes

désactivé

Les requêtes lentes ne sont pas enregistrées par défaut

Sauvegarde

La politique de sauvegarde pour MariaDB est configurée comme suit :

  • Sauvegarde complète chaque week-end (en ligne)

  • Sauvegarde différentielle tous les jours (en ligne)

  • Sauvegarde de Binlog toutes les deux heures

La rétention de sauvegarde par défaut pour les sauvegardes complètes et les sauvegardes dépendantes est de deux semaines.

Sécurité

Authentification

L'authentification de MariaDB est basée sur l'utilisateur interne.

Autorisations

Un utilisateur d'administration est fourni au client lorsque le provisionnement est terminé.

Le mot de passe de cet utilisateur n'est pas stocké ni sauvegardé par cegedim.cloud. Veillez à l'enregistrer dans votre propre coffre-fort.

Surveillance

Dans le cadre de notre offre de bases de données gérées, MariaDB fait l'objet d'une surveillance spécifique en plus du système sous-jacent afin de garantir la disponibilité et les performances du service.

Les indicateurs clés suivants de MariaDB sont surveillés et suivis :

  • Nombre de connexions client interrompues

  • Nombre de tentatives de connexion au serveur ayant échoué

  • Nombre de connexions refusées en raison d'erreurs internes du serveur

  • Nombre maximal de connexions simultanées ouvertes

Assign Memory Resources to Containers and PodsKubernetes

OpenSearch - Didacticiels

Déployer un cluster

Connectez-vous à la plateforme ITCare, recherchez le service global auquel attacher le cluster et cliquez dessus.

Cliquez sur le bouton Créer une ressource dans votre Service Global et sélectionnez OpenSearch. Donnez un nom unique au cluster et définissez un nom de préfixe qui sera utilisé pour nommer les machines virtuelles. Cliquez sur Suivant.

Sélectionnez le nombre de nœuds et la taille des nœuds. Cliquez sur Suivant.

Sélectionnez le volume de stockage. Cliquez sur Suivant.

Sélectionnez la région et la zone dans laquelle vous souhaitez installer votre cluster. Cliquez sur Suivant.

Sélectionnez le VLAN dans lequel vous souhaitez déployer votre cluster. Cliquez sur Suivant.

Activez ou désactivez les options supplémentaires :

  • Surveillance des machines virtuelles et des clusters

  • Surveillance 24/7

  • Sauvegarde

  • Réplication des machines virtuelles (récupération en cas de désastre)

Cliquez sur Suivant.

Sélectionnez la version et définissez un mot de passe administrateur qui sera utilisé pour gérer votre cluster.

Les mots de passe ne sont pas sauvegardés par cegedim.cloud.

Assurez-vous de sauvegarder votre mot de passe!

A l'étape finale, vous pouvez vérifier la synthèse de votre demande : vérifier les noms des machines virtuelles à créer, sauvegarder votre mot de passe administrateur, modifier les options de gestion.

Cliquez sur Soumettre.

Une fois que le cluster est prêt, vous serez notifié par email avec les informations requises pour se connecter au cluster.

La création d'un cluster peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation. Le cluster sera ensuite affiché dans votre service global, dans le panneau de contrôle de gauche, sous la section cluster associé. La flèche verte indique que le cluster est actif.

Démarrer un cluster

Dans le panneau de contrôle gauche, cliquez sur le nom du cluster pour afficher la page de détails de celui-ci. En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Démarrer et confirmer.

Le démarrage d'un cluster démarre toutes les machines virtuelles attachées au cluster.

Une notification par courriel sera envoyée lorsque le service sera activé.

Arrêter un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Stop.

Saisissez un numéro RFC pour le suivi (facultatif). Cliquez sur Soumettre.

L'arrêt d'un cluster arrêtera toutes les machines virtuelles attachées au cluster et la surveillance sera désactivée.

Une notification par courrier électronique sera envoyée lorsque le cluster sera arrêté.

Ajouter des nœuds

En haut de la page du cluster, cliquez sur le nom du cluster OpenSearch, puis sur Ajouter des nœuds.

Sélectionnez le nombre de nœuds que vous souhaitez ajouter (nombre pair) et sélectionnez la nouvelle taille (cpu/ram). Spécifiez la taille du disque de données.

Une notification par courrier électronique sera envoyée lorsque tous les nœuds auront été ajoutés.

Redimensionner les nœuds

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Redimensionner les nœuds.

Sélectionnez les nœuds que vous souhaitez redimensionner et sélectionnez la nouvelle taille (cpu/ram).

Chaque nœud sera redimensionné et redémarré de manière séquentielle.

Une notification par courriel sera envoyée lorsque tous les nœuds auront été redimensionnés.

Supprimer des nœuds

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Supprimer des nœuds.

Sélectionnez le nombre de nœuds que vous souhaitez supprimer (nombre pair) puis cliquez sur "Suivant". Copiez/collez ou tapez le nom des noeuds dans le champs "Confirm action" puis cliquez sur "Supprimer".

Attention, cette action n'est disponible que pour les clusters ayant des masters dédiés Chaque noeud sélectionné doit faire partie d'une zone de disponibilité différente Assez d'espace doit être disponible sur les noeuds restant du clusters Chaque noeud sera supprimé de manière séquentielle

Une notification par courriel sera envoyée lorsque tous les nœuds auront été suprimés.

Supprimer un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Supprimer. Cette action arrêtera et supprimera toutes les machines virtuelles.

Veuillez noter que cette action n'est pas récupérable!

Saisissez un numéro RFC pour le suivi (facultatif), puis cliquez sur Soumettre.

Une notification par courriel sera envoyée lorsque le cluster sera supprimé.

Mise à niveau d'un cluster

La mise à niveau d'un cluster n'est pas encore implémentée dans ITCare.

Si vous souhaitez mettre à niveau votre cluster existant vers une version plus récente, vous devez envoyer une demande au support en indiquant la version souhaitée.

Pendant la mise à jour, le cluster OpenSearch continuera à fonctionner correctement car nous effectuons une mise à jour continue. Cependant, il se peut que vous constatiez une courte indisponibilité pendant la mise à jour des serveurs de tableaux de bord, qui est effectuée après la mise à jour du cluster OpenSearch.

Mise à jour de la topologie d'un cluster

La mise à jour de la topologie d'un cluster est proposée pour un cluster Opensearch initialement constitué de trois nœuds (topologie basique).

La mise à jour est implémentée dans ITCare via l'option "Gérer-Migrer vers un master dédié"

La migration permet d'ajouter deux nœuds Master, tout en spécialisant les (n-1) nœuds existants au rôle de Data. Le cluster sera ainsi composé de trois nœuds Master et du reste des nœuds dédiés au rôle de Data.

Pendant la mise à jour vers une topologie "Master dédié", le cluster continuera de fonctionner,bien qu'il puisse temporairement passer à un statut "Yellow".Cependant, certains objets du cluster, comme les tableaux de bord, peuvent être temporairement indisponibles. Tout reviendra à la normale une fois la migration terminée.

Démo de migration

Ajouter des nodes d'ingestions au cluster

La fonctionnalité d'ajout de nœuds dédiés au rôle d'ingestion est disponible pour un cluster OpenSearch avec une topologie « master dédié » (cluster de cinq nœuds).

La mise en place de nœuds d'ingestion dédiés est implémentée dans ITCare via le menu déroulant "Gérer" puis l'action "Ajouter des noeuds d'ingestion"

Grâce à ces nœuds d'ingestion, il est possible d'isoler le processus d'ingestion des données, ce qui permet de limiter l'impact sur l'indexation ou la recherche, même en cas de volumes élevés de données entrantes. Cela améliore ainsi la stabilité et les performances globales du cluster.

Démo des nodes d'ingestion

Définir des attributs de nœud

Attribut de noeuds - Architecture multi-niveaux - Hot/Cold

L'architecture multi-niveau (Hot-Warm-Cold) dans OpenSearch permet d'optimiser les coûts, les performances et la scalabilité en fonction des besoins spécifiques de votre application. Cette architecture permet de stocker les données en fonction de leur fréquence d'accès, en répartissant les données fréquemment sollicitées au niveau des nœuds identifiés (Hot), les données moyennement sollicitées au niveau des nœuds identifiés (Warm) et les données non fréquemment recherchées au niveau des nœuds identifiés (Cold). En plus des différences d'attributs, le nombre de nœuds à chaque niveau peut également varier pour répondre aux besoins spécifiques des requêtes de recherche.

Pour répondre à ce besoin, nous proposons deux niveaux à l'architecture multi-niveaux (Hot-Cold). La configuration des attributs de nœud est disponible dans ITCare via l'action "Définir les attributs du nœud", accessible au niveau de chaque nœud.

Pour plus d'information sur la configuration des attributs de nœud, veuillez consulter la .

Dépassement de la Limite de Shards

Dans OpenSearch, chaque nœud est limité par défaut à 1000 shards pour maintenir les performances et la stabilité du cluster en gérant l’utilisation des ressources.

Dépasser cette limite, par exemple lors de la création de nouveaux index, entraînera une erreur.

Voici des solutions ci-dessous qui vous aideront à résoudre ce problème.

Ajouter des Nœuds de Données au Cluster

Ajouter des nœuds supplémentaires répartit les shards sur plus de ressources, réduisant la charge par nœud.

Chaque nœud supplémentaire apporte sa propre limite de 1000 shards, augmentant ainsi la capacité globale du cluster.

Augmenter le Paramètre cluster.max_shards_per_node

Ajustez le paramètre cluster.max_shards_per_node pour autoriser plus de shards par nœud si votre matériel le permet (CPU, mémoire et stockage suffisants).

Il est recommandé de ne pas dépasser 2000 shards par nœud pour éviter une surcharge.

Utilisez la commande suivante pour modifier le paramètre :

Optimiser l'Allocation des shards par index

Lors de la création de nouveaux index, planifiez soigneusement le nombre de shards en fonction de la taille des données et de la croissance attendue.

Voici quelques bonnes pratiques:

  • Utilisez moins de shard, plus grands, pour les petites données.

  • Révisez régulièrement l'allocation des shards pour optimiser l’utilisation des ressources selon l'évolution du cluster.

Remarques

Surveillez régulièrement l’utilisation des shards et des ressources pour des performances optimales.

Un dashboard Grafana pour OpenSearch est disponible sur ce sujet dans votre plateforme de monitoring avancée.

Assurez-vous que vos nœuds disposent de ressources suffisantes avant d’augmenter les limites de shards.

PUT /_cluster/settings
{
    "persistent":
    {
        "cluster.max_shards_per_node":<limite_shard_souhaitée>
     }
}
Lien vers la documentation officiel
documentation officielle
Logo
Logo
Assign CPU Resources to Containers and PodsKubernetes
Logo
Logo
Logo

Débuter avec ITCare

Comment puis-je me connecter à ITCare ?

Il n'est pas possible de créer son propre compte ITCare pour accéder à la plateforme.

Pour obtenir un compte ITCare, le représentant de la sécurité de votre organisation doit soumettre une demande de création de compte.

Comment puis-je demander un compte ITCare ?

Veuillez contacter votre Service Delivery Management ou l'équipe commerciale de cegedim.cloud.

Comment l'authentification ITCare est-elle gérée ?

L'authentification ITCare est basée sur une adresse e-mail et un mot de passe conformes aux normes de la politique de sécurité de cegedim.cloud.

Les comptes API utilisent le protocole OpenID. Plus d'informations sur l'API ITCare sont disponibles dans la page API ITCare.

L'authentification multi-facteurs est-elle disponible ?

L'authentification multi-facteurs est disponible et obligatoire pour certaines actions à haut privilège.

Au cours du processus d'intégration, vous recevrez toutes les informations nécessaires pour configurer correctement l'authentification multifactorielle.

Quels sont les privilèges possibles dans ITCare ?

Les privilèges dans ITCare sont divisés en rôles assignés à des profils. Les profils sont attribués aux utilisateurs.

Les rôles

Rôles
Description

Voir les ressources

Voir toutes les ressources et leurs informations. Lecture seule.

Gérer les maintenances

Capacité de gérer les maintenances.

Modifier les ressources

Capacité de modifier les ressources sauf création et suppression.

Gérer les ressources

Gestion complète des ressources.

Le MFA doit être configuré et sera obligatoire pour les rôles suivants :

  • Gérer les maintenances

  • Modifier les ressources

  • Gérer les ressources

Les profils

Profils
Voir les ressources
Gérer les maintenances
Modifier les ressources
Gérer les ressources

Standard (STD)

Maintenance (DTM)

Operator (OPE)

Power (POW)

Matrice de privilèges

Ce tableau non exhaustif décrit les actions basiques autorisées par profil :

Fonctionnalités
Label
Disponible pour

Bodies

create-instance

POW

start-instance

OPE

stop-instance

OPE

reset-instance

OPE

resize-compute-instance

OPE

delete-instance

POW

Instance monitoring

enable-monitoring-instance

OPE

disable-monitoring-instance

OPE

Snapshot of instances

create-snapshot

MNT

recover-snapshot

MNT

delete-snapshot

MNT

DNS aliases of instances

create-dns

OPE

delete-dns

OPE

LoadBalancers

create-lb

POW

start-lb

OPE

stop-lb

OPE

delete-lb

POW

Monitoring of LoadBalancers

enable-monitoring-lb

OPE

disable-monitoring-lb

OPE

Manage LoadBalancers

add-member-lb

OPE

delete-member-lb

OPE

update-member-state

OPE

DNS alias of LoadBalancers

create-dns-lb

OPE

delete-dns-lb

OPE

Manage maintenance

create-maintenance

MNT

delete-maintenance

MNT

Indicators

create-indicator

POW

update-indicator

POW

delete-indicator

POW

SMS

subscribe-vortext

POW

Storage Object

create-object-stores

POW

update-object-stores

OPE

delete-object-stores

POW

Storage Object - Users

create-user-objectstores

POW

update-user-objectstores

POW

delete-user-objectstores

POW

K8S Clusters

create-cluster

POW

create-cluster-namespace

OPE

delete-cluster-namespace

OPE

create-cluster-nodes

POW

delete-cluster-nodes

POW

Que sont les Régions et Zones de disponibilité ?

La topologie de la plateforme d'hébergement cegedim.cloud est divisée en :

  • Régions : un groupe de centre de données à faible latence ( < 1 ms)

  • Zones de disponibilité : ensemble de composants d'infrastructure dédiés dans un centre de données

Régions et zones de disponibilité

Quelles sont les régions disponibles ?

Voici la liste des régions disponibles pour nos clients :

Régions
Description
Centre de données

EB

Zone Parisienne

EB4 : Boulogne-Billancourt

EB5 : Magny-les-Hameaux

ET

Zone Toulousaine

ET1 : Labège

ET2 : Balma

Quelles sont les zones de disponibilité disponibles ?

Région EB

Zone de disponibilité
Description
Centre de données

EB-HDS-A

Zone cliente

EB4

EB-HDS-B

Zone cliente

EB4

EB-HDS-C

Zone cliente

EB5

EB-A

Zone réservée au groupe Cegedim

EB4

EB-B

Zone réservée au groupe Cegedim

EB4

EB-C

Zone réservée au groupe Cegedim

EB5

Région ET

Zone de disponibilité
Description
Centre de données

ET-HDS-A

Zone cliente

ET1

ET-HDS-B

Zone cliente

ET1

ET-A

Zone réservée au groupe Cegedim

ET1

ET-B

Zone réservée au groupe Cegedim

ET1

Qu'est-ce qu'une ressource ITCare ?

Une ressource est un composant d'infrastructure ou middleware déployé dans le cloud de cegedim.cloud.

Elle ne peut appartenir qu'à un seul Service. Voir Comment mes ressources ITCare sont-elles organisées ? pour la définition d'un Service.

Une ressource est systématiquement définie par les propriétés suivantes :

  • un id : identifiant unique de la ressource.

  • un type : le type de la ressource e.g. instance virtuelle, cluster Kubernetes, etc..

  • un nom : plus pratique à manipuler qu'un id.

  • un statut : défini l'état de la ressource (active, inactive).

  • un environnement : défini le type d'environnement de la ressource (production, qa, dev, test, etc..).

  • des tags : permet de taguer vos ressources avec des clés/valeurs personnalisables qui sont requêtables.

Quels sont les statuts possibles pour les ressources ?

Voici les statuts possibles d'une ressource qui sont visibles par la web UI ou renvoyés par l'API :

Statut
Description
Code API

Actif

La ressource est active et le service est disponible.

ACTIVE

Préparation

La ressource est en cours d'installation ou configuration. Le service n'est pas encore disponible.

PREPARATION

Inactif

La ressource est inactive et le service est indisponible.

INACTIVE

Comment mes ressources ITCare sont-elles organisées ?

Tout client cegedim.cloud possède une Organisation qui matérialise son existence au sein de notre SI.

Plusieurs Clouds peuvent être créés au sein d'une Organisation. Ceux-ci permettent de cloisonner les ressources et les droits utilisateurs.

Par défaut, un seul Cloud est défini pour une nouvelle Organisation. Des Clouds supplémentaires peuvent être créés sur demande.

Vous pouvez donc définir, au niveau d'un Cloud, qui a accès à quoi et quelles actions peuvent être réalisées. Il est donc possible, par exemple, d'avoir un Cloud offrant pleins pouvoirs à vos équipes de développement pour ne pas perturber la production.

Au sein d'un Cloud, les ressources sont ensuite regroupées dans des Services.

Les Services permettent de regrouper vos ressources de manière logiques selon plusieurs critères libres :

  • Le périmètre d'une application

  • Par environnement

  • Tout autre critère libre : par client par exemple

Les Services ne permettent pas d'appliquer des restrictions des droits utilisateurs.

Dans ITCare, les Services ont des pages dédiées qui permettent de consulter aisément l'ensemble des ressources qui leur est attaché.

Organisation des ressources ITCare

PostgreSQL - Mise à jour

Processus de mise à niveau

Requête

La mise à jour d'un PaaS PostgreSQL est de la responsabilité de cegedim.cloud et peut être demandée via un ticket requête soumis depuis ITCare en précisant un créneau de disponibilité pour l'opération.

Merci de préciser si celle-ci doit être réalisée en heures non ouvrées pour planification d'une RFC.

Il est recommandé de procéder à la mise à jour de vos environnements de non production d'abord afin de pouvoir estimer le temps d'interruption généré par l'opération ainsi que de recetter vos applications dans la nouvelle version du moteur.

Déroulement

La mise à jour d'un déploiement PostgreSQL (mono-instance ou haute disponibilité) se déroule en deux étapes complètement automatisées :

  • Mise à jour du système d'exploitation préalable

    • Plusieurs mises à jour selon le scénario : Debian 9 → Debian 10 → Debian 11 -> Debian 12

  • Mise à jour du moteur PostgreSQL dans la version cible

Selon la version source et cible de PostgreSQL, il peut donc être nécessaire de migrer d'abord le système d'exploitation dans une version supportée par cegedim.cloud (voir PostgreSQL - Mise à jour).

Impacts

  • La durée d'une mise à jour est variable selon :

    • Les ressources cpu et ram configurées

    • La quantité de données dont les entêtes doivent être modifiés par le moteur PostgreSQL.

    • La quantité de données à réindexer suite au changement de librairie C, après une mise à jour de l'OS.

  • Le mode de sauvegarde :

    • Point-in-time Recovery (PITR) à partir de PostgreSQL 12 et supérieur.

      • Le mode de sauvegarde "dump" disparait donc au profit du "PITR" et ne reste utilisé que dans les versions de PostgreSQL inférieures à la version 12.

Temps de référence

A titre indicatif, voici les durées pour chaque étape d'une mise à jour d'une base de données pgbench de 100 Go :

  • Mise à jour de Debian : 10 minutes en moyenne

  • Réindexation PostgreSQL : 5 minutes en moyenne

  • Mise à jour de PostgreSQL : 1 minute en moyenne

  • Checksum PostgreSQL : 3 minutes en moyenne

  • Vacuuming de PostgreSQL : 1 minute en moyenne

  • Sauvegarde complète de PostgreSQL (mode PITR) : 16 minutes en moyenne

En mode PostgreSQL HA, nous devons également mettre à jour le réplica et le synchroniser avec le leader :

  • Synchronisation PostgreSQL : 4 minutes en moyenne

Durée moyenne totale pour une base de données de 100GB : 40 minutes

Matrice de support OS / PostgreSQL

Distribution Linux supportées par cegedim.cloud en fonction de la version de PostgreSQL :

Versions de PostgreSQL
Distribution Linux supportée

PostgreSQL 10

Debian 9

PostgreSQL 11

Debian 10

PostgreSQL 12

Debian 10

PostgreSQL 13

Debian 11

PostgreSQL 14

Debian 11

PostgreSQL 15

Debian 11

PostgreSQL 16

Debian 12

Chemins de mises à jour PostgreSQL supportés

La mise à jour du système d'exploitation, si elle a lieu, peut nécessiter une réindexation complète (aussi prise en charge par cegedim.cloud) du fait des évolutions de la librairie C lors de la mise à jour du système d'exploitation.

Selon la quantité de données, cette opération peut prendre un certains temps.

Ci-dessous les chemins de mises à jour supportés par cegedim.cloud :

Version Source
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
PostgreSQL 16

PostgreSQL 10

✅ *

Debian 9 → Debian 10

✅ *

Debian 9 → Debian 10

✅ **

Debian 9 → Debian 11

✅ **

Debian 9 → Debian 11

✅** Debian 9 → Debian 11

✅*** Debian 9 → Debian 12

PostgreSQL 11

✅ *

Debian 9 → Debian 10

✅ **

Debian 9 → Debian 11

✅ **

Debian 9 → Debian 11

✅** Debian 9 → Debian 11

✅*** Debian 9 → Debian 12

PostgreSQL 12

✅ *

Debian 10 → Debian 11

✅ *

Debian 10 → Debian 11

✅* Debian 10 → Debian 11

✅** Debian 10 → Debian 12

PostgreSQL 13

✅

✅

✅* Debian 11 → Debian 12

PostgreSQL 14

✅

✅* Debian 11 → Debian 12

PostgreSQL 15

✅* Debian 11 → Debian 12

* Une migration du système d'exploitation est requise.

** Une double migration du système d'exploitation est requise.

*** Une triple migration du système d'exploitation est requise.

Redis - Architecture

Redis est déployable en self-service via notre outil de gestion de plateforme cloud : ITCare.

Topologies

Deux topologies sont disponibles :

  • Instance autonome

  • Cluster Sentinel

Dans les deux cas, vous pouvez choisir de faire persister ou non les données sur le disque lors de la demande de création, voir Persistance.

Instance autonome

L'instance autonome, une fois déployée, est accessible sur le port d'écoute 6379.

Cluster Sentinel

Le cluster Redis Sentinel est déployé sur 3 instances répartis sur toutes les Zones de disponibilité d'une Area.

Le cluster, une fois déployé, est accessible sur le port d'écoute 6379.

Particularités en mode cluster

  • Chaque instance exécute les processus Redis et Sentinel

  • Port d'écoute Sentinel : 26379

  • Sur les 3 instances, l'une d'elle est primaire et les deux autres sont des répliques

  • Les répliques sont ouvertes en lecture seule

Persistance

La persistance fait référence à l'écriture de données sur un support durable, tel qu'un disque SSD (solid-state disk). Redis propose une série d'options de persistance.

  • RDB (Redis Database) : La persistance RDB réalise des instantanés ponctuels de votre ensemble de données à des intervalles spécifiés.

  • AOF (Append Only File) : La persistance AOF enregistre chaque opération d'écriture reçue par le serveur. Ces opérations peuvent ensuite être rejouées au démarrage du serveur, reconstituant ainsi l'ensemble de données d'origine. Les commandes sont enregistrées dans le même format que le protocole Redis lui-même.

  • Pas de persistance : Vous pouvez désactiver complètement la persistance. Cette option est parfois utilisée pour la mise en cache.

  • RDB + AOF : Vous pouvez également combiner AOF et RDB dans la même instance.

Scénario
Paramètrage

Si Persistance RDB activée

  • save 3600 1

  • save 300 100

  • save 60 10000

Si Persistance AOF activée

  • append fsync every sec

Résilience

Si l'instance primaire tombe en panne, une réplique sera automatiquement promue en tant que nouveau primaire. La réplique sera reconfigurée automatiquement pour suivre le nouveau primaire.

Sentinel fournit les informations concernant l'instance primaire et les instances répliques.

Fonctionnalités

Cette section énumère les fonctionnalités disponibles pour le client, ainsi que la manière de les demander ou de les exécuter :

Libre service

Le client peut effectuer une action de manière autonome.

Sur demande

Le client peut demander à l'équipe de support de cegedim.cloud de prendre les mesures nécessaires.

Fonctionnalités
Libre service
Sur demande
Commentaires

Accès SSH

L'accès SSH est désactivé et réservé aux administrateurs de cegedim.cloud.

Modifier le fichier de configuration

Sur demande via un billet.

Accès à Redis/Sentinel

Le client peut se connecter avec un compte à Redis et Sentinel (mot de passe défini par le client dans l'assistant de provisionnement).

Diagramme de haut niveau

Diagramme de haut niveau

Configuration

Configuration du produit

Paramètre
Valeur personnalisée
Enforcé
Commentaires

bind

@IP 127.0.0.1

Adresse d'écoute

timeout

300

Fermer la connexion après qu'un client soit inactif pendant N secondes (0 pour désactiver)

logfile

/var/log/redis/redis-server.log

Chemin du fichier journal

supervised

systemd

Interaction de supervision

Si la persistance AOF est active, les paramètres suivants seront appliqués :

Paramètre
Valeur personnalisée
Enforcé

appendonly

oui

dir

/var/lib/redis/persistance

appendfsync

everysec

si RDB est actif, les paramètres suivants seront appliqués :

Paramètre
Valeur personnalisée
Enforcé

save

3600 1

save

300 100

save

60 10000

rdb_compression

oui

rdbchecksum

oui

dir

/var/lib/redis/persistance

Configuration Kernel

Les paramètres noyau suivants ont été modifiés afin d'optimiser les performances du système d'exploitation pour Redis :

  • vm.overcommit_memory = 1

  • vm.swappiness = 1

  • net.core.somaxconn = 65535

Sécurité

Authentification

Le mode d'authentification utilisé est le mode interne : Redis 6 ACL.

Les mots de passe sont hashés avec SHA-256 et n’apparaissent pas en clair dans le fichier ACL.

Autorisations

Les ACL de Redis 6 sont utilisées pour gérer les autorisations.

Sur Sentinel, le compte client dédié a les droits sur :

~* &* +@all -@dangerous +ACL|GETUSER +INFO +sentinel|GET-MASTER-ADDR-BY-NAME +sentinel|IS-MASTER-DOWN-BY-ADDR +sentinel|MASTER +sentinel|MASTERS +sentinel|MYID +sentinel|REPLICAS +sentinel|SLAVES +sentinel|SENTINELS

Sur Redis, le compte client dédié a les droits sur :

~* &* +@all -@dangerous +ACL|GETUSER +INFO +CONFIG|GET +CONFIG|HELP

Transport sécurisé

Le client peut choisir d'activer le non le transport TLS lors de la demande de création en libre-service via ITCare.

Mots de passe

Cette section énumère la gestion des mots de passe :

Mot de passe
Stocké par cegedim.cloud
Stocké par le client
Enforcé
Algorithme de hash

compte du client

SHA-256

TOUT autre compte

SHA-256

compte cgdm_admin

SHA-256

compte cgdm_monitor

SHA-256

Surveillance

Les éléments suivants sont surveillés et sont accessibles dans ITCare.

Alertes
Description

DBS_REDIS_CLI_CLIENTS

Vérifier le nombre de clients connectés

DBS_REDIS_CLI_AOF_STATUS

Vérifier l'état de l'aof

DBS_REDIS_CLI_COMMANDS

Nombre de commandes traitées

DBS_REDIS_CLI_CONNECTIONS

Nombre de connexions

DBS_REDIS_CLI_CPU

Utilisation du CPU

DBS_REDIS_CLI_MEMORY

Utilisation de la mémoire

DBS_REDIS_CLI_REPL_REPLICAS_COUNT

Vérifier le nombre de répliques

DBS_REDIS_CLI_RDB_STATUS

Statut de la RDB

DBS_REDIS_PING

Vérifie la disponibilité du nœud

DBS_REDIS_SENTINEL_MASTER_UP

Vérifie l'état du maître à partir de Sentinel

DBS_REDIS_SENTINEL_SLAVES_COUNT

Vérifier le nombre de répliques à partir de Sentinel

DBS_REDIS_SENTINEL_SENTINELS_COUNT

Vérifier Sentinelscount

DBS_REDIS_SENTINEL_QUORUM

Vérifier l'état du quorum

TLS_REDIS_CERT_EXPIRATION

Vérifier l'expiration du certificat Redis

TLS_SENTINEL_CERT_EXPIRATION

Vérifier l'expiration du certificat Sentinel

Logo

Notes de mise à jour

Découvrez les dernières mises à jour de cegedim.cloud ! Améliorations continues, nouveaux produits, nouvelles fonctionnalités et évolutions sont référencés ici.

Avril 2025

🚀 OpenSearch 2.19

OpenSearch 2.19 est désormais disponible dans ITCare ! Cette version inclut un certain nombre de mises à jour qui vous aident à créer des applications alimentées par l'apprentissage automatique (ML), des améliorations de performances et de stabilité.

🛠️ OpenSearch - Supprimer des noeuds

Il vous est maintenant possible de supprimer des noeuds de données d'un cluster OpenSearch en self-service. La suppression de noeuds doit se faire par paire afin de respecter l'équilibre de la répartition des données au sein du cluster.

🚀 Kubernetes 1.31

Kubernetes 1.31 est désormais disponible dans ITCare ! Cette version comprend un certain nombre de mises à jour comme la possibilité de spécifier un profil AppArmor pour un container ou un pod dans l'API, amélioration de la fiabilité de la connectivité pour l'Ingress KubeProxy ainsi qu'un design initial pour le support des limites au niveau pod-level.

Note à propos du processus de mise à jour

Le processus de mise à jour nécessite le redémarrage des nœuds (10 % des nœuds de travail à la fois) en raison d'un changement de configuration entre les versions de Kubelet. En fonction du niveau de résilience de votre pile, nous recommandons de programmer cette mise à jour pendant une période de faible utilisation afin de minimiser les perturbations.

Vous pouvez désormais mettre à jour en version 1.31 un cluster déjà existant en autonomie.

N'oubliez pas de vérifier la compatibilité avant de lancer une mise à jour ! Plus d'informations ici :

🚀 Apache Kafka 3.9

La version 3.9 de Apache Kafka est désormais disponible dans ITCare ! Les nouveautés incluent des résolutions de bug ainsi que de mises à jour comme le stockage hiérarchisé, les quorums dynamiques Kraft ainsi que l'authentification OAuth avec un fournisseur OIDC.

🛠️ Apache Kafka - Ajouter des noeuds

Il vous est maintenant possible d'ajouter des noeuds broker en self-service dans vos clusters Apache Kafka. Le sizing est identique à celui défini initialement lors de la création de votre cluster. Le stockage associé est modifiable mais il est recommandé d'allouer la même quantité que celle configurée sur les autres brokers du cluster. Enfin, le choix de la zone de disponibilité est possible avant la soumission.

🚀 Ubuntu 24.04

Ubuntu 24.04 est désormais disponible dans ITCare ! Le hardening du système d'exploitation déployé dans les versions précédentes est toujours présent dans cette version.

🛠️ Politiques de sauvegarde

Vous pouvez désormais sélectionner la politique de sauvegarde sur tous nos PaaS durant l'étape de création. Les produits suivants sont désormais éligibiles: PostgreSQL, MariaDB, SQL Server, Oracle.

🛠️ Stockage objet

De nouvelles fonctionnalités et améliorations ont été apportés à la page des stockages objets. Vous pouvez maintenant trier par catégories sur la liste des COS, un bouton "Filtrer" a aussi été ajouté. Depuis la page du COS vous pouvez maintenant accéder à son dashboard Grafana via le bouton Métrologie avancée.

Mars 2025

🚀 Améliorations du niveau de support ITCare

La gestion du niveau de support a été grandement améliorée sur nos produits. Vous pouvez désormais choisir d'activer et de déployer la surveillance sans activer immédiatement les alertes. Cela permet à nos utilisateurs de tester les checks de surveillance sans déclencher de tickets ou le support d'astreinte téléphonique.

🛠️ PostgreSQL - Mise à niveau sur place

Une nouvelle action de self-service est disponible sur tous les PaaS PostgreSQL : la mise à niveau sur place. Cela vous permet de mettre à niveau votre déploiement d'une version quelconque à la dernière version de manière autonome et sans avoir à redeployer un autre PaaS. Cette opération est décrite dans la page de mise à niveau de cette Académie pour PostgreSQL. Toutes les mesures de sécurité ont été mises en œuvre et en cas d'erreur, une fonction de retour arrière est incluse dans le processus de mise à niveau.

🛠️ ITCare UI / UX / Performance

De multiples améliorations ont été apportées pour améliorer l'expérience utilisateur, les performances et l'interface de ITCare.

Février 2025

🛠️ ITCare - Nouveau Dashboard de Sécurité

Un nouveau dashboard de sécurité offre une visibilité en temps réel sur les vulnérabilités, la protection Bot Defense, les instances Vault et l’obsolescence des ressources. Il permet un suivi précis des vulnérabilités corrigées et des attaques bloquées. Les pages "Vulnérabilités" et "Bot Defense" ont été enrichies pour une gestion optimisée.

🛠️ ITCare - Amélioration du calcul des taux de disponibilité

Nous avons amélioré la précision des calculs en prenant en compte uniquement les périodes définies dans l’indicateur. La visibilité est renforcée avec l’affichage des périodes de disponibilité et d’indisponibilité par mois ou par jour. Les raisons des interruptions sont désormais accessibles, et les maintenances ne sont plus comptabilisées comme des indisponibilités, garantissant des indicateurs plus fiables.

Janvier 2025

🛠️ PostgreSQL - TLS

L'activation du chiffrement TLS est désormais possible sur demande après le provisioning d'un PostgreSQL PaaS. Merci de soumettre un ticket de demande dans ITCare pour cette fonctionnalité.

🛠️ Politiques de sauvegarde

Nous avons amélioré la sélection des politiques de sauvegarde et permettons désormais la sélection d'une politique "répliquée" même pour les services de type "non-production". Cela signifie que si vous avez des ressources sensibles de type "non-production", vous pouvez sélectionner une politique qui gère la réplication des sauvegardes hors site.

🛠️ ITCare - Informations sur les sauvegardes

Le panneau de sauvegarde a été amélioré dans ITCare pour tous nos produits PaaS. Il devrait être affiché sur tous les produits et plus d'informations sont désormais disponibles, telles que les politiques de sauvegarde, l'horodatage de la dernière sauvegarde et l'empreinte de stockage du système (et de la base de données, le cas échéant) en Go.

🚀 ITCare - Object Stores dans la barre de recherche principale

Les Object Stores sont désormais indexés dans la barre de recherche principale et peuvent être trouvés pour une navigation plus facile vers la page d'informations détaillées.

Décembre 2024

🚀 SQL Server Always On

Always On est désormais disponible dans ITCare en self-service pour SQL Server 2022 Enterprise edition. Pour plus d'informations, veuillez consulter les informations sur le produit .

🚀 Politiques de sauvegarde pour les PaaS

En septembre, nous avons lancé la sélection de la politique de sauvegarde pour Linux et Windows lors du provisionnement. Vous pouvez désormais sélectionner la politique de sauvegarde pour plusieurs PaaS lors du provisionnement : OpenSearch, Redis, Apache Kafka, RabbitMQ, GlusterFS, Tomcat, Wildfly.

Nous avons également amélioré l'aperçu de l'interface utilisateur pour ces produits afin de vous permettre de voir l'empreinte de la sauvegarde et les politiques associées configurées.

La prochaine et dernière livraison concernera les produits restants suivants : PostgreSQL, MariaDB, SQL Server.

🛠️ Apache Kafka - Ajout de nodes

L'ajout de nodes supplémentaires pour le produit Apache Kafka est désormais possible sur requête via un ticket depuis ITCare. Pour rappel, un cluster Apache Kafka est composé à minima de 3 nodes pour de la production.

Octobre 2024

🚀 Kubernetes 1.28

Kubernetes 1.28 est désormais disponible dans ITCare !

Aussi, vous pouvez désormais mettre à jour en version 1.28 un cluster déjà existant en autonomie.

Pensez à avant de déclencher une mise à jour !

Septembre 2024

🛠️ ITCare - Filtrage dynamique

Un nouveau système de filtrage est maintenant disponible dans la section Ressources ! Les filtres s'ajustent automatiquement en fonction du type de ressource choisi, permettant ainsi une expérience plus personnalisée et une présentation optimisée des informations attendues.

Une démonstration interactive est disponible dans la section démo :

🚀 Redis 7.2.5

Nous sommes heureux d'annoncer que Redis 7.2.5 est désormais disponible sur notre plateforme ITCare. Vous pouvez également demander la mise à jour en version 7.2.5 d'un PaaS Redis déjà existant via un ticket requête.

🛠️ Politiques de sauvegardes (Bêta)

La sélection de votre politique de sauvegarde pour les instances virtuelles Linux et Windows est maintenant disponible en autonomie lors de la création de vos ressources dans ITCare !

Cette fonctionnalité est présentement en phase Bêta accessible à tous.

Juillet-Août 2024

🚀 Oracle Linux 9

La distribution Oracle Linux est désormais disponible en libre service via ITCare, notre plateforme de gestion du Cloud. Cette distribution est disponible dans le cadre de notre produit d'instances virtuelles avec les mêmes options et propriétés.

🛠️ Bot Defense - Mode transparent

Bot Defense a été mis à jour pour introduire le mode transparent, vous permettant de voir les requêtes jugées illégitimes sans impacter le trafic. Ce mode facilite l'analyse des logs et l'identification des faux positifs, ce qui permet d'affiner les réglages en ajoutant des IP légitimes à la liste blanche avant de passer au mode blocage.

Pour plus d'informations, merci de lire la documentation .

🚀 OverDrive - XS

OverDrive, basé sur la technologie Nextcloud, offre une plateforme de stockage et de synchronisation de fichiers avec de puissantes capacités de collaboration avec des interfaces de bureau, mobiles et web. Ce nouveau produit est disponible en libre-service par l'intermédiaire d'ITCare dans la taille XS et est hébergé sur site avec des normes de sécurité élevées.

Pour plus d'informations, veuillez lire la documentation .

🛠️ Kubernetes - Création de load balancer

Pour simplifier la création d'un load balancer, il est désormais possible de créer un load balancer sur votre cluster Kubernetes directement depuis le menu déroulant Gérer.

🛠️ Kubernetes - Indicateur de santé API

Un nouvel indicateur de santé a été ajouté à tous les clusters Kubernetes dont la surveillance est activée pour surveiller l'API Kubernetes.

♻️ Mise à jour des OS des PaaS

Le système d'exploitation utilisé par les PaaS a été mis à niveau en dernière version lorsque cela était possible. Cela garantit que tous les nouveaux déploiements seront à jour et bénéficieront des correctifs de sécurité.

Juin 2024

🛠️ OpenSearch - Migration vers une architecture à master dédiés

Une nouvelle fonctionnalité est disponible pour les clusters OpenSearch afin de migrer d'une topologie basique vers une topologie avec master dédiés. Cette migration ajoutera 3 nœuds dédiés au rôle de maître (n'hébergeant pas de données).

Une démonstration interactive est disponible dans la section démo :

🛠️ OpenSearch - Noeuds d'ingestion

Des nœuds spécialisés dédiés au rôle d'ingestion peuvent maintenant être ajoutés à votre cluster OpenSearch. Cette nouvelle fonctionnalité est disponible dans le menu déroulant Gérer et ajoutera 2 nouveaux nœuds dédiés au rôle d'ingestion.

Une démonstration interactive est disponible dans la section démo :

Mai 2024

🚀 RabbitMQ 3.13

Les versions 3.12 et 3.13 sont désormais supportées par le PaaS RabbitMQ ! Pour plus d'informations, merci de lire la documentation ainsi que les notes de mises à jour officielles.

Avril 2024

🚀 PostgreSQL 16

La version 16 est maintenant supportée par le PaaS PostgreSQL ! Pour plus d'informations, merci de lire la documentation ainsi que les notes de mises à jour officielles.

🚀 PostgreSQL - Gestion des extensions

L'installation d'extensions PostgreSQL sur vos PaaS est désormais possible en libre service via ITCare. La liste des extensions supportées est disponible dans la documentation .

Cette fonctionnalité n'est disponible que pour les déploiements PostgreSQL 15 et supérieur.

🚀 OpenSearch 2.11.1

Le PaaS OpenSearch a été mis à jour pour supporté et permettre le déploiement de la version 2.11.1.

🛠️ ITCare - Amélioration de l'interface

Le menu principal d'ITCare a été amélioré afin d'offrir une meilleure navigation en réduisant le nombre de pages en cascade.

🛠️ ITCare - Nouveau moteur de notification

L'ancien moteur de notification a été supprimé et remplacé par un meilleur système de notification capable de gérer des règles de notification très précises. Cela vous permet de personnaliser exactement les notifications que vous souhaitez recevoir à l'aide d'abonnements ainsi que les destinataires à l'aide de groupes de diffusion d'e-mails.

Vos anciennes souscriptions de notification ont été conservées.

🛠️ Kubernetes - Personnalisation de l'Ingress provider

Il est désormais possible de sélectionner l'Ingress provider que vous souhaitez pour Kubernetes dans l'assistant de création. Les Ingress provider disponibles sont : NGINX, Istio et Traefik.

Mars 2024

🚀 SQL Server 2022

2022 est disponible au provisioning dans ITCare. Comme précédemment, il est possible de choisir l'édition Standard ou Entreprise au provisioning.

Février 2024

🛠️ Kubernetes - améliorations d'affichage

Dans ITCare, l'affichage de Kubernetes a été amélioré pour afficher le rôle Ingress sur vos nœuds ainsi que la version du système d'exploitation déployé sur chaque nœud.

🛠️ Load balancers - Alertes HTTP URL personnalisées

Après avoir amélioré la gestion des URL dans ITCare, il est maintenant possible de créer vos propres alertes HTTP sur des URL directement depuis ITCare sur votre load balancer en utilisant l'onglet URL.

Janvier 2024

🚀 Debian 12

La version 12 de la distribution Linux Debian est disponible pour le déploiement dans ITCare. L'automatisation a été améliorée et l'approvisionnement est désormais plus rapide.

L'amélioration de la sécurité, précédemment disponible dans Debian 11, est toujours en vigueur, mais elle est désormais facultative et peut être désactivée dans l'assistant.

🚀 MariaDB 10.11

La nouvelle version LTS de est disponible pour le déploiement dans ITCare. Consultez les notes de version officielles de MariaDB pour plus d'informations.

🛠️ Patch Party - améliorations

Les ressources peuvent désormais être incluses ou exclues en mode batch à partir de votre page Service. Nous avons également amélioré les informations sur l'état des correctifs grâce à un panneau dédié dans la vue d'ensemble de votre ressource, qui vous permet de voir rapidement si votre ressource a été patchée et quand aura lieu la prochaine Patch Party.

🚀 Descriptions personnalisées pour les ressources et Services

Des descriptions personnalisées peuvent être ajoutées à vos ressources et Services dans ITCare pour identifier rapidement vos applications.

🚀 Ressources favorites

Pour vous aider à naviguer vers vos ressources préférées, vous pouvez désormais ajouter des ressources à votre liste personnelle de favoris que vous pouvez appeler à partir de l'en-tête ITCare.

🚀 Onglet Réseaux dans la section Calcul

Un nouvel onglet est disponible dans la section Calcul pour parcourir les réseaux disponibles pour votre cloud avec leurs propriétés.

🛠️ Calendrier de maintenance - améliorations

Le calendrier de maintenance a été amélioré pour afficher les événements personnalisés propres à chaque client. Les RFC et les événements privés apparaîtront désormais dans le calendrier ITCare de votre cloud.

🛠️ Section Sécurité - améliorations

La section Sécurité a été améliorée avec un nouveau point d'entrée pour Bot Defense & DoS Protection avec ses détails concernant les requêtes bloquées et les attaques.

Octobre 2023

🚀 Apache Kafka 3.6.0

La version 3.6.0 de , plateforme open-source de streaming d'événements distribués, est disponible au déploiement via ITCare.

Cette nouvelle version utilise l'algorithme de consensus Raft et permet de s'affranchir de Zookeeper.

🚀 PostgreSQL 15

La version 15 de est disponible au déploiement via ITCare. Elle est compatible avec toutes les fonctionnalités précédemment proposées.

🚀 PostgreSQL - Restauration en libre-service

La fonctionnalité de restauration en libre-service, qui vous permet de restaurer une sauvegarde d'une source vers une autre destination, est disponible en libre-service dans ITCare.

⚒️ Load balancer - Bot defense

Un nouveau mode "Strict" a été rajouté à la fonctionnalité .

Ce profil plus restrictif est déployable rapidement en cas d'attaque en cours sur vos Load balancers. Son paramétrage plus fin est destiné à bloquer un nombre de requêtes plus conséquent.

Septembre 2023

🚀 Créer plusieurs ressources à la fois

Vous pouvez créer jusqu'à 5 ressources supplémentaires avec la même configuration. Les ressources supplémentaires seront situées dans la même région, mais les zones de disponibilité peuvent être différentes.

🚀 "Dupliquer" une ressource

Lorsque vous affichez une instance virtuelle, vous pouvez maintenant utiliser cette ressource existante comme modèle pour créer une nouvelle ressource avec les mêmes propriétés : CPU, RAM, réseau, stockage, options de gestion.

Vérifiez la taille du disque dans le nouveau modèle. En fonction du modèle source, vous pourriez avoir une quantité de stockage incorrecte configurée. C'est un bug connu !

La fonctionnalité a pour objectif de faire économiser du temps pour créer une nouvelle instance virtuelle, mais elle ne CLONERA rien.

⚒️ Wizard - Sélection du réseau

Lors de la création d'une ressource, la sélection du réseau est maintenant consciente de l'environnement du Service.

Si le Service a :

  • un environnement de Production, les réseaux de production sont affichés par défaut.

  • un environnement de Non-production, les réseaux de non-production sont affichés par défaut.

Dans les deux cas, les réseaux de production et de non-production restent disponibles pour la sélection.

⚒️ Service global - Gestion de la maintenance

Les maintenances peuvent maintenant être planifiées sur plusieurs ou toutes les ressources au niveau du service.

🚀 PostgreSQL - Activation de la haute disponibilité

Une instance PostgreSQL unique peut maintenant être convertie en un cluster PostgreSQL hautement disponible avec deux nœuds. Cette opération n'est pas réversible.

⚒️ Nouvelles options de gestion sur les clusters

De nouvelles actions de gestion sont maintenant disponibles sur les clusters :

  • Redimensionnement : il peut également être effectué au niveau du nœud en fonction de la configuration du produit.

  • Patch party : les statuts de chaque ressource sont maintenant visibles dans la vue étendue du service.

🚀 Kubernetes - Mise à jour en libre-service

Il est désormais possible de mettre à jour votre cluster vers la dernière version supportée à partir du menu de gestion du cluster :

  • La mise à niveau vers la version supérieure suivante est possible - le saut de version n'est pas autorisé

  • Le retour à une version antérieure n'est pas possible

🚀 Load balancers - Gestion des URL

Les URL liées à un équilibreur de charge peuvent désormais être gérées individuellement :

  • Un onglet URL dédié est disponible dans la page de l'équilibreur de charge

  • Les actions suivantes peuvent être effectuées par URL ou sur un groupe d'URL : planifier la maintenance, activer / désactiver la surveillance

  • La création d'URL est disponible dans les actions de gestion de l'équilibreur de charge

Logo
Logo
Logo
SQL Server - Architecture
Bot Defense
OverDrive
RabbitMQ
PostgreSQL
PostgreSQL - Architecture
SQL Server
MariaDB
Apache Kafka
PostgreSQL
PostgreSQL
Bot Defense
Conteneurs (K8s)
Filtres dynamiques
OpenSearch - Didacticiels
OpenSearch - Didacticiels
Logo
GitHub - nginxinc/kubernetes-ingress: NGINX and NGINX Plus Ingress Controllers for KubernetesGitHub
What is MariaDB Galera Cluster?MariaDB KnowledgeBase
MariaDB Server DocumentationMariaDB KnowledgeBase
Global Transaction IDMariaDB KnowledgeBase
Understanding MariaDB ArchitectureMariaDB KnowledgeBase
Logo
Logo
Redis persistenceRedis

RACI

Le partage des responsabilités

Objectifs et Définitions

Pour avoir une compréhension commune des responsabilités et des devoirs entre cegedim.cloud et le client, nous utilisons une matrice RACI applicable à nos produits managés.

R

Responsable (acteur)

Assigné à la réalisation de la tâche ou du produit à livrer

A

Responsable (décisionnaire)

A le pouvoir de décision final et la responsabilité de l'achèvement (1 seul par tâche)

C

Consulté

Un conseiller, une partie prenante ou un expert en la matière qui est consulté avant une décision ou une action.

I

Informé

Doit être informé après une décision ou une action

Matrice RACI générique

Vous trouverez ci-dessous les matrices RACI décrivant les actions liées à la gestion des produits managés du catalogue cegedim.cloud.

Il existe de légères différences en fonction du plan souscrit par le client :

Plan
Description

Libre-service

Le client peut créer des ressources directement à travers ITCare, en utilisant le libre-service et le paiement à l'utilisation.

Sur requête

Les ressources sont provisionnées et livrées par cegedim.cloud à la demande du client.

Actions
Plan
cegedim.cloud
Client
Commentaires

Créer, Arrêter, Démarrer, Supprimer une instance ou un cluster

Libre-service

I

A / R

La décision de provisionner / arrêter / démarrer / supprimer est prise par le client.

Les actions sont effectuées :

  • par les clients par le biais d'ITCare s'ils ont souscrit au service "On Demand".

  • pour d'autres clients, par l'équipe des services professionnels de cegedim.cloud

Utiliser une instance ou un cluster

*

I

A / R

Le client est responsable de l'utilisation saine du produit.

Modifier les configurations

Sur requête

A / R

I

À la demande du client, certains paramètres de configuration peuvent être modifiés.

Surveillance standard

*

A / R

I

La surveillance est obligatoire et le client peut y accéder par le biais d'ITCare.

Métriques de performance

*

R

I

Les mesures de performance sont fournies par défaut et sont accessibles via ITCare.

Sauvegarde et restauration

*

R

A / I

La politique de sauvegarde est définie par le client et appliquée par cegedim.cloud, qui est chargé de s'assurer que les sauvegardes sont effectuées, et de restaurer les données sur demande.

Le client dispose d'informations sur la sauvegarde dans ITCare.

Protection contre la reprise après sinistre

*

R

A / I

Le Disaster Recovery est activé par le client et appliqué par cegedim.cloud, qui est chargé de s'assurer que les RTO et RPO associés sont atteints.

Le client dispose d'informations sur la protection contre les sinistres dans ITCare.

Correctifs de sécurité

*

R

A / I

cegedim.cloud applique les patchs de sécurité dans l'environnement d'exécution, trimestriellement, lors des "Patch parties", par défaut.

Le client peut choisir d'exclure une instance de l'application des correctifs via ITCare.

Mises à jour des versions

Sur requête ou Libre-service

R

A / I

La mise à jour peut parfois être effectuée par le client depuis ITCare en autonomie OU une demande peut être émise par le client, et si la transition est possible, cegedim.cloud effectuera la mise à jour ou l'upgrade de la version du produit.


Matrice RACI spécifiques

Certains de nos produits disposent d'actions spécifiques qui peuvent être réalisées au autonomie et en libre-service depuis notre outils de gestion de cloud ITCare. Les matrices ci-dessous sont donc complémentaires à la matrice RACI générique.

Kubernetes

Actions
Plan
cegedim.cloud
Client
Commentaires

Ajouter un nœud Kubernetes

Libre-service

I

A / R

Le Client peut ajouter des nœuds Kubernetes en libre-service via ITCare.

Redimensionner un nœud Kubernetes

Libre-service

I

A / R

Le Client peut redimensionner des nœuds Kubernetes en libre-service via ITCare.

Supprimer un nœud Kubernetes

Libre-service

I

A / R

Le Client peut supprimer des nœuds Kubernetes en libre-service via ITCare.

Activer le mode HA sur un cluster Kubernetes

Libre-service

I

A / R

Le Client peut activer la Haute disponibilité sur un cluster Kubernetes en libre-service via ITCare.

MariaDB

Actions
Plan
cegedim.cloud
Client
Commentaires

Ajouter une réplique MariaDB en lecture seule

Sur requête

A / R

I

Sur demande, une réplique MariaDB en lecture seule peut être configurée pour un nœud MariaDB autonome.

OpenSearch

Actions
Plan
cegedim.cloud
Client
Commentaires

Gestion des Index

*

I

A / R

Le client est responsable de la création et de la gestion de ses index. cegedim.cloud n'y a pas accès à l'exception de l'index security_audit.

PostgreSQL

Actions
Plan
cegedim.cloud
Client
Commentaires

Restaurer PostgreSQL source vers destination

Libre-service

I

A / R

La décision de restaurer un PostgreSQL sur un autre déploiement PostgreSQL est prise par le client. Les actions sont effectuées:

  • par le biais d'ITCare s'ils ont souscrit au service "On Demand".

  • par l'équipe Professionnals Services de cegedim.cloud

Conversion en Haute disponibilité

Libre-service

I

A / R

La décision de restaurer un PostgreSQL sur un autre déploiement PostgreSQL est prise par le client. Les actions sont effectuées:

  • par le biais d'ITCare s'ils ont souscrit au service "On Demand".

  • par l'équipe Professionnals Services de cegedim.cloud

Apache Kafka

Actions
Plan
cegedim.cloud
Client
Commentaires

Gérer les objets Apache Kafka

*

I

A / R

Le client est responsable de la gestion des objets Apache Kafka (topics, partitions, etc.) et de leur bonne utilisation.

Ajouter un noeud broker dans un cluster Apache Kafka

*

I

A / R

Le client est responsable de la gestion des noeuds de ses clusters Apache Kafka (topics, partitions, etc.) et de leur bonne utilisation.

RabbitMQ

Actions
Plan
cegedim.cloud
Client
Commentaires

Gérer les objets RabbitMQ

*

I

A / R

Le client est responsable de la gestion des objets RabbitMQ (échanges, files d'attente, etc.) et de leur bonne utilisation.

Bot Defense

Actions
Plan
cegedim.cloud
Client
Commentaires

Activer / Désactiver l'option Bot Defense sur un Load Balancer

Libre-service

I

A / R

La décision d'activer/désactiver l'option Bot Defense est prise par le client.

Ajouter ou supprimer une IP sur la whitelist

Libre-service

I

A / R

Le client peut ajouter ou supprimer une IP sur la whitelist.

Accès aux DDOS et aux requêtes bloquées de Bot Defense et Dos Protection

Libre-service

I

A / R

Signalez en temps réel les demandes bloquées (y compris l'adresse IP bloquée, la raison du blocage et l'ID du support).

Demande de détails sur la demande bloquée

Sur requête

A / R

I

À la demande du client, des informations supplémentaires peuvent être fournies pour une demande bloquée en fournissant l'identifiant du support.

Data Masking

Actions
Plan
cegedim.cloud
Client

Désigner un champion et définir les objectifs de masquage des données

*

I

A / R

Définir le contexte du masquage

*

I

A / R

Identifier les données sensibles à masquer (spécifications)

*

I

A / R

Identifier les contraintes d'intégrité des données dans la base de données

*

I

A / R

PDM : découverte et marquage des données sensibles

*

A / R

I / C

PDM : Définition des règles de masquage et de la politique de masquage

*

A / R

I / C

PDM : Facultatif : mise en œuvre de règles et de dictionnaires personnalisés

*

A / R

I / C

PDM : Création et exécution du plan de masquage*

  • 10 traitements d'anonymisation inclus

  • Abonnement de 12 mois

  • Options : Paquet de 10 traitements d'anonymisation supplémentaires à utiliser pendant la période d'abonnement.

*

A / R

I / C

Vérification des résultats et validation de l'efficacité du masquage

*

I

A / R

*Chaque exécution comprend : la vérification des prérequis, l'exécution du script, le suivi de l'exécution par un expert en sécurité informatique en contact direct avec le client.

GlusterFS

Actions
Plan
cegedim.cloud
Client
Commentaires

Gérer les volumes de stockage

Libre-service

I

A / R

Le client est responsable de la gestion (création, suppression, redimensionnement) des volumes de stockage pour son cluster.

Stockage Objet

Actions
Plan
cegedim.cloud
client
Commentaires

Créer un Object Store

Libre-service

I

A / R

La décision de provisionner / supprimer / modifier un Object Store et les paramètres associés est prise par le client.

Les actions sont effectuées :

  • par les clients par le biais d'ITCare s'ils ont souscrit au plan "Libre service".

  • pour les autres clients, par les équipes Professional Services de cegedim.cloud

Gérer le quota des Object Store

Libre-service

I

A / R

Supprimer un Object Store

Libre-service

I

A / R

Créer un Object User

Libre-service

I

A / R

La décision de créer un utilisateur d'objet et les paramètres associés est prise par le client.

Les actions sont effectuées :

  • par les clients par le biais d'ITCare s'ils ont souscrit au plan "Libre service".

  • pour d'autres clients, par les équipes Professional Services de cegedim.cloud

Gérer les Object Users

Libre-service

I

A / R

La décision de modifier un utilisateur d'objet et les paramètres associés est prise par le client.

Ces actions comprennent le renouvellement de la clé secrète ou le verrouillage de l'utilisateur de l'objet.

Les actions sont effectuées :

  • par les clients par le biais d'ITCare s'ils ont souscrit au plan "Libre service".

  • pour les autres clients, par les équipes Professional Services de cegedim.cloud

Supprimer un Object User

Libre-service

I

A / R

La décision de supprimer un utilisateur d'objet et les paramètres associés est prise par le client.

Les actions sont effectuées :

  • par les clients par le biais d'ITCare s'ils ont souscrit au plan "Libre service".

  • pour les autres clients, par les équipes Professional Services de cegedim.cloud

Créer un Bucket

Libre-service

I

A / R

La création des buckets et des paramètres associés est faite par le client.

Les actions sont effectuées en utilisant l'API S3

Supprimer un Bucket

Libre-service

I

A / R

La suppression des buckets et des paramètres associés est effectuée par le client.

Les actions sont effectuées en utilisant l'API S3

Appliquer une politique de gestion des buckets

Libre-service

I

A / R

La gestion de la politique du panier est effectuée par le client.

Les actions sont effectuées en utilisant l'API S3

Appliquer une politique de gestion du cycle de vie

Libre-service

I

A / R

La gestion du cycle de vie de la configuration est assurée par le client.

Les actions sont effectuées en utilisant l'API S3

Gérer la configuration Object Lock

Libre-service

I

A / R

les configurations Object Lock, appliquées sur les buckets ou les objets, sont réalisés par le client

Les actions sont effectuées en utilisant l'API S3

Disponibilité et Supervision

*

R / A

I

cegedim.cloud s'assure que le service de stockage d'objets est disponible et fonctionnel à tout moment.

Réplication multi-régions

*

R / A

I

La réplication des données entre les régions est gérée par cegedim.cloud qui assure que les RTO et RPO associés sont atteints.

Le client dispose d'informations sur la protection contre les sinistres dans ITCare.

Correctifs de sécurité

*

R / A

I

cegedim.cloud est en charge d'appliquer les correctifs de sécurité.

Cette action est transparente pour les utilisateurs et n'entraîne pas d'interruption de service.

Mises à jour

*

R / A

I

cegedim.cloud est en charge d'appliquer les mises à jour.

Cette action est transparente pour les utilisateurs et n'entraîne pas d'interruption de service.

l'API S3 est susceptible d'être modifiée.

Release NotesMariaDB KnowledgeBase
Supademo

Haute Disponibilité

Ce guide présente l'ensemble des éléments de configuration nécessaires pour améliorer la disponibilité et la continuité de service de vos applications déployées dans un cluster Kubernetes managés par cegedim.cloud.

Il s'agit d'un guide indispensable pour que votre stratégie de reprise après sinistre réponde aux exigences de cegedim.cloud.

Comment configurer les déploiements pour tirer parti des capacités HA ?

Une fois votre cluster Kubernetes configuré pour fonctionner selon la topologie de haute disponibilité (HA), certaines bonnes pratiques de configuration sont nécessaires pour permettre à vos applications :

  • pour fonctionner de façon simultanée sur tous les centres de données de la région.

  • de disposer d'une capacité suffisante dans tous les centres de données en cas de catastrophe sur l'un d'entre eux

Configuration du déploiement

Pour rappel, les nœuds des clusters Kubernetes sont répartis dans 3 zones de disponibilité (AZ) et 2 centres de données :

  • AZ "A" et "B" fonctionnent sur le centre de données primaire.

  • AZ "C" fonctionne sur le centre de données secondaire.

Nombre de répliques

Pour les services sans état qui prennent en charge la mise à l'échelle, la meilleure pratique consiste à faire fonctionner au moins trois pods :

Anti-affinité

Ces 3 pods doivent être correctement configurés pour qu'au moins un pod fonctionne sur chaque zone de disponibilité :

Nous utilisons preferedDuringSchedulingIgnoredDuringExecution et non requiredDuringSchedulingIgnoredDuringExecution car nous voulons que cette exigence soit "souple" : Kubernetes permettra alors de programmer plusieurs pods sur la même AZ si vous exécutez plus de répliques que d'AZ, ou en cas de défaillance d'une zone.

Dans kube 1.20, failure-domain.beta.kubernetes.io/zone sera déprécié, la nouvelle clé de topologie sera topologie.kubernetes.io/zone

Contraintes d'étalement pour les pods

Comment dimensionner votre cluster HA ?

Si vous utilisez la topologie de cluster haute disponibilité, votre objectif est de déployer des applications résilientes en cas de panne du centre de données.

Cette page décrit quelques bonnes pratiques pour déterminer le dimensionnement des nœuds de travail pour chaque zone de disponibilité où vos charges de travail sont exécutées.

Réfléchir au "pire des scénarios".

Pour rappel, Kubernetes Cluster est déployé dans 3 zones de disponibilité, et 2 centres de données. Dans le pire des cas, une seul zone de disponibilité fonctionnera si le centre de données primaire subit un sinistre majeur.

C'est l'hypothèse à prendre en compte pour déterminer le dimensionnement "nominal", que l'on peut appeler "Si le centre de données primaire tombe en panne, de quelle capacité de CPU / RAM ai-je besoin pour continuer à faire fonctionner mon application ?".

Définir la capacité nominale

Comprendre vos besoins

Pour déterminer cette capacité, puis les nœuds de travail déployés dans la zone de disponibilité "C" (combien, et avec quelles ressources), vous aurez besoin de 3 paramètres :

Paramètre
Description

Calculer le dimensionnement

Vous avez alors deux possibilités pour calculer la taille :

  • Au niveau de la granularité "Cluster Level": si vous débutez le processus et que vos charges de travail ne sont pas aussi complexes ou variables, utilisez cette option :

    • Déterminer un MBCO global pour les déploiements croisés

    • Additionner toutes les demandes de ressources des pods pour obtenir un numéro unique.

    • Additionner toutes les ressources utilisées par les pods pour obtenir un nombre unique.

  • Au niveau de la granularité "Pod Level" : Si vous voulez que le dimensionnement soit parfaitement adapté et que vous en avez le temps, prenez le temps de déterminer ces paramètres pour chaque déploiement de votre cluster Kubernetes, car le MBCO peut varier ! Par exemple :

    • Une application web nécessitera un MBCO avec 100 %.

    • Un cache nécessitera un MBCO de 50%.

    • Une fonctionnalité "agréable à avoir" ou un outil interne peut être à 0 %.

Le calcul au "niveau de cluster" n'est pas assez précis pour être absolument certain que le cluster sera d'une taille appropriée. Il suffit de le savoir et d'évaluer si cela vaut la peine de prendre le risque.

Dans tous les cas, ce dimensionnement doit être réévalué régulièrement, en fonction des nouveaux déploiements ou des redimensionnements que vous effectuez dans vos opérations quotidiennes.

Utilisation de la granularité au niveau des clusters

Si vous avez additionné toutes les demandes et l'utilisation, et que vous avez déterminé le MBCO au niveau du "cluster", vous pouvez utiliser cette formule simple pour calculer le dimensionnement requis pour l'AZ "C" dans le centre de données secondaire :

Utilisation de la granularité "Pod

Si vous avez déterminé un MBCO par déploiement, vous devrez calculer votre dimensionnement avec une formule plus complexe :

Ajustez vos descripteurs de déploiement

Une fois que vous avez calculé votre MBCO, il est important de tirer parti des capacités de Kubernetes (QoS, notamment PodDisruptionBudget) pour que votre déploiement suive votre décision.

Ajustez la taille de votre groupe

Utilisez ITCare ou demandez l'aide de notre support pour dimensionner votre cluster.

Comment utiliser la QoS et la disponibilité garantie de Kubernetes ?

Au cours de cette phase, vous devrez hiérarchiser vos actifs et définir les composants qui sont essentiels à la disponibilité de vos services.

connaître l'utilisation de vos ressources, une fois le déploiement effectué, il est bon d'observer la consommation de ressources de votre charge de travail.

vous pouvez accéder à vos métriques via l'interface utilisateur de rancher ou via un client comme .

Qualité du service

Dans Kubernetes il y a 3 classes de QoS :

  • Garantie

  • Burstable

  • BestEffort

Pour les charges de travail critiques, vous pouvez utiliser la QOS "garantie", qui définit simplement les limites de ressources égales aux demandes de ressources :

Pour les charges de travail moins critiques, vous pouvez utiliser le QOS "Burstable", qui définira les limites de ressources et les demandes.

Budget pour la perturbation des pods

Le budget de perturbation des pods vous permettra de configurer votre tolérance aux pannes et le nombre de pannes que votre application peut supporter avant d'être indisponible.

Stateless

Avec une charge de travail sans état, l'objectif est d'avoir un nombre minimum de pods disponibles à tout moment, pour ce faire vous pouvez définir un simple budget de perturbation des pods :

Stateful

Avec une charge de travail à état, le but est d'avoir un nombre maximum de pods indisponibles à tout moment, afin de maintenir le quorum par exemple :

Horizontal Pod Autoscaler

Scénarios de trafic élevé :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    name: myapp
spec:
  replicas: 3
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dep-nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - nginx
              topologyKey: "failure-domain.beta.kubernetes.io/zone"
      containers:
      - name: web-app
        image: nginx

Minimum Business Continuity Objective (MBCO)

Comme le RTO / RPO, le MBCO est un paramètre majeur pour dimensionner votre DRP.

En résumé, il s'agit du pourcentage de capacité de votre application déployée qui est nécessaire pour que votre entreprise soit opérationnelle.

Selon la taille de vos charges de travail lorsque vous les exécutez dans 3 AZ, la performance que vous jugez suffisante peut être de 30%, 50% ou 100%.

Par exemple, si vous avez une application avec 3 répliques de 4GB RAM sur chaque AZ, vous pouvez déterminer le MBCO de manière très différente :

  • 33%

    • il suffit qu'un seul fonctionne pendant la panne, car les performances seront correctes.

    • vous pouvez prendre le risque de ne pas avoir de redondance pendant la période de panne

  • 66%

    • soit, 2 pods minimum sont nécessaires pour avoir une performance OK

    • et/ou vous ne voulez pas prendre le risque d'échouer si le seul pod restant échoue.

  • 100%

    • vous avez absolument besoin de 3 pods minimum pour faire fonctionner le service avec des performances nominales

Le choix vous appartient !

Pods Ressources Demandes

Les pods sont déployés en utilisant les demandes et les limites des ressources Kubernetes.

Comme Kubernetes essaiera de replanifier vos pods en cas de panne, les requêtes sont un paramètre absolument majeur à gérer.

Si l'AZ-C n'a pas assez de ressources pour satisfaire toutes les exigences des déploiements de pods souhaités, Kubernetes ne les déploiera pas, et peut-être que vos applications ne seront pas disponibles !

Pour connaître vos demandes, vous pouvez exécuter cette commande : kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"/"}{.metadata.name}{"-"}{range .spec.containers[*]}{"/"}{.name}{";"}{.resources.requests.cpu}{";"}{.resources.limits.cpu}{";"}{.resources.requests.memory}{";"}{.resources.limits.memory}{"\n"}{end}{"\n"}{end}' | grep -v -e '^$'

Utilisation des ressources

Déterminer les demandes, c'est bien pour être sûr que Kubernetes déploiera autant de pods que vous le souhaitez, mais qu'en est-il de la capacité réelle utilisée par vos pods ? Il faut également en tenir compte pour avoir une idée des ressources "brutes" dont vos applications ont besoin.

Pour le déterminer, vous pouvez exécuter cette commande pour connaître l'utilisation actuelle de votre pod : kubectl top pod

required_capacity = MBCO * max(requests, usage)
required_capacity = sum(pod.MBCO * max(pod.requests, pod.usage))
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
  replicas: 3
  template:
    spec:
      resources:
        limits:
          memory: "200Mi"
          cpu: "700m"
        requests:
          memory: "200Mi"
          cpu: "700m"
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
  replicas: 2
  template:
    spec:
      resources:
        requests:
          memory: "200Mi"
          cpu: "700m"
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: myapp-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: myapp
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: myapp-pdb
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      app: myapp
Lens
Logo
opensearch-build/release-notes/opensearch-release-notes-2.11.1.md at main · opensearch-project/opensearch-buildGitHub
Oracle Linux
Supademo
Release RabbitMQ 3.13.0 · rabbitmq/rabbitmq-serverGitHub
PostgreSQL: PostgreSQL 16 Press Kit
Logo

Produits

Plusieurs produits sont disponibles au catalogue cegedim.cloud.

Ils sont classés par catégories dans les sections ci-dessous afin d'en avoir un aperçu rapide et la possibilité de naviguer directement vers la documentation publique associée.

La grande majorité de ces produits sont disponibles en self-service via ITCare, notre outil de gestion de plateforme cloud.

Pour plus d'informations sur nos offres commerciales, merci de consulter notre site officiel.

Calcul

Les Instances virtuelles managées cegedim.cloud sont toutes, sauf AIX, disponibles à la consommation en libre-service via notre plateforme de gestion de cloud appelée ITCare.

Elles sont hautement personnalisables (stockage, surveillance, sauvegarde, réplication) et redimensionnables (processeurs et mémoire). Elles offrent la meilleure flexibilité lorsqu'un produit n'est pas disponible en mode plateforme en tant que service (PaaS).

Voici les systèmes d'exploitation et distributions supportés par cegedim.cloud :

  • Linux

    • Debian

    • Ubuntu

    • Centos

    • Red Hat Linux Enterprise (RHEL)

  • Windows Server

  • AIX

Les Conteneurs (K8s)sont des clusters Kubernetes dédiés disponibles à la consommation en libre-service dans notre plateforme de gestion de cloud nommé ITCare.

Kubernetes est une plateforme d'orchestration de conteneurs open-source qui automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. Elle est fournie en tant que service géré par cegedim.cloud et bénéficie de l'infrastructure, des opérations et du support que nous fournissons.

Cela inclut des fonctionnalités telles que la mise à l'échelle, la surveillance, les correctifs de sécurité et le déploiement simplifié, ce qui permet aux développeurs et aux équipes de se concentrer sur le développement d'applications et d'éviter les complexités liées à la gestion de l'infrastructure sous-jacente.

Analytique

Matomo est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Selon le dimensionnement choisi pour faire face au nombre de pages suivies par mois, plusieurs composants seront déployés et managés par cegedim.cloud afin de vous permettre de vous focaliser sur l'utilisation et la configuration de Matomo.

Base de données

MariaDB est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Instance autonome
Cluster Galera

Instances

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Stockage (par instance)

10 - 2048 Go

10 - 2048 Go

Version(s) supportée(s)

  • 10.11

  • 10.6

  • 10.11

  • 10.6

Surveillance

✅ Option

✅ Option

Surveillance 24/7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement Multi-AZ

❌

✅

OpenSearch est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Cluster

Instances

3 - 5+

CPU (par instance)

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

Stockage (par instance)

100 - 8000 Go

Version(s) supportée(s)

2.x

Surveillance

✅ Option

Surveillance 24/7

✅ Option

Sauvegarde

✅ Option

Réplication (PRA)

✅ Option

Disponibilité

99,9%

Déploiement Multi-AZ

✅

PostgreSQL est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Instance autonome
Haute disponibilité

Instance

1

2

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Stockage (par instance)

10 - 2048 Go

10 - 2048 Go

Versions supportées

10 à 16

12 à 16

Surveillance

✅ Option

✅ Option

Surveillance 24/7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement Multi-AZ

❌

✅

Redis est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Instance autonome
Cluster

Instance(s)

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Stockage (par instance)

10 - 2048 Go

10 - 2048 Go

Version(s) supportée(s)

  • 7.2

  • 6.2

  • 7.2

  • 6.2

Surveillance

✅ Option

✅ Option

Surveillance 24/7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication (PRA)

✅ Option

✅ Option

TLS/SSL

✅ Option

✅ Option

Disponibilité

99,8%

99.9%

Déploiement Multi-AZ

❌

✅

SQL Server est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Instance autonome
Always On

Instance(s)

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Stockage (par instance)

10 - 4096 Go

10 - 4096 Go

Version(s) supportée(s)

  • 2022

  • 2019

  • 2017

  • 2016

  • 2022

  • 2019

  • 2017

  • 2016

Surveillance

✅ Option

✅ Option

Surveillance 24/7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99.9%

Déploiement Multi-AZ

❌

✅

Message

Apache Kafka est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Cluster

Brokers

3+

Contrôleurs

3

CPU (par broker)

2 - 16 vCPU

RAM (par broker)

4 - 384 Go

Stockage

40 - 1024 Go

Version(s) supportée(s)

3.6.0

Surveillance

✅ Option

Surveillance 24/7

✅ Option

Sauvegarde

✅ Option

Réplication (PRA)

✅ Option

Disponibilité

99.9%

Déploiement Multi-AZ

✅

RabbitMQest un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Instance autonome
Cluster

Instances

1

3

CPU (par instance)

2 - 16 vCPU

2 - 16 vCPU

RAM (par instance)

4 - 384 Go

4 - 384 Go

Stockage (par instance)

10 - 2048 Go

10 - 2048 Go

Version(s) supportée(s)

3.13

3.13

Surveillance

✅ Option

✅ Option

Surveillance 24/7

✅ Option

✅ Option

Sauvegarde

✅ Option

✅ Option

Réplication (PRA)

✅ Option

✅ Option

Disponibilité

99,8%

99,9%

Déploiement multi-AZ

❌

✅

Sécurité

La solution Advanced Vulnerability Assessment est un service d'analyse et de détection de vulnérabilités sur vos ressources exposées sur Internet.

Ce service n'est pas disponible en libre-service et nécessite une prise de contact avec l'équipe commerciale de cegedim.cloud.

Bot Defense est une fonctionnalité de protection contre les bots malicieux ainsi que les dénis de service distribués.

Elle est activable individuellement sur vos répartiteurs de charge directement depuis notre plateforme de gestion de cloud nommé ITCare.

Le service Campagne de Phishing est un service sur mesure qui permet d'évaluer l'efficacité de la sensibilisation à la sécurité du courrier électronique.

Ce service n'est pas disponible en libre-service et nécessite une prise de contact avec l'équipe commerciale de cegedim.cloud.

La solution Data Masking transforme les données sensibles contenues dans les bases de données en données moins sensibles, selon vos propres spécifications et besoins.

Ce service n'est pas disponible en libre-service et nécessite une prise de contact avec l'équipe commerciale de cegedim.cloud.

Surveillance

La solution de supervision avancée basée sur ExtraHop permet d'accéder à des tableaux de bords détaillés sur vos ressources.

Ce service est activable en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Stockage

GlusterFS est un système de fichiers distribué open-source qui permet un stockage évolutif et performant sur plusieurs serveurs. Il regroupe les ressources de stockage de plusieurs machines en un seul pool de stockage, offrant un espace de noms unique pour faciliter la gestion et l'accès.

Grâce à sa capacité à évoluer et à gérer de grandes quantités de données, GlusterFS offre des avantages tels que l'amélioration de la capacité de stockage, la tolérance aux pannes et la haute disponibilité pour diverses applications et charges de travail.

GlusterFS est un PaaS disponible à la consommation en libre-service via notre plateforme de gestion de cloud nommé ITCare.

Cluster

Instance(s)

2

CPU (par instance)

2 vCPU

RAM (par instance)

4 Go

Version(s) supportée(s)

10.2

Surveillance

✅ Option

Surveillance 24/7

✅ Option

Sauvegarde

✅ Option

Réplication (PRA)

✅ Option

Disponibilité

99.9%

Déploiement Multi-AZ

✅

La solution de Stockage Objet compatible S3 (Simple Storage Service) de cegedim.cloud est un service de stockage basé dans le cloud. Elle offre un stockage évolutif, sécurisé et durable pour différents types de données, notamment des fichiers, des images, des vidéos et des sauvegardes.

Les avantages d'une solution de stockage d'objets S3 comprennent une haute disponibilité, un stockage à faible coût, des contrôles d'accès flexibles, une redondance automatique des données et la possibilité de choisir différents fournisseurs et d'éviter la dépendance à l'égard d'un fournisseur.

Fonctionnalités
Disponibilité

Compatibilité S3

✅

Géo-réplication

✅ Option

Quota

✅ Option

Object Lock

✅ Option

Cycle de vie des fichiers

✅ Option

URLs pré-signées

✅ Option

MariaDB FoundationMariaDB.org
OpenSearchOpenSearch
PostgreSQLPostgreSQL
Logo
Logo
Logo
Logo
Logo
Vérification de compatibilité avant une mise à jour de version Kubernetes
Vérification de compatibilité avant une mise à jour de version Kubernetes
Logo
Responsibility assignment matrixWikipedia

K8s - Didacticiels

Débuter

Se connecter à l'UI Rancher

cegedim.cloud utilise comme plateforme de gestion de .

Rancher supporte la même authentification SSO que ITCare.

Instances Rancher

Selon la localisation de votre cluster, Rancher est accessible avec les URL suivantes :

Region

Dans ITCare, vous pouvez trouver l'URL de votre cluster dans la page de détail de celui-ci :

Se connecter à Rancher

Rancher demandera une authentification lors de la première connexion : cliquez simplement sur "Login with Keycloak".

Vous serez ensuite redirigé vers la mire de connexion :

Une fois connecté, vous devriez avoir un écran listant tous les clusters auxquels vous avez accès :

Si l'interface se coince après l'authentification, merci d'essayer ces liens :

Si lors de la première connexion vous ne voyez pas votre cluster dans la liste des clusters, vous pouvez vous déconnecter et vous reconnecter.

Gérer vos préférences

Vous pouvez gérer vos préférences d'interface utilisateur (thème sombre, nombre de lignes par tableau...) en configurant vos préférences utilisateur. Veuillez vous référer ici à la documentation complète ci-dessous.

Configurer kubectl

Afin de se connecter au cluster en utilisant la CLI, vous avez deux options :

  • par kubectl normal à distance

  • en utilisant rancher online kubectl.

Les deux sont disponibles en accédant à la page "cluster" dans Rancher.

Il y a deux façons de le faire :

  • Cliquez sur le nom du cluster dans la liste des clusters.

  • Cliquez sur le nom du cluster dans le menu supérieur gauche.

En utilisant le fichier de configuration kubectl

Une fois sur la page d'accueil du cluster, vous pouvez télécharger le "KubeConfig File" :

Ou bien juste copier le contenu du "Kubeconfig File" :

Si vous ne disposez pas dekubectl,nous vous conseillons vivement d'installer kubectlsur votre poste d'administration en suivant le lien ci-dessous.

Cette configuration peut être mélangée avec d'autres configurations kubectl.

L'authentification peut être partagée avec tout cluster géré par la même instance de rancher.

Utilisation du cli web

Une fois sur la page d'accueil du cluster, vous pouvez utiliser le web CLI en cliquant sur l'icône ci-dessous:

Cela devrait lancer un shell web comme celui-ci :

Ce shell est temporaire, tout changement effectué à l'intérieur sera supprimé une fois la fenêtre fermée.

Cette session peut être déconnectée si aucune entrée/sortie n'est observée.

Obtenir un jeton API

La gestion des jetons est disponible juste en dessous de l'avatar de l'utilisateur :

Portée des jetons

Il existe deux champs d'application :

  • no-scope : global scope : utilisé pour interagir avec l'API globale de Rancher

  • cluster-scoped : jeton dédié à l'accès à un cluster spécifique

Un jeton à portée de cluster est nécessaire pour utiliser helm 3. Cela signifie que vous avez besoin d'un jeton par cluster dans vos pipelines CI/CD

Cycle de vie des jetons

Les jetons peuvent avoir des cycles de vie différents :

  • Une durée de vie illimitée, il suivra le cycle de vie du compte qui lui est rattaché

  • Une durée limitée

Gestion des nœuds

Redimensionner un cluster

Vous pouvez utiliser ITCare pour ajouter ou supprimer des nœuds à votre cluster.

Gérer les Namespaces

Comprendre les projets - Un concept de Rancher

Rancher gère les espaces de noms via project, qui est un concept n'existant spécifiquement que dans les clusters Kubernetes gérés par Rancher.

Le projet n'est pas une ressource native de Kubernetes. Par défaut, un cluster Kubernetes est provisionné avec 2 projets :

  • System : contenant les espaces de noms des composants principaux comme : kube-system, etc.

  • Default : contenant l'espace de noms "par défaut".

Les utilisateurs sont libres de créer d'autres projets si nécessaire. En se basant sur le niveau du projet, Rancher offre une automatisation intégrée comme : l'octroi de droits d'accès, l'isolation du réseau, etc.

Les utilisateurs sont fortement encouragés à classer les espaces de noms dans un projet.

Comment créer correctement un espace de noms

  • Passer à la vue projet

  • Créer un nouvel espace de noms à partir de la vue du projet

  • Insérez un nom unique et remplissez les autres champs si nécessaire, puis cliquez sur "Créer"

Si vous créez un espace de noms avec le CLI de kubernetes, par exemple kubectl, l'espace de noms créé sera déplacé dans le projet parent de l'espace de noms "default" (qui est, par défaut, le projet nommé Default).

Gestion des droits

cegedim.cloud recommande et supporte officiellement la gestion des droits d'accès via les groupes AD.

Seuls les groupes AD commençant par G_EMEA_* et G_K8_* sont connus par Rancher.

Par défaut, lors de la création d'un cluster :

  • Le rôle d'utilisateur standard est donné au groupe G_K8_<NOM_DU_CLUSTER>_USERS qui contient les power users du Cloud associé.

  • Le rôle d'administrateur est attribué au groupe G_K8_<NOM_DU_CLUSTER>_ADMINS qui est vide par défaut et peut être complété par des utilisateurs compétents et certifiés via un ticket ITCare vers l'équipe de support AD.

Par exemple, l’utilisateur [email protected] a besoin d’accès standard au cluster test-preprod, il doit faire une demande pour l'ajouter dans le groupe AD nommé G_K8_TEST_PREPROD_USERS.

Lorsque les utilisateurs créent un nouveau projet, en tant que propriétaire par défaut, ils sont libres de lier n'importe quel rôle à n'importe quel groupe AD dans le cadre de ce projet.

Si les rôles prédéfinis de Rancher ne peuvent pas répondre à vos besoins, veuillez contacter les administrateurs de votre cluster pour configurer un rolebinding personnalisé ou un clusterrolebinding.

Gérer les droits

Gestion des droits au niveau du projet

Dans cette partie, nous supposerons que les droits sont donnés à un groupe et non à un utilisateur.

Pour gérer les droits sur un projet, il existe deux moyens : L'interface utilisateur ou l'API.

L'un des rôles les plus élevés que vous pouvez attribuer est "Project Admin".

Utilisation de l'interface utilisateur

Éditez le projet dont vous êtes propriétaire ou sur lequel vous avez suffisamment de droits accordé par le propriétaire.

Sélectionnez le groupe et le rôle dans la formulaire.

A noter que seuls les groupes préfixés par G_EMEA_* and G_K8_* sont reconnus par Rancher.

Utilisation de l'API

En utilisant l'API, c'est assez simple. Vous aurez d'abord besoin de quelques paramètres :

  • Obtenir l'ID du projet

Pour obtenir l'ID du projet, vous pouvez utiliser l'explorateur d'API en utilisant simplement le bouton "View in API".

  • Obtenir l'ID du rôle

Pour obtenir l'ID du rôle, il se peut que vous ne soyez pas autorisé à l'afficher via l'interface utilisateur, mais vous l'obtiendrez via cette requête API :

  • Donner des autorisations

En utilisant votre clé API, vous pouvez faire une demande POST pour créer le lien de rôle :

Vérification de compatibilité avant une mise à jour de version Kubernetes

Contexte

Les version api de ressources Kubernetes peuvent être obsolètes, voire supprimés lors de la mise à jour de version Kubernetes.

Il y a une risque de cassure si vous avez des ressources avec une version api supprimé dans la nouvelle version de Kubernetes.

Pour éviter cela, une des solutions est d'utiliser l'outil "kubent" pour vérifier la compatibilité .

Kubent détecte les objets obsolètes du cluster Kubernetes. Vous devez migrer/modifier les ressources identifiés avant la mise à jour de version Kubernetes.

Démarrage rapide

Pour installer kubent :

Pour identifier les objets obsolètes qui vont être supprimés dans la prochain version Kubernetes :

Un exemple de l'output :

Dans ce tutoriel, si votre cluster est planifié pour une mise à jour vers version Kubernetes 1.22, vous devez migrer votre resource ingress nommé "toto" de version api networking.k8s.io/v1beta1 vers networking.k8s.io/v1 avant la mise à jour.

Cette migration peut impliquer une modification des champs supplémentaires de la ressource. Veillez consulter la documentation officielle :

Kubent pourrait échouer de reporter certaine information, e.g. espace de nom de l'ingress, vous pouvez remonter l'issue à l'éditeur :

Configurer le transfert et la centralisation des logs vers un cluster OpenSearch

Contexte

Dans cet exemple, nous allons configurer le transfert de logs d'un cluster Kubernetes vers un cluster OpenSearch.

  • Le cluster OpenSearch est dans cet exemple my-cluster.es.cegedim.cloud

  • Le nom de la sortie du cluster est my-cluster-output.

Configuration du logging Banzai

Dans Rancher, sous Logging > ClusterOutput et Logging > Output, modifiez la configuration YAML et changez ceci :

ClusterFlow/ClusterOutput présentent de nombreux problèmes lors de l'envoi de logs à OpenSearch / ELK cluster : Conflit de type de valeur attendue avec la même clé (par exemple, une valeur changée de "long" à "string" sera rejetée par OpenSearch / ELK Cluster).

Cela peut se produire isi vous avez activé Dynatrace.

Voici des exemples complets de la spécification ClusterOutput/Output pour ElasticSearch et OpenSearch :

Exemple pour OpenSearch
Exemple pour ELK

Recommandations en matière de migration

Il y a deux options :

  • Migration vers Flow/ClusterOutput : poussera tous les logs des espaces de noms vers le même index OpenSearch.

  • Migration vers Flow/Output : poussera les logs des espaces de noms séparés vers des index OpenSearch dédiés.

La recommandation est de migrer vers "Flow/Output", et même d'avoir un index OpenSearch dédié pour les applications très importantes.

Migration de ClusterFlow/ClusterOutput vers Flow/ClusterOutput

Créer un fichier avec tous les espaces de noms :

Créer des fichiers K8s YAML pour configurer les logs sur tous les espaces de noms :

Appliquer la configuration :

Migration de ClusterFlow/ClusterOutput vers Flow/Output

Créer un fichier avec tous les espaces de noms :

Créer des fichiers K8S YAML :

Appliquer la configuration :

Déboguer si la perte de logs persiste

Aucun tampon important ne devrait se produire si tout se passe bien. Vérifions le

Vérifions les 5 dernières lignes du journal de Fluentd :

Jetez un coup d'œil dans /fluentd/log/out à l'intérieur du pod fluentd, mais la plupart du temps, ce qui suit vous aidera :

Il est facile d'identifier le pod à l'origine du problème :

Il faut comprendre que l'erreur n'est pas dans Kubernetes, c'est le conteneur qui produit des logs incohérents au format json. Ensuite, OpenSearch rejette les journaux envoyés. Banzai réessayera et tôt ou tard, le débordement arrivera.

Sources :

Une solution à court terme peut être choisie ci-dessous :

  • Retirer le pod du flux (exclusion du pod) ou désactiver l'ensemble du flux de l'espace de noms concerné.

  • Nettoyer l'index lié dans le serveur ES

Solution à long terme :

  • Adapter l'application pour produire un journal plus cohérent

  • Voir s'il est possible de configurer ES pour qu'il ignore gentiment, mais ne rejette pas, le paquet entier envoyé par Banzai.

EB (Boulogne-Billancourt)

https://k8s-eb.cegedim.cloud

ET (Toulouse-Labège)

https://k8s-et.cegedim.cloud

curl --request GET \
 --url https://k8s-eb.cegedim.cloud/v3/projects \
 --header 'authorization: Bearer token-tttt:token-of-doom'
curl --request GET \
--url https://rancher-staging.cegedim.cloud/v3/roleTemplates?name=Project%20Admin\
--header 'authorization: Bearer token-tttt:token-of-doom'
curl --request POST \
--url https://k8s-eb.cegedim.cloud/v3/projectRoleTemplateBindings \
--header 'authorization: Bearer token-tttt:token-of-doom' \
--header 'content-type: application/json' \
--data '{
"projectId": "c-6t7f4:p-d43l6",
"namespaceId":"",
"groupPrincipalId":"keycloakoidc_group_group://G_EMEA_DUPER_GROUP",
"roleTemplateId": "project-owner"
}'
sh -c "$(curl -sSL 'https://git.io/install-kubent')"
kubent [--context my-cluster]
...
__________________________________________________________________________________________
>>> Deprecated APIs removed in 1.22 <<<
------------------------------------------------------------------------------------------
KIND                       NAMESPACE      NAME                                   API_VERSION                         REPLACE_WITH (SINCE)
Ingress                    <undefined>     toto                                 networking.k8s.io/v1beta1           networking.k8s.io/v1 (1.19.0)
...
    port: 443
    log_es_400_reason: true # useful to debug when no log is received in Opne Search / ELK
    suppress_type_name: true
    # Add this if the target is an Open Search cluster
    default_elasticsearch_version: "7"
    verify_es_version_at_startup: false
spec:
  elasticsearch:
    buffer:
      chunk_limit_size: 256m
      compress: gzip
      flush_at_shutdown: true
      flush_interval: 60s
      flush_mode: interval
      flush_thread_count: 2
      queue_limit_length: 96
      retry_forever: true
      type: file
    flatten_hashes: true
    host: {{ ELK URL }}
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: {{ prefix }}
    password:
      valueFrom:
        secretKeyRef:
          key: password
          name: {{ ELK credentials }}
    port: 443
    reconnect_on_error: true
    reload_connections: false
    reload_on_failure: true
    request_timeout: 30s
    scheme: https
    ssl_verify: false
    suppress_type_name: true
    user: {{ username }}
    default_elasticsearch_version: "7"
    verify_es_version_at_startup: false
spec:
  elasticsearch:
    buffer:
      chunk_limit_size: 256m
      compress: gzip
      flush_at_shutdown: true
      flush_interval: 60s
      flush_mode: interval
      flush_thread_count: 2
      queue_limit_length: 96
      retry_forever: true
      type: file
    flatten_hashes: true
    host: {{ ELK URL }}
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: {{ prefix }}
    password:
      valueFrom:
        secretKeyRef:
          key: password
          name: {{ ELK credentials }}
    port: 443
    reconnect_on_error: true
    reload_connections: false
    reload_on_failure: true
    request_timeout: 30s
    scheme: https
    ssl_verify: false
    suppress_type_name: true
    user: {{ username }}
Define namespaces
mkdir -p log-config
kubectl get ns --no-headers |grep -v kube-system|\
grep -v cattle|\
grep -v dynatrace|\
grep -v ceg-it|\
grep -v ingress-nginx|awk '{print $1}' > namespaces.txt
# review namespaces.txtD
Create flow resources
while read LOG_NS
do
  cat <<EOF>> log-config/"configuration-"$LOG_NS".yaml"
apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
  name: all-namespace-logs
  namespace: $LOG_NS
spec:
  filters:
  - dedot:
      de_dot_nested: true
      de_dot_separator: '-'
  globalOutputRefs:
  - my-cluster-output
EOF
done < namespaces.txt
# review content of folder log-config
kubectl apply -f log-config
mkdir -p log-config
kubectl get ns --no-headers |grep -v kube-system|\
grep -v cattle|\
grep -v dynatrace|\
grep -v ceg-it|\
grep -v ingress-nginx|awk '{print $1}' > namespaces.txt
# review namespace.txt
while read LOG_NS
do
  kubectl -n cattle-logging-system get secret {{ ELK credentials }} -o json \
 | jq 'del(.metadata["namespace","creationTimestamp","resourceVersion","selfLink","uid"])' \
 | kubectl apply -n $LOG_NS -f -
  cat <<EOF>> log-config/"configuration-"$LOG_NS".yaml"
apiVersion: logging.banzaicloud.io/v1beta1
kind: Output
metadata:
  name: all-ns
  namespace: $LOG_NS
spec:
  elasticsearch:
    buffer:
      chunk_limit_size: 256m
      compress: gzip
      flush_at_shutdown: true
      flush_interval: 60s
      flush_mode: interval
      flush_thread_count: 2
      queue_limit_length: 96
      retry_forever: true
      type: file
    flatten_hashes: true
    host: my-cluster.es.cegedim.cloud
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: {{ prefix }}
    password:
      valueFrom:
        secretKeyRef:
          key: password
          name: {{ ELK credentials }}
    port: 443
    reconnect_on_error: true
    reload_connections: false
    reload_on_failure: true
    request_timeout: 30s
    scheme: https
    ssl_verify: false
    suppress_type_name: true
    user: {{ username }}
---
apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
  name: all-namespace-logs
  namespace: $LOG_NS
spec:
  filters:
  - dedot:
      de_dot_nested: true
      de_dot_separator: '-'
  globalOutputRefs: []
  localOutputRefs:
  - all-ns
EOF
done < namespaces.txt
# review content of folder log-config
kubectl apply -f log-config
kubectl -n cattle-logging-system get po -l app.kubernetes.io/name=fluentd -o name|awk '{print $1}'|xargs -I {} sh -c "kubectl -n cattle-logging-system exec {} -c fluentd -- du -hs /buffers"
kubectl -n cattle-logging-system get po -l app.kubernetes.io/name=fluentd -o name|awk '{print $1}'|xargs -I {} sh -c "kubectl -n cattle-logging-system exec {} -c fluentd -- tail -5  /fluentd/log/out"
kubectl -n cattle-logging-system get po -l app.kubernetes.io/component=fluentd --no-headers|awk '{print $1}'|xargs -I {} sh -c "kubectl -n cattle-logging-system exec -it  {} -c fluentd -- cat /fluentd/log/out|grep 'Rejected'"
2023-01-20 10:53:38 +0000 [warn]: #0 send an error event to @ERROR: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch [error type]: mapper_parsing_exception [reason]: 'failed to parse field [stack_trace] of type [text] in document with id 'L7fQzoUBIs35W4-JCcJQ'. Preview of field's value: '{source=    at reconcileChildFibers (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:14348:23)}''" location=nil tag="kubernetes.var.log.containers.log-service-deployment-57747558f8-52jgx_my-application_log-service-6c560e016f7241b3231b96ed358390d8a2170b175833a695705c952183dcda5e.log" time=2023-01-20 10:52:33.431659917 +0000
kubectl get po -A |grep log-service-deployment-57747558f8
                  my-application                         log-service-deployment-57747558f8-52jgx                          1/1     Running                 0          4d20h
Rancher
Kubernetes
https://k8s-et.cegedim.cloud/dashboard/home
https://k8s-et.cegedim.cloud/dashboard/home
https://kubernetes.io/docs/tasks/tools/install-kubectl/
https://github.com/doitintl/kube-no-trouble/issues
Horizontal Pod AutoscalingKubernetes
Configure Quality of Service for PodsKubernetes
Pod Topology Spread ConstraintsKubernetes
https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling/895-pod-topology-spread#motivation
Logo
Logo
Logo
Logo
Produits - Cegedim CloudCegedim Cloud
Messaging that just works — RabbitMQ
HomepageGluster
Redis
Apache KafkaApache Kafka
Logo
Specifying a Disruption Budget for your ApplicationKubernetes
Logo
Logo
Logo
Logo
Logo
Logo
Logo
https://rancher.com/docs/rancher/v2.x/en/user-settings/preferences/rancher.com
Logo
Elasticsearch rejecting records because of parsing errorDiscuss the Elastic Stack
Logo
ignore_malformed | Elasticsearch Guide [7.0] | ElasticElastic
GitHub - doitintl/kube-no-trouble: Easily check your clusters for use of deprecated APIsGitHub
Kubernetes DocumentationKubernetes
Cluster and Project Roles | Rancher
Logo
Logo
Logo
Using RBAC AuthorizationKubernetes
Logo
Logo
Logo
Logo
Logo
Logo