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

# PUT (/users/xuid(xuid)/lists/PINS/{listname})

> PUT (/users/xuid(xuid)/lists/PINS/{listname})

# PUT (/users/xuid(xuid)/lists/PINS/{listname})

Actualiza los elementos de una lista según los índices especificados para cada elemento en el cuerpo de la solicitud.
El dominio de estos URI es `eplists.xboxlive.com`.

* [Comentarios](#ID4EV)
* [Parámetros de URI](#ID4E1B)
* [Autorización](#ID4EFC)
* [Códigos de estado HTTP](#ID4ESC)
* [Encabezados de solicitud obligatorios](#ID4EPH)
* [Cuerpo de la solicitud](#ID4EGBAC)
* [Cuerpo de la respuesta](#ID4EWBAC)

## Comentarios

Esta llamada actualizará los elementos de una lista según los índices especificados para cada elemento en el cuerpo de la solicitud. Esta llamada no insertará elementos en la lista y, si no existen elementos en los índices especificados, la llamada devolverá un estado 400 Bad Request. Se pueden actualizar varios elementos en una sola llamada, pero todos deben existir en la lista actual. Es decir, se actualizan todos o no se actualiza ninguno.

Esta llamada permitirá que el elemento que se va a actualizar se especifique mediante el **itemId** en lugar del **index**. Para ello, simplemente use "-1" como índice en la estructura **IndexedItems** que se envía al servicio. Obviamente, en este caso, el **itemId** no se puede cambiar como parte de la actualización, por lo que solo funcionará para cambios en otros campos de metadatos. La combinación **provider**/**providerId** se puede usar en lugar de **itemId** para identificar el elemento. Internamente, el servicio busca estos elementos en la lista y determina los índices adecuados que se van a actualizar. Si el elemento o los elementos no se encuentran, se devolverá un estado 400 Bad Request y no se actualizará ningún elemento.

Esta llamada requiere que se incluya un encabezado **If-Match:versionNumber** en la solicitud si se usan índices para identificar los elementos. Si se usan identificadores de elemento para identificar los elementos (y la lista no admite duplicados), el encabezado **If-Match** es opcional. Si está presente, el encabezado **If-Match** siempre se validará. En el encabezado, **versionNumber** es el número de versión actual de la lista. Si no se incluye (y es obligatorio), o no coincide con el número de versión actual de la lista, se devolverá un código de estado HTTP 412 Precondition Failed y el cuerpo de la respuesta contendrá los metadatos más recientes de la lista, que incluyen el número de versión actual. Esto se hace para evitar que las actualizaciones de distintos clientes se sobrescriban entre sí.

## Parámetros de URI

| Parámetro | Tipo | Descripción |
| - | - | - |
| xuid | string | Id. de usuario de XBOX (XUID). |
| listtype | string | Tipo de la lista (cómo se usa y cómo actúa). Siempre es "PINS" para estos métodos relacionados. |
| listname | string | Nombre de la lista (sobre qué lista de un listtype determinado se actúa). Siempre es "XBLPins" para los elementos de Pins. |

## Autorización

Esta llamada espera un token SAML de XSTS en el encabezado **Authorization**. Debe existir una notificación Xuid dentro de ese token SAML para identificar al autor de la llamada. Este valor se usa para determinar si el autor de la llamada tiene derechos de acceso a los datos de la lista en cuestión. La propia lista también se identificará mediante el Xuid y se incluirá en el URI de la lista. Con esto, es posible que en el futuro se admita el acceso compartido a las listas, pero por ahora no es una característica disponible. Actualmente, todas las listas a las que accede un usuario serán suyas y no existe acceso compartido. Por lo tanto, el Xuid del URI debe coincidir con el Xuid del token de notificaciones SAML.

> **Nota:**\
> Actualmente se admiten tanto los tokens de XBL Auth 2.0 como los de 3.0.

## Códigos de estado HTTP

El servicio devuelve uno de los códigos de estado de esta sección en respuesta a una solicitud realizada con este método en este recurso. Para obtener una lista completa de los códigos de estado HTTP estándar que se usan con los servicios de XBOX Live, consulte [Códigos de estado HTTP estándar](https://docs.xbox.com/es/reference/live/rest/additional/httpstatuscodes.md).

\| Código| Frase de motivo| Descripción|
\| --- | --- | --- | --- | --- | --- | --- |
\| 200| OK| La solicitud se completó correctamente. El cuerpo de la respuesta debe contener el recurso solicitado (para un GET). Las solicitudes POST y PUT recibirán metadatos actualizados de la lista (versión de la lista, recuento, etc.).|
\| 201| Created| Se ha creado una lista nueva. Se devuelve en la inserción inicial en una lista. La respuesta incluye metadatos actualizados de la lista y el encabezado de ubicación contiene el URI de la lista.|
\| 304| Not Modified| Se devuelve en solicitudes GET. Indica que el cliente tiene la versión más reciente de la lista. El servicio compara el valor del encabezado **If-Match** con la versión de la lista. Si son iguales, se devuelve un 304 sin datos.|
\| 400| Bad Request| La solicitud tenía un formato incorrecto. Podría ser un valor o tipo no válido para un parámetro de URI o de cadena de consulta. También puede ser el resultado de la falta de un parámetro o valor de datos obligatorio, o de que la solicitud indicara una versión de la API que falta o no es válida. Consulte el encabezado **X-XBL-Contract-Version**.|
\| 401| Unauthorized| La solicitud requiere autenticación del usuario.|
\| 403| Forbidden| La solicitud no está permitida para el usuario o el servicio.|
\| 404| Not Found| El autor de la llamada no tiene acceso al recurso. Esto indica que no se ha creado tal lista.|
\| 412| Precondition Failed| Indica que la versión de la lista ha cambiado y que una solicitud de modificación ha fallado. Una solicitud de modificación es una inserción, actualización o eliminación. El servicio comprueba el encabezado **If-Match** para la versión de la lista. Si no coincide con la versión actual de la lista, la operación falla y se devuelve este código junto con los metadatos actuales de la lista (que incluyen la versión actual).|
\| 500| Internal Server Error| El servicio rechaza la solicitud debido a un error del lado del servidor.|
\| 501| Not Implemented| El autor de la llamada solicitó un URI que no se ha implementado en el servidor. (Actualmente solo se usa cuando se realiza una solicitud para un nombre de lista que no está en la lista de permitidos).|
\| 503| Service Unavailable| El servidor rechaza la solicitud, normalmente debido a una carga excesiva. Después de un retraso (consulte el encabezado **Retry-after**), la solicitud se puede reintentar.|

## Encabezados de solicitud obligatorios

\| Encabezado| Descripción|
\| --- | --- | --- | --- | --- | --- | --- | --- | --- |
\| Authorization| Contiene el token STS que se usa para autenticar y autorizar la solicitud. Debe ser un token del servicio XSTS e incluir el XUID como una de las notificaciones. |
\| X-XBL-Contract-Version| Especifica qué versión de la API se solicita (enteros positivos). Pins admite la versión 2. Si falta este encabezado o el valor no se admite, el servicio devolverá un 400 - Bad request con "Unsupported or missing contract version header" en la descripción del estado.|
\| Content-Type| Especifica si el contenido de los cuerpos de solicitud/respuesta estará en json o xml. Los valores admitidos son "application/json" y "application/xml"|
\| If-Match| Este encabezado debe contener el número de versión actual de una lista al realizar solicitudes de modificación. Las solicitudes de modificación usan los verbos PUT, POST o DELETE. Si la versión del encabezado "If-Match" no coincide con la versión actual de la lista, la solicitud se rechazará con un código de retorno HTTP 412 - error de condición previa. (Opcional) También se puede usar para solicitudes GET; si está presente y la versión pasada coincide con la versión actual de la lista, no se devolverán datos de la lista y se devolverá un código HTTP 304 - Not Modified. |

## Cuerpo de la solicitud

### Ejemplo de solicitud

```cpp theme={null}
{"IndexedItems":
 [{  "Index": 0, 
     "Item": 
     {
       "ContentType": "Movie",
       "ItemId": "3a5095a5-eac3-4215-944d-27bc051faa47",
       "ProviderId": null,
       "Provider": null,
       "ImageUrl": "http://www.bing.com/thumb/...",
       "Title": "The Dark Knight",
       "SubTitle":null, 
       "Locale": "en-us",
       "DeviceType": "XboxOne"
     }
}]} 
      
```

## Cuerpo de la respuesta

### Ejemplo de respuesta

```cpp theme={null}
{
  "ListVersion":  1,
  "ListCount":  1,
  "MaxListSize": 200,
  "AllowDuplicates": "true",
  "AccessSetting":  "OwnerOnly"
} 
         
```

## Consulte también

##### Elemento primario

[/users/xuid(xuid)/lists/PINS/{listname}](https://docs.xbox.com/es/reference/live/rest/uri/lists/uri-usersxuidlistspinslistname.md)


## Related topics

- [/users/xuid(xuid)/lists/PINS/{listname}](https://docs.xbox.com/es/reference/live/rest/uri/lists/uri-usersxuidlistspinslistname.md)
- [POST (/users/xuid(xuid)/lists/PINS/{listname})](https://docs.xbox.com/es/reference/live/rest/uri/lists/uri-usersxuidlistspinslistnamepost.md)
- [DELETE (/users/xuid(xuid)/lists/PINS/{listname})](https://docs.xbox.com/es/reference/live/rest/uri/lists/uri-usersxuidlistspinslistnamedelete.md)
- [GET (/users/xuid(xuid)/lists/PINS/{listname})](https://docs.xbox.com/es/reference/live/rest/uri/lists/uri-usersxuidlistspinslistnameget.md)
- [POST /users/xuid(xuid)/lists/PINS/{listname}/ContainsItems](https://docs.xbox.com/es/reference/live/rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitemspost.md)
