Skip to content

Commit 72c9fef

Browse files
authored
[DOCS] Add examples for security user profile and SAML APIs (#3520)
1 parent fa1f90c commit 72c9fef

File tree

49 files changed

+699
-174
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+699
-174
lines changed

output/openapi/elasticsearch-openapi.json

Lines changed: 72 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

output/schema/schema.json

Lines changed: 114 additions & 81 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

specification/_doc_ids/table.csv

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,9 +672,10 @@ security-api-suggest,https://www.elastic.co/guide/en/elasticsearch/reference/{br
672672
security-api-cross-cluster-key-update,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-update-cross-cluster-api-key.html
673673
security-api-update-key,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-update-api-key.html
674674
security-api-update-user-data,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-update-user-profile-data.html
675-
security-privileges,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html
676675
security-api-update-settings,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-api-update-settings.html
677676
security-encrypt-internode,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-basic-setup.html#encrypt-internode-communication
677+
security-privileges,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/security-privileges.html
678+
security-saml-guide,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/saml-guide-stack.html
678679
service-accounts,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/service-accounts.html
679680
set-processor,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/set-processor.html
680681
shape,https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/shape.html

specification/security/_types/GrantType.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export enum GrantType {
2424
password,
2525
/**
2626
* In this type of grant, you must supply an access token that was created by the Elasticsearch token service.
27+
* If you are activating a user profile, you can alternatively supply a JWT (either a JWT `access_token` or a JWT `id_token`).
2728
*/
2829
access_token
2930
}

specification/security/activate_user_profile/Request.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ import { RequestBase } from '@_types/Base'
2424
* Activate a user profile.
2525
*
2626
* Create or update a user profile on behalf of another user.
27+
*
28+
* NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
29+
* Individual users and external applications should not call this API directly.
30+
* The calling application must have either an `access_token` or a combination of `username` and `password` for the user that the profile document is intended for.
31+
* Elastic reserves the right to change or remove this feature in future releases without prior notice.
32+
*
33+
* This API creates or updates a profile document for end users with information that is extracted from the user's authentication object including `username`, `full_name,` `roles`, and the authentication realm.
34+
* For example, in the JWT `access_token` case, the profile user's `username` is extracted from the JWT token claim pointed to by the `claims.principal` setting of the JWT realm that authenticated the token.
35+
*
36+
* When updating a profile document, the API enables the document if it was disabled.
37+
* Any updates do not change existing content for either the `labels` or `data` fields.
2738
* @rest_spec_name security.activate_user_profile
2839
* @availability stack since=8.2.0 stability=stable
2940
* @availability serverless stability=stable visibility=private
@@ -38,9 +49,28 @@ export interface Request extends RequestBase {
3849
}
3950
]
4051
body: {
52+
/**
53+
* The user's Elasticsearch access token or JWT.
54+
* Both `access` and `id` JWT token types are supported and they depend on the underlying JWT realm configuration.
55+
* If you specify the `access_token` grant type, this parameter is required.
56+
* It is not valid with other grant types.
57+
*/
4158
access_token?: string
59+
/**
60+
* The type of grant.
61+
*/
4262
grant_type: GrantType
63+
/**
64+
* The user's password.
65+
* If you specify the `password` grant type, this parameter is required.
66+
* It is not valid with other grant types.
67+
*/
4368
password?: string
69+
/**
70+
* The username that identifies the user.
71+
* If you specify the `password` grant type, this parameter is required.
72+
* It is not valid with other grant types.
73+
*/
4474
username?: string
4575
}
4676
}
Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
# summary:
2-
# method_request: POST /_security/user/jacknich
2+
# method_request: POST /_security/profile/_activate
33
description: >
4-
Run `POST /_security/user/jacknich` to create a user.
4+
Run `POST /_security/profile/_activate` to activate a user profile.
55
# type: request
66
value: |-
77
{
8-
"password" : "l0ng-r4nd0m-p@ssw0rd",
9-
"roles" : [ "admin", "other_role1" ],
10-
"full_name" : "Jack Nicholson",
11-
"email" : "jacknich@example.com",
12-
"metadata" : {
13-
"intelligence" : 7
14-
}
8+
"grant_type": "password",
9+
"username" : "jacknich",
10+
"password" : "l0ng-r4nd0m-p@ssw0rd"
1511
}

