> ## 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 l'utilisateur

> 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 l'utilisateur inapproprié.

Ce guide présente les appels d'API que vous pouvez utiliser pour créer des flux de modération pour le contenu de votre jeu.

## Signaler un article

Les joueurs peuvent signaler un article en appelant l'API `ReportItem` depuis un client. Un `Id` ou un `AlernateId` d'article doit être fourni. Des paramètres **facultatifs** supplémentaires peuvent être ajoutés. Il s'agit notamment de :

* `ConcernCategory` : une catégorie de préoccupation pour le signalement
* `Reason` : une saisie 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 par défaut la valeur `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 du [Data Explorer](/fr/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 renvoie **le nombre total de signalements par ConcernCategory et par 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 renvoie **tous les signalements soumis contre un ItemId spécifique 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 article

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

Cette API ne peut être appelée que par l'**entité de titre**. Un `Id` ou un `AlernateId` d'article et 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 article publié n'a pas d'état de modération. La republication de l'article brouillon ne modifie **pas** l'état de modération. Les valeurs `Status` valides sont les suivantes :

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

La requête suivante renvoie **tous les articles 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 article

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

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


## Related topics

- [XR-018 : Contenu généré par l'utilisateur](/fr/publishing/certification/xr/xr-018.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [XBOX Requirements pour les jeux XBOX](/fr/publishing/certification/xbox-requirements.md)
- [Exigences XBOX pour les jeux XBOX](/fr-CA/publishing/certification/xbox-requirements.md)
- [XR018 Contenu généré par l'utilisateur](/fr/publishing/certification/fma/xr-018.md)
