Skip to content

Commit

Permalink
Add spec for bulk put roles (#2682)
Browse files Browse the repository at this point in the history
* Add spec for bulk put roles
  • Loading branch information
jfreden authored Jul 10, 2024
1 parent 83caef9 commit eeb4f18
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 3 deletions.
33 changes: 33 additions & 0 deletions specification/security/_types/Bulk.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { integer } from '@_types/Numeric'
import { Dictionary } from '@spec_utils/Dictionary'
import { ErrorCause } from '@_types/Errors'

export class BulkError {
/**
* The number of errors
*/
count: integer
/**
* Details about the errors, keyed by role name
*/
details: Dictionary<string, ErrorCause>
}
12 changes: 9 additions & 3 deletions specification/security/_types/RoleDescriptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* under the License.
*/

import { GlobalPrivilege } from './Privileges'
import { ClusterPrivilege, GlobalPrivilege } from './Privileges'
import { IndicesPrivileges } from './Privileges'
import { ApplicationPrivileges } from './Privileges'
import { Metadata } from '@_types/common'
Expand All @@ -29,7 +29,7 @@ export class RoleDescriptor {
/**
* A list of cluster privileges. These privileges define the cluster level actions that API keys are able to execute.
*/
cluster?: string[]
cluster?: ClusterPrivilege[]
/**
* A list of indices permissions entries.
* @aliases index
Expand All @@ -52,6 +52,9 @@ export class RoleDescriptor {
* @doc_id run-as-privilege
*/
run_as?: string[]
/**
* Optional description of the role descriptor
*/
description?: string
transient_metadata?: Dictionary<string, UserDefinedValue>
}
Expand All @@ -60,7 +63,7 @@ export class RoleDescriptorRead implements OverloadOf<RoleDescriptor> {
/**
* A list of cluster privileges. These privileges define the cluster level actions that API keys are able to execute.
*/
cluster: string[]
cluster: ClusterPrivilege[]
/**
* A list of indices permissions entries.
* @aliases index
Expand All @@ -83,6 +86,9 @@ export class RoleDescriptorRead implements OverloadOf<RoleDescriptor> {
* @doc_id run-as-privilege
*/
run_as?: string[]
/**
* Optional description of the role descriptor
*/
description?: string
transient_metadata?: Dictionary<string, UserDefinedValue>
}
43 changes: 43 additions & 0 deletions specification/security/bulk_put_role/SecurityBulkPutRoleRequest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { Dictionary } from '@spec_utils/Dictionary'
import { RequestBase } from '@_types/Base'
import { Refresh } from '@_types/common'
import { RoleDescriptor } from '@security/_types/RoleDescriptor'

/**
* The role management APIs are generally the preferred way to manage roles, rather than using file-based role management.
* The bulk create or update roles API cannot update roles that are defined in roles files.
* @rest_spec_name security.bulk_put_role
* @availability stack since=8.15.0 stability=stable
* @availability serverless stability=stable visibility=private
* @cluster_privileges manage_security
*/
export interface Request extends RequestBase {
query_parameters: {
refresh?: Refresh
}
body: {
/**
* A dictionary of role name to RoleDescriptor objects to add or update
*/
roles: Dictionary<string, RoleDescriptor>
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { BulkError } from '@security/_types/Bulk'

export class Response {
body: {
/**
* Array of created roles
*/
created?: string[]
/**
* Array of updated roles
*/
updated?: string[]
/**
* Array of role names without any changes
*/
noop?: string[]
/**
* Present if any updates resulted in errors
*/
errors?: BulkError
}
}

0 comments on commit eeb4f18

Please sign in to comment.