specification/security/disable_user_profile/Request.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,18 @@ import { Refresh } from '@_types/common'
2525
* Disable a user profile.
2626
*
2727
* Disable user profiles so that they are not visible in user profile searches.
28+
*
29+
* NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
30+
* Individual users and external applications should not call this API directly.
31+
* Elastic reserves the right to change or remove this feature in future releases without prior notice.
32+
*
33+
* When you activate a user profile, its automatically enabled and visible in user profile searches. You can use the disable user profile API to disable a user profile so it’s not visible in these searches.
34+
* To re-enable a disabled user profile, use the enable user profile API .
2835
* @rest_spec_name security.disable_user_profile
2936
* @availability stack since=8.2.0 stability=stable
3037
* @availability serverless stability=stable visibility=private
3138
* @cluster_privileges manage_user_profile
39+
* @doc_id security-api-disable-user-profile
3240
*/
3341
export interface Request extends RequestBase {
3442
urls: [
@@ -45,9 +53,9 @@ export interface Request extends RequestBase {
4553
}
4654
query_parameters: {
4755
/**
48-
* If 'true', Elasticsearch refreshes the affected shards to make this operation
49-
* visible to search, if 'wait_for' then wait for a refresh to make this operation
50-
* visible to search, if 'false' do nothing with refreshes.
56+
* If 'true', Elasticsearch refreshes the affected shards to make this operation visible to search.
57+
* If 'wait_for', it waits for a refresh to make this operation visible to search.
58+
* If 'false', it does nothing with refreshes.
5159
* @server_default false
5260
*/
5361
refresh?: Refresh

specification/security/enable_user_profile/Request.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ import { Refresh } from '@_types/common'
2525
* Enable a user profile.
2626
*
2727
* Enable user profiles to make them visible in user profile searches.
28+
*
29+
* NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
30+
* Individual users and external applications should not call this API directly.
31+
* Elastic reserves the right to change or remove this feature in future releases without prior notice.
32+
*
33+
* When you activate a user profile, it's automatically enabled and visible in user profile searches.
34+
* If you later disable the user profile, you can use the enable user profile API to make the profile visible in these searches again.
2835
* @rest_spec_name security.enable_user_profile
2936
* @availability stack since=8.2.0 stability=stable
3037
* @availability serverless stability=stable visibility=private
@@ -40,15 +47,16 @@ export interface Request extends RequestBase {
4047
]
4148
path_parts: {
4249
/**
43-
* Unique identifier for the user profile.
50+
* A unique identifier for the user profile.
4451
*/
4552
uid: UserProfileId
4653
}
4754
query_parameters: {
4855
/**
4956
* If 'true', Elasticsearch refreshes the affected shards to make this operation
50-
* visible to search, if 'wait_for' then wait for a refresh to make this operation
51-
* visible to search, if 'false' do nothing with refreshes.
57+
* visible to search.
58+
* If 'wait_for', it waits for a refresh to make this operation visible to search.
59+
* If 'false', nothing is done with refreshes.
5260
* @server_default false
5361
*/
5462
refresh?: Refresh

specification/security/get_user_profile/Request.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@ import { RequestBase } from '@_types/Base'
2424
* Get a user profile.
2525
*
2626
* Get a user's profile using the unique profile ID.
27+
*
28+
* NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
29+
* Individual users and external applications should not call this API directly.
30+
* Elastic reserves the right to change or remove this feature in future releases without prior notice.
2731
* @rest_spec_name security.get_user_profile
2832
* @availability stack since=8.2.0 stability=stable
2933
* @availability serverless stability=stable visibility=private
30-
* @cluster_privileges manage_user_profile
34+
* @cluster_privileges read_security
3135
* @doc_id security-api-get-user-profile
3236
*/
3337
export interface Request extends RequestBase {
@@ -45,9 +49,9 @@ export interface Request extends RequestBase {
4549
}
4650
query_parameters: {
4751
/**
48-
* List of filters for the `data` field of the profile document.
49-
* To return all content use `data=*`. To return a subset of content
50-
* use `data=<key>` to retrieve content nested under the specified `<key>`.
52+
* A comma-separated list of filters for the `data` field of the profile document.
53+
* To return all content use `data=*`.
54+
* To return a subset of content use `data=<key>` to retrieve content nested under the specified `<key>`.
5155
* By default returns no `data` content.
5256
*/
5357
data?: string | string[]

specification/security/get_user_profile/Response.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ import { GetUserProfileErrors } from './types'
2222

2323
export class Response {
2424
body: {
25+
/**
26+
* A successful call returns the JSON representation of the user profile and its internal versioning numbers.
27+
* The API returns an empty object if no profile document is found for the provided `uid`.
28+
* The content of the data field is not returned by default to avoid deserializing a potential large payload.
29+
*/
2530
profiles: UserProfileWithMetadata[]
2631
errors?: GetUserProfileErrors
2732
}

0 commit comments

Comments
 (0)