enterprise_ai.manager.operations
Source : sdks/python/src/enterprise_ai/manager/_generated.py. Retour à l'index de la référence du SDK Python.
Cette page est générée par tools/docs/gen_sdk_reference.py depuis les sources du SDK et les dossiers de textes OpenAPI. Ne la modifiez pas à la main : changez la source et régénérez.
Classe AgentTemplatesApi
Gabarits d'agents. Le registre des gabarits d'agents (Service Templates des produits Navin, par exemple l'Agent RAG Navin Enterprise) : chaque gabarit avec son nom, son éditeur, sa version, son statut et le service du catalogue qui l'installe. Un gabarit n'est published que si ce service existe dans le catalogue et que le gabarit a été publié, par la version livrée (statut published) ou sur ce Manager par un administrateur (POST .../publish, la validation du client : la définition de service rejoint le catalogue de ce Manager) ; sinon reason indique pourquoi il ne peut pas être déployé et publishable s'il peut être publié ici. La lecture est ouverte à tout utilisateur connecté, comme le catalogue de la pile ; publier et retirer demandent agent_templates:publish. Opérations de ce groupe de l'API du Navin Manager.
Resource
AgentTemplatesApi.agent_template
agent_template(template_id: str) -> Any
Lire un gabarit d'agent. Un gabarit d'agent par son identifiant : nom et description (fr et en), éditeur, version, statut, service du catalogue, chemins de la documentation et des sources, composants, published, reason, publication, publishable et publish_blocker. Tout utilisateur connecté ; 404 pour un gabarit inconnu.
Route : /api/v1/agent-templates/{template_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
template_id | str | oui | Identifiant du gabarit d'agent, égal au nom de son fichier descripteur. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un gabarit d'agent ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AgentTemplatesApi.agent_templates
agent_templates() -> Any
Lister les gabarits d'agents. Chaque gabarit d'agent du registre, trié par identifiant, avec published calculé d'après le catalogue chargé et les publications de ce Manager, reason (fr et en) quand il ne peut pas être déployé, publication (version, auteur, date) quand il a été publié ici, publishable et publish_blocker. Renvoie items et count. Tout utilisateur connecté.
Route : /api/v1/agent-templates (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les gabarits d'agents ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AgentTemplatesApi.publish_agent_template
publish_agent_template(template_id: str) -> Any
Valider et publier un gabarit d'agent. La validation du client : la définition de service et les gabarits de l'agent sont vérifiés par le chargeur du catalogue avec tout le catalogue (sur une copie de travail, rien n'est écrit si une vérification échoue), puis copiés sous published_templates_dir ; le service rejoint le catalogue de ce Manager, le gabarit répond published: true et son bouton Déployer ouvre l'assistant d'installation. Publier de nouveau remplace les fichiers par les sources actuelles. Renvoie le gabarit. Permission agent_templates:publish ; audité en agent_template.publish. Erreurs : 404 agent_template_unknown, 409 agent_template_not_publishable (prévu ou en développement), 409 agent_template_sources_missing, 409 agent_template_already_published (service livré avec le catalogue), 422 agent_template_invalid (les problèmes trouvés sont dans details.problems).
Route : /api/v1/agent-templates/{template_id}/publish (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
template_id | str | oui | Identifiant du gabarit d'agent. |
Retour : Any. Réponse JSON décodée de l'opération « Valider et publier un gabarit d'agent ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AgentTemplatesApi.withdraw_agent_template
withdraw_agent_template(template_id: str) -> Any
Retirer la publication d'un gabarit d'agent. Supprime la définition de service et les gabarits publiés sur ce Manager ainsi que l'enregistrement de publication : le service quitte le catalogue et le gabarit attend de nouveau sa validation. Refusé tant qu'une instance du service est installée dans un cluster (409 agent_template_in_use, les instances sont dans details.instances). Renvoie le gabarit. Permission agent_templates:publish ; audité en agent_template.unpublish. Erreurs : 404 agent_template_unknown, 404 agent_template_not_published.
Route : /api/v1/agent-templates/{template_id}/publication (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
template_id | str | oui | Identifiant du gabarit d'agent. |
Retour : Any. Réponse JSON décodée de l'opération « Retirer la publication d'un gabarit d'agent ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe AlertsApi
Alertes et notifications. Alertes levées par le Manager à partir de ses définitions d'alertes (machine hors ligne, disque plein, service en mauvaise santé, certificat proche de l'expiration...), et cibles de notification qui les reçoivent. Opérations de ce groupe de l'API du Navin Manager.
Resource
AlertsApi.ack_alert
ack_alert(alert_id: str, body: Any = None) -> Any
Acquitter une alerte. Enregistre qui a acquitté l'alerte, quand, et la note ; l'alerte reste ouverte jusqu'à la disparition de sa condition. Renvoie l'alerte. Permission alerts:manage sur son cluster. Audité en alert.ack.
Route : /api/v1/alerts/{alert_id}/ack (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
alert_id | str | oui | Identifiant de l'alerte. | |
body | Any | None | non | Note facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Acquitter une alerte ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.create_target
create_target(body: Any = None) -> Any
Ajouter une cible de notification. Crée une cible et la renvoie (201). Une cible e-mail exige config.to, une cible webhook config.url (http:// ou https://) ; une cible syslog utilise le serveur syslog des réglages. Permission alerts:manage ; 422 notification_target_invalid. Audité en notification_target.create.
Route : /api/v1/notification-targets (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Nom, type, configuration et sévérité minimale de la cible. |
Retour : Any. Réponse JSON décodée de l'opération « Ajouter une cible de notification ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.delete_target
delete_target(target_id: str) -> Any
Supprimer une cible de notification. Supprime la cible. Répond 204. Permission alerts:manage ; 404 notification_target_not_found. Audité en notification_target.delete.
Route : /api/v1/notification-targets/{target_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
target_id | str | oui | Identifiant de la cible de notification. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une cible de notification ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.get_alert
get_alert(alert_id: str) -> Any
Lire une alerte. Renvoie une alerte avec l'historique history de ses changements d'état (les 200 derniers : ts, from_state, to_state, value, text). Permission alerts:read sur son cluster ; 404 alert_not_found.
Route : /api/v1/alerts/{alert_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
alert_id | str | oui | Identifiant de l'alerte. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une alerte ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.list_alerts
list_alerts(cluster_id: str, state: string | null = None, severity: string | null = None, include_resolved: boolean = None) -> Any
Lister les alertes d'un cluster. Alertes du cluster, de la dernière modifiée à la plus ancienne (500 au plus) : definition, label, fingerprint, machine, service, composant, state, text, value, première et dernière observation, acquittement et résolution. Alertes ouvertes uniquement, sauf avec include_resolved. Permission alerts:read.
Route : /api/v1/clusters/{cluster_id}/alerts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
state | string | null | None | non | Uniquement les alertes dans cet état : warning, critical, unknown ou ok. |
severity | string | null | None | non | Uniquement les alertes de cette sévérité (warning ou critical) ; comparée à l'état de l'alerte. |
include_resolved | boolean | None | non | Renvoyer aussi les alertes résolues. Faux par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les alertes d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.list_definitions
list_definitions() -> Any
Lister les définitions d'alertes. Chaque définition avec son name, scope, kind, label, description, enabled, interval_s, ses seuils warning et critical et ses params. Permission alerts:read.
Route : /api/v1/alert-definitions (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les définitions d'alertes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.list_targets
list_targets() -> Any
Lister les cibles de notification. Chaque cible avec son kind, sa config, min_severity, enabled et la présence d'un secret HMAC (jamais sa valeur). Permission alerts:manage.
Route : /api/v1/notification-targets (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les cibles de notification ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.patch_definition
patch_definition(definition_id: str, body: Any = None) -> Any
Ajuster une définition d'alerte. Active ou désactive une définition et modifie ses seuils ou son intervalle d'évaluation ; un champ omis est conservé. Renvoie la définition. Permission alerts:manage ; 404 alert_definition_not_found. Audité en alert_definition.update.
Route : /api/v1/alert-definitions/{definition_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
definition_id | str | oui | Identifiant de la définition d'alerte. | |
body | Any | None | non | Champs de la définition à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Ajuster une définition d'alerte ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.patch_target
patch_target(target_id: str, body: Any = None) -> Any
Modifier une cible de notification. Modifie les champs fournis et renvoie la cible. Permission alerts:manage. Erreurs : 404 notification_target_not_found, 422 notification_target_invalid. Audité en notification_target.update.
Route : /api/v1/notification-targets/{target_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
target_id | str | oui | Identifiant de la cible de notification. | |
body | Any | None | non | Champs de la cible à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une cible de notification ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AlertsApi.test_target
test_target(target_id: str) -> Any
Envoyer une notification de test. Envoie immédiatement un message de test (état warning, empreinte test) à la cible et renvoie {"ok": true}. Permission alerts:manage. Erreurs : 404 notification_target_not_found, 502 notification_failed (la cible a refusé ou est injoignable). Audité en notification_target.test.
Route : /api/v1/notification-targets/{target_id}/test (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
target_id | str | oui | Identifiant de la cible de notification. |
Retour : Any. Réponse JSON décodée de l'opération « Envoyer une notification de test ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe AuditApi
Audit. Le journal d'audit du Manager : chaque changement, connexion, refus et lecture sensible, avec l'acteur (utilisateur, jeton d'API, agent ou système), l'action (par exemple service.install), la cible, le cluster, le résultat (success, failure, denied), l'adresse du client et des détails. Les événements sont chaînés : chacun porte l'empreinte du précédent, si bien qu'un événement modifié ou supprimé rompt la chaîne. Opérations de ce groupe de l'API du Navin Manager.
Resource
AuditApi.export
export(format: string = None, from_: string | null = None, to: string | null = None) -> Any
Exporter le journal d'audit. Diffuse tous les événements de la période dans l'ordre des séquences sous forme de fichier à télécharger : audit.ndjson (un objet JSON par ligne) ou audit.csv (les cellules qu'un tableur lirait comme une formule sont préfixées d'une apostrophe). Permission audit:read ; 422 export_format_invalid pour un autre format. Audité en audit.export.
Route : /api/v1/audit/export (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
format | string | None | non | Format du fichier : ndjson (par défaut) ou csv. |
from_ | string | null | None | non | Événements à partir de cette date et heure (ISO 8601), incluse. Omettez-la pour partir du premier événement. |
to | string | null | None | non | Événements antérieurs à cette date et heure (ISO 8601), exclue. Omettez-la pour exporter jusqu'à maintenant. |
Retour : Any. Réponse JSON décodée de l'opération « Exporter le journal d'audit ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuditApi.list_audit
list_audit(actor: string | null = None, action: string | null = None, target_type: string | null = None, cluster_id: string | null = None, outcome: "success" | "failure" | "denied" | null = None, from_: string | null = None, to: string | null = None, limit: int | None = None, cursor: str | None = None) -> Any
Rechercher dans le journal d'audit. Événements qui correspondent à tous les filtres donnés, du plus récent au plus ancien : seq, id, ts, actor_type, actor_id, actor_name, action, target_type, target_id, cluster_id, outcome, ip, details, prev_hash, hash. Paginé avec limit et cursor. Permission audit:read.
Route : /api/v1/audit (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
actor | string | null | None | non | Nom ou identifiant de l'acteur, correspondance exacte. |
action | string | null | None | non | Action, correspondance exacte (auth.login) ou une famille terminée par .* (service.*). |
target_type | string | null | None | non | Type de la cible, par exemple user, service, cluster ou operation. |
cluster_id | string | null | None | non | Uniquement les événements de ce cluster. |
outcome | "success" | "failure" | "denied" | null | None | non | Résultat : success, failure ou denied. |
from_ | string | null | None | non | Événements à partir de cette date et heure (ISO 8601), incluse. |
to | string | null | None | non | Événements antérieurs à cette date et heure (ISO 8601), exclue. |
limit | int | None | None | non | Nombre maximal d'événements dans la page, de 1 à 500. 50 par défaut. |
cursor | str | None | None | non | Le next_cursor de la page précédente (un numéro de séquence). Omettez-le pour la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Rechercher dans le journal d'audit ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuditApi.verify
verify() -> Any
Vérifier la chaîne d'empreintes du journal d'audit. Recalcule l'empreinte de chaque événement et contrôle le lien avec le précédent. Renvoie valid, le nombre d'événements contrôlés checked et first_broken_seq (nul quand la chaîne est intacte). Permission audit:read. Audité en audit.verify (résultat failure quand la chaîne est rompue).
Route : /api/v1/audit/verify (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Vérifier la chaîne d'empreintes du journal d'audit ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe AuthApi
Authentification. Connexion à la console et déconnexion : fournisseurs d'identité, configuration initiale, connexion locale et LDAP, second facteur (TOTP), changement de mot de passe, session et connexion OIDC. Opérations de ce groupe de l'API du Navin Manager.
Resource
AuthApi.providers
providers() -> Any
Lister les méthodes de connexion. Point d'accès public utilisé par la page de connexion. Renvoie local (toujours vrai), ldap (enabled, name), oidc (les fournisseurs activés, id et name), setup_required (vrai tant qu'aucun utilisateur n'existe : appelez POST /auth/setup) et mfa (le second facteur TOTP est-il activé sur ce Manager).
Route : /api/v1/auth/providers (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les méthodes de connexion ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthApi.session
session() -> Any
Lire la session courante. Renvoie l'utilisateur authentifié (user), ses permissions effectives (permissions.global et permissions.clusters par identifiant de cluster), le csrf_token de la session (nul pour un jeton d'API) et expires_at (de la session ou du jeton). Tout appelant authentifié ; 401 sinon.
Route : /api/v1/auth/session (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la session courante ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe AuthConfigApi
Fournisseurs d'identité et politique de sécurité. Configuration de la connexion des utilisateurs : l'annuaire LDAP, les fournisseurs OIDC et la politique de sécurité (mots de passe, verrouillage, délais de session, rôles qui exigent la MFA). Opérations de ce groupe de l'API du Navin Manager.
Resource
AuthConfigApi.create_oidc
create_oidc(body: Any = None) -> Any
Ajouter un fournisseur OIDC. Crée un fournisseur et le renvoie (201). Les portées doivent comprendre openid. Permission auth:manage. Erreurs : 409 provider_name_taken, 422 oidc_config_invalid, 422 role_invalid. Audité.
Route : /api/v1/auth-config/oidc (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Réglages du fournisseur. |
Retour : Any. Réponse JSON décodée de l'opération « Ajouter un fournisseur OIDC ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.delete_oidc
delete_oidc(provider_id: str) -> Any
Supprimer un fournisseur OIDC. Supprime le fournisseur ; ses utilisateurs ne peuvent plus se connecter par son intermédiaire. Répond 204. Permission auth:manage ; 404 oidc_provider_not_found. Audité en auth_config.oidc_delete.
Route : /api/v1/auth-config/oidc/{provider_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
provider_id | str | oui | Identifiant du fournisseur OIDC. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un fournisseur OIDC ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.get_ldap
get_ldap() -> Any
Lire la configuration LDAP. Renvoie les réglages LDAP avec leurs valeurs par défaut, le mot de passe de liaison sous la forme {"secret": true, "set": ...} et les correspondances de rôles. Permission auth:manage.
Route : /api/v1/auth-config/ldap (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la configuration LDAP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.get_oidc
get_oidc(provider_id: str) -> Any
Lire un fournisseur OIDC. Renvoie un fournisseur avec ses réglages et ses correspondances. Permission auth:manage ; 404 oidc_provider_not_found.
Route : /api/v1/auth-config/oidc/{provider_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
provider_id | str | oui | Identifiant du fournisseur OIDC. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un fournisseur OIDC ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.get_policy
get_policy() -> Any
Lire la politique de sécurité. Renvoie la politique courante, valeurs par défaut comprises : longueur minimale de mot de passe 12, historique 5, pas d'âge maximal, verrouillage après 5 échecs pendant 15 minutes, sessions de 30 minutes d'inactivité et 12 heures au plus, MFA exigée pour admin et security_admin. Permission auth:manage.
Route : /api/v1/auth-config/policy (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la politique de sécurité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.list_oidc
list_oidc() -> Any
Lister les fournisseurs OIDC. Tous les fournisseurs OIDC, activés ou non, avec leurs réglages et leurs correspondances ; les secrets clients ne sont jamais renvoyés. Permission auth:manage.
Route : /api/v1/auth-config/oidc (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les fournisseurs OIDC ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.put_ldap
put_ldap(body: Any = None) -> Any
Enregistrer la configuration LDAP. Remplace les réglages LDAP et les correspondances de rôles et les renvoie. Chaque URL doit être protégée par TLS (ldaps://, ou ldap:// avec start_tls), au moins une URL est nécessaire quand l'annuaire est activé, les filtres doivent être équilibrés en parenthèses. Permission auth:manage. Erreurs : 422 ldap_config_invalid (avec details.problems), 422 role_invalid. Audité en auth_config.ldap.
Route : /api/v1/auth-config/ldap (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Réglages LDAP complets. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer la configuration LDAP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.put_oidc
put_oidc(provider_id: str, body: Any = None) -> Any
Modifier un fournisseur OIDC. Remplace les réglages et les correspondances du fournisseur et le renvoie ; le secret client est conservé sauf si un nouveau est envoyé. Permission auth:manage. Erreurs : 404 oidc_provider_not_found, 409 provider_name_taken, 422 oidc_config_invalid. Audité.
Route : /api/v1/auth-config/oidc/{provider_id} (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
provider_id | str | oui | Identifiant du fournisseur OIDC. | |
body | Any | None | non | Réglages complets du fournisseur. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un fournisseur OIDC ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.put_policy
put_policy(body: Any = None) -> Any
Enregistrer la politique de sécurité. Remplace toute la politique et la renvoie. Elle s'applique au prochain changement de mot de passe, à la prochaine connexion et au prochain contrôle de session. Permission auth:manage ; 422 role_invalid pour un rôle inconnu dans mfa_required_roles. Audité en auth_config.policy.
Route : /api/v1/auth-config/policy (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Tous les champs de la politique. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer la politique de sécurité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.test_ldap
test_ldap(body: Any = None) -> Any
Tester la configuration LDAP. Se lie avec les réglages enregistrés et, quand un compte de test est fourni, recherche l'utilisateur, vérifie son mot de passe et lit ses groupes. Renvoie ok, bind, user_found, groups et error_code. Rien n'est modifié. Permission auth:manage ; 404 ldap_not_configured. Audité en auth_config.ldap_test.
Route : /api/v1/auth-config/ldap/test (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Compte de test facultatif. |
Retour : Any. Réponse JSON décodée de l'opération « Tester la configuration LDAP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AuthConfigApi.test_oidc
test_oidc(provider_id: str) -> Any
Tester un fournisseur OIDC. Lit le document de découverte de l'émetteur et ses clés de signature. Renvoie ok, issuer, jwks_keys (nombre de clés) et error_code. Permission auth:manage ; 404 oidc_provider_not_found. Audité en auth_config.oidc_test.
Route : /api/v1/auth-config/oidc/{provider_id}/test (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
provider_id | str | oui | Identifiant du fournisseur OIDC. |
Retour : Any. Réponse JSON décodée de l'opération « Tester un fournisseur OIDC ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe AvailabilityApi
Groupes de haute disponibilité. Un groupe de haute disponibilité décrit comment un composant d'un cluster reste disponible : son mode de HA (single, active_passive, active_active, quorum), son profil (standalone, ha avec au moins 2 réplicas dans 2 domaines de panne, critical-ha avec au moins 3 dans 3), ses membres et leurs domaines de panne, sa politique de bascule et ses objectifs de reprise (RTO, RPO). Le groupe indique son état de HA à partir des battements de cœur de ses membres. Opérations de ce groupe de l'API du Navin Manager.
Resource
AvailabilityApi.create_group
create_group(body: Any = None) -> Any
Créer un groupe de haute disponibilité. Déclare un groupe et ses membres et le renvoie (201). Le profil doit être satisfait par desired_replicas et fault_domains, deux membres ne peuvent pas partager une machine. Permission cluster:manage sur le cluster. Erreurs : 422 ha_profile_unmet, 422 ha_mode_unsupported, 422 ha_members_same_host, 404 cluster_not_found, 404 host_not_found. Audité en ha_group.create.
Route : /api/v1/ha-groups (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le groupe, sa politique et ses membres. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un groupe de haute disponibilité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AvailabilityApi.get_group
get_group(group_id: str) -> Any
Lire un groupe de haute disponibilité. Renvoie le groupe avec ses membres, son état de HA et son dernier test. Permission cluster:read sur son cluster ; 404 ha_group_not_found.
Route : /api/v1/ha-groups/{group_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
group_id | str | oui | Identifiant du groupe de HA. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un groupe de haute disponibilité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AvailabilityApi.ha_modes
ha_modes() -> Any
Lister les modes de déploiement et leur prise en charge. Chaque mode de déploiement avec supported, ha_possible et la raison reason dans les deux langues. Tout utilisateur connecté.
Route : /api/v1/ha-modes (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les modes de déploiement et leur prise en charge ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AvailabilityApi.list_groups
list_groups() -> Any
Lister les groupes de haute disponibilité. Groupes de chaque cluster que l'appelant peut lire (cluster:read), triés par nom, chacun avec ses membres, son état de HA et son dernier test.
Route : /api/v1/ha-groups (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les groupes de haute disponibilité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AvailabilityApi.operations
operations(group_id: str) -> Any
Lire l'historique des bascules d'un groupe. Renvoie test_runs (statut, jeton de fencing, RTO et RPO observés en secondes, preuves, horaires), fencing_operations (membre, méthode, vérification, jeton) et les 200 derniers events. Permission cluster:read.
Route : /api/v1/ha-groups/{group_id}/operations (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
group_id | str | oui | Identifiant du groupe de HA. |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'historique des bascules d'un groupe ».
Erreurs levées : les erreurs typées du transport (Erreurs).
AvailabilityApi.test_failover
test_failover(group_id: str) -> Any
Lancer un test de bascule. Prend le bail de bascule du groupe, enregistre un test avec un nouveau jeton de fencing et, quand le groupe est lié à des composants installés, lance la bascule. Répond 202 avec run_id, status, fencing_token, executed et les opérations lancées operations. Permission services:operate. Erreurs : 409 ha_operation_locked (une autre bascule détient le bail), 409 ha_client_managed_refused. Audité en ha_group.test_failover.
Route : /api/v1/ha-groups/{group_id}/test-failover (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
group_id | str | oui | Identifiant du groupe de HA. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer un test de bascule ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe BackupApi
Sauvegarde, restauration et reprise après sinistre. Le gestionnaire de sauvegarde et de reprise : cibles et plans de sauvegarde, artefacts de sauvegarde avec leurs vérifications, conservation, tests de restauration, restaurations et reprise après sinistre (sites, plans, exercices, bascules, changements DNS et d'équilibreur de charge). Opérations de ce groupe de l'API du Navin Manager.
Resource
BackupApi.approve_exercise
approve_exercise(exercise_id: str) -> Any
Approuver un exercice ou une bascule de reprise. Approuve la demande ; l'approbateur ne doit pas être le demandeur. Permission dr:manage. Erreurs : 403 restore_self_approval, 404 dr_exercise_not_found. Audité en dr.approve.
Route : /api/v1/dr-exercises/{exercise_id}/approve (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
exercise_id | str | oui | Identifiant de l'exercice ou de la demande de bascule. |
Retour : Any. Réponse JSON décodée de l'opération « Approuver un exercice ou une bascule de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.approve_restore
approve_restore(plan_id: str) -> Any
Approuver un plan de restauration. Ajoute l'approbation de l'appelant ; deux approbations par des personnes autres que le demandeur sont nécessaires. Permission restore:execute. Erreurs : 403 restore_self_approval, 409 restore_not_approvable. Audité en restore.approve.
Route : /api/v1/restores/{plan_id}/approve (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Approuver un plan de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.backup_consistency
backup_consistency(body: Any = None) -> Any
Contrôler la cohérence d'une cible de sauvegarde. Compare les lignes de la base, les objets stockés et le registre des artefacts d'une cible filesystem (son bucket est le répertoire racine). Avec reconcile, les lignes dont l'objet a disparu sont marquées missing et les objets orphelins sont déplacés dans un répertoire de quarantaine, jamais supprimés. Permission backup:manage. Erreurs : 404 backup_target_not_found, 422 backup_provider_unsupported (autre que filesystem).
Route : /api/v1/backups/consistency (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Cible, empreintes du registre et indicateur de réconciliation. |
Retour : Any. Réponse JSON décodée de l'opération « Contrôler la cohérence d'une cible de sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.complete_exercise
complete_exercise(exercise_id: str, body: Any = None) -> Any
Clôturer un exercice de reprise avec ses mesures. Enregistre le RPO et le RTO observés, le résultat et les preuves d'un exercice ou d'une bascule approuvés. Permission dr:manage ; 409 dr_not_approved. Audité en dr.complete.
Route : /api/v1/dr-exercises/{exercise_id}/complete (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
exercise_id | str | oui | Identifiant de l'exercice ou de la demande de bascule. | |
body | Any | None | non | Mesures observées, résultat et preuves. |
Retour : Any. Réponse JSON décodée de l'opération « Clôturer un exercice de reprise avec ses mesures ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.create_dr_plan
create_dr_plan(body: Any = None) -> Any
Créer un plan de reprise. Crée un plan entre un site primaire et un site secondaire (créés s'ils sont inconnus) et le renvoie (201). Permission dr:manage. Erreurs : 422 dr_mode_invalid, 422 dr_same_site. Audité en dr.plan.create.
Route : /api/v1/dr-plans (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Nom, mode, sites, objectifs et séquence du plan. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un plan de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.create_plan
create_plan(body: Any = None) -> Any
Créer un plan de sauvegarde. Crée un plan de sauvegarde sur une cible et le renvoie (201). Avec immutability_required, la cible doit avoir des capacités de verrouillage d'objet et de rétention vérifiées. Permission backup:manage. Erreurs : 404 backup_target_not_found, 409 backup_worm_unsupported. Audité en backup.plan.create.
Route : /api/v1/backup-plans (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Cible, périmètre, calendrier, chiffrement et conservation du plan. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un plan de sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.create_target
create_target(body: Any = None) -> Any
Déclarer une cible de sauvegarde. Crée une cible et la renvoie (201). Permission backup:manage ; 422 backup_provider_unsupported. Audité en backup.target.create.
Route : /api/v1/backup-targets (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Fournisseur, emplacement et capacités de la cible. |
Retour : Any. Réponse JSON décodée de l'opération « Déclarer une cible de sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.declare_traffic
declare_traffic(plan_id: str, body: Any = None) -> Any
Déclarer une bascule de trafic d'un plan de reprise. Déclare (ou remplace) un enregistrement DNS ou un équilibreur de charge du plan avec sa valeur par site et le contrôle de santé qui doit réussir avant une bascule (201). Permission dr:manage. Erreurs : 422 dr_traffic_invalid, 404 dr_plan_not_found. Audité en dr.traffic.declare.
Route : /api/v1/dr-plans/{plan_id}/traffic (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de reprise. | |
body | Any | None | non | Type, nom et spécification de la bascule. |
Retour : Any. Réponse JSON décodée de l'opération « Déclarer une bascule de trafic d'un plan de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.delete_backup
delete_backup(backup_id: str) -> Any
Supprimer une sauvegarde. Supprime un artefact de sauvegarde dont la durée de conservation est écoulée. Permission backup:manage. Erreurs : 409 backup_retention_active (avant expires_at), 404 backup_artifact_not_found. Audité en backup.delete.
Route : /api/v1/backups/{backup_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
backup_id | str | oui | Identifiant de l'artefact de sauvegarde. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.dry_run_restore
dry_run_restore(plan_id: str) -> Any
Essayer à blanc un plan de restauration. Contrôle l'empreinte, le déchiffrement et la compatibilité sans écrire dans la destination, et renvoie les approbateurs enregistrés. Pour une destination nommée, contrôle aussi son identité, son vide et son rôle restreint (checks.destination, checks.executor). Une simulation réussie n'autorise pas l'exécution : deux approbations restent nécessaires. Permission restore:execute. Audité en restore.dry_run.
Route : /api/v1/restores/{plan_id}/dry-run (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Essayer à blanc un plan de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.enforce_retention
enforce_retention() -> Any
Appliquer la conservation maintenant. Retire les artefacts dont expires_at est dépassé et les marque expired. Renvoie expired. Permission backup:manage. Audité en backup.expire.
Route : /api/v1/backups/retention/enforce (POST).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Appliquer la conservation maintenant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.execute_restore
execute_restore(plan_id: str) -> Any
Exécuter une restauration approuvée. Exécute un plan approuvé avec destination : l'état executing et un jeton durable execution_token sont validés avant toute écriture. L'artefact est contrôlé à nouveau (taille, empreinte, déchiffrement), restauré par pg_restore --single-transaction avec le rôle restreint, puis ses lignes sont relues et comparées à l'inventaire (result.inventory, rows, tables). Succès : executed. Échec enregistré : failed, rollback_performed: false, HTTP 502 restore_execution_failed ; le champ imbriqué result.error précise la cause, notamment backup_corrupted, restore_target_busy ou restore_execution_timeout. Une interruption du processus peut laisser executing, à inspecter manuellement. Aucun retour arrière ni rejeu automatique. Les refus avant exécution incluent 409 restore_not_approved, 501 restore_executor_unavailable et 409 restore_target_changed. Permission restore:execute. Audité en restore.execute.started et restore.execute.
Route : /api/v1/restores/{plan_id}/execute (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une restauration approuvée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.get_restore
get_restore(plan_id: str) -> Any
Lire un plan de restauration. Renvoie le plan avec sa compatibilité, ses étapes, ses approbateurs approvers et required_approvals (2). Permission backup:read ; 404 restore_plan_not_found.
Route : /api/v1/restores/{plan_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un plan de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_backups
list_backups() -> Any
Lister les sauvegardes. Les 200 derniers artefacts de sauvegarde, du plus récent au plus ancien : emplacement, SHA-256, taille, versions, expiration, plan et résultat de leur dernière vérification. Permission backup:read.
Route : /api/v1/backups (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les sauvegardes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_dr_plans
list_dr_plans() -> Any
Lister les plans de reprise. Chaque plan de reprise après sinistre avec son mode, ses sites primaire et secondaire, ses objectifs de RPO et RTO et sa séquence. Permission backup:read.
Route : /api/v1/dr-plans (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les plans de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_exercises
list_exercises() -> Any
Lister les exercices et bascules de reprise. Les 200 derniers exercices et demandes de bascule avec leur rapport : statut, demandeur, approbateur, RPO et RTO observés comparés aux objectifs, preuves. Permission backup:read.
Route : /api/v1/dr-exercises (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les exercices et bascules de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_jobs
list_jobs() -> Any
Lister les tâches de sauvegarde. Les 200 dernières tâches de sauvegarde, de la plus récente à la plus ancienne, avec le nom de leur plan, leur statut et leur erreur. Permission backup:read.
Route : /api/v1/backup-jobs (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les tâches de sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_plans
list_plans() -> Any
Lister les plans de sauvegarde. Chaque plan de sauvegarde, et alerts : les plans dont la dernière sauvegarde réussie est plus ancienne que l'intervalle plus la fenêtre, ou dont la dernière tâche a échoué. Permission backup:read.
Route : /api/v1/backup-plans (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les plans de sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_restore_targets
list_restore_targets() -> Any
Lister les destinations de restauration. Les destinations de restauration déclarées par l'opérateur dans le réglage restore_targets : nom, environnement, type (pg_dump) et versions déclarées. Les chaînes de connexion et les noms des variables secrètes ne quittent jamais le serveur. Permission restore:execute.
Route : /api/v1/restore-targets (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les destinations de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_restore_tests
list_restore_tests() -> Any
Lister les tests de restauration. Les 200 derniers tests de restauration avec leur résultat et leur rapport signé. Permission backup:read.
Route : /api/v1/restore-tests (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les tests de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_restores
list_restores() -> Any
Lister les plans de restauration. Les 200 derniers plans de restauration avec leur statut et leur nombre d'approbations. Permission backup:read.
Route : /api/v1/restores (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les plans de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_sites
list_sites() -> Any
Lister les sites de reprise. Sites connus des plans de reprise après sinistre, avec leur rôle (primary ou secondary). Les sites sont créés par les plans. Permission backup:read.
Route : /api/v1/dr-sites (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les sites de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_traffic
list_traffic(plan_id: str) -> Any
Lister les bascules de trafic d'un plan de reprise. Enregistrements DNS et équilibreurs de charge déclarés pour le plan, avec leur valeur par site et leur contrôle de santé. Permission backup:read.
Route : /api/v1/dr-plans/{plan_id}/traffic (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de reprise. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les bascules de trafic d'un plan de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.list_verifications
list_verifications(backup_id: str) -> Any
Lister les vérifications d'une sauvegarde. Chaque vérification de l'artefact, de la plus récente à la plus ancienne, avec son résultat outcome (passed ou failed) et ses détails (empreinte attendue et observée, taille, raison). Permission backup:read.
Route : /api/v1/backups/{backup_id}/verifications (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
backup_id | str | oui | Identifiant de l'artefact de sauvegarde. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les vérifications d'une sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.plan_restore
plan_restore(body: Any = None) -> Any
Planifier une restauration. Crée un plan de restauration pour un artefact de sauvegarde : contrôle la compatibilité des versions sauvegardées avec les versions cibles (même version majeure) et liste les étapes (vérification de l'artefact, vérification de la destination, restauration, vérification du résultat). Avec target_name, l'artefact doit être un pg_dump disponible avec un inventaire verification_inventory et la destination une base PostgreSQL vide appartenant à un rôle restreint ; son identité est figée dans target_snapshot. Renvoie le plan (201). Permission restore:execute. Erreurs : 404 backup_artifact_not_found, 501 restore_executor_unavailable (destination inconnue), 409 restore_target_invalid, 409 restore_target_not_empty, 422 restore_inventory_required. Audité en restore.plan.
Route : /api/v1/restores/plan (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Artefact, environnement, destination et versions cibles. |
Retour : Any. Réponse JSON décodée de l'opération « Planifier une restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.record_backup
record_backup(plan_id: str, body: Any = None) -> Any
Enregistrer une sauvegarde. Enregistre une tâche et son artefact : le Manager calcule l'empreinte du fichier situé à location, conserve son empreinte, sa taille et ses versions, et fixe expires_at d'après la durée de conservation du plan. Quand le fichier est illisible, la tâche est enregistrée en failed. Renvoie la tâche avec son artifact (201). Permission backup:manage ; 404 backup_policy_not_found. Audité en backup.job.
Route : /api/v1/backup-plans/{plan_id}/backups (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de sauvegarde. | |
body | Any | None | non | Emplacement, type et versions de l'artefact. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer une sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.request_exercise
request_exercise(body: Any = None) -> Any
Demander un exercice de reprise. Enregistre une demande d'exercice pour un plan (201) ; une autre personne doit l'approuver avant qu'il puisse être clôturé. Permission dr:manage ; 404 dr_plan_not_found. Audité en dr.exercise.request.
Route : /api/v1/dr-exercises (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le plan de reprise. |
Retour : Any. Réponse JSON décodée de l'opération « Demander un exercice de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.request_failover
request_failover(body: Any = None) -> Any
Demander une bascule de reprise. Enregistre une demande de bascule réelle pour un plan (201) ; elle suit la même approbation et la même clôture qu'un exercice. Permission dr:manage ; 404 dr_plan_not_found. Audité en dr.failover.request.
Route : /api/v1/dr-failovers/request (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le plan de reprise. |
Retour : Any. Réponse JSON décodée de l'opération « Demander une bascule de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.run_restore_test
run_restore_test(backup_id: str, body: Any = None) -> Any
Lancer un test de restauration. Copie l'artefact dans un répertoire isolé, injecte éventuellement une corruption, vérifie l'empreinte et le déchiffrement et signe le rapport (Ed25519). Un échec lève une alarme auditée. Renvoie le test (201). Permission backup:manage. Audité en backup.restore_test.
Route : /api/v1/backups/{backup_id}/restore-tests (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
backup_id | str | oui | Identifiant de l'artefact de sauvegarde. | |
body | Any | None | non | Injection ou non d'une corruption (pour prouver que le test la détecte). |
Retour : Any. Réponse JSON décodée de l'opération « Lancer un test de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.set_dr_targets
set_dr_targets(plan_id: str, body: Any = None) -> Any
Fixer les objectifs de RPO et RTO d'un plan de reprise. Fixe vos propres objectifs de reprise (secondes, ou nul pour effacer) ; le produit ne les propose jamais. Permission dr:manage ; 404 dr_plan_not_found. Audité en dr.plan.targets.
Route : /api/v1/dr-plans/{plan_id}/targets (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de reprise. | |
body | Any | None | non | Objectifs de RPO et RTO. |
Retour : Any. Réponse JSON décodée de l'opération « Fixer les objectifs de RPO et RTO d'un plan de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.traffic_switch_plan
traffic_switch_plan(plan_id: str, body: Any = None) -> Any
Planifier une bascule de trafic vers un site. Exécute les contrôles de santé des bascules déclarées sur le site cible (vraies requêtes HTTP) et renvoie les changements DNS et d'équilibreur de charge dans l'ordre. Rien n'est appliqué : l'application exige l'API de votre DNS et de votre équilibreur de charge (statut requires_client_provider). Permission dr:manage.
Route : /api/v1/dr-plans/{plan_id}/switch-plan (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de reprise. | |
body | Any | None | non | Site vers lequel basculer le trafic. |
Retour : Any. Réponse JSON décodée de l'opération « Planifier une bascule de trafic vers un site ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupApi.verify_backup
verify_backup(backup_id: str) -> Any
Vérifier une sauvegarde. Recalcule l'empreinte du fichier, compare l'empreinte et la taille à celles enregistrées et, si elles correspondent, le déchiffre avec sa clé. Renvoie la vérification avec son résultat outcome (passed ou failed). Permission backup:manage ; 404 backup_artifact_not_found. Audité en backup.verify.
Route : /api/v1/backups/{backup_id}/verify (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
backup_id | str | oui | Identifiant de l'artefact de sauvegarde. |
Retour : Any. Réponse JSON décodée de l'opération « Vérifier une sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe BackupsApi
Sauvegarde, restauration et reprise après sinistre. Le gestionnaire de sauvegarde et de reprise : cibles et plans de sauvegarde, artefacts de sauvegarde avec leurs vérifications, conservation, tests de restauration, restaurations et reprise après sinistre (sites, plans, exercices, bascules, changements DNS et d'équilibreur de charge). Opérations de ce groupe de l'API du Navin Manager.
Resource
BackupsApi.create_plan
create_plan(body: Any = None) -> Any
Créer un plan de sauvegarde. Crée un plan de sauvegarde sur une cible et le renvoie (201). Avec immutability_required, la cible doit avoir des capacités de verrouillage d'objet et de rétention vérifiées. Permission backup:manage. Erreurs : 404 backup_target_not_found, 409 backup_worm_unsupported. Audité en backup.plan.create.
Route : /api/v1/backup-plans (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Cible, périmètre, calendrier, chiffrement et conservation du plan. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un plan de sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupsApi.list
list() -> Any
Lister les sauvegardes. Les 200 derniers artefacts de sauvegarde, du plus récent au plus ancien : emplacement, SHA-256, taille, versions, expiration, plan et résultat de leur dernière vérification. Permission backup:read.
Route : /api/v1/backups (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les sauvegardes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupsApi.run
run(plan_id: str, body: Any = None) -> Any
Enregistrer une sauvegarde. Enregistre une tâche et son artefact : le Manager calcule l'empreinte du fichier situé à location, conserve son empreinte, sa taille et ses versions, et fixe expires_at d'après la durée de conservation du plan. Quand le fichier est illisible, la tâche est enregistrée en failed. Renvoie la tâche avec son artifact (201). Permission backup:manage ; 404 backup_policy_not_found. Audité en backup.job.
Route : /api/v1/backup-plans/{plan_id}/backups (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de sauvegarde. | |
body | Any | None | non | Emplacement, type et versions de l'artefact. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer une sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BackupsApi.verify
verify(backup_id: str) -> Any
Vérifier une sauvegarde. Recalcule l'empreinte du fichier, compare l'empreinte et la taille à celles enregistrées et, si elles correspondent, le déchiffre avec sa clé. Renvoie la vérification avec son résultat outcome (passed ou failed). Permission backup:manage ; 404 backup_artifact_not_found. Audité en backup.verify.
Route : /api/v1/backups/{backup_id}/verify (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
backup_id | str | oui | Identifiant de l'artefact de sauvegarde. |
Retour : Any. Réponse JSON décodée de l'opération « Vérifier une sauvegarde ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe BlueprintApi
Blueprints. Un blueprint décrit les services d'un cluster sous une forme portable, pour reconstruire la même plateforme sur un autre cluster : les services avec leur mode, leur méthode, leur configuration non secrète et leurs liaisons, et des groupes de machines (ensembles de composants qui tournent ensemble, avec leur nombre de machines). Sa forme : Opérations de ce groupe de l'API du Navin Manager.
Resource
BlueprintApi.apply_blueprint
apply_blueprint(cluster_id: str, body: Any = None) -> Any
Appliquer un blueprint à un cluster. Transforme le blueprint et l'association des machines en demandes d'installation et crée une seule opération d'installation (type blueprint.apply), avec les mêmes contrôles qu'une installation de service. Renvoie operation_id et les contrôles ha. Permissions cluster:manage et services:install. Erreurs : 422 blueprint_invalid (avec details.errors), et les erreurs d'une installation. Audité en blueprint.apply.
Route : /api/v1/clusters/{cluster_id}/blueprint/apply (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Blueprint, association des machines et options d'installation. |
Retour : Any. Réponse JSON décodée de l'opération « Appliquer un blueprint à un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BlueprintApi.export_blueprint
export_blueprint(cluster_id: str) -> Any
Exporter le blueprint d'un cluster. Renvoie le blueprint du cluster : ses services gérés avec leur configuration non secrète (les secrets ne sont jamais exportés) et les groupes de machines construits à partir des composants qui tournent ensemble ; hosts d'un groupe liste les machines de ce cluster à titre indicatif. Permission cluster:manage.
Route : /api/v1/clusters/{cluster_id}/blueprint (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Exporter le blueprint d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
BlueprintApi.validate_blueprint
validate_blueprint(cluster_id: str, body: Any = None) -> Any
Valider un blueprint pour un cluster. Contrôle la forme du blueprint et, quand un host_mapping est fourni, l'association et les demandes d'installation qui en résultent. Renvoie ok et errors (chacune avec service, field, code, message_i18n). Rien n'est modifié. Permission cluster:manage.
Route : /api/v1/clusters/{cluster_id}/blueprint/validate (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Blueprint et association facultative des machines. |
Retour : Any. Réponse JSON décodée de l'opération « Valider un blueprint pour un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe ClustersApi
Opérations clusters du Platform Manager.
Resource
ClustersApi.create_cluster
create_cluster(body: Any = None) -> Any
Créer un cluster. Crée un cluster vide sur la version courante du catalogue et le renvoie (201). Sans profil, les clusters production et preprod reçoivent standard, les autres modes development. Permission clusters:create ; 409 cluster_name_taken (les noms ne tiennent pas compte de la casse). Audité en cluster.create.
Route : /api/v1/clusters (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Nom, mode, description et profil du cluster. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.create_token
create_token(cluster_id: str, body: Any = None) -> Any
Créer un jeton d'amorçage pour de nouvelles machines. Crée un jeton qui permet aux agents de s'enregistrer dans ce cluster et renvoie id, token (affiché uniquement ici), expires_at, register_command (la commande nm-agent register avec l'URL du serveur, le jeton et l'empreinte de l'autorité de certification) et install_command (un script qui installe l'agent depuis le miroir et l'enregistre). Répond 201. Permission hosts:manage. Audité en bootstrap_token.create.
Route : /api/v1/clusters/{cluster_id}/bootstrap-tokens (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Durée de vie et nombre d'utilisations du jeton. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un jeton d'amorçage pour de nouvelles machines ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.delete_cluster
delete_cluster(cluster_id: str) -> Any
Supprimer un cluster vide. Supprime un cluster qui n'a aucun service et aucune machine en dehors des machines mises hors service. Répond 204. Permission cluster:manage. Erreurs : 404 cluster_not_found, 409 cluster_not_empty. Audité en cluster.delete.
Route : /api/v1/clusters/{cluster_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un cluster vide ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.get_cluster
get_cluster(cluster_id: str) -> Any
Lire un cluster. Renvoie le cluster. Permission cluster:read ; 404 cluster_not_found.
Route : /api/v1/clusters/{cluster_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.import_kubernetes
import_kubernetes(cluster_id: str, body: Any = None) -> Any
Enregistrer un cluster Kubernetes. Contrôle le kubeconfig par rapport au serveur d'API fourni, appelle /version, scelle le kubeconfig et fait du cluster un cluster Kubernetes. Le cluster ne doit avoir aucune machine. Renvoie la cible (201). Permission cluster:manage. Erreurs : 409 k8s_already_registered, 409 k8s_cluster_has_hosts, erreurs du contrôle du kubeconfig et de l'API. Audité en k8s.cluster.register.
Route : /api/v1/clusters/{cluster_id}/kubernetes (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Serveur d'API, kubeconfig et espace de noms. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer un cluster Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.list_clusters
list_clusters() -> Any
Lister les clusters. Clusters que l'appelant peut lire (cluster:read globalement ou sur le cluster), triés par nom : id, name, mode, description, stack_version, profile, kind (hosts ou kubernetes), created_at, updated_at.
Route : /api/v1/clusters (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les clusters ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.list_tokens
list_tokens(cluster_id: str) -> Any
Lister les jetons d'amorçage d'un cluster. Jetons du cluster, du plus récent au plus ancien, avec prefix, expires_at, max_uses, uses, created_at et revoked_at ; le secret n'est jamais renvoyé. Permission hosts:manage.
Route : /api/v1/clusters/{cluster_id}/bootstrap-tokens (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les jetons d'amorçage d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.patch_cluster
patch_cluster(cluster_id: str, body: Any = None) -> Any
Renommer un cluster ou changer son profil. Modifie le nom, la description ou le profil ; un champ omis est conservé. Renvoie le cluster. Permission cluster:manage. Erreurs : 404 cluster_not_found, 409 cluster_name_taken. Audité en cluster.update.
Route : /api/v1/clusters/{cluster_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Champs du cluster à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Renommer un cluster ou changer son profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.register
register(body: Any = None) -> Any
Créer un cluster. Crée un cluster vide sur la version courante du catalogue et le renvoie (201). Sans profil, les clusters production et preprod reçoivent standard, les autres modes development. Permission clusters:create ; 409 cluster_name_taken (les noms ne tiennent pas compte de la casse). Audité en cluster.create.
Route : /api/v1/clusters (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Nom, mode, description et profil du cluster. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.revoke_token
revoke_token(cluster_id: str, token_id: str) -> Any
Révoquer un jeton d'amorçage. Révoque le jeton : plus aucun nouvel agent ne peut s'enregistrer avec lui ; les machines déjà enregistrées ne sont pas affectées. Répond 204. Permission hosts:manage ; 404 bootstrap_token_not_found (inconnu ou déjà révoqué). Audité en bootstrap_token.revoke.
Route : /api/v1/clusters/{cluster_id}/bootstrap-tokens/{token_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
token_id | str | oui | Identifiant du jeton d'amorçage. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer un jeton d'amorçage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.status
status(cluster_id: str) -> Any
Lire la synthèse d'un cluster. Compteurs de la page d'accueil d'un cluster : machines par état, services par état et par santé, alertes ouvertes (critical, warning) et opérations en cours. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/summary (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire la synthèse d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.summary
summary(cluster_id: str) -> Any
Lire la synthèse d'un cluster. Compteurs de la page d'accueil d'un cluster : machines par état, services par état et par santé, alertes ouvertes (critical, warning) et opérations en cours. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/summary (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire la synthèse d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.topology
topology(cluster_id: str) -> Any
Lire la topologie d'un cluster. Machines (id, hostname, state, rack) et instances de composants (service, component, host_id, state, health) du cluster, pour représenter où tourne chaque composant. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/topology (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire la topologie d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ClustersApi.validate
validate(cluster_id: str, body: Any = None) -> Any
Lancer les contrôles préalables d'installation d'un cluster. Chaque contrôle qui doit réussir avant l'installation ou la mise à niveau d'un service, avec sa sévérité, sa preuve et un verdict bloquant : caractéristiques des machines, DNS, contrôles préalables du catalogue, pare-feu, capacité, versions, TLS et règles du profil. Un contrôle en fail bloque. Rien n'est modifié. Permission services:install.
Route : /api/v1/clusters/{cluster_id}/preflight (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Services et machines à contrôler. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer les contrôles préalables d'installation d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe ConfigsApi
Configurations. La configuration d'un service géré : ses paramètres (déclarés par le catalogue avec leurs types, leurs valeurs par défaut et leurs sections), enregistrés en versions numérotées, avec des groupes de configuration qui surchargent des valeurs sur certaines machines. Opérations de ce groupe de l'API du Navin Manager.
Resource
ConfigsApi.apply
apply(cluster_id: str, service: str, body: Any = None) -> Any
Appliquer la configuration aux machines. Lance l'opération qui écrit la configuration courante sur les machines et redémarre les composants comme demandé (rolling par lots de batch_size, all ou none). Renvoie operation_id. Permission configs:edit. Sous banking-secure, une approbation est nécessaire (409 approval_required). Audité en config.apply.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/apply (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Politique de redémarrage de l'application. |
Retour : Any. Réponse JSON décodée de l'opération « Appliquer la configuration aux machines ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.create_group
create_group(cluster_id: str, service: str, body: Any = None) -> Any
Créer un groupe de configuration. Crée un groupe de machines avec des valeurs qui surchargent la configuration du service sur ces machines. Une machine appartient à un groupe au plus. Permission configs:edit. Erreurs : 409 config_group_name_taken, 409 config_group_host_conflict, 422 config_group_host_invalid, 422 config_invalid. Audité en config_group.create.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/groups (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Nom, machines et surcharges du groupe. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un groupe de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.delete_group
delete_group(cluster_id: str, service: str, group_id: str) -> Any
Supprimer un groupe de configuration. Supprime le groupe ; ses machines reprennent la configuration du service à la prochaine application. Répond 204. Permission configs:edit ; 404 config_group_not_found. Audité en config_group.delete.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/groups/{group_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
group_id | str | oui | Identifiant du groupe de configuration. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un groupe de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.diff
diff(cluster_id: str, service: str, from_: integer = None, to: integer = None) -> Any
Comparer deux versions de configuration. Liste les paramètres dont la valeur diffère entre les deux versions, chacun avec param, secret, from et to ; pour un secret, seul le fait qu'il soit défini est indiqué. Permission configs:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/diff (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
from_ | integer | None | non | Numéro de la version la plus ancienne (1 ou plus). |
to | integer | None | non | Numéro de la version la plus récente (1 ou plus). |
Retour : Any. Réponse JSON décodée de l'opération « Comparer deux versions de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.get_config
get_config(cluster_id: str, service: str) -> Any
Lire la configuration d'un service. Renvoie la version courante, les propriétés effectives properties (valeurs par défaut fusionnées, secrets masqués), les définitions des paramètres params et les sections du catalogue, les recommandations recommendations calculées pour les machines, les groupes de configuration groups et les stale_hosts. Permission configs:read ; 409 service_unmanaged pour un service que le Manager ne gère pas.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire la configuration d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.get_version
get_version(cluster_id: str, service: str, version: str) -> Any
Lire une version de configuration. Renvoie les valeurs d'une version (secrets masqués) avec sa note et son auteur. Permission configs:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/versions/{version} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
version | str | oui | Numéro de version, à partir de 1. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une version de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.list_groups
list_groups(cluster_id: str, service: str) -> Any
Lister les groupes de configuration d'un service. Chaque groupe de configuration avec son id, son name, ses hosts, ses surcharges overrides (secrets masqués) et updated_at. Permission configs:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/groups (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les groupes de configuration d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.list_versions
list_versions(cluster_id: str, service: str, limit: int | None = None, cursor: str | None = None) -> Any
Lister les versions de configuration. Versions de la configuration, de la plus récente à la plus ancienne : version, note, restored_from, secret_keys, created_by, created_at. Paginé avec limit et cursor. Permission configs:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/versions (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
limit | int | None | None | non | Nombre maximal de versions dans la page, de 1 à 500. 50 par défaut. |
cursor | str | None | None | non | Le next_cursor de la page précédente : les versions inférieures à ce numéro sont renvoyées. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les versions de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.preview
preview(cluster_id: str, service: str, host_id: string = None, component: string = None) -> Any
Prévisualiser les fichiers d'une instance de composant. Produit les fichiers de configuration qu'une instance recevrait avec la version courante et ses groupes : path, mode, owner, group, content, secrets masqués. Rien n'est écrit. Permission configs:read ; 404 host_component_not_found.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/preview (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
host_id | string | None | non | Machine de l'instance. |
component | string | None | non | Composant de l'instance. |
Retour : Any. Réponse JSON décodée de l'opération « Prévisualiser les fichiers d'une instance de composant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.put_config
put_config(cluster_id: str, service: str, body: Any = None) -> Any
Enregistrer une nouvelle version de configuration. Fusionne les propriétés envoyées avec les valeurs courantes, les valide selon les définitions des paramètres et enregistre une nouvelle version. Renvoie version et stale_hosts. Permission configs:edit. Erreurs : 422 config_invalid (avec les champs), 409 service_unmanaged. Audité en config.update (noms des paramètres uniquement).
Route : /api/v1/clusters/{cluster_id}/services/{service}/config (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Propriétés modifiées et une note. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer une nouvelle version de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.restore
restore(cluster_id: str, service: str, version: str) -> Any
Restaurer une version de configuration. Enregistre les valeurs d'une ancienne version dans une nouvelle version (note restore of version N) et renvoie version et stale_hosts ; appliquez-la pour atteindre les machines. Permission configs:edit. Audité en config.restore.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/versions/{version}/restore (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
version | str | oui | Numéro de la version à restaurer. |
Retour : Any. Réponse JSON décodée de l'opération « Restaurer une version de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConfigsApi.update_group
update_group(cluster_id: str, service: str, group_id: str, body: Any = None) -> Any
Modifier un groupe de configuration. Remplace le nom, les machines et les surcharges du groupe. Permission configs:edit. Erreurs : 404 config_group_not_found, 409 config_group_name_taken, 409 config_group_host_conflict, 422 config_group_host_invalid. Audité en config_group.update.
Route : /api/v1/clusters/{cluster_id}/services/{service}/config/groups/{group_id} (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
group_id | str | oui | Identifiant du groupe de configuration. | |
body | Any | None | non | Nom, machines et surcharges du groupe. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un groupe de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe ConnectionsApi
Connexions externes. Connexions vers des systèmes extérieurs aux clusters que les services peuvent utiliser : bases de données (PostgreSQL, MySQL, ClickHouse), moteurs de recherche (Elasticsearch, OpenSearch, Qdrant), messagerie (Kafka, NATS, Redis), stockage objet S3, annuaires LDAP et OIDC, SMTP, syslog et simples points d'accès HTTP. Un service se lie à une connexion par ses liaisons bindings (type connection). Opérations de ce groupe de l'API du Navin Manager.
Resource
ConnectionsApi.create_connection
create_connection(body: Any = None) -> Any
Créer une connexion. Enregistre une connexion et la renvoie (201). Permission connections:manage. Erreurs : 409 connection_name_taken, 422 connection_params_invalid (champs dans details.fields). Audité en connection.create.
Route : /api/v1/connections (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Nom, type, paramètres et secret de la connexion. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une connexion ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConnectionsApi.delete_connection
delete_connection(connection_id: str) -> Any
Supprimer une connexion. Supprime une connexion à laquelle aucun service n'est lié. Répond 204. Permission connections:manage. Erreurs : 404 connection_not_found, 409 connection_in_use (services dans details.services). Audité en connection.delete.
Route : /api/v1/connections/{connection_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
connection_id | str | oui | Identifiant de la connexion. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une connexion ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConnectionsApi.get_connection
get_connection(connection_id: str) -> Any
Lire une connexion. Renvoie une connexion, son secret masqué. Permission connections:read ; 404 connection_not_found.
Route : /api/v1/connections/{connection_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
connection_id | str | oui | Identifiant de la connexion. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une connexion ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConnectionsApi.list_connections
list_connections(type_: string | null = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les connexions externes. Connexions triées par nom : id, name, type, params, secret (défini ou non), description, last_test, created_at, updated_at. Paginé avec limit et cursor. Permission connections:read.
Route : /api/v1/connections (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
type_ | string | null | None | non | Uniquement les connexions de ce type, par exemple postgresql, s3 ou kafka. |
limit | int | None | None | non | Nombre maximal de connexions dans la page, de 1 à 500. 50 par défaut. |
cursor | str | None | None | non | Le next_cursor de la page précédente (le dernier nom, en minuscules). Omettez-le pour la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les connexions externes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConnectionsApi.patch_connection
patch_connection(connection_id: str, body: Any = None) -> Any
Modifier une connexion. Modifie les champs fournis ; le type ne peut pas changer. Renvoie la connexion. Permission connections:manage. Erreurs : 404 connection_not_found, 409 connection_name_taken, 422 connection_params_invalid. Audité en connection.update.
Route : /api/v1/connections/{connection_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
connection_id | str | oui | Identifiant de la connexion. | |
body | Any | None | non | Champs de la connexion à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une connexion ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConnectionsApi.test_connection
test_connection(connection_id: str) -> Any
Tester une connexion enregistrée. Exécute le test du protocole avec les paramètres et le secret enregistrés, conserve le résultat avec son heure dans last_test et le renvoie (ok, error_code, latency_ms...). Permission connections:manage ; 404 connection_not_found. Audité en connection.test.
Route : /api/v1/connections/{connection_id}/test (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
connection_id | str | oui | Identifiant de la connexion. |
Retour : Any. Réponse JSON décodée de l'opération « Tester une connexion enregistrée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConnectionsApi.validate_connection
validate_connection(body: Any = None) -> Any
Tester une connexion avant de l'enregistrer. Essai à blanc : contrôle les paramètres du type, puis exécute le vrai test du protocole avec le secret fourni. Renvoie le résultat du test (ok, error_code, latency_ms...). Rien n'est enregistré ; le secret n'est jamais renvoyé ni audité. Permission connections:manage. Audité en connection.validate.
Route : /api/v1/connections/validate (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Type, paramètres et secret à tester. |
Retour : Any. Réponse JSON décodée de l'opération « Tester une connexion avant de l'enregistrer ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe ConsolesApi
Consoles des services. Les interfaces web locales des services installés (par exemple la console d'administration de Keycloak ou d'un courtier de messages), ouvertes depuis le Manager. Opérations de ce groupe de l'API du Navin Manager.
Resource
ConsolesApi.list_consoles
list_consoles(cluster_id: str) -> Any
Lister les consoles des services d'un cluster. Chaque console du catalogue avec son état sur le cluster : installée ou non, santé, adresse interne, contrôles de conformité, possibilité pour l'appelant de l'ouvrir et, pour les administrateurs du coffre, l'entrée du coffre qui contient ses identifiants. Les services sans interface web sont listés à part avec leurs points d'accès HTTP. Permission services:operate. Audité en consoles.list.
Route : /api/v1/clusters/{cluster_id}/consoles (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les consoles des services d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConsolesApi.open_console
open_console(cluster_id: str, service: str) -> Any
Ouvrir une console de service. Renvoie url, les contrôles checks et compliant. Exige services:operate et la permission de la console (vault:manage pour une console d'identités ou de secrets). Erreurs : 404 console_unknown, 409 console_not_installed, 409 console_no_url, 409 console_not_compliant (production ou préproduction). Audité en console.open.
Route : /api/v1/clusters/{cluster_id}/consoles/{service}/open (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Ouvrir une console de service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConsolesApi.put_access
put_access(cluster_id: str, service: str, body: Any = None) -> Any
Publier l'adresse interne d'une console. Définit l'adresse interne de la console (derrière la passerelle HTTPS de la banque) et sa protection ; les deux à nul reviennent à l'adresse découverte. Renvoie la console ; l'entrée du coffre du service est mise à jour avec la nouvelle adresse. Permission cluster:manage ; 422 console_url_invalid. Audité en console.access.
Route : /api/v1/clusters/{cluster_id}/consoles/{service}/access (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Adresse publiée et protection. |
Retour : Any. Réponse JSON décodée de l'opération « Publier l'adresse interne d'une console ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ConsolesApi.rotate_credentials
rotate_credentials(cluster_id: str, service: str, body: Any = None) -> Any
Faire tourner le mot de passe d'un compte de console. Définit un nouveau mot de passe (généré s'il est omis) pour le compte de la console lu depuis la configuration : crée une nouvelle version de configuration et lance l'opération d'application ; l'entrée du coffre suit quand l'application réussit. Répond 202 avec operation_id et version. Le mot de passe n'est jamais journalisé. Permissions configs:edit et vault:manage. Erreurs : 409 console_no_credential, 409 console_rotation_manual, 409 service_unmanaged, 422 config_invalid. Audité en console.credentials.rotate.
Route : /api/v1/clusters/{cluster_id}/consoles/{service}/credentials/rotate (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Nouveau mot de passe et politique de redémarrage. |
Retour : Any. Réponse JSON décodée de l'opération « Faire tourner le mot de passe d'un compte de console ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe DRApi
Sauvegarde, restauration et reprise après sinistre. Le gestionnaire de sauvegarde et de reprise : cibles et plans de sauvegarde, artefacts de sauvegarde avec leurs vérifications, conservation, tests de restauration, restaurations et reprise après sinistre (sites, plans, exercices, bascules, changements DNS et d'équilibreur de charge). Opérations de ce groupe de l'API du Navin Manager.
Resource
DRApi.approve
approve(exercise_id: str) -> Any
Approuver un exercice ou une bascule de reprise. Approuve la demande ; l'approbateur ne doit pas être le demandeur. Permission dr:manage. Erreurs : 403 restore_self_approval, 404 dr_exercise_not_found. Audité en dr.approve.
Route : /api/v1/dr-exercises/{exercise_id}/approve (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
exercise_id | str | oui | Identifiant de l'exercice ou de la demande de bascule. |
Retour : Any. Réponse JSON décodée de l'opération « Approuver un exercice ou une bascule de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
DRApi.complete
complete(exercise_id: str, body: Any = None) -> Any
Clôturer un exercice de reprise avec ses mesures. Enregistre le RPO et le RTO observés, le résultat et les preuves d'un exercice ou d'une bascule approuvés. Permission dr:manage ; 409 dr_not_approved. Audité en dr.complete.
Route : /api/v1/dr-exercises/{exercise_id}/complete (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
exercise_id | str | oui | Identifiant de l'exercice ou de la demande de bascule. | |
body | Any | None | non | Mesures observées, résultat et preuves. |
Retour : Any. Réponse JSON décodée de l'opération « Clôturer un exercice de reprise avec ses mesures ».
Erreurs levées : les erreurs typées du transport (Erreurs).
DRApi.list_plans
list_plans() -> Any
Lister les plans de reprise. Chaque plan de reprise après sinistre avec son mode, ses sites primaire et secondaire, ses objectifs de RPO et RTO et sa séquence. Permission backup:read.
Route : /api/v1/dr-plans (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les plans de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
DRApi.plan
plan(body: Any = None) -> Any
Créer un plan de reprise. Crée un plan entre un site primaire et un site secondaire (créés s'ils sont inconnus) et le renvoie (201). Permission dr:manage. Erreurs : 422 dr_mode_invalid, 422 dr_same_site. Audité en dr.plan.create.
Route : /api/v1/dr-plans (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Nom, mode, sites, objectifs et séquence du plan. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un plan de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
DRApi.request_failover
request_failover(body: Any = None) -> Any
Demander une bascule de reprise. Enregistre une demande de bascule réelle pour un plan (201) ; elle suit la même approbation et la même clôture qu'un exercice. Permission dr:manage ; 404 dr_plan_not_found. Audité en dr.failover.request.
Route : /api/v1/dr-failovers/request (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le plan de reprise. |
Retour : Any. Réponse JSON décodée de l'opération « Demander une bascule de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
DRApi.status
status() -> Any
Lister les exercices et bascules de reprise. Les 200 derniers exercices et demandes de bascule avec leur rapport : statut, demandeur, approbateur, RPO et RTO observés comparés aux objectifs, preuves. Permission backup:read.
Route : /api/v1/dr-exercises (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les exercices et bascules de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
DRApi.test
test(body: Any = None) -> Any
Demander un exercice de reprise. Enregistre une demande d'exercice pour un plan (201) ; une autre personne doit l'approuver avant qu'il puisse être clôturé. Permission dr:manage ; 404 dr_plan_not_found. Audité en dr.exercise.request.
Route : /api/v1/dr-exercises (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le plan de reprise. |
Retour : Any. Réponse JSON décodée de l'opération « Demander un exercice de reprise ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe HAApi
Groupes de haute disponibilité. Un groupe de haute disponibilité décrit comment un composant d'un cluster reste disponible : son mode de HA (single, active_passive, active_active, quorum), son profil (standalone, ha avec au moins 2 réplicas dans 2 domaines de panne, critical-ha avec au moins 3 dans 3), ses membres et leurs domaines de panne, sa politique de bascule et ses objectifs de reprise (RTO, RPO). Le groupe indique son état de HA à partir des battements de cœur de ses membres. Opérations de ce groupe de l'API du Navin Manager.
Resource
HAApi.list
list() -> Any
Lister les groupes de haute disponibilité. Groupes de chaque cluster que l'appelant peut lire (cluster:read), triés par nom, chacun avec ses membres, son état de HA et son dernier test.
Route : /api/v1/ha-groups (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les groupes de haute disponibilité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HAApi.plan
plan(body: Any = None) -> Any
Créer un groupe de haute disponibilité. Déclare un groupe et ses membres et le renvoie (201). Le profil doit être satisfait par desired_replicas et fault_domains, deux membres ne peuvent pas partager une machine. Permission cluster:manage sur le cluster. Erreurs : 422 ha_profile_unmet, 422 ha_mode_unsupported, 422 ha_members_same_host, 404 cluster_not_found, 404 host_not_found. Audité en ha_group.create.
Route : /api/v1/ha-groups (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le groupe, sa politique et ses membres. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un groupe de haute disponibilité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HAApi.status
status(group_id: str) -> Any
Lire un groupe de haute disponibilité. Renvoie le groupe avec ses membres, son état de HA et son dernier test. Permission cluster:read sur son cluster ; 404 ha_group_not_found.
Route : /api/v1/ha-groups/{group_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
group_id | str | oui | Identifiant du groupe de HA. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un groupe de haute disponibilité ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HAApi.test_failover
test_failover(group_id: str) -> Any
Lancer un test de bascule. Prend le bail de bascule du groupe, enregistre un test avec un nouveau jeton de fencing et, quand le groupe est lié à des composants installés, lance la bascule. Répond 202 avec run_id, status, fencing_token, executed et les opérations lancées operations. Permission services:operate. Erreurs : 409 ha_operation_locked (une autre bascule détient le bail), 409 ha_client_managed_refused. Audité en ha_group.test_failover.
Route : /api/v1/ha-groups/{group_id}/test-failover (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
group_id | str | oui | Identifiant du groupe de HA. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer un test de bascule ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe HostsApi
Opérations hosts du Platform Manager.
Resource
HostsApi.bootstrap
bootstrap(body: Any = None) -> Any
Amorcer un agent de nœud par SSH. Lance une opération qui installe et enregistre l'agent sur une machine :
Route : /api/v1/hosts/bootstrap (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Machine cible, machines de rebond, compte SSH, clé privée ou certificat. |
Retour : Any. Réponse JSON décodée de l'opération « Amorcer un agent de nœud par SSH ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.bootstrap_plan
bootstrap_plan(body: Any = None) -> Any
Prévisualiser l'amorçage d'un agent de nœud. Contrôle l'identifiant par rapport à la politique SSH et renvoie le plan sans se connecter : utilisateur SSH, cible, rebonds, verdict sur l'identifiant, fichier sudoers et sa validation, liste autorisée, unité systemd et répertoire de préparation. Permission hosts:manage ; 422 ssh_policy_refused.
Route : /api/v1/hosts/bootstrap/plan (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Même corps qu'un amorçage. |
Retour : Any. Réponse JSON décodée de l'opération « Prévisualiser l'amorçage d'un agent de nœud ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.decommission
decommission(host_id: str) -> Any
Mettre une machine hors service. Lance une opération en deux étapes : l'agent exécute sa tâche de mise hors service, puis le Manager marque la machine decommissioned et révoque ses certificats. La machine ne doit plus avoir aucun composant. Répond 202 avec operation_id. Permission hosts:manage ; 409 host_has_components. Audité en host.decommission.
Route : /api/v1/hosts/{host_id}/decommission (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Mettre une machine hors service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.delete_host
delete_host(host_id: str) -> Any
Supprimer une machine. Retire la machine du Manager et révoque les certificats de son agent, sans contacter l'agent (utilisez la mise hors service pour nettoyer la machine). Répond 204. Permission hosts:manage. Erreurs : 404 host_not_found, 409 host_has_components. Audité en host.delete.
Route : /api/v1/hosts/{host_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.diagnostics
diagnostics(host_id: str) -> Any
Lire l'inventaire d'une machine. Renvoie host_id, l'inventaire inventory rapproché à partir des caractéristiques de l'agent (matériel, GPU, plateforme) et updated_at. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/inventory (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'inventaire d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.discover
discover(cluster_id: string | null = None) -> Any
Lister les machines de tous les clusters. Machines de chaque cluster que l'appelant peut lire (ou d'un seul cluster), triées par FQDN, avec leur état de confiance, leur mode de gestion, leur identité, leurs métriques, leur inventaire et leur plateforme.
Route : /api/v1/hosts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | string | null | None | non | Uniquement les machines de ce cluster. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les machines de tous les clusters ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.enroll
enroll(body: Any = None) -> Any
Émettre un jeton d'enrôlement pour une clé d'agent. Émet un jeton à usage unique pour une machine et une clé : host_fingerprint est le SHA-256 (hexadécimal) de la clé publique de l'agent (nm-agent l'affiche avant l'enrôlement). Le jeton expire au bout de 15 minutes au plus et est consommé par le premier enrôlement qui présente une CSR de cette clé exacte. Renvoie id, token, expires_at, ttl_s, host_fingerprint et agent_url (201). Permission hosts:manage. Audité en host.enroll_token.
Route : /api/v1/hosts/enroll (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Cluster, FQDN et empreinte de clé de la machine. |
Retour : Any. Réponse JSON décodée de l'opération « Émettre un jeton d'enrôlement pour une clé d'agent ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.get_host
get_host(host_id: str) -> Any
Lire une machine avec ses caractéristiques. Renvoie la machine avec toutes les caractéristiques remontées par son agent. Permission cluster:read sur son cluster ; 404 host_not_found.
Route : /api/v1/hosts/{host_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une machine avec ses caractéristiques ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.get_parameters
get_parameters(host_id: str) -> Any
Lire les paramètres noyau d'une machine. Les réglages sysctl et les limites de ressources (nofile, nproc, memlock) de la machine, chacun avec sa valeur current (remontée par l'agent), sa valeur desired (définie par PUT) et sa valeur recommended (issue des services installés), ainsi que le pare-feu utilisé et les ports occupés. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/parameters (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les paramètres noyau d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.health
health(host_id: str) -> Any
Lire un agent de nœud. La vue du nœud plus ses 10 derniers certificats certificates et ses diagnostics (caractéristiques, dernières métriques, 20 derniers reçus). Permission cluster:read ; 404 host_not_found.
Route : /api/v1/agents/nodes/{host_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un agent de nœud ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.host_components
host_components(host_id: str) -> Any
Lister les composants d'une machine. Instances de composants placées sur la machine : service, component, desired_state, state, health et ses détails, version, config_version, stale_config (la configuration a changé depuis le dernier redémarrage), maintenance, pid, since, updated_at. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/components (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les composants d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.host_metrics
host_metrics(host_id: str, from_: string | null = None, to: string | null = None, step: integer = None) -> Any
Lire les métriques d'une machine. Séries temporelles de la machine sur [from, to] (par défaut : la dernière heure) par tranches de step secondes : cpu_pct, mem_used_mb, load1, disk_pct, net_rx, net_tx, chacune sous forme de liste de [heure, valeur]. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/metrics (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
from_ | string | null | None | non | Début de la fenêtre, ISO 8601. Par défaut : une heure avant to. |
to | string | null | None | non | Fin de la fenêtre, ISO 8601. Par défaut : maintenant. |
step | integer | None | non | Largeur d'une tranche en secondes, de 10 à 86400. 60 par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les métriques d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.list_hosts
list_hosts(cluster_id: str) -> Any
Lister les machines d'un cluster. Machines du cluster triées par nom d'hôte, avec leur état, leur système d'exploitation, leurs ressources, leurs étiquettes, leurs composants, leurs alertes ouvertes, la version de leur agent, l'expiration de leur certificat, leurs dernières métriques et leurs débits réseau. Permission cluster:read ; 404 cluster_not_found.
Route : /api/v1/clusters/{cluster_id}/hosts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les machines d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.patch_host
patch_host(host_id: str, body: Any = None) -> Any
Modifier la baie, les étiquettes ou la maintenance d'une machine. Modifie les champs fournis et renvoie la machine. Activer la maintenance fait passer la machine à l'état maintenance, la désactiver la ramène à healthy. Permission hosts:manage ; 422 host_environment_unknown. Audité en host.update.
Route : /api/v1/hosts/{host_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Champs de la machine à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier la baie, les étiquettes ou la maintenance d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.preflight
preflight(body: Any = None) -> Any
Lancer les contrôles préalables d'une machine avant son amorçage. Lit la machine en SSH et depuis le Manager (résolution DNS directe et inverse, joignabilité TCP, ports requis libres, disques, système d'exploitation) et renvoie les contrôles classés pass, warning ou blocking, les nombres blocking et warnings, une empreinte reproductible digest et le verdict sur l'identifiant. Rien n'est installé. Permission hosts:manage. Erreurs : 422 ssh_policy_refused. Audité en host.preflight.
Route : /api/v1/hosts/preflight (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Accès SSH, identité attendue, ports et disques à contrôler. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer les contrôles préalables d'une machine avant son amorçage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.preflight_results
preflight_results(host_id: str) -> Any
Lire les résultats des contrôles préalables d'une machine. Résultat de chaque contrôle préalable de la machine (check, status, message_i18n, details, checked_at), évalué à partir de ses dernières caractéristiques. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/preflight (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les résultats des contrôles préalables d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.put_parameters
put_parameters(host_id: str, body: Any = None) -> Any
Appliquer des paramètres noyau à une machine. Enregistre les réglages sysctl et les limites de ressources et lance une opération qui les écrit dans /etc/sysctl.d/90-navin-manager.conf et /etc/security/limits.d/90-navin-manager.conf. Répond 202 avec operation_id. Permission hosts:manage. Erreurs : 422 validation_error (clé invalide ou requête vide), 409 host_rootless (agent sans droits root). Audité en host.parameters.
Route : /api/v1/hosts/{host_id}/parameters (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Réglages sysctl et limites de ressources. |
Retour : Any. Réponse JSON décodée de l'opération « Appliquer des paramètres noyau à une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.refresh_facts
refresh_facts(host_id: str) -> Any
Relever à nouveau les caractéristiques d'une machine. Lance une opération où l'agent relève et remonte à nouveau ses caractéristiques (les contrôles préalables sont évalués dessus). Répond 202 avec operation_id. Permission hosts:manage. Audité en host.facts_refresh.
Route : /api/v1/hosts/{host_id}/facts/refresh (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Relever à nouveau les caractéristiques d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.revoke
revoke(host_id: str, body: Any = None) -> Any
Révoquer l'agent d'une machine. Passe l'état de confiance à revoked, révoque les certificats de l'agent et fait expirer ses commandes en attente. Seul un nouvel enrôlement le rétablit. Renvoie le nœud. Permission hosts:manage. Audité en host.revoke avec le nombre de certificats révoqués.
Route : /api/v1/hosts/{host_id}/revoke (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Raison du changement. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer l'agent d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.run_preflight
run_preflight(host_id: str) -> Any
Lancer les contrôles préalables d'une machine. Lance une opération qui relève des caractéristiques à jour ; les contrôles préalables sont évalués à leur arrivée. Lisez les résultats avec GET /hosts/{host_id}/preflight. Répond 202 avec operation_id. Permission hosts:manage. Audité en host.preflight.
Route : /api/v1/hosts/{host_id}/preflight (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer les contrôles préalables d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HostsApi.ssh_bootstrap
ssh_bootstrap(cluster_id: str, body: Any = None) -> Any
Installer des agents par SSH. Lance une opération avec une tâche par machine : le Manager se connecte en SSH (la clé de la machine doit correspondre à l'empreinte fournie), installe l'agent et l'enregistre avec un jeton d'amorçage créé pour cette opération (valable 2 heures, une utilisation par machine). La clé privée est gardée en mémoire pour les tâches uniquement, jamais conservée ni journalisée. Une machine en échec n'arrête pas les autres. Répond 202 avec operation_id. Permission hosts:manage. Erreurs : 422 validation_error (nom invalide ou empreinte manquante), 404 cluster_not_found. Audité en host.ssh_bootstrap.
Route : /api/v1/clusters/{cluster_id}/hosts/ssh-bootstrap (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Machines, compte SSH, clé privée et empreintes des clés des machines. |
Retour : Any. Réponse JSON décodée de l'opération « Installer des agents par SSH ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe HubApi
Navin Trusted Hub. Client du Navin Trusted Hub : le Manager récupère (en ligne) ou importe (hors ligne) le document de distribution signé du client, le vérifie, conserve ses cibles (paquets et images approuvés avec leurs empreintes) et alimente le miroir avec les images approuvées. Opérations de ce groupe de l'API du Navin Manager.
Resource
HubApi.get_status
get_status() -> Any
Lire l'état du Hub. Renvoie configured, les réglages publics settings (le jeton n'est jamais renvoyé), l'état state du dernier document accepté et un résumé packages_summary. Permission system:read.
Route : /api/v1/hub (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire l'état du Hub ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HubApi.import_offline
import_offline(body: Any = None) -> Any
Importer un document de distribution hors ligne. Vérifie et enregistre un document signé apporté sur support amovible (site isolé). Exige le client et les clés épinglées dans les réglages. Renvoie metadata_version, targets, images_loaded et changes. Permission settings:manage ; 422 hub_document_invalid quand un contrôle échoue. Audité en hub.import.
Route : /api/v1/hub/import (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le document de distribution signé, en JSON. |
Retour : Any. Réponse JSON décodée de l'opération « Importer un document de distribution hors ligne ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HubApi.list_packages
list_packages() -> Any
Lister les paquets approuvés. Cibles du document accepté (projet, nom, version, image, révocation), chacune indiquant si c'est la dernière version approuvée et si elle est installée sur un cluster. Renvoie items. Permission system:read.
Route : /api/v1/hub/packages (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les paquets approuvés ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HubApi.put_settings
put_settings(body: Any = None) -> Any
Enregistrer les réglages du Hub. Enregistre la connexion au Hub et renvoie l'état. Le jeton est scellé ; laissez-le nul pour conserver celui enregistré. Permission settings:manage ; 422 hub_document_invalid quand trusted_keys_pem ne contient aucune clé publique Ed25519. Audité en hub.settings (identifiants des clés uniquement).
Route : /api/v1/hub/settings (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Adresse du Hub, client, clés et jeton. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer les réglages du Hub ».
Erreurs levées : les erreurs typées du transport (Erreurs).
HubApi.sync
sync() -> Any
Synchroniser avec le Hub. Télécharge le document du client depuis le Hub, le vérifie et l'enregistre. Exige l'URL, le client et les clés épinglées dans les réglages. Renvoie metadata_version, targets, images_loaded et changes. Permission settings:manage. Audité en hub.sync.
Route : /api/v1/hub/sync (POST).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Synchroniser avec le Hub ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe KubernetesApi
Clusters Kubernetes. Un cluster du Manager peut être un cluster Kubernetes plutôt qu'un ensemble de machines. Le Manager lui parle uniquement par son serveur d'API (jamais en SSH) avec un kubeconfig scellé, et y exécute les services du catalogue sous forme de ressources ManagedComponent du groupe platform.navin.ai : il écrit l'état souhaité (application côté serveur, gestionnaire de champs navin-manager), le Navin Platform Operator applique les charts, et toute réponse sur un composant est lue dans le statut de sa ressource. Le Navin Cluster Agent, déployé dans le cluster, reçoit des commandes signées et rend compte. Opérations de ce groupe de l'API du Navin Manager.
Resource
KubernetesApi.agent_manifests
agent_manifests(cluster_id: str, image: string = None, replicas: integer = None) -> Any
Lire les manifestes de l'agent de cluster. ServiceAccount, RBAC et Deployment de l'agent de cluster pour l'espace de noms géré, sous forme d'objets (manifests) et de YAML (yaml) prêt pour kubectl apply. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/kubernetes/agent/manifests (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
image | string | None | non | Image de l'agent épinglée par empreinte, par exemple <registry-host>/navin/cluster-agent@sha256:<64 hex>. |
replicas | integer | None | non | Réplicas du Deployment de l'agent (élection d'un leader), de 2 à 5. 2 par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les manifestes de l'agent de cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.component_action
component_action(cluster_id: str, name: str, body: Any = None) -> Any
Exécuter une action sur un composant Kubernetes. Modifie l'état souhaité : start, stop, restart ou rolling_restart (un horodatage de redémarrage), scale (replicas fixes ou autoscaling, jamais sous le budget d'interruption) ou maintenance (enabled). Répond 202 avec component et requested. Permission services:operate. Erreurs : 409 k8s_maintenance, 409 k8s_component_stopped, 409 k8s_replicas_below_pdb. Audité en k8s.component.<action>.
Route : /api/v1/clusters/{cluster_id}/kubernetes/components/{name}/actions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
name | str | oui | Nom du composant. | |
body | Any | None | non | Action et ses arguments. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une action sur un composant Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.configure_component
configure_component(cluster_id: str, name: str, body: Any = None) -> Any
Configurer un composant Kubernetes. Modifie la version, la source, les valeurs, les références de secrets ou le budget d'interruption du composant (application côté serveur). Les valeurs qui ressemblent à des secrets sont refusées : utilisez secret_refs. Permission configs:edit. Erreurs : 422 k8s_values_secret, 409 k8s_maintenance, 404 k8s_component_not_found. Audité en k8s.component.configure (noms des champs uniquement).
Route : /api/v1/clusters/{cluster_id}/kubernetes/components/{name} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
name | str | oui | Nom du composant. | |
body | Any | None | non | Champs du composant à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Configurer un composant Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.get_agent
get_agent(cluster_id: str) -> Any
Lire l'agent de cluster. État de l'identité du Navin Cluster Agent et son dernier rapport. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/kubernetes/agent (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'agent de cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.get_component
get_component(cluster_id: str, name: str) -> Any
Lire un composant Kubernetes. Lit la ressource et renvoie son état observé. Permission cluster:read ; 404 k8s_component_not_found (l'enregistrement est supprimé quand la ressource a disparu).
Route : /api/v1/clusters/{cluster_id}/kubernetes/components/{name} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
name | str | oui | Nom du composant. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un composant Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.get_target
get_target(cluster_id: str) -> Any
Lire une cible Kubernetes. Renvoie le serveur d'API, l'espace de noms, la version du serveur, le mode, la distribution et le nombre de nœuds découverts, l'heure de la découverte, la dernière erreur et le kubeconfig sous la forme {"secret": true, "set": true}. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/kubernetes (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire une cible Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.import_rbac
import_rbac(cluster_id: str, namespace: string = None, identity: string = None) -> Any
Lire le RBAC de l'identité d'import. RBAC à moindre privilège de l'identité qu'utilise le Manager pour le cluster, sous forme d'objets et de YAML, avec le nom d'utilisateur obtenu : lecture de ce dont la découverte a besoin, écriture uniquement des ressources platform.navin.ai dans l'espace de noms géré ; aucun Secret, objet RBAC, charge de travail, exec ni usurpation d'identité. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/kubernetes/import-rbac (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
namespace | string | None | non | Espace de noms géré. navin-platform par défaut. |
identity | string | None | non | Nom du ServiceAccount de l'import. navin-import par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Lire le RBAC de l'identité d'import ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.install_component
install_component(cluster_id: str, body: Any = None) -> Any
Installer un service du catalogue sur Kubernetes. Crée la ressource ManagedComponent d'un service du catalogue (chart depuis un chemin ou une référence OCI épinglée par empreinte) et renvoie son état (201). Les valeurs qui ressemblent à des secrets sont refusées. Permission services:install. Erreurs : 409 k8s_component_exists, 422 k8s_values_secret, 409 k8s_replicas_below_pdb. Audité en k8s.component.install.
Route : /api/v1/clusters/{cluster_id}/kubernetes/components (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Service, source, valeurs, réplicas et politiques du composant. |
Retour : Any. Réponse JSON décodée de l'opération « Installer un service du catalogue sur Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.issue
issue(cluster_id: str, body: Any = None) -> Any
Émettre l'identité de l'agent de cluster. Émet le certificat client et la configuration du Navin Cluster Agent : certificate_pem, private_key_pem (renvoyée une seule fois, jamais conservée), ca_pem, manager_public_key_pem, config, fingerprint et not_after (201). Permission cluster:manage ; 422 k8s_agent_gateway_url_invalid. Audité en k8s.agent.issue.
Route : /api/v1/clusters/{cluster_id}/kubernetes/agent (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | URL de la passerelle, locataire et délai hors ligne de l'agent. |
Retour : Any. Réponse JSON décodée de l'opération « Émettre l'identité de l'agent de cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.last_discovery
last_discovery(cluster_id: str) -> Any
Lire la dernière découverte d'un cluster Kubernetes. Renvoie l'inventaire de la dernière découverte. Permission cluster:read ; 404 k8s_not_discovered.
Route : /api/v1/clusters/{cluster_id}/kubernetes/discovery (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire la dernière découverte d'un cluster Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.list_commands
list_commands(cluster_id: str) -> Any
Lister les commandes de l'agent de cluster. Les 200 dernières commandes mises en file pour l'agent de cluster, chacune avec ses reçus. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/kubernetes/agent/commands (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les commandes de l'agent de cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.list_components
list_components(cluster_id: str) -> Any
Lister les composants Kubernetes. Liste en direct : chaque ManagedComponent de l'espace de noms avec son statut, qui est aussi inscrit dans le modèle du Manager. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/kubernetes/components (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les composants Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.patch_target
patch_target(cluster_id: str, body: Any = None) -> Any
Modifier une cible Kubernetes. Modifie le serveur d'API, le kubeconfig (renvoyez l'objet relu pour le conserver) ou l'espace de noms (refusé tant que des composants restent) ; le contrôle du kubeconfig s'exécute à nouveau. Permission cluster:manage. Erreurs : 422 validation_error, 409 k8s_components_remain. Audité en k8s.cluster.update.
Route : /api/v1/clusters/{cluster_id}/kubernetes (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Champs de la cible à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une cible Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.queue_command
queue_command(cluster_id: str, body: Any = None) -> Any
Mettre en file une commande signée pour l'agent de cluster. Enregistre la décision d'autorisation, puis met en file une commande signée (managedcomponent.apply, managedcomponent.delete ou inventory.report) que l'agent récupère. Répond 202 avec la commande. Permission services:operate. Audité en k8s.agent.policy.
Route : /api/v1/clusters/{cluster_id}/kubernetes/agent/commands (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Opération, paramètres, clé d'idempotence et validité. |
Retour : Any. Réponse JSON décodée de l'opération « Mettre en file une commande signée pour l'agent de cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.register
register(cluster_id: str, body: Any = None) -> Any
Enregistrer un cluster Kubernetes. Contrôle le kubeconfig par rapport au serveur d'API fourni, appelle /version, scelle le kubeconfig et fait du cluster un cluster Kubernetes. Le cluster ne doit avoir aucune machine. Renvoie la cible (201). Permission cluster:manage. Erreurs : 409 k8s_already_registered, 409 k8s_cluster_has_hosts, erreurs du contrôle du kubeconfig et de l'API. Audité en k8s.cluster.register.
Route : /api/v1/clusters/{cluster_id}/kubernetes (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Serveur d'API, kubeconfig et espace de noms. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer un cluster Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.remove_component
remove_component(cluster_id: str, name: str) -> Any
Retirer un composant Kubernetes. Supprime la ressource ManagedComponent ; l'opérateur désinstalle le chart. Répond 202 avec {"name", "state": "removed"} une fois la ressource disparue, sinon le composant en cours de suppression. Permission services:install. Erreurs : 404 k8s_component_not_found, 409 k8s_maintenance. Audité en k8s.component.remove.
Route : /api/v1/clusters/{cluster_id}/kubernetes/components/{name} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
name | str | oui | Nom du composant (la ressource ManagedComponent). |
Retour : Any. Réponse JSON décodée de l'opération « Retirer un composant Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.revoke
revoke(cluster_id: str) -> Any
Révoquer l'identité de l'agent de cluster. Révoque l'identité du Navin Cluster Agent. Répond 204. Permission cluster:manage ; 404 k8s_agent_not_registered. Audité en k8s.agent.revoke.
Route : /api/v1/clusters/{cluster_id}/kubernetes/agent (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer l'identité de l'agent de cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.run_discovery
run_discovery(cluster_id: str) -> Any
Découvrir un cluster Kubernetes. Lit, par des appels en lecture seule, la version, la distribution (fournie par le client ou gérée), les nœuds avec leur capacité et leurs GPU, les classes de stockage et d'ingress, CoreDNS et les modules de la plateforme (cert-manager, Cilium, Kyverno, Argo CD, KEDA...). Enregistre et renvoie l'inventaire. Permission hosts:manage. Audité en k8s.discovery.
Route : /api/v1/clusters/{cluster_id}/kubernetes/discovery (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Découvrir un cluster Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
KubernetesApi.unregister
unregister(cluster_id: str) -> Any
Désenregistrer un cluster Kubernetes. Oublie le serveur d'API et le kubeconfig ; le cluster redevient un cluster de machines. Refusé tant que des composants restent (409 k8s_components_remain). Répond 204. Permission cluster:manage. Audité en k8s.cluster.unregister.
Route : /api/v1/clusters/{cluster_id}/kubernetes (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Désenregistrer un cluster Kubernetes ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe LifecycleApi
Cycle de vie. Le cycle de vie d'un cluster et de ses services après l'installation : profil d'installation et approbations, contrôles préalables, contrôles de vivacité, de disponibilité et de fonctionnement, mises à niveau avec retour arrière et restauration, sauvegardes et restaurations coordonnées, détection des dérives, archives de support expurgées, rapports de recette signés et fiche uniforme de composant. Opérations de ce groupe de l'API du Navin Manager.
Resource
LifecycleApi.acceptance_key
acceptance_key() -> Any
Lire la clé publique qui signe les rapports de recette. Renvoie algorithm (Ed25519), key_id et public_key_pem, pour vérifier un rapport hors ligne. Tout utilisateur connecté.
Route : /api/v1/acceptance/public-key (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la clé publique qui signe les rapports de recette ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.cluster_profile
cluster_profile(cluster_id: str, profile: string | null = None) -> Any
Évaluer le profil d'un cluster. Chaque règle du profil du cluster (ou de profile, pour comparer avant d'en choisir un) évaluée par rapport à l'état réel, chacune avec son status (pass ou fail), son libellé et sa raison ; le statut est bloqué quand une règle échoue. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/profile (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
profile | string | null | None | non | Profil à évaluer à la place du profil courant : development, standard, banking-secure, air-gapped ou hybrid. |
Retour : Any. Réponse JSON décodée de l'opération « Évaluer le profil d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.component_sheet
component_sheet(cluster_id: str, service: str) -> Any
Lire la fiche de composant d'un service. Chaque onglet de la fiche uniforme de composant, à partir de l'état observé : overview, instances, config, dependencies, logs, metrics, security (TLS, points d'accès, secrets définis ou non, ports, certificats, utilisateurs d'exécution, profil), operations, upgrade, backups, audit et support. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/sheet (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire la fiche de composant d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.create_backup
create_backup(cluster_id: str, body: Any = None) -> Any
Prendre une sauvegarde coordonnée. Lance une opération qui sauvegarde les services fournis (par défaut tous les services sauvegardables) dans l'ordre des dépendances, avec un set_id commun ; le lot ne réussit que si chaque membre a réussi. Renvoie operation_id, set_id et backup_ids. Permission services:operate. Audité en backup.create.
Route : /api/v1/clusters/{cluster_id}/backups (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Services à sauvegarder. |
Retour : Any. Réponse JSON décodée de l'opération « Prendre une sauvegarde coordonnée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.create_bundle
create_bundle(cluster_id: str) -> Any
Construire une archive de support. Lance une opération qui rassemble les fins de journaux, le profil, les machines, les versions et états des services, la configuration produite, les alertes ouvertes, les constats de dérive et l'historique des opérations dans une archive tar.gz où chaque secret et chaque donnée personnelle est masqué. Renvoie operation_id et bundle_id. Permission cluster:manage. Audité en support.bundle.
Route : /api/v1/clusters/{cluster_id}/support-bundles (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Construire une archive de support ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.create_report
create_report(cluster_id: str) -> Any
Lancer une recette. Lance l'opération acceptance.run : contrôles préalables du cluster, vivacité de chaque instance en marche, disponibilité et test fonctionnel de chaque service géré (chaque étape tolère ses échecs pour que tous les contrôles s'exécutent), puis le rapport signé. Renvoie operation_id et report_id. Permission services:install. Audité en acceptance.run.
Route : /api/v1/clusters/{cluster_id}/acceptance-reports (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lancer une recette ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.decide_approval
decide_approval(cluster_id: str, approval_id: str, body: Any = None) -> Any
Approuver ou rejeter une demande d'approbation. Tranche une demande en attente ; le demandeur ne peut pas trancher la sienne. Renvoie l'approbation. Permission cluster:manage. Erreurs : 404 approval_invalid, 409 approval_not_pending, 403 approval_self. Audité en approval.approve ou approval.reject.
Route : /api/v1/clusters/{cluster_id}/approvals/{approval_id}/decision (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
approval_id | str | oui | Identifiant de la demande d'approbation. | |
body | Any | None | non | La décision. |
Retour : Any. Réponse JSON décodée de l'opération « Approuver ou rejeter une demande d'approbation ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.download_bundle
download_bundle(cluster_id: str, bundle_id: str) -> Any
Télécharger une archive de support. Renvoie l'archive navin-support-<heure>.tar.gz d'une archive réussie. Permission cluster:manage ; 404 bundle_not_found. Audité en support.bundle_download.
Route : /api/v1/clusters/{cluster_id}/support-bundles/{bundle_id}/download (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
bundle_id | str | oui | Identifiant de l'archive de support. |
Retour : Any. Réponse JSON décodée de l'opération « Télécharger une archive de support ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.drift_reconcile
drift_reconcile(cluster_id: str, finding_id: str, body: Any = None) -> Any
Corriger un constat de dérive. Réécrit les fichiers et unités de l'instance qui a dérivé à partir de la configuration du Manager (et la redémarre si demandé). Renvoie operation_id. Permission configs:edit. Erreurs : 404 drift_not_found, 409 drift_not_reconcilable (un fichier qui n'appartient à aucun service). Audité en drift.reconcile.
Route : /api/v1/clusters/{cluster_id}/drift/{finding_id}/reconcile (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
finding_id | str | oui | Identifiant du constat de dérive. | |
body | Any | None | non | Option de redémarrage et approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Corriger un constat de dérive ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.drift_report
drift_report(cluster_id: str, resolved: boolean = None) -> Any
Lire le rapport de dérive d'un cluster. Constats des derniers contrôles : fichiers et unités gérés modifiés, supprimés ou remplacés en dehors du Manager, avec machine, service, composant et chemin. Les constats ouverts lèvent l'alerte config_drift. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/drift (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
resolved | boolean | None | non | Renvoyer aussi les constats résolus. Faux par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Lire le rapport de dérive d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.drift_scan
drift_scan(cluster_id: str, body: Any = None) -> Any
Rechercher les dérives du cluster. Lance une opération avec une tâche d'empreintes par machine sur les fichiers et unités écrits par le Manager ; les différences ouvrent des constats. Renvoie operation_id. Permission services:operate. Audité en drift.scan.
Route : /api/v1/clusters/{cluster_id}/drift/scan (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Machines à contrôler. |
Retour : Any. Réponse JSON décodée de l'opération « Rechercher les dérives du cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.get_report
get_report(cluster_id: str, report_id: str) -> Any
Lire un rapport de recette signé. Renvoie le document signé : un élément par contrôle avec PASS, FAIL ou BLOCKED et sa preuve, le verdict (FAIL quand un élément a échoué, BLOCKED quand aucun n'a échoué et qu'un est bloqué, sinon PASS) et la signature. Permission cluster:read ; 404 acceptance_not_found tant que l'exécution n'a pas réussi.
Route : /api/v1/clusters/{cluster_id}/acceptance-reports/{report_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
report_id | str | oui | Identifiant du rapport de recette. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un rapport de recette signé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.list_approvals
list_approvals(cluster_id: str) -> Any
Lister les approbations d'un cluster. Les 200 dernières approbations, de la plus récente à la plus ancienne : action, service, reason, status (pending, approved, rejected, expired ou used), demandeur, décideur, l'opération qui l'a utilisée et les horaires. Les approbations échues sont d'abord marquées expired. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/approvals (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les approbations d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.list_backups
list_backups(cluster_id: str, service: string | null = None) -> Any
Lister les sauvegardes de services d'un cluster. Renvoie backupable (les services installés dont le catalogue déclare une sauvegarde) et les 300 dernières sauvegardes avec leur service, machine, lot, statut, fichiers et empreintes. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/backups (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | string | null | None | non | Uniquement les sauvegardes de ce service. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les sauvegardes de services d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.list_bundles
list_bundles(cluster_id: str) -> Any
Lister les archives de support d'un cluster. Les 50 dernières archives avec leur statut, leur taille, leur SHA-256, leur contenu, leurs masquages et leur opération. Permission cluster:manage.
Route : /api/v1/clusters/{cluster_id}/support-bundles (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les archives de support d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.list_profiles
list_profiles() -> Any
Lister les profils d'installation. Chaque profil avec son libellé et sa description dans les deux langues, ses règles, l'exigence ou non d'approbations et la sévérité des règles réseau. Tout utilisateur connecté.
Route : /api/v1/profiles (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les profils d'installation ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.list_reports
list_reports(cluster_id: str) -> Any
Lister les rapports de recette d'un cluster. Les 100 dernières exécutions de recette du cluster, de la plus récente à la plus ancienne, avec leur statut, leur verdict et leur opération. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/acceptance-reports (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les rapports de recette d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.list_upgrades
list_upgrades(cluster_id: str) -> Any
Lister les mises à niveau d'un cluster. Les 200 dernières mises à niveau de chaque service avec leurs versions, leur statut, leur sauvegarde et leurs opérations. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/upgrades (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les mises à niveau d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.report_html
report_html(cluster_id: str, report_id: str, lang: "en" | "fr" = None) -> Any
Lire un rapport de recette en HTML. Produit le rapport sous forme de page HTML autonome dans la langue demandée, pour l'imprimer ou l'archiver. Permission cluster:read ; 404 acceptance_not_found.
Route : /api/v1/clusters/{cluster_id}/acceptance-reports/{report_id}/html (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
report_id | str | oui | Identifiant du rapport de recette. | |
lang | "en" | "fr" | None | non | Langue de la page : en (par défaut) ou fr. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un rapport de recette en HTML ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.request_approval
request_approval(cluster_id: str, body: Any = None) -> Any
Demander une approbation. Enregistre une demande en attente pour une action perturbatrice sur un service ; un autre utilisateur la tranche. Renvoie l'approbation (201). Permission services:operate. Audité en approval.request.
Route : /api/v1/clusters/{cluster_id}/approvals (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Action, service et raison. |
Retour : Any. Réponse JSON décodée de l'opération « Demander une approbation ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.restore_backup
restore_backup(cluster_id: str, backup_id: str, body: Any = None) -> Any
Restaurer une sauvegarde de service. Lance l'opération de restauration : arrêt des instances, contrôle des empreintes, étapes de restauration, démarrage des instances, contrôles de santé, étapes de vérification, contrôle de service et test fonctionnel. Renvoie operation_id. Permission services:install ; une approbation sous banking-secure. Audité en backup.restore.
Route : /api/v1/clusters/{cluster_id}/backups/{backup_id}/restore (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
backup_id | str | oui | Identifiant de la sauvegarde de service. | |
body | Any | None | non | Approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Restaurer une sauvegarde de service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.restore_upgrade
restore_upgrade(cluster_id: str, upgrade_id: str, body: Any = None) -> Any
Restaurer la sauvegarde prise avant une mise à niveau. Lance l'opération qui ramène la version précédente et ses données depuis la sauvegarde prise avant la mise à niveau, quand un retour arrière n'est pas possible. Renvoie operation_id. Permission services:install ; 404 upgrade_not_found ; une approbation sous banking-secure. Audité en service.restore.
Route : /api/v1/clusters/{cluster_id}/upgrades/{upgrade_id}/restore (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
upgrade_id | str | oui | Identifiant de la mise à niveau. | |
body | Any | None | non | Approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Restaurer la sauvegarde prise avant une mise à niveau ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.rollback
rollback(cluster_id: str, upgrade_id: str, body: Any = None) -> Any
Annuler une mise à niveau. Lance l'opération qui rejoue les tâches scellées de la version précédente et rétablit la version de configuration précédente. Refusé quand le descripteur le déclare impossible ou qu'une migration irréversible a eu lieu (utilisez alors la restauration). Renvoie operation_id. Permission services:install ; 404 upgrade_not_found. Audité en service.rollback.
Route : /api/v1/clusters/{cluster_id}/upgrades/{upgrade_id}/rollback (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
upgrade_id | str | oui | Identifiant de la mise à niveau. | |
body | Any | None | non | Approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Annuler une mise à niveau ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.run_preflight
run_preflight(cluster_id: str, body: Any = None) -> Any
Lancer les contrôles préalables d'installation d'un cluster. Chaque contrôle qui doit réussir avant l'installation ou la mise à niveau d'un service, avec sa sévérité, sa preuve et un verdict bloquant : caractéristiques des machines, DNS, contrôles préalables du catalogue, pare-feu, capacité, versions, TLS et règles du profil. Un contrôle en fail bloque. Rien n'est modifié. Permission services:install.
Route : /api/v1/clusters/{cluster_id}/preflight (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Services et machines à contrôler. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer les contrôles préalables d'installation d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.service_checks
service_checks(cluster_id: str, service: str) -> Any
Lire les contrôles d'un service. Vivacité de chaque instance (contrôles de santé de l'agent), disponibilité (contrôle de service) et test fonctionnel, chacun avec son statut, ses résultats, son erreur et son heure. Seul un test fonctionnel réussi prouve que le service fonctionne. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/checks (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les contrôles d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.set_profile
set_profile(cluster_id: str, body: Any = None) -> Any
Changer le profil d'un cluster. Définit le profil d'installation et renvoie son évaluation. Permission cluster:manage. Audité en cluster.profile avec l'ancien et le nouveau profil.
Route : /api/v1/clusters/{cluster_id}/profile (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Le nouveau profil. |
Retour : Any. Réponse JSON décodée de l'opération « Changer le profil d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.start_upgrade
start_upgrade(cluster_id: str, service: str, body: Any = None) -> Any
Mettre à niveau un service. Met à niveau le service vers la version du catalogue en une seule opération :
Route : /api/v1/clusters/{cluster_id}/services/{service}/upgrade (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Machine canari et approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Mettre à niveau un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.upgrade_info
upgrade_info(cluster_id: str, service: str) -> Any
Vérifier si un service peut être mis à niveau. Renvoie from (version installée), to (version du catalogue), allowed avec les problèmes problems, stateful, backup_before, les migrations, la possibilité d'un retour arrière rollback, la matrice de mise à niveau et l'historique history des 50 dernières mises à niveau. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/upgrade (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Vérifier si un service peut être mis à niveau ».
Erreurs levées : les erreurs typées du transport (Erreurs).
LifecycleApi.verify_report
verify_report(body: Any = None) -> Any
Vérifier la signature d'un rapport de recette. Contrôle la signature Ed25519 d'un document de rapport avec la clé de ce Manager et renvoie valid, trusted, key_id et la raison reason d'un refus. Tout utilisateur connecté.
Route : /api/v1/acceptance/verify (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le document de rapport signé. |
Retour : Any. Réponse JSON décodée de l'opération « Vérifier la signature d'un rapport de recette ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe McpApi
Serveurs MCP. Les serveurs MCP (Model Context Protocol) d'un projet de locataire : créés à partir d'un modèle de la bibliothèque Navin ou saisis par un administrateur, testés, et éventuellement hébergés sur le service mcp-host d'un cluster. Opérations de ce groupe de l'API du Navin Manager.
Resource
McpApi.create_server
create_server(body: Any = None) -> Any
Créer un serveur MCP. Crée un serveur à partir d'un modèle (ses champs obligatoires sont exigés) ou un serveur personnalisé, et le renvoie (201). Un modèle dont l'URL n'est pas interne exige url réglé sur l'adresse interne de son serveur. Permission mcp:manage. Erreurs : 422 mcp_fields_missing, 422 mcp_fields_unknown, 422 mcp_target_required, 422 mcp_online_forbidden, 404 mcp_preset_not_found, 409 mcp_server_name_taken. Audité en mcp.create.
Route : /api/v1/mcp/servers (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Locataire, projet et définition du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un serveur MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.delete_server
delete_server(server_id: str, tenant: string = None, project: string = None) -> Any
Supprimer un serveur MCP. Supprime le serveur ; un serveur hébergé est d'abord retiré de son hébergement. Répond 204. Permission mcp:manage ; 404 mcp_server_not_found. Audité en mcp.delete.
Route : /api/v1/mcp/servers/{server_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
tenant | string | None | non | Identifiant court du locataire du serveur : lettres minuscules, chiffres et -, 63 caractères au plus. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un serveur MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.get_server
get_server(server_id: str, tenant: string = None, project: string = None) -> Any
Lire un serveur MCP. Renvoie le serveur avec son transport, son URL ou sa commande, ses outils autorisés, les noms des champs configurés et secrets, son dernier test et son hébergement (état, cluster, URL ; jamais le jeton). Permission mcp:read ; 404 mcp_server_not_found.
Route : /api/v1/mcp/servers/{server_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
tenant | string | None | non | Identifiant court du locataire du serveur. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un serveur MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.host_server
host_server(server_id: str, body: Any = None, tenant: string = None, project: string = None) -> Any
Héberger un serveur MCP stdio sur un cluster. Héberge un serveur stdio sur le service mcp-host d'un cluster : un nouveau jeton porteur (scellé ; l'environnement d'exécution ne reçoit que son SHA-256), statut deploying, puis l'opération mcp.hosting.apply qui écrit servers.json sur chaque instance ; le statut devient hosted ou failed. Répond 202 avec le serveur et operation_id. Permission mcp:manage. Erreurs : 422 mcp_hosting_stdio_only, 409 mcp_hosting_disabled, 409 mcp_host_not_installed. Audité en mcp.host.
Route : /api/v1/mcp/servers/{server_id}/hosting (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
body | Any | None | non | Cluster et limites de l'hébergement. |
tenant | string | None | non | Identifiant court du locataire du serveur. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Héberger un serveur MCP stdio sur un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.hosted_servers
hosted_servers(tenant: string = None, project: string | null = None) -> Any
Lister les serveurs MCP hébergés avec leurs jetons. Serveurs hébergés d'un locataire (un projet ou tous) avec url, le jeton porteur token, allowed_tools, status et hosted_at, pour la plateforme Navin Enterprise. Permission mcp:publish (rôle admin uniquement). Audité en mcp.hosted_list (identifiants uniquement, jamais un jeton).
Route : /api/v1/mcp/hosted (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
tenant | string | None | non | Identifiant court du locataire. |
project | string | null | None | non | Identifiant court du projet ; tous les projets du locataire s'il est absent. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les serveurs MCP hébergés avec leurs jetons ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.hosting_infrastructure
hosting_infrastructure(cluster_id: string | null = None) -> Any
Lire l'infrastructure d'hébergement MCP. Par cluster : installation ou non de mcp-host, ses instances (FQDN, URL de base, état) et le nombre de serveurs que chacune héberge. Un serveur est placé sur une instance d'après une empreinte de son identifiant. Permission mcp:read.
Route : /api/v1/mcp/hosting (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | string | null | None | non | Uniquement ce cluster (UUID). |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'infrastructure d'hébergement MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.list_presets
list_presets() -> Any
Lister les modèles MCP. Modèles de la bibliothèque Navin (nom, catégorie, transport, hébergement, champs à remplir), triés par catégorie et par nom. Permission mcp:read ; 503 mcp_presets_unavailable.
Route : /api/v1/mcp/presets (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les modèles MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.list_servers
list_servers(tenant: string = None, project: string = None) -> Any
Lister les serveurs MCP d'un projet. Serveurs d'un projet d'un locataire (les deux obligatoires), sans aucune valeur secrète. Permission mcp:read.
Route : /api/v1/mcp/servers (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
tenant | string | None | non | Identifiant court du locataire. |
project | string | None | non | Identifiant court du projet. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les serveurs MCP d'un projet ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.renew_token
renew_token(server_id: str, tenant: string = None, project: string = None) -> Any
Renouveler le jeton d'un serveur MCP hébergé. Émet un nouveau jeton porteur et l'applique ; l'ancien jeton cesse de fonctionner une fois l'application faite. Répond 202. Permission mcp:manage. Erreurs : 409 mcp_not_hosted, 409 mcp_hosting_disabled. Audité en mcp.hosting_token.
Route : /api/v1/mcp/servers/{server_id}/hosting/token (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
tenant | string | None | non | Identifiant court du locataire du serveur. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Renouveler le jeton d'un serveur MCP hébergé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.test_server
test_server(server_id: str, tenant: string = None, project: string = None) -> Any
Tester un serveur MCP. Parle MCP au serveur (initialize, notifications/initialized, tools/list) en HTTP en flux, en SSE, ou sur l'entrée et la sortie standard de la commande quand elle est dans le PATH (sans shell, avec un délai) ; un serveur hébergé est testé à son URL d'hébergement avec son jeton. Renvoie et conserve dans last_test le résultat {ok, tools, server_info, error, tested_at} ; une erreur ne répète jamais une valeur secrète. Permission mcp:manage ; 422 mcp_online_forbidden. Audité en mcp.test.
Route : /api/v1/mcp/servers/{server_id}/test (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
tenant | string | None | non | Identifiant court du locataire du serveur. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Tester un serveur MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.unhost_server
unhost_server(server_id: str, tenant: string = None, project: string = None) -> Any
Arrêter l'hébergement d'un serveur MCP. Retire le serveur de son hébergement : statut removing, puis l'opération mcp.hosting.apply sans lui (none à la fin). Répond 202 avec le serveur et operation_id. Permission mcp:manage ; 409 mcp_not_hosted. Audité en mcp.unhost.
Route : /api/v1/mcp/servers/{server_id}/hosting (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
tenant | string | None | non | Identifiant court du locataire du serveur. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Arrêter l'hébergement d'un serveur MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpApi.update_server
update_server(server_id: str, body: Any = None, tenant: string = None, project: string = None) -> Any
Modifier un serveur MCP. Modifie les champs fournis et renvoie le serveur. values est fusionné avec les valeurs enregistrées ; url, command, args, headers et env ne s'appliquent qu'aux serveurs personnalisés (422 mcp_custom_only). Désactiver un serveur hébergé le retire de son hébergement. Permission mcp:manage. Erreurs : 422 mcp_fields_unknown, 422 mcp_online_forbidden. Audité en mcp.update.
Route : /api/v1/mcp/servers/{server_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant du serveur MCP. | |
body | Any | None | non | Champs du serveur à modifier. |
tenant | string | None | non | Identifiant court du locataire du serveur. |
project | string | None | non | Identifiant court du projet du serveur. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un serveur MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe McpRuntimeApi
Environnement d'exécution MCP. L'environnement d'exécution MCP d'un cluster Kubernetes : le ToolHive Kubernetes Operator, installé à partir de charts épinglés, et les instances éphémères de serveurs MCP qu'y crée le contrôleur de cycle de vie du Control Plane. Opérations de ce groupe de l'API du Navin Manager.
Resource
McpRuntimeApi.destroy_instance
destroy_instance(cluster_id: str, namespace: str, name: str) -> Any
Supprimer une instance MCP gérée. Supprime un MCPServer géré (précondition sur l'uid) ; le contrôleur du Control Plane révoque ensuite ses identifiants et le clôt. Renvoie namespace, name, instance_id et state (deleting). Permission services:operate. Erreurs : 404 mcp_runtime_instance_not_found, 502 mcp_runtime_forbidden (l'identité du Manager n'a pas le droit). Audité en mcp_runtime.instance.destroy.
Route : /api/v1/clusters/{cluster_id}/mcp-runtime/instances/{namespace}/{name} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
namespace | str | oui | Espace de noms de projet de l'instance, mcp-<12 hex>. | |
name | str | oui | Nom de l'objet MCPServer. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une instance MCP gérée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpRuntimeApi.install_toolhive
install_toolhive(cluster_id: str) -> Any
Installer l'opérateur ToolHive. Écrit les deux ressources ManagedComponent de ToolHive (CRD, puis opérateur) dans toolhive-system, épinglées par empreinte. Renvoie namespace, version et les composants écrits components (201). Permission services:install ; 409 mcp_runtime_installed. Audité en mcp_runtime.install.
Route : /api/v1/clusters/{cluster_id}/mcp-runtime/install (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Installer l'opérateur ToolHive ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpRuntimeApi.restart_instance
restart_instance(cluster_id: str, namespace: str, name: str) -> Any
Redémarrer une instance MCP gérée. Redémarre un MCPServer géré sans changer sa spécification : un correctif de fusion de l'annotation mcpserver.toolhive.stacklok.dev/restarted-at vers une nouvelle heure RFC 3339 (redémarrage progressif par l'opérateur), avec l'uid en précondition. Renvoie namespace, name, instance_id, state (restarting) et restarted_at. Permission services:operate ; 404 mcp_runtime_instance_not_found. Audité en mcp_runtime.instance.restart.
Route : /api/v1/clusters/{cluster_id}/mcp-runtime/instances/{namespace}/{name}/restart (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
namespace | str | oui | Espace de noms de projet de l'instance, mcp-<12 hex>. | |
name | str | oui | Nom de l'objet MCPServer. |
Retour : Any. Réponse JSON décodée de l'opération « Redémarrer une instance MCP gérée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
McpRuntimeApi.runtime_state
runtime_state(cluster_id: str, tenant: string | null = None, project: string | null = None) -> Any
Lire l'état de l'environnement MCP. Renvoie l'état de l'opérateur operator (avec crd_installed), les composants ToolHive components, le preset, les instances gérées items (filtrées par tenant et project), les objets ignorés ignored, les agrégats aggregates par locataire et par projet (toujours sur toutes les instances gérées) et observed_at. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/mcp-runtime (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
tenant | string | null | None | non | Uniquement les instances de ce locataire (valeur d'étiquette, 63 caractères au plus). |
project | string | null | None | non | Uniquement les instances de ce projet (valeur d'étiquette, 63 caractères au plus). |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'état de l'environnement MCP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe MeApi
Mon profil. Le profil de l'utilisateur connecté et ses jetons d'API personnels. Opérations de ce groupe de l'API du Navin Manager.
Resource
MeApi.list_tokens
list_tokens() -> Any
Lister mes jetons d'API. Liste tous les jetons de l'appelant, du plus récent au plus ancien, révoqués compris : id, name, prefix, permissions (nul : toutes les permissions de l'utilisateur), expires_at, last_used_at, revoked_at, created_at. Le secret n'est jamais renvoyé.
Route : /api/v1/me/tokens (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister mes jetons d'API ».
Erreurs levées : les erreurs typées du transport (Erreurs).
MeApi.me
me() -> Any
Lire mon profil. Renvoie le compte de l'appelant : identifiant, nom d'utilisateur, nom affiché, e-mail, origine (local, ldap, oidc), attributions de rôle, état de la MFA, langue, verrouillage et dernière connexion.
Route : /api/v1/me (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire mon profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
MeApi.revoke_token
revoke_token(token_id: str) -> Any
Révoquer un de mes jetons d'API. Révoque le jeton immédiatement (le révoquer à nouveau est sans effet). Session de navigateur uniquement. Répond 204 ; 404 token_not_found quand le jeton ne vous appartient pas. Audité en token.revoke.
Route : /api/v1/me/tokens/{token_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
token_id | str | oui | Identifiant du jeton d'API, issu de GET /me/tokens. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer un de mes jetons d'API ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe MetaApi
Version. Métadonnées publiques du Manager. Aucune authentification n'est nécessaire. Opérations de ce groupe de l'API du Navin Manager.
Resource
MetaApi.version
version() -> Any
Lire la version du Manager. Renvoie name (navin-manager), version, environment et la pile stack du catalogue (name, version, nombre de services). Public.
Route : /api/v1/version (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la version du Manager ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe MirrorApi
Miroir local. Le miroir local contient les paquets, les images de conteneurs et les paquets Python que les agents installent, afin qu'un site sans accès Internet (ou sous les profils banking-secure et air-gapped) ne télécharge jamais rien de l'extérieur. Il est alimenté par un lot hors ligne décrit par un manifeste. Opérations de ce groupe de l'API du Navin Manager.
Resource
MirrorApi.reload
reload(verify: boolean = None) -> Any
Recharger le manifeste du miroir. Relit le manifeste du miroir et remplace les artefacts enregistrés par son contenu ; chaque fichier doit exister. Renvoie ce qui a été chargé. Permission settings:manage. Erreurs : 409 mirror_manifest_missing, 422 mirror_manifest_invalid. Audité en mirror.reload (résultat failure avec le code d'erreur quand le manifeste est refusé).
Route : /api/v1/mirror/reload (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
verify | boolean | None | non | Contrôler aussi l'empreinte SHA-256 de chaque fichier par rapport au manifeste (plus lent). Faux par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Recharger le manifeste du miroir ».
Erreurs levées : les erreurs typées du transport (Erreurs).
MirrorApi.status
status() -> Any
Lire l'état du miroir. Renvoie l'url et le registre registry du miroir, manifest_loaded, loaded_at, le nombre d'artifacts, d'images et de paquets python chargés, et missing, ce dont le catalogue a besoin et qui manque au miroir. Permission system:read.
Route : /api/v1/mirror (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire l'état du miroir ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe NavinSmApi
Navin SM. Navin SM est la version de Navin (poste de travail et CLI) qu'une organisation remet à son personnel, avec un fichier qui dirige Navin vers le proxy LiteLLM de l'organisation et ses modèles (Azure, Bedrock, vLLM... derrière LiteLLM), éventuellement de façon exclusive (aucun autre fournisseur permis). Un profil est ce fichier : l'organisation, la passerelle (adresse, authentification, en-têtes, autorité de certification, modèles, modèle par défaut, routes, mode exclusif) et la politique gérée que Navin applique (permissions, liste des serveurs MCP permis, plugins, hooks, contournement des demandes de permission, environnement imposé). Opérations de ce groupe de l'API du Navin Manager.
Resource
NavinSmApi.assignable_users
assignable_users(q: string = None) -> Any
Lister les utilisateurs à qui attribuer une clé. Utilisateurs actifs du Manager (50 au plus, triés par nom) dont le nom, le nom affiché ou le courriel contient q, avec id, username, display_name, email et source. Permission navin_sm:keys.
Route : /api/v1/navin-sm/users (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
q | string | None | non | Texte cherché dans le nom, le nom affiché et le courriel (100 caractères au plus). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les utilisateurs à qui attribuer une clé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.block_key
block_key(profile_id: str, key_id: str) -> Any
Bloquer une clé. Bloque la clé au proxy (POST /key/block) : elle est refusée aussitôt et peut être débloquée. Renvoie la clé avec l'état blocked. Permission navin_sm:keys. Erreurs : 404 navin_sm_key_not_found, 409 navin_sm_key_revoked, 409 navin_sm_key_gone, 409 navin_sm_profile_not_linked, 409 navin_sm_master_key_missing, 502 navin_sm_proxy_refused ou navin_sm_proxy_failed. Audité en navin_sm.key.block.
Route : /api/v1/navin-sm/profiles/{profile_id}/keys/{key_id}/block (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
key_id | str | oui | Identifiant de la clé dans le Manager. |
Retour : Any. Réponse JSON décodée de l'opération « Bloquer une clé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.create_key
create_key(profile_id: str, body: Any = None) -> Any
Émettre une clé virtuelle. Émet une clé auprès du service LiteLLM auquel le profil est lié (POST /key/generate avec la clé maître gardée dans le serveur) pour un utilisateur du Manager ou un groupe du fournisseur d'identité, et répond 201 {key, item} : key est renvoyée ici et jamais plus, le Manager ne garde que l'alias et le sha256 que LiteLLM utilise comme identifiant. L'utilisateur LiteLLM est navin-sm:<org_id>:<kind>:<bénéficiaire>, l'alias navin-sm.<org_id>.<bénéficiaire>.<aléa>. Permission navin_sm:keys. Erreurs : 404 navin_sm_profile_not_found, 404 navin_sm_user_not_found, 422 navin_sm_assignee_required, 422 navin_sm_key_models_unknown (modèle hors du profil), 409 navin_sm_profile_not_linked, 409 navin_sm_master_key_missing, 409 navin_sm_key_alias_taken, 502 navin_sm_proxy_refused ou navin_sm_proxy_failed. Audité en navin_sm.key.create (identifiant et alias, jamais la clé).
Route : /api/v1/navin-sm/profiles/{profile_id}/keys (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
body | Any | None | non | Bénéficiaire, modèles et limites de la nouvelle clé. |
Retour : Any. Réponse JSON décodée de l'opération « Émettre une clé virtuelle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.create_profile
create_profile(body: Any = None) -> Any
Créer un profil Navin SM. Crée le profil et le renvoie (201). Permission settings:manage, et vault:manage avec un shared_key_ref. Erreurs (422 sauf mention) : navin_sm_org_id_invalid, navin_sm_value_empty, navin_sm_value_duplicate, navin_sm_base_url_invalid, navin_sm_base_url_chat, navin_sm_shared_key_ref_required, navin_sm_shared_key_ref_forbidden, navin_sm_vault_entry_not_found, navin_sm_header_invalid, navin_sm_header_secret, navin_sm_models_count, navin_sm_model_duplicate, navin_sm_default_model_unknown, navin_sm_route_invalid, navin_sm_route_unknown, navin_sm_env_invalid, navin_sm_env_secret, 409 navin_sm_org_taken. Audité en navin_sm.create.
Route : /api/v1/navin-sm/profiles (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le profil. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un profil Navin SM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.delete_package
delete_package(filename: str) -> Any
Retirer un paquet stocké. Supprime le fichier stocké ; son SHA256 publié reste enregistré. Répond 204. Permission settings:manage. Erreurs : 404 navin_sm_package_unknown, 404 navin_sm_package_missing. Audité en navin_sm.package.delete.
Route : /api/v1/navin-sm/distribution/packages/{filename} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
filename | str | oui | Nom de fichier du paquet. |
Retour : Any. Réponse JSON décodée de l'opération « Retirer un paquet stocké ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.delete_profile
delete_profile(profile_id: str) -> Any
Supprimer un profil Navin SM. Supprime le profil (l'entrée du coffre de sa clé est conservée). Répond 204. Permission settings:manage ; 404 navin_sm_profile_not_found. Audité en navin_sm.delete.
Route : /api/v1/navin-sm/profiles/{profile_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un profil Navin SM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.discover_models
discover_models(body: Any = None) -> Any
Découvrir les modèles d'un proxy LiteLLM. Appelle GET <base>/v1/models puis GET <base>/model/info du proxy (délai de 5 secondes, TLS 1.2 au moins, racines publiques et le ca_pem fourni, sans redirection) et renvoie {models: [{id, context_window?, max_output_tokens?, vision?, reasoning?}], info_available, info_error}. Avec litellm_cluster_id et litellm_service, le service LiteLLM installé par le Manager est lu avec sa clé maître et l'autorité du Manager, toutes deux gardées dans le serveur (un base_url vide désigne alors son adresse) ; sinon la clé de l'entrée du coffre ou la clé saisie pour ce seul appel. /model/info est facultatif (route d'administration qu'une clé virtuelle peut ne pas atteindre). Permission settings:manage, et vault:manage avec un shared_key_ref. Erreurs : 422 navin_sm_base_url_invalid, 422 navin_sm_header_invalid, 422 navin_sm_litellm_link_incomplete (un seul des deux champs du lien), 422 navin_sm_litellm_source_not_found, 409 navin_sm_master_key_missing, 409 navin_sm_shared_key_missing, 502 navin_sm_discover_failed (détail reason : timeout, tls_failed, refused, unreachable, auth_failed, not_found, http_status, protocol_error). Audité en navin_sm.discover.
Route : /api/v1/navin-sm/discover (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le proxy à lire. |
Retour : Any. Réponse JSON décodée de l'opération « Découvrir les modèles d'un proxy LiteLLM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.distribution
distribution() -> Any
État de la distribution Navin SM. La version de Navin SM que nomme le catalogue (service : nom, version, dépôt et étiquette GitHub, chemins du fichier de réglages et de l'autorité par système), ses paquets avec leur SHA256 publié, leur état de stockage, leur taille et leur lien de téléchargement, le nombre stocké, les dix derniers téléchargements depuis GitHub et si l'un d'eux est en cours. Permission settings:manage ; 409 navin_sm_service_missing sans le service navin-sm dans le catalogue.
Route : /api/v1/navin-sm/distribution (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « État de la distribution Navin SM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.download_package
download_package(filename: str) -> Any
Télécharger un paquet stocké. Le paquet tel que stocké (application/octet-stream, Cache-Control: no-store), son SHA256 dans l'en-tête X-Checksum-Sha256. Permission settings:manage. Erreurs : 404 navin_sm_package_unknown, 404 navin_sm_package_missing (non stocké).
Route : /api/v1/navin-sm/distribution/packages/{filename}/download (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
filename | str | oui | Nom de fichier du paquet. |
Retour : Any. Réponse JSON décodée de l'opération « Télécharger un paquet stocké ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.export_profile
export_profile(profile_id: str, os: string | null = None) -> Any
Exporter le managed-settings.json d'un profil. Renvoie le fichier en pièce jointe (managed-settings.json, Cache-Control: no-store), conforme au contrat. gateway.apiKey n'est présent qu'en shared_key, descellé du coffre pour cette seule réponse. Permission settings:manage, et vault:manage en shared_key. Erreurs : 404 navin_sm_profile_not_found, 409 navin_sm_shared_key_missing (entrée du coffre supprimée ou sans clé), 422 navin_sm_os_required (profil avec use_manager_ca exporté sans os), 500 navin_sm_export_invalid. Audité en navin_sm.export (jamais la clé).
Route : /api/v1/navin-sm/profiles/{profile_id}/export (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
os | string | null | None | non | Système auquel le fichier est destiné (linux, macos, windows) ; obligatoire quand le profil embarque l'autorité du Manager (use_manager_ca), car il fixe le chemin de gateway.caBundle. |
Retour : Any. Réponse JSON décodée de l'opération « Exporter le managed-settings.json d'un profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.fetch_release
fetch_release(body: Any = None) -> Any
Récupérer la version depuis GitHub. Lance en arrière-plan la récupération de la version (202, l'import) : les fichiers de sommes d'abord, puis chaque paquet pas encore stocké, chacun vérifié contre son SHA256 publié. Le jeton GitHub est la clé API de l'entrée du coffre, lu dans le serveur et jamais renvoyé, journalisé ni audité. Permissions settings:manage et vault:manage. Erreurs : 409 navin_sm_service_missing, 422 navin_sm_vault_entry_not_found, 422 navin_sm_github_token_missing, 409 navin_sm_import_running. Audité en navin_sm.package.fetch (nom de l'entrée du coffre seulement). À suivre avec GET /navin-sm/distribution/imports/{import_id}.
Route : /api/v1/navin-sm/distribution/fetch (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | L'entrée du coffre qui porte le jeton GitHub. |
Retour : Any. Réponse JSON décodée de l'opération « Récupérer la version depuis GitHub ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.get_import
get_import(import_id: str) -> Any
État d'une récupération. {id, version, state, files, error, created_at, finished_at} : state vaut running, done ou failed ; chaque fichier est pending, downloading, stored, skipped (déjà stocké) ou failed avec son error (jamais le jeton). Permission settings:manage ; 404 navin_sm_import_not_found.
Route : /api/v1/navin-sm/distribution/imports/{import_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
import_id | str | oui | Identifiant de la récupération, renvoyé par POST /navin-sm/distribution/fetch. |
Retour : Any. Réponse JSON décodée de l'opération « État d'une récupération ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.get_profile
get_profile(profile_id: str) -> Any
Lire un profil Navin SM. Renvoie un profil sans aucune clé. Permission settings:manage ; 404 navin_sm_profile_not_found.
Route : /api/v1/navin-sm/profiles/{profile_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un profil Navin SM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.list_keys
list_keys(profile_id: str) -> Any
Lister les clés virtuelles d'un profil. Clés virtuelles LiteLLM émises pour le profil, actives et bloquées d'abord, puis révoquées : bénéficiaire, alias, état, modèles et limites, jamais une valeur de clé ni son empreinte. Permission navin_sm:keys ; 404 navin_sm_profile_not_found.
Route : /api/v1/navin-sm/profiles/{profile_id}/keys (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les clés virtuelles d'un profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.list_profiles
list_profiles() -> Any
Lister les profils Navin SM. Profils triés par nom d'organisation, avec le nom de l'entrée du coffre de leur clé partagée mais jamais la clé (shared_key_set). Permission settings:manage.
Route : /api/v1/navin-sm/profiles (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les profils Navin SM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.litellm_sources
litellm_sources() -> Any
Lister les passerelles LiteLLM installées. Services LiteLLM installés par le Manager avec leur adresse et l'entrée du coffre de leur clé, pour préremplir la passerelle d'un profil ou le lier (litellm_cluster_id, litellm_service). L'entrée du coffre n'est donnée qu'à un détenteur de vault:manage ; un service installé encore sans entrée a vault_entry_id nul (POST /vault/import la crée). Permission settings:manage.
Route : /api/v1/navin-sm/litellm-sources (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les passerelles LiteLLM installées ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.load_checksums
load_checksums(body: Any = None) -> Any
Charger les sommes de contrôle publiées de la version. Enregistre le SHA256 publié des paquets à partir des lignes <sha256> <fichier> des fichiers SHA256SUMS et .sha256 de la version, collées ensemble (sites hors ligne). Renvoie {updated, unchanged, conflicts, ignored} : les fichiers enregistrés ou déjà identiques, les paquets stockés dont le SHA256 changerait (signalés et laissés tels quels) et les noms hors de la version. Permission settings:manage. Erreurs : 409 navin_sm_service_missing, 422 navin_sm_checksums_invalid (aucune ligne exploitable). Audité en navin_sm.package.checksums.
Route : /api/v1/navin-sm/distribution/checksums (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Les lignes de sommes de contrôle. |
Retour : Any. Réponse JSON décodée de l'opération « Charger les sommes de contrôle publiées de la version ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.preview_profile
preview_profile(profile_id: str, os: string | null = None) -> Any
Prévisualiser le managed-settings.json d'un profil. Le fichier que produirait l'export, vérifié par le contrat, sans sa clé : une clé shared_key est remplacée par <vault: nom de l'entrée>. Renvoie {os, settings_path, ca_path, document, problems, valid} ; problems liste les règles que le document enfreint (entrée du coffre sans clé, profil avec use_manager_ca prévisualisé sans os). Permission settings:manage ; 404 navin_sm_profile_not_found. Non audité (rien ne sort du serveur).
Route : /api/v1/navin-sm/profiles/{profile_id}/preview (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
os | string | null | None | non | Système auquel le fichier est destiné (linux, macos, windows) : fixe settings_path et, avec use_manager_ca, le chemin de gateway.caBundle. |
Retour : Any. Réponse JSON décodée de l'opération « Prévisualiser le managed-settings.json d'un profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.profile_bundle
profile_bundle(profile_id: str, os: string = None) -> Any
Télécharger le bundle de déploiement d'un profil. Zip pour un système (navin-sm-<org_id>-<os>.zip, Cache-Control: no-store) : managed-settings.json (clé partagée comprise, audité en navin_sm.export avec le motif bundle), l'autorité du Manager quand le profil l'embarque (use_manager_ca), et les fichiers de déploiement du système : script shell et playbook Ansible sous Linux, script shell et notes MDM sous macOS, script PowerShell avec notes GPO et Intune sous Windows. Les paquets se téléchargent à part (GET /navin-sm/distribution/packages/{filename}/download). Permission settings:manage, et vault:manage en shared_key. Erreurs : 404 navin_sm_profile_not_found, 409 navin_sm_service_missing (aucun service navin-sm dans le catalogue), 409 navin_sm_shared_key_missing.
Route : /api/v1/navin-sm/profiles/{profile_id}/bundle (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
os | string | None | non | Système du bundle : linux, macos ou windows. |
Retour : Any. Réponse JSON décodée de l'opération « Télécharger le bundle de déploiement d'un profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.revoke_all_keys
revoke_all_keys(profile_id: str) -> Any
Révoquer toutes les clés d'un profil. Supprime toutes les clés actives ou bloquées du profil au proxy en un appel (POST /key/delete) et les enregistre comme révoquées. Renvoie {revoked, items}. Permission navin_sm:keys. Erreurs : 404 navin_sm_profile_not_found, 409 navin_sm_profile_not_linked, 409 navin_sm_master_key_missing, 502 navin_sm_proxy_refused ou navin_sm_proxy_failed. Audité en navin_sm.key.revoke_all (nombre et identifiants des clés).
Route : /api/v1/navin-sm/profiles/{profile_id}/keys/revoke-all (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer toutes les clés d'un profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.revoke_key
revoke_key(profile_id: str, key_id: str) -> Any
Révoquer une clé. Supprime la clé au proxy (POST /key/delete, immédiat) et la conserve dans le Manager avec l'état revoked et revoked_at ; une clé que le proxy ne connaît plus est révoquée tout de même. Renvoie la clé. Permission navin_sm:keys. Erreurs : 404 navin_sm_key_not_found, 409 navin_sm_key_revoked, 409 navin_sm_profile_not_linked, 409 navin_sm_master_key_missing, 502 navin_sm_proxy_refused ou navin_sm_proxy_failed. Audité en navin_sm.key.revoke.
Route : /api/v1/navin-sm/profiles/{profile_id}/keys/{key_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
key_id | str | oui | Identifiant de la clé dans le Manager. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer une clé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.unblock_key
unblock_key(profile_id: str, key_id: str) -> Any
Débloquer une clé. Débloque une clé bloquée au proxy (POST /key/unblock) et la renvoie avec l'état active. Permission navin_sm:keys. Mêmes erreurs que le blocage. Audité en navin_sm.key.unblock.
Route : /api/v1/navin-sm/profiles/{profile_id}/keys/{key_id}/unblock (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
key_id | str | oui | Identifiant de la clé dans le Manager. |
Retour : Any. Réponse JSON décodée de l'opération « Débloquer une clé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.update_key
update_key(profile_id: str, key_id: str, body: Any = None) -> Any
Modifier les modèles et limites d'une clé. Applique les modèles et limites au proxy (POST /key/update), puis dans le Manager, et renvoie la clé. Permission navin_sm:keys. Erreurs : 404 navin_sm_profile_not_found, 404 navin_sm_key_not_found, 409 navin_sm_key_revoked, 409 navin_sm_key_gone (le proxy ne connaît plus la clé, alors enregistrée comme révoquée), 422 navin_sm_key_models_unknown, 409 navin_sm_profile_not_linked, 409 navin_sm_master_key_missing, 502 navin_sm_proxy_refused ou navin_sm_proxy_failed. Audité en navin_sm.key.update.
Route : /api/v1/navin-sm/profiles/{profile_id}/keys/{key_id} (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
key_id | str | oui | Identifiant de la clé dans le Manager (jamais sa valeur). | |
body | Any | None | non | Nouveaux modèles et limites. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier les modèles et limites d'une clé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.update_profile
update_profile(profile_id: str, body: Any = None) -> Any
Remplacer un profil Navin SM. Remplace tout le profil et le renvoie. Mêmes règles et erreurs que la création, plus 404 navin_sm_profile_not_found. Audité en navin_sm.update (noms des champs modifiés).
Route : /api/v1/navin-sm/profiles/{profile_id} (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
body | Any | None | non | Le profil complet. |
Retour : Any. Réponse JSON décodée de l'opération « Remplacer un profil Navin SM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.upload_package
upload_package(filename: str) -> Any
Déposer un paquet de la version. Corps brut d'un paquet de la version, écrit en flux sous <mirror_dir>/navin-sm/<version>/ et haché pendant l'écriture ; conservé (201, le paquet tel que la distribution le liste) seulement quand son SHA256 est celui publié (chargé au préalable) ou celui de l'en-tête X-Checksum-Sha256. Permission settings:manage. Erreurs : 404 navin_sm_package_unknown (pas un paquet de la version), 422 navin_sm_package_checksum_unknown (aucun SHA256 publié ni en-tête), 422 navin_sm_package_checksum_mismatch (le fichier est supprimé), 422 navin_sm_package_too_large (2 Gio), 409 navin_sm_disk_full. Audité en navin_sm.package.store, refus compris.
Route : /api/v1/navin-sm/distribution/packages/{filename} (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
filename | str | oui | Nom de fichier du paquet, tel que le catalogue le liste pour cette version. |
Retour : Any. Réponse JSON décodée de l'opération « Déposer un paquet de la version ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NavinSmApi.usage
usage(profile_id: str, days: integer = None) -> Any
Suivi des clés d'un profil. Lit le proxy par le serveur (GET /key/info pour chaque clé vivante, GET /spend/logs sur la période) et renvoie {available, reason, period, keys, models, totals, truncated, last_use} : pour chaque clé son état vivant, sa dépense, son budget et sa date de remise à zéro, et sur la période ses appels, jetons, erreurs, modèles et dernier usage ; les mêmes chiffres par modèle et au total. truncated est vrai quand le proxy a plafonné les journaux à 10000 lignes (les chiffres de la période sont alors partiels). Quand le profil n'est pas lié, que la clé maître manque ou que le proxy est injoignable, available est faux avec reason et sans aucun chiffre : aucun zéro n'est inventé. Permission navin_sm:keys ; 404 navin_sm_profile_not_found.
Route : /api/v1/navin-sm/profiles/{profile_id}/usage (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
profile_id | str | oui | Identifiant du profil. | |
days | integer | None | non | Longueur de la période en jours, 1 à 366 (30 par défaut), finissant aujourd'hui. |
Retour : Any. Réponse JSON décodée de l'opération « Suivi des clés d'un profil ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe NetworkApi
Flux réseau. Les flux réseau d'un cluster, calculés à partir de ce que connaît le Manager, pour l'équipe réseau qui les ouvre dans ses groupes de sécurité ou ses pare-feu de machines. Chaque flux appartient à une portée : Opérations de ce groupe de l'API du Navin Manager.
Resource
NetworkApi.network_flows
network_flows(cluster_id: str, format: "json" | "csv" = None, service: string | null = None, host_id: string | null = None, scope: "platform" | "service" | "intra_service" | "egress" | null = None) -> Any
Lire la matrice des flux réseau d'un cluster. Flux à ouvrir entre les machines, le Manager, les clients et les points d'accès externes du cluster. En JSON : cluster_id, items, summary et generated_at ; avec format=csv, une pièce jointe network-flows-<cluster>.csv. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/network/flows (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
format | "json" | "csv" | None | non | Format de la réponse : json (par défaut) ou csv. |
service | string | null | None | non | Uniquement les flux de ce service. |
host_id | string | null | None | non | Uniquement les flux depuis ou vers cette machine. |
scope | "platform" | "service" | "intra_service" | "egress" | null | None | non | Uniquement les flux de cette portée : platform, service, intra_service ou egress. |
Retour : Any. Réponse JSON décodée de l'opération « Lire la matrice des flux réseau d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NetworkApi.network_rules
network_rules(cluster_id: str, provider: "auto" | "aws" | "azure" | "gcp" | "ibm" | "openstack" | "ovh" | "firewalld" | "ufw" = None, service: string | null = None, host_id: string | null = None, scope: "platform" | "service" | "intra_service" | "egress" | null = None) -> Any
Lire les règles de pare-feu qui ouvrent les flux. Commandes qui ouvrent les flux dans les groupes de sécurité d'un fournisseur cloud ou dans un pare-feu de machine. Avec auto, le fournisseur de chaque machine est utilisé (l'environnement choisi pour la machine, sinon la plateforme détectée). Rien n'est appliqué. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/network/rules (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
provider | "auto" | "aws" | "azure" | "gcp" | "ibm" | "openstack" | "ovh" | "firewalld" | "ufw" | None | non | Cible des règles : auto, aws, azure, gcp, ibm, openstack, ovh, firewalld ou ufw. |
service | string | null | None | non | Uniquement les flux de ce service. |
host_id | string | null | None | non | Uniquement les flux depuis ou vers cette machine. |
scope | "platform" | "service" | "intra_service" | "egress" | null | None | non | Uniquement les flux de cette portée : platform, service, intra_service ou egress. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les règles de pare-feu qui ouvrent les flux ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe NodeSecurityApi
Sécurité des nœuds. La sécurité des machines gérées et de leurs agents de nœud : inventaire, politique SSH, contrôles préalables et amorçage SSH de l'agent, jetons d'enrôlement liés à la clé de l'agent, état de confiance (quarantaine, révocation, rétablissement), mode de gestion, commandes d'agent signées et leurs reçus, mise à jour de l'agent et accès d'urgence SSH (break glass). Opérations de ce groupe de l'API du Navin Manager.
Resource
NodeSecurityApi.agent_update
agent_update(host_id: str, body: Any = None) -> Any
Mettre à jour l'agent d'une machine. Vérifie le binaire signé de l'agent dans le miroir, puis émet une commande signée agent.update avec son empreinte et sa signature (clé d'idempotence dérivée de l'empreinte). Renvoie l'enveloppe de la commande (201). Permission hosts:manage. Erreurs : 422 agent_package_untrusted, 409 host_not_trusted, 409 host_client_managed.
Route : /api/v1/hosts/{host_id}/agent-update (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Validité de la commande et délai de santé du nouvel agent. |
Retour : Any. Réponse JSON décodée de l'opération « Mettre à jour l'agent d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.bootstrap_plan
bootstrap_plan(body: Any = None) -> Any
Prévisualiser l'amorçage d'un agent de nœud. Contrôle l'identifiant par rapport à la politique SSH et renvoie le plan sans se connecter : utilisateur SSH, cible, rebonds, verdict sur l'identifiant, fichier sudoers et sa validation, liste autorisée, unité systemd et répertoire de préparation. Permission hosts:manage ; 422 ssh_policy_refused.
Route : /api/v1/hosts/bootstrap/plan (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Même corps qu'un amorçage. |
Retour : Any. Réponse JSON décodée de l'opération « Prévisualiser l'amorçage d'un agent de nœud ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.breakglass_approve
breakglass_approve(request_id: str) -> Any
Approuver une demande d'accès d'urgence. Ajoute une approbation. Deux approbateurs distincts, tous deux différents du demandeur, sont nécessaires ; la seconde approbation signe un certificat utilisateur OpenSSH valable pendant la durée demandée. Permission hosts:manage. Erreurs : 403 breakglass_self_approval, 409 breakglass_not_pending, 409 breakglass_already_approved, 404 breakglass_not_found. Audité en host.breakglass.approve.
Route : /api/v1/breakglass/{request_id}/approve (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
request_id | str | oui | Identifiant de la demande d'accès d'urgence. |
Retour : Any. Réponse JSON décodée de l'opération « Approuver une demande d'accès d'urgence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.breakglass_evidence
breakglass_evidence(request_id: str, body: Any = None) -> Any
Ajouter une preuve à une session d'accès d'urgence. Ajoute à la demande une preuve expurgée (début de session, empreinte de commande, fin de session ou enregistrement). Permission hosts:manage ; 404 breakglass_not_found.
Route : /api/v1/breakglass/{request_id}/evidence (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
request_id | str | oui | Identifiant de la demande d'accès d'urgence. | |
body | Any | None | non | Type, empreinte et résumé de la preuve. |
Retour : Any. Réponse JSON décodée de l'opération « Ajouter une preuve à une session d'accès d'urgence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.breakglass_list
breakglass_list(host_id: str) -> Any
Lister les demandes d'accès d'urgence d'une machine. Les 50 dernières demandes d'accès d'urgence de la machine avec leur statut, leurs approbateurs, leur validité et leurs preuves. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/breakglass (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les demandes d'accès d'urgence d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.breakglass_request
breakglass_request(host_id: str, body: Any = None) -> Any
Demander un accès SSH d'urgence. Enregistre une demande d'accès d'urgence pour la machine avec la raison, la clé publique du demandeur et la durée ; deux autres utilisateurs doivent l'approuver. Renvoie la demande (201). Permission hosts:manage. Erreurs : 422 breakglass_key_refused, 409 host_not_trusted, 409 host_client_managed. Audité en host.breakglass.request.
Route : /api/v1/hosts/{host_id}/breakglass (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Raison, clé publique, compte et validité. |
Retour : Any. Réponse JSON décodée de l'opération « Demander un accès SSH d'urgence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.breakglass_revoke
breakglass_revoke(request_id: str) -> Any
Révoquer un accès d'urgence avant son terme. Met fin à l'accès avant son terme : le certificat est ajouté à la liste de révocation de clés que chargent les machines. Permission hosts:manage. Erreurs : 404 breakglass_not_found, 409 breakglass_not_active.
Route : /api/v1/breakglass/{request_id}/revoke (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
request_id | str | oui | Identifiant de la demande d'accès d'urgence. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer un accès d'urgence avant son terme ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.get_ssh_policy
get_ssh_policy(cluster_id: str) -> Any
Lire la politique SSH d'un cluster. Renvoie allow_rsa, rsa_min_bits, approved_user_cas, bootstrap_user, spiffe_trust_domain et rotate_before_days. Permission cluster:read ; 404 cluster_not_found.
Route : /api/v1/clusters/{cluster_id}/ssh-policy (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lire la politique SSH d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.host_bootstrap
host_bootstrap(body: Any = None) -> Any
Amorcer un agent de nœud par SSH. Lance une opération qui installe et enregistre l'agent sur une machine :
Route : /api/v1/hosts/bootstrap (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Machine cible, machines de rebond, compte SSH, clé privée ou certificat. |
Retour : Any. Réponse JSON décodée de l'opération « Amorcer un agent de nœud par SSH ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.host_enroll
host_enroll(body: Any = None) -> Any
Émettre un jeton d'enrôlement pour une clé d'agent. Émet un jeton à usage unique pour une machine et une clé : host_fingerprint est le SHA-256 (hexadécimal) de la clé publique de l'agent (nm-agent l'affiche avant l'enrôlement). Le jeton expire au bout de 15 minutes au plus et est consommé par le premier enrôlement qui présente une CSR de cette clé exacte. Renvoie id, token, expires_at, ttl_s, host_fingerprint et agent_url (201). Permission hosts:manage. Audité en host.enroll_token.
Route : /api/v1/hosts/enroll (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Cluster, FQDN et empreinte de clé de la machine. |
Retour : Any. Réponse JSON décodée de l'opération « Émettre un jeton d'enrôlement pour une clé d'agent ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.host_inventory
host_inventory(host_id: str) -> Any
Lire l'inventaire d'une machine. Renvoie host_id, l'inventaire inventory rapproché à partir des caractéristiques de l'agent (matériel, GPU, plateforme) et updated_at. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/inventory (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'inventaire d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.host_preflight
host_preflight(body: Any = None) -> Any
Lancer les contrôles préalables d'une machine avant son amorçage. Lit la machine en SSH et depuis le Manager (résolution DNS directe et inverse, joignabilité TCP, ports requis libres, disques, système d'exploitation) et renvoie les contrôles classés pass, warning ou blocking, les nombres blocking et warnings, une empreinte reproductible digest et le verdict sur l'identifiant. Rien n'est installé. Permission hosts:manage. Erreurs : 422 ssh_policy_refused. Audité en host.preflight.
Route : /api/v1/hosts/preflight (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Accès SSH, identité attendue, ports et disques à contrôler. |
Retour : Any. Réponse JSON décodée de l'opération « Lancer les contrôles préalables d'une machine avant son amorçage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.host_receipts
host_receipts(host_id: str) -> Any
Lister les reçus de commandes d'une machine. Reçus des commandes signées exécutées par l'agent, du dernier terminé au plus ancien : opération, début et fin, code de sortie, état observé, code d'erreur et preuves, expurgés. Permission cluster:read.
Route : /api/v1/hosts/{host_id}/receipts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les reçus de commandes d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.issue_command
issue_command(host_id: str, body: Any = None) -> Any
Envoyer une commande signée à un agent. Émet une enveloppe de commande signée avec la clé Ed25519 du Manager pour l'agent de la machine (la même clé d'idempotence renvoie l'enveloppe enregistrée). Opérations autorisées : facts.collect, health.check, logs.tail, files.digest, service.control, command.run, agent.update ; les trois dernières sont refusées sur les machines gérées par le client. Renvoie l'enveloppe (201). Permission hosts:manage. Erreurs : 422 command_operation_unknown, 409 host_not_trusted, 409 host_client_managed. Audité en host.command.issue.
Route : /api/v1/hosts/{host_id}/commands (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Opération, paramètres, validité et clé d'idempotence. |
Retour : Any. Réponse JSON décodée de l'opération « Envoyer une commande signée à un agent ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.list_all_hosts
list_all_hosts(cluster_id: string | null = None) -> Any
Lister les machines de tous les clusters. Machines de chaque cluster que l'appelant peut lire (ou d'un seul cluster), triées par FQDN, avec leur état de confiance, leur mode de gestion, leur identité, leurs métriques, leur inventaire et leur plateforme.
Route : /api/v1/hosts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | string | null | None | non | Uniquement les machines de ce cluster. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les machines de tous les clusters ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.list_nodes
list_nodes() -> Any
Lister les agents de nœud. Machines non mises hors service de chaque cluster que l'appelant peut lire, avec leur état de confiance, leur mode de gestion, la version de leur agent, leur dernier battement de cœur, leur identité (numéro et expiration du certificat, identifiant SPIFFE, rotation_due), leurs métriques et leur plateforme.
Route : /api/v1/agents/nodes (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les agents de nœud ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.node_detail
node_detail(host_id: str) -> Any
Lire un agent de nœud. La vue du nœud plus ses 10 derniers certificats certificates et ses diagnostics (caractéristiques, dernières métriques, 20 derniers reçus). Permission cluster:read ; 404 host_not_found.
Route : /api/v1/agents/nodes/{host_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un agent de nœud ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.put_ssh_policy
put_ssh_policy(cluster_id: str, body: Any = None) -> Any
Définir la politique SSH d'un cluster. Remplace la politique SSH et la renvoie. Le compte d'amorçage et chaque clé d'autorité approuvée sont contrôlés d'abord. Permission hosts:manage. Erreurs : 422 ssh_policy_refused (clé faible ou invalide, compte refusé), 404 cluster_not_found. Audité en cluster.ssh_policy.
Route : /api/v1/clusters/{cluster_id}/ssh-policy (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | La politique SSH. |
Retour : Any. Réponse JSON décodée de l'opération « Définir la politique SSH d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.quarantine_host
quarantine_host(host_id: str, body: Any = None) -> Any
Mettre une machine en quarantaine. Passe l'état de confiance à quarantined : le Manager cesse de faire confiance à l'agent pour de nouvelles commandes jusqu'à son rétablissement. Renvoie le nœud. Permission hosts:manage. Audité en host.quarantine.
Route : /api/v1/hosts/{host_id}/quarantine (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Raison du changement. |
Retour : Any. Réponse JSON décodée de l'opération « Mettre une machine en quarantaine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.recover_host
recover_host(host_id: str, body: Any = None) -> Any
Rétablir la confiance dans une machine en quarantaine. Repasse l'état de confiance à trusted. Une machine révoquée ne peut pas être rétablie : elle doit s'enrôler à nouveau (409 agent_revoked). Renvoie le nœud. Permission hosts:manage. Audité en host.recover.
Route : /api/v1/hosts/{host_id}/recover (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Raison du changement. |
Retour : Any. Réponse JSON décodée de l'opération « Rétablir la confiance dans une machine en quarantaine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.revoke_host
revoke_host(host_id: str, body: Any = None) -> Any
Révoquer l'agent d'une machine. Passe l'état de confiance à revoked, révoque les certificats de l'agent et fait expirer ses commandes en attente. Seul un nouvel enrôlement le rétablit. Renvoie le nœud. Permission hosts:manage. Audité en host.revoke avec le nombre de certificats révoqués.
Route : /api/v1/hosts/{host_id}/revoke (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Raison du changement. |
Retour : Any. Réponse JSON décodée de l'opération « Révoquer l'agent d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
NodeSecurityApi.set_management
set_management(host_id: str, body: Any = None) -> Any
Définir qui gère une machine. Définit le mode de gestion : platform (le Manager agit sur la machine) ou client (les commandes dangereuses et l'accès d'urgence sont refusés). Renvoie le nœud. Permission hosts:manage. Audité en host.management.
Route : /api/v1/hosts/{host_id}/management (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Le mode de gestion. |
Retour : Any. Réponse JSON décodée de l'opération « Définir qui gère une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe OperationsApi
Opérations. Une opération est l'unité de tout changement fait par le Manager : une installation, un redémarrage, une mise à niveau, une sauvegarde, l'amorçage d'une machine... Elle se compose d'étapes ordonnées ; chaque étape contient des tâches, en général une par machine, exécutées par les agents Navin. Statut d'une opération : pending, running, succeeded, failed ou aborted ; progress va de 0 à 100. Opérations de ce groupe de l'API du Navin Manager.
Resource
OperationsApi.abort
abort(operation_id: str) -> Any
Interrompre une opération. Demande l'arrêt d'une opération en attente ou en cours : les tâches non commencées sont annulées, celles en cours sont arrêtées par leurs agents. Renvoie id, status et abort_requested. Permission operations:abort ; 409 operation_not_running quand elle est déjà terminée. Audité en operation.abort.
Route : /api/v1/operations/{operation_id}/abort (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
operation_id | str | oui | Identifiant de l'opération (une installation, un redémarrage, une sauvegarde...) dont les tâches s'exécutent sur les machines. |
Retour : Any. Réponse JSON décodée de l'opération « Interrompre une opération ».
Erreurs levées : les erreurs typées du transport (Erreurs).
OperationsApi.get_operation
get_operation(operation_id: str) -> Any
Lire une opération avec ses étapes et ses tâches. Renvoie l'opération et ses étapes stages dans l'ordre ; chaque étape donne seq, name_i18n, status, tolerate_failures et ses tâches tasks (machine, type, service, composant, statut, tentatives, code de sortie, résumé, erreur, horaires). Permission operations:read sur son cluster ; 404 operation_not_found.
Route : /api/v1/operations/{operation_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
operation_id | str | oui | Identifiant de l'opération (une installation, un redémarrage, une sauvegarde...) dont les tâches s'exécutent sur les machines. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une opération avec ses étapes et ses tâches ».
Erreurs levées : les erreurs typées du transport (Erreurs).
OperationsApi.get_task
get_task(operation_id: str, task_id: str) -> Any
Lire une tâche d'une opération. Renvoie une tâche avec sa sortie complète output, attempts et max_attempts, timeout_s, exit_code, duration_ms et ses horaires. Permission operations:read ; 404 operation_not_found ou 404 task_not_found.
Route : /api/v1/operations/{operation_id}/tasks/{task_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
operation_id | str | oui | Identifiant de l'opération (une installation, un redémarrage, une sauvegarde...) dont les tâches s'exécutent sur les machines. | |
task_id | str | oui | Identifiant de la tâche, issu des étapes de l'opération. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une tâche d'une opération ».
Erreurs levées : les erreurs typées du transport (Erreurs).
OperationsApi.list_operations
list_operations(cluster_id: str, status: string | null = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les opérations d'un cluster. Opérations du cluster, de la plus récente à la plus ancienne, sans leurs étapes : id, type, title_i18n, target, status, progress, error, created_by, created_at, started_at, finished_at, abort_requested. Paginé avec limit et cursor. Permission operations:read.
Route : /api/v1/clusters/{cluster_id}/operations (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
status | string | null | None | non | Uniquement les opérations dans ce statut : pending, running, succeeded, failed ou aborted. |
limit | int | None | None | non | Nombre maximal d'opérations dans la page, de 1 à 500. 50 par défaut. |
cursor | str | None | None | non | Le next_cursor de la page précédente (un identifiant d'opération). Omettez-le pour la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les opérations d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
OperationsApi.retry
retry(operation_id: str, approval_id: string | null = None) -> Any
Relancer une opération échouée. Crée une nouvelle opération à partir d'une opération failed ou aborted et renvoie son operation_id. La relance passe par les contrôles d'une nouvelle opération : un seul changement à la fois par service, état administratif du service, profil du cluster et, sous banking-secure, une nouvelle approbation pour une opération perturbatrice. Permission operations:abort ; 409 operation_not_retryable dans tout autre statut. Audité en operation.retry.
Route : /api/v1/operations/{operation_id}/retry (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
operation_id | str | oui | Identifiant de l'opération (une installation, un redémarrage, une sauvegarde...) dont les tâches s'exécutent sur les machines. | |
approval_id | string | null | None | non | Approbation accordée pour la nouvelle opération sous banking-secure, utilisable une fois ; omettez-la pour utiliser l'approbation qui vous a été accordée. |
Retour : Any. Réponse JSON décodée de l'opération « Relancer une opération échouée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
OperationsApi.running
running() -> Any
Lister les opérations en cours. Opérations en attente et en cours de chaque cluster où l'appelant détient operations:read (200 au plus, de la plus récente à la plus ancienne), avec leur nombre count. Utilisé par l'indicateur d'activité de la console.
Route : /api/v1/operations/running (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les opérations en cours ».
Erreurs levées : les erreurs typées du transport (Erreurs).
OperationsApi.task_logs
task_logs(operation_id: str, task_id: str, after_seq: integer = None) -> Any
Lire les lignes de journal d'une tâche. Renvoie les lignes lines écrites après after_seq (chacune avec seq, ts, stream et data), next_seq à passer dans after_seq à l'appel suivant, et done : vrai une fois la tâche terminée et toutes les lignes lues. Pour suivre une tâche, rappelez-le avec after_seq=next_seq jusqu'à done. Permission operations:read.
Route : /api/v1/operations/{operation_id}/tasks/{task_id}/logs (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
operation_id | str | oui | Identifiant de l'opération (une installation, un redémarrage, une sauvegarde...) dont les tâches s'exécutent sur les machines. | |
task_id | str | oui | Identifiant de la tâche. | |
after_seq | integer | None | non | Renvoyer les lignes dont le numéro de séquence est supérieur à celui-ci. -1 par défaut (depuis la première ligne). |
Retour : Any. Réponse JSON décodée de l'opération « Lire les lignes de journal d'une tâche ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe PKIApi
PKI et certificats. L'autorité de certification du Manager et les certificats qu'elle émet : certificats clients des agents et certificats TLS des composants des services. Opérations de ce groupe de l'API du Navin Manager.
Resource
PKIApi.get_ca
get_ca() -> Any
Lire l'autorité de certification. Renvoie le certificat de l'autorité du Manager (ca_pem), son expiration not_after et son empreinte sha256. Tout utilisateur connecté.
Route : /api/v1/pki/ca (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire l'autorité de certification ».
Erreurs levées : les erreurs typées du transport (Erreurs).
PKIApi.list_certificates
list_certificates(cluster_id: str) -> Any
Lister les certificats d'un cluster. Certificats émis pour le cluster, du premier à expirer au dernier : kind (agent ou service), machine, service, composant, serial, subject, sans, not_before, not_after, revoked_at. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/certificates (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les certificats d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
PKIApi.rotate
rotate(cluster_id: str, body: Any = None, approval_id: string | null = None) -> Any
Renouveler les certificats des services d'un cluster. Émet un nouveau certificat pour chaque instance de composant (d'un service, ou de tous), puis lance une opération qui les installe sur les machines et redémarre les composants. Répond 202 avec operation_id. Permission pki:manage. Erreurs : 404 cluster_not_found, 409 no_certificates_to_rotate. Audité en pki.rotate.
Route : /api/v1/clusters/{cluster_id}/certificates/rotate (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Service facultatif auquel limiter le renouvellement. |
approval_id | string | null | None | non | Identifiant de la demande approuvée (validation à quatre yeux) qui autorise cette action. |
Retour : Any. Réponse JSON décodée de l'opération « Renouveler les certificats des services d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe RestoresApi
Sauvegarde, restauration et reprise après sinistre. Le gestionnaire de sauvegarde et de reprise : cibles et plans de sauvegarde, artefacts de sauvegarde avec leurs vérifications, conservation, tests de restauration, restaurations et reprise après sinistre (sites, plans, exercices, bascules, changements DNS et d'équilibreur de charge). Opérations de ce groupe de l'API du Navin Manager.
Resource
RestoresApi.approve
approve(plan_id: str) -> Any
Approuver un plan de restauration. Ajoute l'approbation de l'appelant ; deux approbations par des personnes autres que le demandeur sont nécessaires. Permission restore:execute. Erreurs : 403 restore_self_approval, 409 restore_not_approvable. Audité en restore.approve.
Route : /api/v1/restores/{plan_id}/approve (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Approuver un plan de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
RestoresApi.dry_run
dry_run(plan_id: str) -> Any
Essayer à blanc un plan de restauration. Contrôle l'empreinte, le déchiffrement et la compatibilité sans écrire dans la destination, et renvoie les approbateurs enregistrés. Pour une destination nommée, contrôle aussi son identité, son vide et son rôle restreint (checks.destination, checks.executor). Une simulation réussie n'autorise pas l'exécution : deux approbations restent nécessaires. Permission restore:execute. Audité en restore.dry_run.
Route : /api/v1/restores/{plan_id}/dry-run (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Essayer à blanc un plan de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
RestoresApi.execute
execute(plan_id: str) -> Any
Exécuter une restauration approuvée. Exécute un plan approuvé avec destination : l'état executing et un jeton durable execution_token sont validés avant toute écriture. L'artefact est contrôlé à nouveau (taille, empreinte, déchiffrement), restauré par pg_restore --single-transaction avec le rôle restreint, puis ses lignes sont relues et comparées à l'inventaire (result.inventory, rows, tables). Succès : executed. Échec enregistré : failed, rollback_performed: false, HTTP 502 restore_execution_failed ; le champ imbriqué result.error précise la cause, notamment backup_corrupted, restore_target_busy ou restore_execution_timeout. Une interruption du processus peut laisser executing, à inspecter manuellement. Aucun retour arrière ni rejeu automatique. Les refus avant exécution incluent 409 restore_not_approved, 501 restore_executor_unavailable et 409 restore_target_changed. Permission restore:execute. Audité en restore.execute.started et restore.execute.
Route : /api/v1/restores/{plan_id}/execute (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une restauration approuvée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
RestoresApi.list
list() -> Any
Lister les plans de restauration. Les 200 derniers plans de restauration avec leur statut et leur nombre d'approbations. Permission backup:read.
Route : /api/v1/restores (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les plans de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
RestoresApi.plan
plan(body: Any = None) -> Any
Planifier une restauration. Crée un plan de restauration pour un artefact de sauvegarde : contrôle la compatibilité des versions sauvegardées avec les versions cibles (même version majeure) et liste les étapes (vérification de l'artefact, vérification de la destination, restauration, vérification du résultat). Avec target_name, l'artefact doit être un pg_dump disponible avec un inventaire verification_inventory et la destination une base PostgreSQL vide appartenant à un rôle restreint ; son identité est figée dans target_snapshot. Renvoie le plan (201). Permission restore:execute. Erreurs : 404 backup_artifact_not_found, 501 restore_executor_unavailable (destination inconnue), 409 restore_target_invalid, 409 restore_target_not_empty, 422 restore_inventory_required. Audité en restore.plan.
Route : /api/v1/restores/plan (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Artefact, environnement, destination et versions cibles. |
Retour : Any. Réponse JSON décodée de l'opération « Planifier une restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
RestoresApi.verify
verify(plan_id: str) -> Any
Lire un plan de restauration. Renvoie le plan avec sa compatibilité, ses étapes, ses approbateurs approvers et required_approvals (2). Permission backup:read ; 404 restore_plan_not_found.
Route : /api/v1/restores/{plan_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
plan_id | str | oui | Identifiant du plan de restauration. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un plan de restauration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe ServicesApi
Opérations services du Platform Manager.
Resource
ServicesApi.action
action(cluster_id: str, service: str, body: Any = None) -> Any
Exécuter une action sur un service. Lance une opération qui exécute l'action sur les composants et machines choisis (tous par défaut) et renvoie operation_id. Un redémarrage progressif traite batch_size machines à la fois. reinstall exige aussi services:install. Permission services:operate. Erreurs : 409 service_unmanaged, 409 service_check_missing, 409 smoke_test_missing, 404 host_component_not_found, 409 approval_required. Audité en service.<action>.
Route : /api/v1/clusters/{cluster_id}/services/{service}/actions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Action, périmètre et découpage par lots. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une action sur un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.add_component
add_component(cluster_id: str, service: str, body: Any = None) -> Any
Ajouter des instances de composant sur des machines. Lance une opération qui installe le composant sur les machines fournies (démarré sauf si le service est arrêté) et renvoie operation_id avec les contrôles ha. Permission services:install. Erreurs : 409 service_unmanaged, 404 component_unknown, 422 topology_invalid, 409 ha_requirements_not_met ou ha_acknowledgement_required. Audité en service.component_add.
Route : /api/v1/clusters/{cluster_id}/services/{service}/components (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Composant et machines cibles. |
Retour : Any. Réponse JSON décodée de l'opération « Ajouter des instances de composant sur des machines ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.check_connection
check_connection(cluster_id: str, service: str) -> Any
Contrôler un service connecté maintenant. Exécute le contrôle de santé et le contrôle authentifié d'un service connecté et inscrit le résultat dans son historique de supervision. Renvoie service, health et health_details. Permission services:operate ; 409 service_not_connected.
Route : /api/v1/clusters/{cluster_id}/services/{service}/connection/check (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Contrôler un service connecté maintenant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.client_config
client_config(cluster_id: str, service: str) -> Any
Lire la configuration cliente d'un service. Fichiers dont un client a besoin pour joindre le service (path, content, mode), produits à partir du catalogue avec les secrets masqués. files vide quand le service n'en a pas. Permission configs:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/client-config (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire la configuration cliente d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.cluster_action
cluster_action(cluster_id: str, body: Any = None) -> Any
Exécuter une action sur tous les services d'un cluster. Lance une seule opération qui exécute l'action sur chaque service géré du périmètre (tous les services par défaut, ou ceux de services, sur toutes les machines ou sur hosts), dans l'ordre des dépendances : un fournisseur démarre avant ses consommateurs et s'arrête après eux. restart arrête tous les services dans l'ordre inverse, puis démarre tous les services dans l'ordre avec les contrôles de santé ; rolling_restart redémarre chaque service par lots de batch_size machines ; restart_stale réécrit les fichiers et unités des instances dont la configuration a changé, puis les redémarre par lots ; service_check lance la vérification de chaque service. Les services connectés, les services en cours d'installation ou de désinstallation, un état administratif qui interdit l'action et les instances en maintenance, en cours de retrait ou sur une machine décommissionnée sont écartés et listés dans skipped avec la raison. Renvoie services dans l'ordre des dépendances, skipped, steps et operation_id ; avec dry_run, rien n'est créé et operation_id est nul. Permission services:operate. Erreurs : 409 bulk_nothing_to_do, 404 cluster_service_not_found, 409 profile_blocked, 409 approval_required (sous banking-secure, l'arrêt et les redémarrages demandent une approbation pour le service *). Audité en cluster.<action>.
Route : /api/v1/clusters/{cluster_id}/actions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Action, périmètre, découpage par lots et simulation. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une action sur tous les services d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.configure
configure(cluster_id: str, service: str, body: Any = None) -> Any
Enregistrer une nouvelle version de configuration. Fusionne les propriétés envoyées avec les valeurs courantes, les valide selon les définitions des paramètres et enregistre une nouvelle version. Renvoie version et stale_hosts. Permission configs:edit. Erreurs : 422 config_invalid (avec les champs), 409 service_unmanaged. Audité en config.update (noms des paramètres uniquement).
Route : /api/v1/clusters/{cluster_id}/services/{service}/config (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Propriétés modifiées et une note. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer une nouvelle version de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.connect_service
connect_service(cluster_id: str, body: Any = None) -> Any
Connecter un service existant. Enregistre un de vos services existants selon la section connect de son descripteur du catalogue : aucune machine, jamais installé, démarré ni arrêté par le Manager. Le contrôle de santé et le contrôle authentifié de la méthode s'exécutent d'abord ; des identifiants refusés donnent 422 connect_invalid. Dans un cluster de production ou de préproduction, HTTPS, un certificat vérifié et une méthode autorisée sont exigés. Les champs secrets sont scellés. Renvoie la synthèse du service (201). Permission services:install. Audité en service.connect.
Route : /api/v1/clusters/{cluster_id}/services/connect (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Adresse, authentification et réglages TLS du service existant. |
Retour : Any. Réponse JSON décodée de l'opération « Connecter un service existant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.disconnect_service
disconnect_service(cluster_id: str, service: str) -> Any
Déconnecter un service connecté. Oublie un service connecté et ses identifiants scellés ; le service lui-même n'est pas touché. Permission services:install. Erreurs : 409 service_not_connected, 409 service_in_use tant qu'un consommateur y est lié. Audité en service.disconnect.
Route : /api/v1/clusters/{cluster_id}/services/{service}/connection (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Déconnecter un service connecté ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.get_mode
get_mode(cluster_id: str, service: str) -> Any
Lire l'état administratif d'un service. Renvoie l'état administratif (enabled, disabled, maintenance, quarantined, suspended), sa raison, l'autorisation de fonctionner (run_authorized) le verrou de sécurité du cluster et modes, l'effet documenté de chaque mode. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/mode (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire l'état administratif d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.get_service
get_service(cluster_id: str, service: str) -> Any
Lire un service. La synthèse du service plus ses host_components (chaque instance avec son état, sa santé et sa version), ses liaisons bindings vers d'autres services et ses liens rapides quick_links (consoles web issues du catalogue). Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.health
health(cluster_id: str, service: str) -> Any
Lire les contrôles d'un service. Vivacité de chaque instance (contrôles de santé de l'agent), disponibilité (contrôle de service) et test fonctionnel, chacun avec son statut, ses résultats, son erreur et son heure. Seul un test fonctionnel réussi prouve que le service fonctionne. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/checks (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. |
Retour : Any. Réponse JSON décodée de l'opération « Lire les contrôles d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.host_action
host_action(host_id: str, body: Any = None) -> Any
Exécuter une action sur tous les composants d'une machine. Lance une seule opération qui démarre, arrête ou redémarre tous les composants placés sur la machine, ou seulement les composants dont la configuration a changé (restart_stale), service après service dans l'ordre des dépendances. Les instances en maintenance et les services dont l'état administratif interdit l'action sont écartés et listés dans skipped ; avec dry_run, rien n'est créé et operation_id est nul. Permission services:operate sur le cluster de la machine. Erreurs : 404 host_not_found, 409 bulk_nothing_to_do, 409 approval_required (sous banking-secure, l'arrêt et les redémarrages demandent une approbation pour le service host:<host id>). Audité en host.<action>.
Route : /api/v1/hosts/{host_id}/actions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Action et simulation. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une action sur tous les composants d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.host_component_action
host_component_action(cluster_id: str, service: str, component: str, host_id: str, body: Any = None) -> Any
Exécuter une action sur une instance de composant. Comme les actions de service, limité au composant sur une machine. Renvoie operation_id. Permission services:operate (services:install pour reinstall). Audité en service.<action>.
Route : /api/v1/clusters/{cluster_id}/services/{service}/components/{component}/hosts/{host_id}/actions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
component | str | oui | Nom du composant. | |
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
body | Any | None | non | Action à exécuter. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une action sur une instance de composant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.install
install(cluster_id: str, body: Any = None) -> Any
Installer des services. Valide, contrôle et planifie l'installation d'un ou plusieurs services, puis crée l'opération. Renvoie operation_id et les contrôles ha.
Route : /api/v1/clusters/{cluster_id}/services (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Services à installer avec leurs placements et leur configuration. |
Retour : Any. Réponse JSON décodée de l'opération « Installer des services ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.install_services
install_services(cluster_id: str, body: Any = None) -> Any
Installer des services. Valide, contrôle et planifie l'installation d'un ou plusieurs services, puis crée l'opération. Renvoie operation_id et les contrôles ha.
Route : /api/v1/clusters/{cluster_id}/services (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Services à installer avec leurs placements et leur configuration. |
Retour : Any. Réponse JSON décodée de l'opération « Installer des services ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.list_services
list_services(cluster_id: str) -> Any
Lister les services d'un cluster. Chaque service du cluster avec son display_name, mode, method, managed, state, health, version, ses composants et leurs machines, les machines dont la configuration est périmée, config_version, les alertes ouvertes, l'état administratif, delivery (install ou connect) et la connexion. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les services d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.lock_cluster
lock_cluster(cluster_id: str, body: Any = None) -> Any
Poser le verrou de sécurité d'un cluster. Verrouille le cluster après un incident de sécurité : toute nouvelle opération est refusée avec 423 cluster_security_locked, sauf une suspension de sécurité ou un arrêt d'urgence, jusqu'à ce qu'un administrateur de la sécurité le lève. Renvoie cluster_id et security_lock. Permission pki:manage. Audité en cluster.security_lock.
Route : /api/v1/clusters/{cluster_id}/security-lock (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Raison du verrouillage. |
Retour : Any. Réponse JSON décodée de l'opération « Poser le verrou de sécurité d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.remove_component
remove_component(cluster_id: str, service: str, component: str, host_id: str, ha_acknowledged: boolean = None) -> Any
Retirer une instance de composant d'une machine. Lance une opération qui arrête et retire le composant de cette machine et renvoie operation_id avec les contrôles ha. Permission services:install. Erreurs : 404 host_component_not_found, 422 topology_invalid (la topologie enfreindrait les règles du service), 409 ha_requirements_not_met ou ha_acknowledgement_required. Audité en service.component_remove.
Route : /api/v1/clusters/{cluster_id}/services/{service}/components/{component}/hosts/{host_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
component | str | oui | Nom du composant, tel que déclaré par le service du catalogue, par exemple server. | |
host_id | str | oui | Identifiant de la machine, enregistrée par son agent Navin. | |
ha_acknowledged | boolean | None | non | Accepter que le changement laisse le service en dessous de ses exigences de haute disponibilité. Faux par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Retirer une instance de composant d'une machine ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.rollback
rollback(cluster_id: str, upgrade_id: str, body: Any = None) -> Any
Annuler une mise à niveau. Lance l'opération qui rejoue les tâches scellées de la version précédente et rétablit la version de configuration précédente. Refusé quand le descripteur le déclare impossible ou qu'une migration irréversible a eu lieu (utilisez alors la restauration). Renvoie operation_id. Permission services:install ; 404 upgrade_not_found. Audité en service.rollback.
Route : /api/v1/clusters/{cluster_id}/upgrades/{upgrade_id}/rollback (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
upgrade_id | str | oui | Identifiant de la mise à niveau. | |
body | Any | None | non | Approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Annuler une mise à niveau ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.service_action
service_action(cluster_id: str, service: str, body: Any = None) -> Any
Exécuter une action sur un service. Lance une opération qui exécute l'action sur les composants et machines choisis (tous par défaut) et renvoie operation_id. Un redémarrage progressif traite batch_size machines à la fois. reinstall exige aussi services:install. Permission services:operate. Erreurs : 409 service_unmanaged, 409 service_check_missing, 409 smoke_test_missing, 404 host_component_not_found, 409 approval_required. Audité en service.<action>.
Route : /api/v1/clusters/{cluster_id}/services/{service}/actions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Action, périmètre et découpage par lots. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une action sur un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.service_command
service_command(cluster_id: str, service: str, command: str, body: Any = None) -> Any
Exécuter une commande personnalisée d'un service. Lance une opération qui exécute une commande déclarée par le service du catalogue (par exemple un nettoyage ou un rééquilibrage) avec ses paramètres et renvoie operation_id. Permission services:operate. Erreurs : 409 service_unmanaged, 404 command_unknown, 422 command_params_invalid, 404 host_component_not_found. Audité en service.command (noms des paramètres uniquement).
Route : /api/v1/clusters/{cluster_id}/services/{service}/commands/{command} (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
command | str | oui | Nom de la commande, tel que déclaré par le service du catalogue. | |
body | Any | None | non | Paramètres de la commande et machine cible facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Exécuter une commande personnalisée d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.service_dashboard_view
service_dashboard_view(cluster_id: str, service: str, from_: string | null = None, to: string | null = None, step: integer = None) -> Any
Lire le tableau de bord de supervision d'un service. Tableau de bord de supervision d'un service sur [from, to] (par défaut : la dernière heure) : instances, santé et derniers contrôles, disponibilité sur la période, métriques de ses machines, alertes, opérations, configuration et, pour un service connecté, sa connexion. Permission cluster:read.
Route : /api/v1/clusters/{cluster_id}/services/{service}/dashboard (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
from_ | string | null | None | non | Début de la fenêtre, ISO 8601. Par défaut : une heure avant to. |
to | string | null | None | non | Fin de la fenêtre, ISO 8601. Par défaut : maintenant. |
step | integer | None | non | Largeur d'une tranche de métriques en secondes, de 10 à 86400. 60 par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Lire le tableau de bord de supervision d'un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.service_logs
service_logs(cluster_id: str, service: str, body: Any = None) -> Any
Récupérer les journaux d'une instance de composant. Lance une opération où l'agent de la machine lit les dernières lignes des journaux du composant. Renvoie operation_id et task_id : lisez les lignes avec GET /operations/{operation_id}/tasks/{task_id}/logs. Permission services:operate. Audité en service.logs.
Route : /api/v1/clusters/{cluster_id}/services/{service}/logs (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Machine, composant et nombre de lignes. |
Retour : Any. Réponse JSON décodée de l'opération « Récupérer les journaux d'une instance de composant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.set_mode
set_mode(cluster_id: str, service: str, body: Any = None) -> Any
Appliquer un mode d'exploitation à un service. Applique un mode et renvoie l'état administratif obtenu, son effet documenté effect sur les nouvelles requêtes et les transactions en cours, l'operation_id quand le mode arrête des processus, et l'impact informatif ha :
Route : /api/v1/clusters/{cluster_id}/services/{service}/mode (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Mode, raison et délai de vidange. |
Retour : Any. Réponse JSON décodée de l'opération « Appliquer un mode d'exploitation à un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.uninstall_service
uninstall_service(cluster_id: str, service: str, purge_data: boolean = None, approval_id: string | null = None) -> Any
Désinstaller un service. Lance l'opération de désinstallation (arrêt, retrait des paquets et, avec purge_data, des données) et renvoie operation_id. Permission services:install. Erreurs : 409 service_in_use (consommateurs listés dans details.consumers), 409 service_connected (utilisez DELETE .../connection), 409 approval_required sous banking-secure. Audité en service.uninstall.
Route : /api/v1/clusters/{cluster_id}/services/{service} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
purge_data | boolean | None | non | Supprimer aussi les répertoires de données du service. Irréversible. Faux par défaut. |
approval_id | string | null | None | non | Identifiant de l'approbation accordée pour cette désinstallation (banking-secure). Omettez-le pour utiliser l'approbation qui vous a été accordée, s'il y en a une. |
Retour : Any. Réponse JSON décodée de l'opération « Désinstaller un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.unlock_cluster
unlock_cluster(cluster_id: str) -> Any
Lever le verrou de sécurité d'un cluster. Lève le verrou : les nouvelles opérations sont à nouveau acceptées. Renvoie cluster_id et security_lock (nul). Permission pki:manage (rôle de sécurité). Audité en cluster.security_unlock.
Route : /api/v1/clusters/{cluster_id}/security-lock (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Lever le verrou de sécurité d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.update_connection
update_connection(cluster_id: str, service: str, body: Any = None) -> Any
Modifier un service connecté. Modifie l'adresse, les identifiants (rotation) ou les réglages TLS d'un service connecté ; une valeur omise conserve celle enregistrée. Avec dry_run, le changement est contrôlé comme une validation de connexion et n'est pas enregistré. Des identifiants refusés par le service ne sont jamais enregistrés (422 connect_invalid). Permission services:install ; 409 service_not_connected. Audité en service.connection.update (noms des champs uniquement, jamais les valeurs).
Route : /api/v1/clusters/{cluster_id}/services/{service}/connection (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Champs de la connexion à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un service connecté ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.upgrade
upgrade(cluster_id: str, service: str, body: Any = None) -> Any
Mettre à niveau un service. Met à niveau le service vers la version du catalogue en une seule opération :
Route : /api/v1/clusters/{cluster_id}/services/{service}/upgrade (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
service | str | oui | Nom du service du catalogue, par exemple postgresql ou keycloak. | |
body | Any | None | non | Machine canari et approbation facultative. |
Retour : Any. Réponse JSON décodée de l'opération « Mettre à niveau un service ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.validate_connect
validate_connect(cluster_id: str, body: Any = None) -> Any
Contrôler une connexion avant de l'enregistrer. Essai à blanc d'une connexion : contrôle la demande selon le descripteur, puis exécute le contrôle de santé et le contrôle authentifié de la méthode. Renvoie le verdict avec les erreurs ; rien n'est enregistré. Permission services:install.
Route : /api/v1/clusters/{cluster_id}/services/connect/validate (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Même corps qu'une connexion. |
Retour : Any. Réponse JSON décodée de l'opération « Contrôler une connexion avant de l'enregistrer ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ServicesApi.validate_services
validate_services(cluster_id: str, body: Any = None) -> Any
Valider une installation sans l'exécuter. Contrôle une demande d'installation et la prévisualise sans rien modifier. Renvoie ok, errors (chacune avec service, field, code, message_i18n), plan (order, nombre d'étapes stages, steps), ha (contrôles de haute disponibilité) et dependencies (items et added). Permission services:install.
Route : /api/v1/clusters/{cluster_id}/services/validate (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). | |
body | Any | None | non | Même corps qu'une installation. |
Retour : Any. Réponse JSON décodée de l'opération « Valider une installation sans l'exécuter ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe SettingsApi
Réglages. Réglages généraux du Manager : nom du site, langue par défaut, valeurs par défaut d'installation (méthode préférée, registre, miroir), SMTP et syslog distant pour les notifications d'alertes (syslog sert aussi à la règle d'audit distant de banking-secure), conservation des données et proxy d'entreprise des machines gérées. Tout utilisateur connecté lit les valeurs non secrètes ; settings:manage (globale) les modifie. Le mot de passe SMTP est relu sous la forme {"secret": true, "set": true|false}. Les changements sont audités (settings.update). Opérations de ce groupe de l'API du Navin Manager.
Resource
SettingsApi.get_settings_view
get_settings_view() -> Any
Lire les réglages. Renvoie site_name, default_language, install, smtp, syslog, retention et proxy, secrets masqués. Tout utilisateur connecté.
Route : /api/v1/settings (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire les réglages ».
Erreurs levées : les erreurs typées du transport (Erreurs).
SettingsApi.put_settings
put_settings(body: Any = None) -> Any
Modifier les réglages. Modifie les sections et les champs fournis ; une section ou un champ omis est conservé. Renvoie les réglages. Permission settings:manage. Erreurs : 422 proxy_invalid (URL de proxy avec identifiants ou hors http(s)), 422 validation_error. Audité en settings.update.
Route : /api/v1/settings (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Sections des réglages à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier les réglages ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe StackApi
Catalogue de la pile. Le catalogue des services que le Manager peut installer (la pile) : chaque service avec ses versions, ses composants, ses méthodes d'installation, ses paramètres, ses dépendances et ses règles de haute disponibilité. Tout utilisateur connecté peut le lire ; aucune permission n'est nécessaire. Opérations de ce groupe de l'API du Navin Manager.
Resource
StackApi.high_availability
high_availability() -> Any
Lire la matrice de haute disponibilité du catalogue. Matrice de haute disponibilité de chaque service du catalogue, triée par catégorie puis par nom : ses modes (topologies) avec la cardinalité de chaque composant, et son bloc de haute disponibilité avec les contrôles de vivacité et de disponibilité. Renvoie items et count. Tout utilisateur connecté.
Route : /api/v1/catalog/high-availability (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la matrice de haute disponibilité du catalogue ».
Erreurs levées : les erreurs typées du transport (Erreurs).
StackApi.service
service(name: str) -> Any
Lire un service du catalogue. Description publique d'un service du catalogue : composants, modes, méthodes, mode de livraison, couche et haute disponibilité. Tout utilisateur connecté ; 404 pour un service inconnu.
Route : /api/v1/stack/services/{name} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom du service du catalogue, par exemple postgresql. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un service du catalogue ».
Erreurs levées : les erreurs typées du transport (Erreurs).
StackApi.stack
stack() -> Any
Lire la synthèse du catalogue. Nom, version et catégories de la pile et une synthèse de chaque service qu'elle propose (composants, modes, dépendances, licence). Tout utilisateur connecté.
Route : /api/v1/stack (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la synthèse du catalogue ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe SystemApi
Système. Supervision du Manager par lui-même : santé de la base de données, du moteur, des agents et des tâches planifiées, liste des systèmes d'exploitation pris en charge et découverte de services Prometheus d'un cluster. Permissions : system:read pour la santé, cluster:read pour la découverte de services ; les systèmes pris en charge sont ouverts à tout utilisateur connecté. Opérations de ce groupe de l'API du Navin Manager.
Resource
SystemApi.health
health() -> Any
Lire la santé du Manager. Renvoie version, database (ok, latency_ms), engine (leader, last_tick_at, lag_s, queued_tasks), agents (online : battement de cœur dans les 60 dernières secondes, lost, total) et scheduler.jobs (dernière exécution et dernière erreur de chaque tâche). Permission system:read.
Route : /api/v1/system/health (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire la santé du Manager ».
Erreurs levées : les erreurs typées du transport (Erreurs).
SystemApi.prometheus_sd
prometheus_sd(cluster_id: str) -> Any
Découverte de services Prometheus d'un cluster. Cibles au format de découverte de services HTTP de Prometheus : un groupe par instance de composant qui expose des métriques, avec targets (fqdn:port) et les étiquettes __metrics_path__, __scheme__, nm_cluster, nm_service, nm_component, nm_host. Permission cluster:read ; 404 cluster_not_found.
Route : /api/v1/clusters/{cluster_id}/sd/prometheus (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster (un environnement de machines ou un cluster Kubernetes géré par le Navin Manager). |
Retour : Any. Réponse JSON décodée de l'opération « Découverte de services Prometheus d'un cluster ».
Erreurs levées : les erreurs typées du transport (Erreurs).
SystemApi.supported_os
supported_os() -> Any
Lister les systèmes d'exploitation pris en charge. Liste publiée des systèmes d'exploitation et des versions pris en charge par les agents et les services. Tout utilisateur connecté.
Route : /api/v1/system/supported-os (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les systèmes d'exploitation pris en charge ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe TelemetryApi
Télémétrie. État de l'export en temps réel des métriques et événements du Manager vers ClickHouse. La plateforme ne livre pas de serveur de tableaux de bord (ADR-0169) : les machines et les services se suivent dans le Manager lui-même et les tables exportées se lisent en SQL. L'export est désactivé tant qu'aucune URL ClickHouse n'est configurée. Tout principal qui lit au moins un cluster (cluster:read, globale ou sur un cluster). Opérations de ce groupe de l'API du Navin Manager.
Resource
TelemetryApi.telemetry
telemetry() -> Any
Lire l'état de l'export de télémétrie. Renvoie enabled, database, flush_seconds, retention_days, stats (buffered, written, dropped, failures, last_error) et les tables exportées tables. Permission cluster:read sur au moins un cluster.
Route : /api/v1/telemetry (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire l'état de l'export de télémétrie ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe UsersApi
Utilisateurs et rôles. Administration des comptes de la console et de leurs attributions de rôle. Opérations de ce groupe de l'API du Navin Manager.
Resource
UsersApi.create_user
create_user(body: Any = None) -> Any
Créer un utilisateur local. Crée un compte local avec son mot de passe et ses attributions de rôle, et le renvoie (201). Permission users:manage. Erreurs : 409 username_taken, 422 password_policy, 422 role_invalid, 422 role_global_only, 422 binding_cluster_not_found, 403 user_manage_denied (accorder admin sans être administrateur complet). Audité en user.create.
Route : /api/v1/users (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le nouveau compte. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un utilisateur local ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.delete_user
delete_user(user_id: str) -> Any
Supprimer un utilisateur. Supprime le compte. Répond 204. Permission users:manage. Erreurs : 404 user_not_found, 409 cannot_delete_self, 409 last_admin, 403 user_manage_denied. Audité en user.delete.
Route : /api/v1/users/{user_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un utilisateur ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.get_user
get_user(user_id: str) -> Any
Lire un utilisateur. Renvoie le compte avec ses attributions de rôle (role, cluster_id, source). Permission users:read ; 404 user_not_found.
Route : /api/v1/users/{user_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un utilisateur ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.list_users
list_users(q: string | null = None, source: "local" | "ldap" | "oidc" | null = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les utilisateurs. Utilisateurs triés par nom d'utilisateur, chacun avec ses attributions de rôle, l'état de sa MFA, son verrouillage et sa dernière connexion. Paginé avec limit et cursor. Permission users:read.
Route : /api/v1/users (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
q | string | null | None | non | Texte recherché, sans tenir compte de la casse, dans le nom d'utilisateur, le nom affiché et l'e-mail. |
source | "local" | "ldap" | "oidc" | null | None | non | Uniquement les utilisateurs de cette origine : local, ldap ou oidc. |
limit | int | None | None | non | Nombre maximal d'utilisateurs dans la page, de 1 à 500. 50 par défaut. |
cursor | str | None | None | non | Le next_cursor de la page précédente (le dernier nom d'utilisateur, en minuscules). Omettez-le pour la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les utilisateurs ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.patch_user
patch_user(user_id: str, body: Any = None) -> Any
Modifier ou désactiver un utilisateur. Modifie les champs fournis, conserve les autres et renvoie l'utilisateur. Désactiver un compte révoque immédiatement ses sessions. Permission users:manage. Erreurs : 404 user_not_found, 409 cannot_disable_self, 409 last_admin, 403 user_manage_denied. Audité en user.update.
Route : /api/v1/users/{user_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. | |
body | Any | None | non | Champs de l'utilisateur à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier ou désactiver un utilisateur ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.put_roles
put_roles(user_id: str, body: Any = None) -> Any
Remplacer les attributions de rôle d'un utilisateur. Remplace les attributions manuelles par la liste fournie ; les attributions synchronisées depuis LDAP ou OIDC sont conservées. Quand un nouveau rôle exige la MFA et que l'utilisateur n'en a pas, ses sessions sont révoquées. Renvoie l'utilisateur. Permission users:manage. Erreurs : 409 last_admin, 422 role_invalid, 422 role_global_only, 422 binding_cluster_not_found, 403 user_manage_denied. Audité en user.roles avec les attributions avant et après.
Route : /api/v1/users/{user_id}/roles (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. | |
body | Any | None | non | La liste complète des attributions manuelles. |
Retour : Any. Réponse JSON décodée de l'opération « Remplacer les attributions de rôle d'un utilisateur ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.reset_mfa
reset_mfa(user_id: str) -> Any
Réinitialiser le second facteur d'un utilisateur. Désactive la MFA de l'utilisateur, supprime son secret et ses codes de secours et révoque ses sessions ; l'utilisateur s'enrôle à nouveau à la prochaine connexion quand son rôle exige la MFA. Renvoie l'utilisateur. Permission users:manage. Audité en user.mfa_reset.
Route : /api/v1/users/{user_id}/mfa/reset (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. |
Retour : Any. Réponse JSON décodée de l'opération « Réinitialiser le second facteur d'un utilisateur ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.reset_password
reset_password(user_id: str, body: Any = None) -> Any
Définir le mot de passe d'un utilisateur local. Définit un nouveau mot de passe conforme à la politique, déverrouille le compte et révoque ses sessions. Répond 204. Permission users:manage. Erreurs : 409 not_local_user, 422 password_policy, 404 user_not_found, 403 user_manage_denied. Audité en user.password_reset.
Route : /api/v1/users/{user_id}/password (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. | |
body | Any | None | non | Le nouveau mot de passe et l'obligation ou non de le changer à la prochaine connexion. |
Retour : Any. Réponse JSON décodée de l'opération « Définir le mot de passe d'un utilisateur local ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.roles
roles() -> Any
Lister les rôles et leurs permissions. Chaque rôle avec son nom name, son libellé label dans les deux langues, ses permissions triées permissions et ses portées scopes (global, et cluster quand il peut être attribué sur un seul cluster). Permission users:read.
Route : /api/v1/roles (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les rôles et leurs permissions ».
Erreurs levées : les erreurs typées du transport (Erreurs).
UsersApi.unlock_user
unlock_user(user_id: str) -> Any
Déverrouiller un utilisateur. Lève le verrouillage posé après des échecs de connexion répétés et remet le compteur d'échecs à zéro. Renvoie l'utilisateur. Permission users:manage. Audité en user.unlock.
Route : /api/v1/users/{user_id}/unlock (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant du compte utilisateur de la console. |
Retour : Any. Réponse JSON décodée de l'opération « Déverrouiller un utilisateur ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe VaultApi
Coffre-fort. Le coffre-fort des administrateurs de la plateforme : les identifiants des services de la plateforme. Une entrée est un nom de service, son URL, un identifiant de connexion, un mot de passe et une clé d'API ou clé secrète. Seul le nom est conservé en clair ; URL, identifiant, mot de passe et clé forment un document scellé en AES-256-GCM avec la clé maîtresse. Les listes et les fiches ne portent jamais le mot de passe ni la clé (has_password, has_api_key) ; POST .../reveal les renvoie et est audité, l'audit ne gardant que le nom du service, jamais une valeur. Opérations de ce groupe de l'API du Navin Manager.
Resource
VaultApi.create_entry
create_entry(body: Any = None) -> Any
Ajouter une entrée au coffre. Crée une entrée manuelle et la renvoie (201). Permission vault:manage. Erreurs : 409 vault_name_taken, 422 vault_name_required. Audité en vault.create.
Route : /api/v1/vault/entries (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
body | Any | None | non | Le service et ses identifiants. |
Retour : Any. Réponse JSON décodée de l'opération « Ajouter une entrée au coffre ».
Erreurs levées : les erreurs typées du transport (Erreurs).
VaultApi.delete_entry
delete_entry(entry_id: str) -> Any
Supprimer une entrée du coffre. Supprime l'entrée. Répond 204. Permission vault:manage ; 404 vault_entry_not_found. Audité en vault.delete.
Route : /api/v1/vault/entries/{entry_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
entry_id | str | oui | Identifiant de l'entrée du coffre. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une entrée du coffre ».
Erreurs levées : les erreurs typées du transport (Erreurs).
VaultApi.get_entry
get_entry(entry_id: str) -> Any
Lire une entrée du coffre. Renvoie la fiche d'une entrée sans son mot de passe ni sa clé. Permission vault:manage ; 404 vault_entry_not_found.
Route : /api/v1/vault/entries/{entry_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
entry_id | str | oui | Identifiant de l'entrée du coffre. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une entrée du coffre ».
Erreurs levées : les erreurs typées du transport (Erreurs).
VaultApi.import_entries
import_entries() -> Any
Importer les identifiants des services installés. Crée ou rafraîchit les entrées des services installés de chaque cluster ; les champs modifiés à la main sont conservés. Renvoie les noms des entrées par résultat. Permission vault:manage. Audité en vault.import.
Route : /api/v1/vault/import (POST).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Importer les identifiants des services installés ».
Erreurs levées : les erreurs typées du transport (Erreurs).
VaultApi.list_entries
list_entries() -> Any
Lister les entrées du coffre. Services du coffre triés par nom, avec leur URL et leur identifiant mais sans leur mot de passe ni leur clé. Permission vault:manage.
Route : /api/v1/vault/entries (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les entrées du coffre ».
Erreurs levées : les erreurs typées du transport (Erreurs).
VaultApi.reveal_entry
reveal_entry(entry_id: str) -> Any
Révéler le mot de passe et la clé d'une entrée. Renvoie en clair le mot de passe et la clé d'un service, pour les afficher et les copier dans la console. Permission vault:manage ; 404 vault_entry_not_found. Audité en vault.reveal (nom du service uniquement).
Route : /api/v1/vault/entries/{entry_id}/reveal (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
entry_id | str | oui | Identifiant de l'entrée du coffre. |
Retour : Any. Réponse JSON décodée de l'opération « Révéler le mot de passe et la clé d'une entrée ».
Erreurs levées : les erreurs typées du transport (Erreurs).
VaultApi.update_entry
update_entry(entry_id: str, body: Any = None) -> Any
Modifier une entrée du coffre. Modifie les champs fournis et renvoie l'entrée. Permission vault:manage. Erreurs : 404 vault_entry_not_found, 409 vault_name_taken, 422 vault_name_required, 409 vault_entry_managed (identifiants d'une console dont le Manager assure la rotation). Audité en vault.update (noms des champs uniquement).
Route : /api/v1/vault/entries/{entry_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
entry_id | str | oui | Identifiant de l'entrée du coffre. | |
body | Any | None | non | Champs de l'entrée à modifier. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une entrée du coffre ».
Erreurs levées : les erreurs typées du transport (Erreurs).