> ## 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.

# Moderación de su contenido generado por el usuario

> Cree flujos de moderación de UGC en PlayFab Economy v2 mediante ReportItem y las API de revisión para marcar, revisar y retirar contenido generado por el usuario inapropiado.

En esta guía se repasan las llamadas API que se pueden usar para crear flujos de moderación del contenido de su juego.

## Notificación de un artículo

Los jugadores pueden notificar un artículo llamando a la API `ReportItem` desde un cliente. Se debe proporcionar un `Id` o `AlernateId` del artículo. Se pueden agregar parámetros **opcionales** adicionales. Entre ellos se incluyen:

* `ConcernCategory`: una categoría de preocupación para la notificación
* `Reason`: una entrada de texto libre para la notificación

Este es un ejemplo del cuerpo de la solicitud:

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

Si no se especifica, `ConcernCategory` tomará el valor predeterminado `None`. Los valores válidos de `ConcernCategory` son los siguientes:

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

Llamar a la API `ReportItem` **solo** desencadenará un evento de PlayStream con el nombre de evento `item_reported`. Este evento se puede consultar mediante el [Explorador de datos](/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic) en Game Manager. A continuación se pueden ver consultas de ejemplo:

La siguiente consulta devuelve **el número total de notificaciones por ConcernCategory para cada ItemId en los últimos 3 días**

```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 siguiente consulta devuelve **todas las notificaciones enviadas contra un ItemId específico en los últimos 3 días**

```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
```

## Cambio del estado de moderación de un artículo

Puede cambiar el estado de moderación de un artículo **publicado** mediante la API `SetItemModerationState`. Un artículo que esté en cualquier estado distinto de `Approved` no será accesible en el catálogo público para todos los jugadores. El creador del artículo aún puede acceder al artículo mediante las API `GetItem` y `GetDraftItems`. Las **entidades de título** y los **administradores** podrán ver los artículos no aprobados mediante `SearchItems`, `GetDraftItems` y `GetItem`.

Esta API solo puede llamarla la **entidad de título**. Se debe proporcionar un `Id` o `AlernateId` del artículo y un `Status`. También se puede agregar un parámetro **opcional** de texto libre `Reason`. Como llamada de servicio, tiene un aspecto similar al siguiente:

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

De forma predeterminada, un artículo publicado no tendrá estado de moderación. Volver a publicar el artículo en borrador **no** cambiará el estado de moderación. Los valores válidos de `Status` son los siguientes:

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

La siguiente consulta devuelve **todos los artículos que están actualmente en el estado `AwaitingModeration` en los últimos 3 días**

```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"
```

## Eliminación de un artículo

Un artículo se puede eliminar llamando a la API `DeleteItem`. Esta llamada quitará el artículo del catálogo de borradores y el artículo correspondiente del catálogo público (si se ha publicado). Se debe proporcionar un `Id` o `AlernateId` del artículo.

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


## Related topics

- [XR-018 Contenido generado por el usuario](/es/publishing/certification/xr/xr-018.md)
- [Contenido generado por el usuario de PlayFab](/es/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [Publicación de su primer contenido generado por el usuario](/es/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc.md)
- [Inicio rápido de contenido generado por el usuario (UGC)](/es/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
- [Referencia de Game Manager](/es/services/playfab/live-service-management/gamemanager/reference.md)
