> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modérer votre contenu généré par les utilisateurs

> Créez des flux de modération UGC dans PlayFab Economy v2 à l'aide de ReportItem et des API de révision pour signaler, examiner et retirer le contenu généré par les utilisateurs inapproprié.

Ce guide présente les appels d'API qui peuvent servir à créer des flux de modération pour le contenu de votre jeu.

## Signaler un objet

Les joueurs peuvent signaler un objet en appelant l'API `ReportItem` à partir d'un client. Un `Id` ou un `AlernateId` d'objet doit être fourni. Des paramètres **facultatifs** supplémentaires peuvent être ajoutés. Ceux-ci comprennent :

* `ConcernCategory` : une catégorie de préoccupation pour le signalement
* `Reason` : un champ de texte libre pour le signalement

Voici un exemple de corps de requête :

```json theme={null}
{
  "Id": "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
  "ConcernCategory": "Profanity",
  "Reason": "There was swearing in the description."
}
```

S'il n'est pas spécifié, `ConcernCategory` prend la valeur par défaut `None`. Les valeurs `ConcernCategory` valides sont les suivantes :

* `None`
* `OffensiveContent`
* `ChildExploitation`
* `MalwareOrVirus`
* `PrivacyConcerns`
* `MisleadingApp`
* `PoorPerformance`
* `ReviewResponse`
* `SpamAdvertising`
* `Profanity`

L'appel de l'API `ReportItem` déclenche **uniquement** un événement PlayStream sous le nom d'événement `item_reported`. Celui-ci peut être interrogé à l'aide de l'[Explorateur de données](/fr-CA/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic) dans Game Manager. Des exemples de requêtes sont présentés ci-dessous :

La requête suivante retourne **le nombre total de signalements par ConcernCategory pour chaque ItemId au cours des 3 derniers jours**

```kusto theme={null}
['events.all']
| where Timestamp > ago (3d)
| where FullName_Name == "item_reported"
| project ItemId = tostring(EventData.Payload.ItemId), ConcernCategory = tostring(EventData.Payload.ConcernCategory)
| summarize TotalReportCount = count() by ItemId, ConcernCategory
| sort by TotalReportCount desc
| render columnchart kind=stacked
```

La requête suivante retourne **tous les signalements soumis contre un ItemId précis au cours des 3 derniers jours**

```kusto theme={null}
['events.all']
| where Timestamp > ago (3d)
| where FullName_Name == "item_reported"
| where EventData.Payload.ItemId == "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
| project Timestamp, ItemId = tostring(EventData.Payload.ItemId), ConcernCategory = tostring(EventData.Payload.ConcernCategory), Reason = tostring(EventData.Payload.Reason), ReportingPlayer = Entity_Id
| sort by Timestamp
```

## Modifier l'état de modération d'un objet

Vous pouvez modifier l'état de modération d'un objet **publié** à l'aide de l'API `SetItemModerationState`. Un objet dans un état autre que `Approved` ne sera pas accessible dans le catalogue public pour l'ensemble des joueurs. Le créateur de l'objet peut toujours y accéder à l'aide des API `GetItem` et `GetDraftItems`. Les **entités de titre** et les **administrateurs** pourront voir les objets non approuvés au moyen de `SearchItems`, `GetDraftItems` et `GetItem`.

Cette API ne peut être appelée que par l'**entité de titre**. Un `Id` ou un `AlernateId` d'objet ainsi qu'un `Status` doivent être fournis. Un paramètre de texte libre `Reason` **facultatif** peut également être ajouté. Sous forme d'appel de service, cela ressemble à ceci :

```json theme={null}
{
  "Status": "AwaitingModeration",
  "Reason": "User reports over threshold",
  "Id": "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
}
```

Par défaut, un objet publié n'a pas d'état de modération. La republication de l'objet brouillon ne modifiera **pas** l'état de modération. Les valeurs `Status` valides sont les suivantes :

* `AwaitingModeration`
* `Approved`
* `Rejected`

La requête suivante retourne **tous les objets actuellement à l'état `AwaitingModeration` au cours des 3 derniers jours**

```kusto theme={null}
let TimeRange = ago(3d);
['events.all']
| where Timestamp > TimeRange
| where FullName_Name == "item_moderation_state_changed"
| project Timestamp, ItemId = tostring(EventData.Payload.ItemId)
| summarize MaxTimestamp = max(Timestamp) by ItemId
| extend TimeAndId = strcat(MaxTimestamp, "|", ItemId)
| join kind = leftouter (
    ['events.all']
    | where Timestamp > TimeRange
    | where FullName_Name == "item_moderation_state_changed"
    | project Timestamp, ItemId = tostring(EventData.Payload.ItemId), TargetStatus = tostring(EventData.Payload.TargetStatus), Reason = tostring(EventData.Payload.Reason)
    | extend TimeAndId = strcat(Timestamp, "|", ItemId)) on TimeAndId
| project Timestamp, ItemId, TargetStatus, Reason
| where TargetStatus == "AwaitingModeration"
```

## Supprimer un objet

Un objet peut être supprimé en appelant l'API `DeleteItem`. Cet appel retire un objet du catalogue brouillon ainsi que l'objet correspondant du catalogue public (s'il a été publié). Un `Id` ou un `AlernateId` d'objet doit être fourni.

```json theme={null}
{
  "Id": "852a2d2b-7754-427e-9ad4-fce2b24a4cef"
}
```


## Related topics

- [XR-018 : Contenu généré par l'utilisateur](/fr-CA/publishing/certification/xr/xr-018.md)
- [Publier votre premier contenu généré par les utilisateurs](/fr-CA/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc.md)
- [Exigences XBOX pour les jeux XBOX](/fr-CA/publishing/certification/xbox-requirements.md)
- [Exigences XBOX testées lors de la certification pour les jeux XBOX](/fr-CA/publishing/certification/console-cert-tested-requirements.md)
- [Démarrage rapide du contenu généré par les utilisateurs (UGC)](/fr-CA/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
