elasticsearch/docs/reference/rest-api/security/update-user-profile-data.asciidoc
Liam Thompson 33a71e3289
[DOCS] Refactor book-scoped variables in docs/reference/index.asciidoc (#107413)
* Remove `es-test-dir` book-scoped variable

* Remove `plugins-examples-dir` book-scoped variable

* Remove `:dependencies-dir:` and `:xes-repo-dir:` book-scoped variables

- In `index.asciidoc`, two variables (`:dependencies-dir:` and `:xes-repo-dir:`) were removed.
- In `sql/index.asciidoc`, the `:sql-tests:` path was updated to fuller path
- In `esql/index.asciidoc`, the `:esql-tests:` path was updated idem

* Replace `es-repo-dir` with `es-ref-dir`

* Move `:include-xpack: true` to few files that use it, remove from index.asciidoc
2024-04-17 14:37:07 +02:00

176 lines
4.7 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[role="xpack"]
[[security-api-update-user-profile-data]]
=== Update user profile data API
++++
<titleabbrev>Update user profile data</titleabbrev>
++++
NOTE: The user profile feature is designed only for use by {kib} and
Elastics {observability}, {ents}, and {elastic-sec} solutions. Individual
users and external applications should not call this API directly. Elastic reserves
the right to change or remove this feature in future releases without prior notice.
Updates specific data for the user profile that's associated with the specified
unique ID.
[[security-api-update-user-profile-data-request]]
==== {api-request-title}
`POST /_security/profile/<uid>/_data`
[[security-api-update-user-profile-data-prereqs]]
==== {api-prereq-title}
To use this API, you must have one of the following privileges:
* The `manage_user_profile` cluster privilege.
* The `update_profile_data` global privilege for the namespaces that are
referenced in the request.
[[security-api-update-user-profile-data-desc]]
==== {api-description-title}
The update user profile API updates the `labels` and `data` fields of an
existing user profile document with JSON objects. New keys and their values are
added to the profile document, and conflicting keys are replaced by data that's
included in the request.
For both `labels` and `data`, content is namespaced by the top-level fields.
The `update_profile_data` global privilege grants privileges for updating only
the allowed namespaces.
[[security-api-update-user-profile-data-path-params]]
==== {api-path-parms-title}
`uid`::
(Required, string) A unique identifier for the user profile.
[[security-api-update-user-profile-data-query-params]]
==== {api-query-parms-title}
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=if_seq_no]
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=if_primary_term]
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=refresh]
`uid`::
(Required, string) A unique identifier for the user profile.
[[security-api-update-user-profile-data-request-body]]
==== {api-request-body-title}
`labels`::
(Required*, object)
Searchable data that you want to associate with the user profile.
This field supports a nested data structure. Within the `labels` object,
top-level keys cannot begin with an underscore (`_`) or contain a period (`.`).
`data`::
(Required*, object)
Non-searchable data that you want to associate with the user profile.
This field supports a nested data structure. Within the `data` object, top-level
keys cannot begin with an underscore (`_`) or contain a period (`.`)
The `data` object is not searchable, but can be retrieved with the
<<security-api-get-user-profile,Get user profile API>>.
*Indicates that the setting is required in some, but not all situations.
[[security-api-update-user-profile-data-response-body]]
==== {api-response-body-title}
A successful update user profile data API call returns a JSON structure
indicating that the request is acknowledged:
[source,js]
----
{
"acknowledged": true
}
----
// NOTCONSOLE
[[security-api-update-user-profile-data-example]]
==== {api-examples-title}
The following request updates a profile document for a `uid` matching
`u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0`:
[source,console]
----
POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
"labels": {
"direction": "east"
},
"data": {
"app1": {
"theme": "default"
}
}
}
----
// TEST[setup:user_profiles]
You can update the profile data to replace some keys and add new keys:
[source,console]
----
POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
"labels": {
"direction": "west"
},
"data": {
"app1": {
"font": "large"
}
}
}
----
// TEST[continued]
If you get the profile now, the consolidated profile data is returned:
[source,console]
----
GET /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0?data=*
----
// TEST[continued]
[source,console-result]
----
{
"profiles": [
{
"uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
"enabled": true,
"last_synchronized": 1642650651037,
"user": {
"username": "jackrea",
"roles": [
"admin"
],
"realm_name": "native",
"full_name": "Jack Reacher",
"email": "jackrea@example.com"
},
"labels": {
"direction": "west"
},
"data": {
"app1": {
"theme": "default",
"font": "large"
}
},
"_doc": {
"_primary_term": 88,
"_seq_no": 66
}
}
]
}
----
// TESTRESPONSE[s/1642650651037/$body.profiles.0.last_synchronized/]
// TESTRESPONSE[s/88/$body.profiles.0._doc._primary_term/]
// TESTRESPONSE[s/66/$body.profiles.0._doc._seq_no/]