Aller au contenu principal

enterprise_ai.policy

Source : sdks/python/src/enterprise_ai/policy/__init__.py. Retour à l'index de la référence du SDK Python.

remarque

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 PoliciesClient​

Politiques. Politiques fondées sur les attributs (ABAC) qui décident de chaque action sensible de la plateforme, avec le Policy Contract v1, le journal des décisions, la simulation, les révisions et les bundles OPA signés.

Resource

PoliciesClient.create​

create(policy: dict[str, Any]) -> Any

Créer une politique. Crée une politique du tenant et ajoute sa première révision. Une politique opa exige rego (422 validation_error) et, sauf si OPA charge des bundles signés, est poussée immédiatement dans OPA (503 policy_engine_unavailable quand OPA est injoignable). Un nom déjà utilisé répond 409 conflict. Exige tenant_admin ou security_officer. Écrit l'événement d'audit policy.create.

Route : /v1/policies (POST).

NomTypeDéfautRequisDescription
policydict[str, Any]ouiDocument Policy Contract de la nouvelle politique.

Retour : Any. Réponse JSON décodée de l'opération « Créer une politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.create_bundle​

create_bundle(revision: str | None = None, data: dict[str, Any] | None = None) -> Any

Publier un bundle OPA. Emballe les politiques opa du tenant dans un bundle OPA signé et l'enregistre comme nouvelle révision current. Les politiques actives sont décidées par OPA ; les brouillons sont livrés comme bibliothèques ; les désactivées sont exclues. Aucune politique opa répond 409 policy_bundle_empty ; aucune clé de signature en production 503 policy_bundle_signing_unavailable. Exige tenant_admin ou security_officer. Écrit l'événement d'audit policy.bundle_publish. Répond 201 avec l'enregistrement du bundle.

Route : /v1/policies/bundles (POST).

NomTypeDéfautRequisDescription
revisionstr | NoneNonenonRévision du bundle, ou current pour la dernière publiée.
datadict[str, Any] | NoneNonenonNom de révision et contenu de data.json facultatifs. Un corps vide génère la révision.

Retour : Any. Réponse JSON décodée de l'opération « Publier un bundle OPA ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.decisions​

decisions(**page: Any) -> Any

Lister les décisions de politique. Liste les décisions du tenant, les plus récentes d'abord, paginées : sujet, action, ressource, contexte, autorisation, politique et version, raisons, obligations, moteur et date. Exige tenant_admin, security_officer ou auditor.

Route : /v1/policies/decisions (GET).

