Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Importante
Les API sous la /beta version sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge.
L’API Cost Management pour Microsoft 365 Copilot permet aux administrateurs de régir et d’observer la consommation par les locataires des crédits Copilot et AI par le biais de Microsoft Graph, basé à /copilot/costManagement. Le contrat est basé sur des unités et est libellé en crédit. Il couvre l’instantané du solde de crédit du locataire, la gestion des stratégies de dépenses, l’étendue de l’audience de groupe, les paramètres par service, les alertes de seuil de notification uniquement et leurs destinataires, les soldes de consommation par utilisateur, l’examen des demandes de crédit des utilisateurs et les rapports d’utilisation qui décomposent la consommation par utilisateur, groupe de sécurité, service régi et classe de financement.
L’API est libellée en crédit et exclut délibérément les prévisions d’achat. Il ne renvoie aucune devise, facture, prix ou montant de règlement.
Fonctionnalités clés
- Lisez l’instantané du solde de crédit à l’échelle du client, avec une ligne par mode de facturation.
- Créez, lisez, mettez à jour et supprimez des stratégies de dépenses qui limitent la consommation de crédits Copilot pour une audience.
- Étendre une stratégie à chaque utilisateur du client (
allUsersSpendingPolicy) ou à des groupes sélectionnés (selectedGroupsSpendingPolicy). - Gérez l’audience d’un groupe de stratégies à l’aide
$refde liens de référence. - Configurez les paramètres par service qui régissent ou excluent des services d’IA individuels dans une stratégie.
- Configurez les alertes de seuil de notification uniquement et gérez leurs destinataires.
- Diagnostiquez le solde de consommation par service d’un utilisateur et comprenez pourquoi un utilisateur peut ou ne peut pas utiliser un service.
- Répertoriez, examinez, approuvez ou rejetez les demandes de crédits Copilot des utilisateurs, individuellement ou en bloc.
- Rapport de consommation pour une journée UTC terminée par utilisateur, groupe de sécurité et service gouverné, avec classement et pagination.
- Déclarez la consommation d’un mois civil par classe de financement (prépayée, paiement à l’utilisation, dépassement non facturé et non facturable).
- Lisez les détails bruts d’utilisation d’un utilisateur sur une fenêtre d’horodatage, ventilés par service et session.
Exemples de scénarios
- Un administrateur définit une limite de crédit mensuelle pour un groupe pilote et alerte les administrateurs lorsque l’utilisation atteint 80 %.
- Un administrateur ajoute ou supprime un service gouverné sur une stratégie existante.
- Un administrateur de support diagnostique la raison pour laquelle un utilisateur ne peut plus consommer un service en lisant le solde par service de cet utilisateur.
- Un lecteur FinOps répertorie les stratégies de dépenses activées du client et passe en revue leurs limites configurées.
- Un administrateur IA examine les demandes de crédit en attente pour Work IQ et les approuve en bloc.
- Un analyste FinOps divise la consommation d’hier par service pour voir où les crédits sont allés dans les expériences d’IA.
- Un administrateur de facturation clôture un mois en examinant sa consommation par classe de financement, y compris les dépassements non facturés.
- Un analyste FinOps ou un responsable d’unité commerciale classe les utilisateurs ou les groupes de sécurité les plus consommateurs pour une journée.
- Un administrateur de support inspecte les sessions d’utilisation brute d’un utilisateur sur une fenêtre de temps.
Personas et rôles
Les personas cibles incluent l’administrateur IA et l’administrateur de licence pour la gestion des stratégies ; le FinOps/Global Reader et l’administrateur de facturation pour les lectures ; et l’administrateur du support/support technique pour les diagnostics par utilisateur. Pour les rapports d’utilisation, les personas cibles incluent l’analyste FinOps et l’administrateur de facturation pour les rapports sur les services et le financement, ainsi que l’analyste FinOps et le responsable de l’unité commerciale (BU) pour le classement des utilisateurs et des groupes. La création d’une stratégie de dépenses nécessite également le rôle d’annuaire Administrateur de facturation ou Administrateur général au moment de l’exécution.
Les administrateurs de facturation, les administrateurs généraux, les administrateurs d’IA, les lecteurs généraux et les lecteurs d’IA peuvent lire les demandes de crédit. Les administrateurs généraux, les administrateurs de facturation et les administrateurs d’IA peuvent les approuver ou les rejeter.
Autorisations
Cette API utilise la famille d’autorisations CopilotCostManagement-* . La plupart des opérations prennent uniquement en charge les autorisations déléguées (compte professionnel ou scolaire). La lecture du solde de crédit client (getTenantCreditBalance) prend également en charge l’autorisation d’applicationCopilotCostManagement.Read.All, et les rapports d’utilisation du service et du financement prennent également en charge les autorisations d’application et CopilotCostManagement.Read.All de financementCopilotCostManagement-Reports.Read.All. Les comptes Microsoft personnels ne sont pas pris en charge. Choisissez l’autorisation de moindre privilège pour chaque opération.
Importante
Certaines autorisations de gestion des coûts Microsoft 365 Copilot peuvent ne pas encore apparaître dans le sélecteur d’autorisations d’API du centre dʀ�administration Microsoft Entra. Les exigences normales de consentement de l’administrateur et d’autorisation de l’API s’appliquent toujours.
Pour l’accès délégué, demandez l’autorisation de moindre privilège répertoriée pour l’opération par son nom d’étendue complet dans le flux d’authentification de votre application, par exemple https://graph.microsoft.com/CopilotCostManagement-Reports.Read.All pour les rapports de service ou de financement agrégés. Un administrateur client autorisé peut accorder un consentement par le biais d’une demande de consentement administrateur spécifique au client en utilisant l’ID client de votre application, l’URI de redirection enregistré et le même nom d’étendue, sans sélectionner au préalable l’autorisation dans le sélecteur.
Ce flux scope-name s’applique uniquement aux autorisations déléguées ; Il ne configure ni n’accorde d’autorisations à l’application.
| Autorisation | Opérations |
|---|---|
CopilotCostManagement.Read.All |
Lisez l’instantané du solde de crédit du locataire. Lisez également tous les rapports d’utilisation avec des autorisations déléguées. L’accès aux applications s’applique uniquement au solde de crédit du locataire et aux rapports d’utilisation des services et des financements. |
CopilotCostManagement-Reports.Read.All |
Lire les rapports d’utilisation des services et des financements agrégés. |
CopilotCostManagement-Policy.Read.All |
Lisez les stratégies de dépenses, les paramètres par service, les seuils d’alerte et les destinataires. |
CopilotCostManagement-Policy.ReadWrite.All |
Créer, mettre à jour et supprimer des stratégies, des paramètres de service, des alertes et des destinataires. |
CopilotCostManagement-Assignment.Read.All |
Lisez l’audience d’un groupe de stratégies. |
CopilotCostManagement-Assignment.ReadWrite.All |
Ajouter et supprimer une audience de groupe de stratégie. |
CopilotCostManagement-UserData.Read.All |
Lire les diagnostics de solde d’un utilisateur nommé, y compris la consommation et le fichier .spendingPolicyId Lisez également les enregistrements d’utilisation des utilisateurs et des groupes ainsi que les détails bruts d’utilisation par utilisateur, y compris les services, les sessions, les identificateurs de session native et les horodatages de la première et de la dernière activité. |
CopilotCostManagement-CreditReq.Read.All |
Lisez les demandes de crédit. |
CopilotCostManagement-CreditReq.ReadWrite.All |
Lire les demandes de crédit et les approuver ou les rejeter. |
Liste des API
| Opération | Méthode HTTP | Description |
|---|---|---|
| Obtenir le solde créditeur du locataire | GET /copilot/costManagement/getTenantCreditBalance |
Obtenez l’instantané du solde de crédit à l’échelle du locataire. |
| List spendingPolicies | GET /copilot/costManagement/spendingPolicies |
Obtenez une liste des stratégies de dépenses. |
| Créer une stratégie de dépense | POST /copilot/costManagement/spendingPolicies |
Créez une stratégie de dépenses. |
| Obtenir spendingPolicy | GET /copilot/costManagement/spendingPolicies/{id} |
Récupérer une stratégie de dépenses. |
| Mettre à jour spendingPolicy | PATCH /copilot/costManagement/spendingPolicies/{id} |
Mettre à jour une stratégie de dépenses. |
| Supprimer spendingPolicy | SUPPRIMER /copilot/costManagement/spendingPolicies/{id} |
Supprimez une stratégie de dépenses. |
| Liste attribuéeGroupes | GET /copilot/costManagement/spendingPolicies/{id}/microsoft.graph.selectedGroupsSpendingPolicy/assignedGroups |
Répertorier les groupes affectés à une stratégie. |
| Ajouter attribuéGroupe | POST /copilot/costManagement/spendingPolicies/{id}/microsoft.graph.selectedGroupsSpendingPolicy/assignedGroups/$ref |
Ajoutez une référence de groupe à une stratégie. |
| Supprimer attribuéGroup. | SUPPRIMER /copilot/costManagement/spendingPolicies/{id}/microsoft.graph.selectedGroupsSpendingPolicy/assignedGroups/{groupId}/$ref |
Supprimer une référence de groupe. |
| Répertorier les dépensesPolicyServiceSettings | GET /copilot/costManagement/spendingPolicies/{id}/serviceSettings |
Répertorier les paramètres de service d’une stratégie. |
| Créer spendingPolicyServiceSetting | POST /copilot/costManagement/spendingPolicies/{id}/serviceSettings |
Ajouter un service à une stratégie. |
| Obtenir spendingPolicyServiceSetting | GET /copilot/costManagement/spendingPolicies/{id}/serviceSettings/{serviceId} |
Récupérez un paramètre de service. |
| Mettre à jour spendingPolicyServiceSetting | PATCH /copilot/costManagement/spendingPolicies/{id}/serviceSettings/{serviceId} |
Mettre à jour un paramètre de service. |
| Obtenir costManagementAlertSetting | GET /copilot/costManagement/spendingPolicies/{id}/emailThresholdSettings |
Récupérer la configuration des alertes d’une stratégie. |
| Mettre à jour costManagementAlertSetting | PATCH /copilot/costManagement/spendingPolicies/{id}/emailThresholdSettings |
Créez ou mettez à jour la configuration de l’alerte. |
| Supprimer costManagementAlertSetting | SUPPRIMER /copilot/costManagement/spendingPolicies/{id}/emailThresholdSettings |
Supprimez la configuration de l’alerte. |
| Liste des destinataires | GET /copilot/costManagement/spendingPolicies/{id}/emailThresholdSettings/recipients |
Répertorier les destinataires de l’alerte. |
| Ajouter un destinataire | POST /copilot/costManagement/spendingPolicies/{id}/emailThresholdSettings/recipients/$ref |
Ajoutez un destinataire d’alerte. |
| Supprimer un destinataire | SUPPRIMER /copilot/costManagement/spendingPolicies/{id}/emailThresholdSettings/recipients/{userId}/$ref |
Supprimer un destinataire d’alerte. |
| Obtenir costManagementUserBalance | GET /copilot/costManagement/userBalances/{userId} |
Récupérez le solde de consommation d’un utilisateur. |
| List costManagementUserServiceBalances | GET /copilot/costManagement/userBalances/{userId}/serviceBalances |
Répertorier les lignes de solde par service d’un utilisateur. |
| Get costManagementUserServiceBalance | GET /copilot/costManagement/userBalances/{userId}/serviceBalances/{serviceId} |
Récupérer la ligne de solde d’un service pour un utilisateur. |
| Liste des creditRequests | GET /copilot/costManagement/creditRequests |
Répertoriez les demandes de crédit du locataire. |
| Obtenir une demande de crédit | GET /copilot/costManagement/creditRequests/{id} |
Récupérer une demande de crédit. |
| Mettre à jour creditRequest | PATCH /copilot/costManagement/creditRequests/{id} |
Approuver ou rejeter une demande de crédit. |
| Décisions d’enregistrement par lots | POST /copilot/costManagement/creditRequests/batchRecordDecisions |
Approuver ou rejeter des demandes de crédit en bloc. |
| List costManagementUserUsageRecords | GET /copilot/costManagement/usageReports/userUsageRecords |
Répertorier la consommation signalée par utilisateur pour une journée UTC terminée. |
| Get costManagementUserUsageRecord | GET /copilot/costManagement/usageReports/userUsageRecords/{userId} |
Récupérez la consommation signalée d’un utilisateur pour une journée UTC terminée. |
| List costManagementGroupUsageRecords | GET /copilot/costManagement/usageReports/groupUsageRecords |
Répertorie la consommation signalée par groupe de sécurité pour un jour UTC terminé. |
| Get costManagementGroupUsageRecord | GET /copilot/costManagement/usageReports/groupUsageRecords/{groupId} |
Récupérez la consommation signalée d’un groupe de sécurité pour un jour UTC terminé. |
| List costManagementServiceUsageRecords | GET /copilot/costManagement/usageReports/serviceUsageRecords |
Répertorier la consommation signalée par service gouverné pendant un jour UTC terminé. |
| Obtenir costManagementServiceUsageRecord | GET /copilot/costManagement/usageReports/serviceUsageRecords/{serviceId} |
Récupérez la consommation signalée d’un service pour un jour UTC terminé. |
| List costManagementFundingUsageRecords | GET /copilot/costManagement/usageReports/fundingUsageRecords |
Énumérez la consommation déclarée par catégorie de financement pour un mois civil. |
| Obtenir costManagementUserUsageDetail | GET /copilot/costManagement/usageReports/userUsageDetails/{userId} |
Récupérez les détails bruts d’utilisation d’un utilisateur sur une fenêtre d’horodatage. |
| List costManagementUserUsageServiceDetails | GET /copilot/costManagement/usageReports/userUsageDetails/{userId}/services |
Répertorier la consommation brute d’un utilisateur par service gouverné. |
| List costManagementUserUsageSessionDetails | GET /copilot/costManagement/usageReports/userUsageDetails/{userId}/sessions |
Répertorier l’utilisation brute d’un utilisateur groupée par session. |
Sémantique d’accès concurrentiel et de suppression
- Pour muter une stratégie existante et ses ressources enfants (paramètres de service et liens de référence), incluez un
If-Matchen-tête avec l’ETag de la stratégie parente. Les paramètres de service et les liens de référence ne disposent pas de leur propre ETag. La stratégie parente gère l’accès concurrentiel et s’affiche commeparentEtagsur un paramètre de service. Lorsque vous créez une stratégie, elle n’a pas d’ETag existant et n’utiliseIf-Matchpas . - La
serviceSettingscollection ne prend pas en chargeDELETE. Définiestatesurdisabledpour supprimer un service. L’entrée reste dans cet état. - Gérez les
assignedGroupsrelations etrecipientsen tant que propriétés de navigation de référence avec$refajouter et supprimer. - Les demandes de crédit portent leur propre ETag fort, retourné comme
@odata.etaget dans l’en-tête de réponseETag. La mise à jour de creditRequest nécessite unIf-Matchen-tête ; l’action batchRecordDecisions prend une valeur par élémentetagà la place. - Une décision de demande de crédit qui correspond à l’état actuel est une non-op qui conserve l’ETag,
decisionByet les horodatages. L’ETag est toujours vérifié, donc une décision du même État avec un ETag obsolète échoue avecpreconditionFailed. - Les demandes de crédit ne peuvent pas être créées ou supprimées via l’API. Les utilisateurs les créent en dehors de Microsoft Graph et le service les conserve conformément à sa stratégie de rétention.
Rapport d’utilisation, sélecteurs d’heure et pagination
Les rapports d’utilisation résident sous /copilot/costManagement/usageReports. Chaque demande de rapport d’utilisation nécessite un sélecteur de temps, fourni en tant que paramètres de requête. Les demandes sans les sélecteurs requis sont rejetées avec une 400 unsupportedQuery réponse.
| Famille de sélecteurs | Paramètres | Format | Utilisateur |
|---|---|---|---|
| Jour UTC terminé |
startDate, endDate |
Date, YYYY-MM-DD. Début inclusif et fin exclusive.
endDate doit être égal à startDate plus un jour, et son UTC minuit ne doit pas être postérieur à l’heure actuelle. |
Enregistrements d’utilisation d’utilisateur, de groupe et de service (list and get) |
| Mois Calendar | month |
String, YYYY-MM. Les plages de dates sont rejetées. |
Enregistrements d’utilisation du financement |
| Fenêtre d’horodatage |
startDateTime, endDateTime |
DateTimeOffset, UTC ISO 8601, jusqu’à sept chiffres fractionnaires. Début inclusif et fin exclusive. Actuellement, startDateTime doit être antérieur à endDateTime, endDateTime ne peut pas être postérieur à l’heure actuelle, la fenêtre peut avoir une durée maximale de 24 heures et la fenêtre ne peut pas franchir la limite UTC-mois-calendrier. La fin peut être égale à minuit UTC le premier jour du mois suivant. |
Détails de l’utilisation de l’utilisateur, de ses services et de ses sessions |
Les sélecteurs non valides sont rejetés, mais non limités. Les plages de jours actuels, futurs et de plusieurs jours des rapports terminés UTC renvoient une 400 réponse, tout comme les fenêtres d’horodatage qui ne respectent pas actuellement les limites de fenêtre d’horodatage dans la table. La validation n’applique pas un fichier plus ancien autorisé startDate ou month.
- Pagination. Les enregistrements d’utilisation des utilisateurs, des groupes et des services, ainsi que les sessions d’utilisation des utilisateurs, utilisent la pagination gérée par le serveur avec
$skiptoken;$skipn’est pas pris en charge. Suivez l’URL complète@odata.nextLinkinchangée. La suite conserve les sélecteurs, le filtre et l’ordre d’origine, mais il ne s’agit pas d’un instantané ponctuel. Les pages ultérieures lisent les données actives, de sorte que des lignes peuvent se répéter ou être manquées entre les pages. UnenextLinkpersonne dont les dates diffèrent de la demande initiale est rejetée avec une400réponse. Dans les enregistrements d’utilisation de l’utilisateur, du groupe et du service,$topaccepte un nombre entier compris entre 1 et 100, la valeur par défaut étant 10, et les valeurs en dehors de cette plage sont rejetées et non plafonnées. Les sessions d’utilisation utilisateur ont une taille de page par défaut distincte de 20 et un maximum de 100. Les enregistrements d’utilisation du financement et les services d’utilisation des utilisateurs ne sont pas paginés. - Filtrage. Les enregistrements d’utilisation de l’utilisateur, du groupe et du service sont pris en charge
$filtersuruserId,groupIdetserviceIdrespectivement, en utilisant uniquement l’opérateureq. D’autres opérateurs, commein, ne sont pas pris en charge. - Commande. Ne prend en charge que .
consumedQuantity$orderbyLes liens sont rompus en interne et le classement sur la clé de dimension n’est pas pris en charge. - Unités. Chaque quantité porte un
unit, actuellementcopilotCredit. Aucune devise, facture, prix ou montant de règlement n’est retourné. - Transformé versus brut.
userUsageRecordsRenvoie la consommation traitée pour un jour UTC terminé que vous pouvez classer parmi les utilisateurs.userUsageDetailsRenvoie l’utilisation brute et facturable d’un utilisateur avec indicateur sur une fenêtre d’horodatage, avec des ventilations de services et de sessions. Les deux mesures, y compris leurssessionCountvaleurs, ne sont pas garanties égales. - Parents illisibles.
GET /copilot/costManagement/usageReportsRenvoie une404réponse et ne transporte aucune donnée.GET /copilot/costManagement/usageReports/userUsageDetailsn’est pas listable ; lire les détails par ID utilisateur à la place.
Conditions d’erreur
Les réponses d’erreur utilisent l’OData error standard et innerError l’enveloppe. Il innerError.code signale les conditions spécifiques à la charge de travail, tandis que l’OData error.code standard signale les conditions génériques. La sécurité au niveau des lignes s’exécute avant la recherche, de sorte qu’une ressource client hors étendue retourne une 404 réponse au lieu d’une 403 réponse.
| Condition | HTTP | Code d’erreur |
|---|---|---|
| L’appelant ne dispose pas de l’autorisation requise ou d’un rôle d’annuaire éligible | 403 | Authorization_RequestDenied |
| Option de requête non prise en charge ou requête incorrecte | 400 |
invalidRequest, unsupportedQuery |
Le sélecteur d’heure du rapport d’utilisation est manquant, incorrect ou incompatible ; un utilisateur, un groupe ou une plage de services ne sélectionne pas exactement un jour UTC terminé ; $top des enregistrements d’utilisation de l’utilisateur, du groupe ou du service est compris entre 1 et 100 ; le début d’une fenêtre de détails d’utilisation d’un utilisateur n’est pas antérieur à sa fin, sa fin est postérieure à l’heure actuelle, elle dure plus de 24 heures ou elle dépasse une limite UTC-mois-calendrier ; ou un jeton de continuation n’est pas valide ou ne correspond pas |
400 | unsupportedQuery |
| Un rapport d’utilisation à clé lu n’a pas d’utilisation représentée. Cette réponse n’est pas une preuve de consommation zéro ou de l’existence de l’utilisateur ou du groupe. | 404 | usageDataUnavailable |
| La suppression du dernier groupe affecté laisserait la stratégie sans public affecté | 409 | lastAssignedGroup |
| Une autre stratégie non handicapée à l’échelle du client régit déjà le même service | 409 | allUsersServiceConflict |
| Une stratégie étendue à un groupe partage à la fois un groupe affecté et un service activé avec une autre stratégie non désactivée | 409 | groupServiceConflict |
| Désactivation du dernier service activé sur une stratégie qui a des paramètres de service | 409 | atLeastOneServiceRequired |
| Valeur du seuil d’alerte hors plage (les seuils de pourcentage doivent être un entier compris entre 1 et 100) | 400 | invalidAlertThreshold |
| Appliquer un correctif à un champ d’une stratégie qui n’est pas dans un état modifiable | 400 | policyNotEditableWhilePending |
| ID de service inconnu ou non valide | 400 | invalidService |
| Alerte activée sans destinataire lié, ou suppression du dernier destinataire lorsque l’alerte est activée | 400 | alertRecipientsRequired |
| La référence du destinataire de l’alerte ne se résout pas en un utilisateur réel dans l’annuaire du locataire | 400 | alertRecipientNotFound |
| Approvisionnement d’un champ géré par le serveur dans PATCH | 400 | invalidRequest |
Obsolète If-Match lors d’une opération de mutation |
412 | preconditionFailed |
Manquant If-Match dans la mise à jour d’une demande de crédit |
428 | preconditionRequired |
Incorrect, faible (W/) ou *If-Match sur une mise à jour de demande de crédit |
400 | invalidRequest |
| Transition d’état simultané en conflit | 409 | invalidTransition |
| L’évaluateur en amont a échoué pour chaque service, de sorte qu’aucune ligne d’équilibrage n’a pu être produite | 503 | sourceUnavailable |
| L’ID de demande de crédit n’existe pas | 404 | itemNotFound |
| Charge utile de décision en bloc non valide, comme une liste vide, plus de 100 éléments ou des ID de demande en double | 400 | invalidRequest |
| Transition d’état de demande de crédit non prise en charge lors de la mise à jour | 400 | invalidRequest |
| Échec de la dépendance de la liste ou du nombre de demandes de crédit | 503 | serviceNotAvailable |
| La source du rapport d’utilisation a échoué. Ne traitez pas cette réponse comme une consommation nulle. | 503 | sourceUnavailable |
Limitation d’API. Honorer l’en-tête Retry-After . |
429 | tooManyRequests |
L’action batchRecordDecisions renvoie des échecs par élément dans une 200 OK réponse, et non pas sous forme d’erreurs HTTP.