mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-25 23:57:20 -04:00
* 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
176 lines
4.7 KiB
Text
176 lines
4.7 KiB
Text
[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
|
||
Elastic’s {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/]
|