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

# PFPlayerDataManagementClientUpdateUserDataRequest

> PFPlayerDataManagementClientUpdateUserDataRequest data model. This function performs an additive update of the arbitrary strings containing the custom data.

PFPlayerDataManagementClientUpdateUserDataRequest data model. This function performs an additive update of the arbitrary strings containing the custom data for the user. In updating the custom data object, keys which already exist in the object will have their values overwritten, while keys with null values will be removed. New keys will be added, with the given values. No other key-value pairs will be changed apart from those specified in the call.

## Syntax

```cpp theme={null}
typedef struct PFPlayerDataManagementClientUpdateUserDataRequest {  
    PFStringDictionaryEntry const* customTags;  
    uint32_t customTagsCount;  
    PFStringDictionaryEntry const* data;  
    uint32_t dataCount;  
    const char* const* keysToRemove;  
    uint32_t keysToRemoveCount;  
    PFUserDataPermission const* permission;  
} PFPlayerDataManagementClientUpdateUserDataRequest;  
```

### Members

**`customTags`**   [PFStringDictionaryEntry](/services/playfab/api-references/c/pftypes/structs/pfstringdictionaryentry) const\*<br />*may be nullptr*

(Optional) The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).

**`customTagsCount`**   uint32\_t

Count of customTags

**`data`**   [PFStringDictionaryEntry](/services/playfab/api-references/c/pftypes/structs/pfstringdictionaryentry) const\*<br />*may be nullptr*

(Optional) Key-value pairs to be written to the custom data. Note that keys are trimmed of whitespace, are limited in size, and may not begin with a '!' character or be null.

**`dataCount`**   uint32\_t

Count of data

**`keysToRemove`**   const char\* const\*<br />*may be nullptr*

(Optional) Optional list of Data-keys to remove from UserData. Some SDKs cannot insert null-values into Data due to language constraints. Use this to delete the keys directly.

**`keysToRemoveCount`**   uint32\_t

Count of keysToRemove

**`permission`**   [PFUserDataPermission](/services/playfab/api-references/c/pftypes/enums/pfuserdatapermission) const\*<br />*may be nullptr*

(Optional) Permission to be applied to all user data keys written in this request. Defaults to "private" if not set. This is used for requests by one player for information about another player; those requests will only return Public keys.

## Requirements

**Header:** PFPlayerDataManagementTypes.h

## See also

[PFPlayerDataManagementTypes members](/services/playfab/api-references/c/pfplayerdatamanagementtypes/pfplayerdatamanagementtypes_members)


## Related topics

- [PFPlayerDataManagementClientUpdateUserDataAsync](/services/playfab/api-references/c/pfplayerdatamanagement/functions/pfplayerdatamanagementclientupdateuserdataasync.md)
- [PFPlayerDataManagementClientUpdateUserPublisherDataAsync](/services/playfab/api-references/c/pfplayerdatamanagement/functions/pfplayerdatamanagementclientupdateuserpublisherdataasync.md)
- [Services C API overview - PFPlayerDataManagementTypes.h](/services/playfab/api-references/c/pfplayerdatamanagementtypes/pfplayerdatamanagementtypes_members.md)
- [PFPlayerDataManagementServerUpdateUserDataRequest](/services/playfab/api-references/c/pfplayerdatamanagementtypes/structs/pfplayerdatamanagementserverupdateuserdatarequest.md)
- [PFPlayerDataManagementUpdateUserInternalDataRequest](/services/playfab/api-references/c/pfplayerdatamanagementtypes/structs/pfplayerdatamanagementupdateuserinternaldatarequest.md)