NomTypeDéfautRequisDescription
**pageAnynonOptions de pagination transmises à la liste : limit (nombre maximal d'éléments par page) et cursor (le next_cursor de la page précédente). Itérer sur la page renvoyée suit tous les curseurs.

Retour : Any. Réponse JSON décodée de l'opération « Lister les décisions de politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.delete​

delete(policy_id: str) -> Any

Supprimer une politique. Supprime la politique et ajoute une révision delete. Une politique OPA poussée directement dans OPA en est aussi retirée (503 policy_engine_unavailable quand OPA est injoignable). Exige tenant_admin ou security_officer. Écrit l'événement d'audit policy.delete. Répond 204, ou 404 not_found.

Route : /v1/policies/{policy_id} (DELETE).

NomTypeDéfautRequisDescription
policy_idstrouiIdentifiant (UUID) de la politique.

Retour : Any. Réponse JSON décodée de l'opération « Supprimer une politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.diff​

diff(policy_id: str, from_revision: int | None = None, to_revision: int | None = None) -> Any

Comparer deux révisions d'une politique. Renvoie les différences entre deux révisions de la politique. Par défaut : la révision précédente face à la dernière. La politique est d'abord recherchée (404 not_found), puis les révisions (404 not_found). Exige tenant_admin, security_officer, auditor ou developer.

Route : /v1/policies/{policy_id}/revisions/diff (GET).

NomTypeDéfautRequisDescription
policy_idstrouiIdentifiant (UUID) de la politique.
from_revisionint | NoneNonenonNuméro de la révision la plus ancienne (1 ou plus). Par défaut : celle qui précède to_revision.
to_revisionint | NoneNonenonNuméro de la révision la plus récente (1 ou plus). Par défaut : la dernière.

Retour : Any. Réponse JSON décodée de l'opération « Comparer deux révisions d'une politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.download_bundle​

download_bundle(revision: str) -> Any

Télécharger un bundle OPA. Renvoie le bundle qu'OPA interroge, en application/gzip : modules Rego, data.json facultatif, .manifest et .signatures.json (JWT RS256 sur le SHA-256 de chaque fichier). L'en-tête ETag est son SHA-256 et X-Bundle-Revision sa révision. Exige tenant_admin, security_officer ou auditor. Répond 404 not_found pour une révision inconnue.

Route : /v1/policies/bundles/{revision}/bundle.tar.gz (GET).

NomTypeDéfautRequisDescription
revisionstrouiRévision du bundle, ou current pour la dernière publiée.

Retour : Any. Réponse JSON décodée de l'opération « Télécharger un bundle OPA ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.engines​

engines() -> Any

Lire l'état des moteurs de politique. Renvoie les services de politique (moteur intégré, OPA, OpenFGA) et la version de politique ou la révision de bundle que chacun exécute réellement, lue auprès du moteur lui-même. Exige tenant_admin, security_officer ou auditor.

Route : /v1/policies/engines (GET).

Cet élément ne prend aucun paramètre.

Retour : Any. Réponse JSON décodée de l'opération « Lire l'état des moteurs de politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.evaluate​

evaluate(request: dict[str, Any]) -> Any

Évaluer une demande de politique. Renvoie la décision pour une demande du Policy Contract. Le corps est un Policy Contract ({schema_version, request}) ou seulement son objet request (subject, action, resource, context) ; il est validé avec le contrat policy-contract (422 validation_error).

Route : /v1/policies/evaluate (POST).

NomTypeDéfautRequisDescription
requestdict[str, Any]ouiDocument Policy Contract, ou son seul objet request.

Retour : Any. Réponse JSON décodée de l'opération « Évaluer une demande de politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.get​

get(policy_id: str) -> Any

Lire une politique. Renvoie une politique. Ouvert à tout membre du tenant. Répond 404 not_found.

Route : /v1/policies/{policy_id} (GET).

NomTypeDéfautRequisDescription
policy_idstrouiIdentifiant (UUID) de la politique.

Retour : Any. Réponse JSON décodée de l'opération « Lire une politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.list​

list(**page: Any) -> Any

Lister les politiques. Liste les politiques du tenant dans l'ordre d'évaluation (priorité, puis nom), avec leurs règles ou leur Rego. Ouvert à tout membre du tenant. next_cursor vaut toujours null.

Route : /v1/policies (GET).

NomTypeDéfautRequisDescription
**pageAnynonOptions de pagination transmises à la liste : limit (nombre maximal d'éléments par page) et cursor (le next_cursor de la page précédente). Itérer sur la page renvoyée suit tous les curseurs.

Retour : Any. Réponse JSON décodée de l'opération « Lister les politiques ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.list_bundles​

list_bundles() -> Any

Lister les bundles OPA. Liste les bundles OPA publiés pour le tenant : révision, SHA-256, état de signature, politiques incluses et date. Exige tenant_admin, security_officer ou auditor.

Route : /v1/policies/bundles (GET).

Cet élément ne prend aucun paramètre.

Retour : Any. Réponse JSON décodée de l'opération « Lister les bundles OPA ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.replace​

replace(policy_id: str, policy: dict[str, Any]) -> Any

Remplacer une politique. Remplace tous les champs de la politique et ajoute une révision update. Même validation qu'à la création (rego pour opa, nom unique). Une politique opa est poussée dans OPA sauf si OPA charge des bundles. Exige tenant_admin ou security_officer. Écrit l'événement d'audit policy.update. Répond 404 not_found pour une politique inconnue.

Route : /v1/policies/{policy_id} (PUT).

NomTypeDéfautRequisDescription
policy_idstrouiIdentifiant (UUID) de la politique.
policydict[str, Any]ouiDocument Policy Contract complet qui remplace l'actuel.

Retour : Any. Réponse JSON décodée de l'opération « Remplacer une politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.revisions​

revisions(policy_id: str) -> Any

Lister les révisions d'une politique. Liste les révisions immuables de la politique (une par création, modification et suppression, écrite dans la même transaction), avec leur numéro, opération, auteur, date et contenu. Exige tenant_admin, security_officer, auditor ou developer. Répond 404 not_found.

Route : /v1/policies/{policy_id}/revisions (GET).

NomTypeDéfautRequisDescription
policy_idstrouiIdentifiant (UUID) de la politique.

Retour : Any. Réponse JSON décodée de l'opération « Lister les révisions d'une politique ».

Erreurs levées : les erreurs typées du transport (Erreurs).

PoliciesClient.simulate​

simulate(candidate: dict[str, Any], policy_id: str | None = None, inputs: list[dict[str, Any]] | None = None, recorded: bool | None = None) -> Any

Simuler une politique candidate. Compare, entrée par entrée, les décisions des politiques actives avec celles du même ensemble où la candidate remplace policy_id (ou est ajoutée). Rien n'est modifié.

Route : /v1/policies/simulate (POST).

NomTypeDéfautRequisDescription
candidatedict[str, Any]ouiPolitique candidate, moteur builtin.
policy_idstr | NoneNonenonPolitique que la candidate remplace ; null pour l'ajouter à l'ensemble actif.
inputslist[dict[str, Any]] | NoneNonenonDemandes Policy Contract {subject, action, resource, context} à décider, 200 au plus. Sans subject, l'appelant est utilisé.
recordedbool | NoneNonenonRejouer aussi les N dernières décisions enregistrées, de 0 à 500 (0 par défaut).

Retour : Any. Réponse JSON décodée de l'opération « Simuler une politique candidate ».

Erreurs levées : les erreurs typées du transport (Erreurs).

Classe RiskClient​

Risques et conformité. Gestion des risques des systèmes d'IA du tenant : évaluations au titre de l'AI Act européen, contrôles rattachés à l'ISO/IEC 42001, au NIST AI RMF, au RGPD et à l'AI Act, preuves et dérogations limitées dans le temps.

Resource

RiskClient.create_assessment​

create_assessment(assessment: dict[str, Any]) -> Any

Évaluer le risque d'un système d'IA. Classe la cible au titre de l'AI Act européen et enregistre l'évaluation. Exige tenant_admin, security_officer, developer ou ai_governance_officer ; le statut approved exige tenant_admin, security_officer ou ai_governance_officer (403 forbidden).

Route : /v1/risk/assessments (POST).

NomTypeDéfautRequisDescription
assessmentdict[str, Any]ouiÉvaluation des risques à créer, envoyée comme corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Évaluer le risque d'un système d'IA ».

Erreurs levées : les erreurs typées du transport (Erreurs).

RiskClient.create_control​

create_control(control: dict[str, Any]) -> Any

Adopter ou modifier un contrôle. Crée ou modifie le contrôle du code donné. Pour un code du catalogue, le titre et les référentiels valent par défaut ceux du catalogue. Exige tenant_admin ou security_officer. Erreurs 400 invalid_request : statut autre que planned, implemented, partially_implemented ou not_applicable ; absence de titre pour un code personnalisé ; référentiel autre que iso_42001, nist_ai_rmf, gdpr ou eu_ai_act. Les preuves fournies sont ajoutées. Écrit l'événement d'audit risk.control.upsert.

Route : /v1/risk/controls (POST).

NomTypeDéfautRequisDescription
controldict[str, Any]ouiContrôle de risque à créer, envoyé comme corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Adopter ou modifier un contrôle ».

Erreurs levées : les erreurs typées du transport (Erreurs).

RiskClient.create_exception​

create_exception(exception: dict[str, Any]) -> Any

Demander une dérogation à un contrôle. Enregistre une dérogation limitée dans le temps sur un contrôle (control_id ou control_code) ou sur une cible (target_ref). Exige tenant_admin, security_officer ou developer.

Route : /v1/risk/exceptions (POST).

NomTypeDéfautRequisDescription
exceptiondict[str, Any]ouiException de risque à créer, envoyée comme corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Demander une dérogation à un contrôle ».

Erreurs levées : les erreurs typées du transport (Erreurs).

RiskClient.evidence​

evidence(**filters: Any) -> Any

Lire les preuves de conformité. Renvoie les preuves enregistrées sur les contrôles et les évaluations, les plus récentes d'abord, plus les preuves collectées automatiquement sur la plateforme et rattachées aux contrôles du catalogue : nombres d'agents, d'outils, de modèles, d'évaluations, de règles DLP et de politiques de conservation actives, de clés, d'événements et d'exports d'audit avec l'état de la chaîne d'audit, d'évaluations, de campagnes de red team, d'incidents et de validations. Ouvert à tout membre du tenant.

Route : /v1/risk/evidence (GET).

NomTypeDéfautRequisDescription
**filtersAnynonParamètres de requête de la liste des preuves, envoyés tels quels.

Retour : Any. Réponse JSON décodée de l'opération « Lire les preuves de conformité ».

Erreurs levées : les erreurs typées du transport (Erreurs).

RiskClient.list_assessments​

list_assessments(**page: Any) -> Any

Lister les évaluations de risques. Liste les évaluations du tenant, les plus récentes d'abord, 500 au plus, éventuellement pour une seule cible. Chaque élément donne la cible, eu_ai_act_category (aussi en risk_level), les cas d'usage, les réponses, la justification, les obligations, le statut et le responsable. Ouvert à tout membre du tenant. next_cursor vaut toujours null.

Route : /v1/risk/assessments (GET).

NomTypeDéfautRequisDescription
**pageAnynonOptions de pagination transmises à la liste : limit (nombre maximal d'éléments par page) et cursor (le next_cursor de la page précédente). Itérer sur la page renvoyée suit tous les curseurs.

Retour : Any. Réponse JSON décodée de l'opération « Lister les évaluations de risques ».

Erreurs levées : les erreurs typées du transport (Erreurs).

RiskClient.list_controls​

list_controls(**page: Any) -> Any

Lister les contrôles. Liste les contrôles adoptés par le tenant, triés par code, chacun avec evidence_count, ses exceptions et active_exceptions, ainsi que le catalog intégré où adopted indique ceux que le tenant utilise. Ouvert à tout membre du tenant.

Route : /v1/risk/controls (GET).

NomTypeDéfautRequisDescription
**pageAnynonOptions de pagination transmises à la liste : limit (nombre maximal d'éléments par page) et cursor (le next_cursor de la page précédente). Itérer sur la page renvoyée suit tous les curseurs.

Retour : Any. Réponse JSON décodée de l'opération « Lister les contrôles ».

Erreurs levées : les erreurs typées du transport (Erreurs).

RiskClient.list_exceptions​

list_exceptions(status: str | None = None) -> Any

Lister les dérogations. Liste les dérogations du tenant triées par expiration, chacune avec son status calculé : active, expired ou revoked. Ouvert à tout membre du tenant. next_cursor vaut toujours null.

Route : /v1/risk/exceptions (GET).

NomTypeDéfautRequisDescription
statusstr | NoneNonenonUniquement les dérogations dans ce statut : active, expired ou revoked.

Retour : Any. Réponse JSON décodée de l'opération « Lister les dérogations ».

Erreurs levées : les erreurs typées du transport (Erreurs).

Classe IncidentsClient​

Incidents. Incidents de sécurité et d'exploitation du tenant : gravité, statut, chronologie, actions de confinement, alertes Alertmanager et transmission au SIEM.

Resource

IncidentsClient.act​

act(incident_id: str, action: str, target: str, reason: str | None = None, **extra: Any) -> Any

Lancer une action de confinement. Lance une action de confinement par le domaine propriétaire de la cible et l'enregistre sur l'incident. Exige tenant_admin ou security_officer.

Route : /v1/incidents/{incident_id}/actions (POST).

NomTypeDéfautRequisDescription
incident_idstrouiIdentifiant (UUID) de l'incident.
actionstrouisuspend_agent, resume_agent, kill_agent, suspend_model, disable_model, disable_provider, rotate_key ou revoke_key.
targetstrouiCible de l'action : id ou name (ou model_id), plus scope, kind ou grace_seconds selon l'action.
reasonstr | NoneNonenonRaison de l'action, transmise au domaine propriétaire et conservée dans le journal. Par défaut : incident action <action>.
**extraAnynonChamps supplémentaires fusionnés dans le corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Lancer une action de confinement ».

Erreurs levées : les erreurs typées du transport (Erreurs).

IncidentsClient.create​

create(title: str, severity: str, **extra: Any) -> Any

Ouvrir un incident. Ouvre un incident au statut open, ajoute l'entrée created à la chronologie et le transmet au SIEM. Exige tenant_admin, security_officer, developer ou agent. Une gravité inconnue répond 400 invalid_request. Écrit l'événement d'audit incident.create. La réponse (201) porte l'incident avec sa chronologie.

Route : /v1/incidents (POST).

NomTypeDéfautRequisDescription
titlestrouiTitre, 3 à 300 caractères.
severitystrouisev1 (le plus grave) à sev4 ; les alias critical, high, medium et low sont acceptés. sev3 par défaut.
**extraAnynonChamps supplémentaires fusionnés dans le corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Ouvrir un incident ».

Erreurs levées : les erreurs typées du transport (Erreurs).

IncidentsClient.get​

get(incident_id: str) -> Any

Lire un incident. Renvoie l'incident avec sa timeline (type, message, données, acteur, date) et ses actions de confinement (action, cible, statut, résultat). Ouvert à tout membre du tenant. Répond 404 not_found.

Route : /v1/incidents/{incident_id} (GET).

NomTypeDéfautRequisDescription
incident_idstrouiIdentifiant (UUID) de l'incident.

Retour : Any. Réponse JSON décodée de l'opération « Lire un incident ».

Erreurs levées : les erreurs typées du transport (Erreurs).

IncidentsClient.list​

list(**page: Any) -> Any

Lister les incidents. Liste les incidents du tenant, identifiant le plus récent d'abord, paginés, éventuellement filtrés par statut et gravité. Les éléments ne portent ni la chronologie ni les actions (lisez un incident pour les obtenir). Ouvert à tout membre du tenant.

Route : /v1/incidents (GET).

NomTypeDéfautRequisDescription
**pageAnynonOptions de pagination transmises à la liste : limit (nombre maximal d'éléments par page) et cursor (le next_cursor de la page précédente). Itérer sur la page renvoyée suit tous les curseurs.

Retour : Any. Réponse JSON décodée de l'opération « Lister les incidents ».

Erreurs levées : les erreurs typées du transport (Erreurs).

IncidentsClient.receive_alerts​

receive_alerts(payload: dict[str, Any]) -> Any

Recevoir des alertes Alertmanager. Récepteur webhook de Prometheus Alertmanager (charge utile en version 4). Chaque alerte est identifiée par son fingerprint :

Route : /v1/incidents/alerts (POST).

NomTypeDéfautRequisDescription
payloaddict[str, Any]ouiCharge utile du webhook Alertmanager, 500 alertes au plus.

Retour : Any. Réponse JSON décodée de l'opération « Recevoir des alertes Alertmanager ».

Erreurs levées : les erreurs typées du transport (Erreurs).

IncidentsClient.update​

update(incident_id: str, **changes: Any) -> Any

Modifier un incident. Modifie le statut, la gravité ou le responsable et ajoute éventuellement une note. Chaque changement est ajouté à la chronologie et transmis au SIEM ; passer à resolved ou closed renseigne resolved_at. Exige tenant_admin ou security_officer. Un statut ou une gravité inconnus répondent 400 invalid_request. Écrit l'événement d'audit incident.update.

Route : /v1/incidents/{incident_id} (PATCH).

NomTypeDéfautRequisDescription
incident_idstrouiIdentifiant (UUID) de l'incident.
**changesAnynonChamps de l'incident à modifier, envoyés comme corps du PATCH.

Retour : Any. Réponse JSON décodée de l'opération « Modifier un incident ».

Erreurs levées : les erreurs typées du transport (Erreurs).

Classe GovernanceClient​

Gouvernance. Registre de gouvernance : une vue agrégée des actifs d'IA du tenant, pour savoir ce qui existe, qui en est responsable et quel est son niveau de risque.

Resource

GovernanceClient.registry​

registry(**filters: Any) -> Any

Lire le registre de gouvernance. Inventaire des agents, modèles, fournisseurs, outils, skills, plugins et connecteurs (5000 éléments par type au plus, par nom), une liste par type (agents, models, ...), avec un summary par type : total, nombre par statut, nombre par niveau de risque (unassessed à défaut) et nombre d'éléments sans responsable. missing_sources liste les tables non installées sur cette instance ; leur liste est vide. Demande un principal de tenant (403 tenant_required). Un type inconnu répond 400 invalid_request avec les types autorisés.

Route : /v1/governance/registry (GET).

NomTypeDéfautRequisDescription
**filtersAnynonParamètres de requête de la liste du registre, envoyés tels quels.

Retour : Any. Réponse JSON décodée de l'opération « Lire le registre de gouvernance ».

Erreurs levées : les erreurs typées du transport (Erreurs).

Fonctions​

policy_request​

policy_request(action: str, resource: dict[str, Any], context: dict[str, Any] | None = None, subject: dict[str, Any] | None = None) -> dict[str, Any]

Une requête d'évaluation de politique : qui (sujet, l'appelant par défaut), quoi, sur quelle ressource.

NomTypeDéfautRequisDescription
actionstrouiAction à évaluer, par exemple tool.invoke.
resourcedict[str, Any]ouiRessource concernée par l'action, sous forme de dict.
contextdict[str, Any] | NoneNonenonEntrée supplémentaire de la politique ({} par défaut).
subjectdict[str, Any] | NoneNonenonSujet de la décision ; omis pour évaluer pour l'appelant.

Retour : dict[str, Any]. Dict {action, resource, context, subject?} pour PoliciesClient.evaluate.