Skip to content
14 changes: 2 additions & 12 deletions specification/indices/add_block/IndicesAddBlockRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import { RequestBase } from '@_types/Base'
import { ExpandWildcards, IndexName } from '@_types/common'
import { Duration } from '@_types/Time'
import {IndexSettingBlocks, IndexSettings} from "../_types/IndexSettings";

/**
* Add an index block.
Expand Down Expand Up @@ -49,7 +50,7 @@ export interface Request extends RequestBase {
/**
* The block type to add to the index.
*/
block: IndicesBlockOptions
block: keyof IndexSettingBlocks
}
query_parameters: {
/**
Expand Down Expand Up @@ -87,14 +88,3 @@ export interface Request extends RequestBase {
timeout?: Duration // default: 30s
}
}

export enum IndicesBlockOptions {
/** Disable metadata changes, such as closing the index. */
metadata,
/** Disable read operations. */
read,
/** Disable write operations and metadata changes. */
read_only,
/** Disable write operations. However, metadata changes are still allowed. */
write
}
90 changes: 90 additions & 0 deletions specification/indices/remove_block/IndicesRemoveBlockRequest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/*
* 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 { RequestBase } from '@_types/Base'
import { ExpandWildcards, IndexName } from '@_types/common'
import { Duration } from '@_types/Time'
import {IndexSettingBlocks, IndexSettings} from "../_types/IndexSettings";

/**
* Remove an index block.
*
* Remove an index block from an index.
* Index blocks limit the operations allowed on an index by blocking specific operation types.
* @rest_spec_name indices.remove_block
* @availability stack since=9.1.0 stability=stable
* @availability serverless stability=stable visibility=public
* @doc_id index-block-remove
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there any index_privileges or cluster_privileges we need to specify? these will show up in the docs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question, I'm not familiar with privileges myself, so I'll ask around.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added the manage index privilege. We'll have to add it to IndicesAddBlockRequest as well, but I'll do that in a follow-up PR.

*/
export interface Request extends RequestBase {
urls: [
{
path: '/{index}/_block/{block}'
methods: ['DELETE']
}
]
path_parts: {
/**
* A comma-separated list or wildcard expression of index names used to limit the request.
* By default, you must explicitly name the indices you are removing blocks from.
* To allow the removal of blocks from indices with `_all`, `*`, or other wildcard expressions, change the `action.destructive_requires_name` setting to `false`.
* You can update this setting in the `elasticsearch.yml` file or by using the cluster update settings API.
*/
index: IndexName
/**
* The block type to remove from the index.
*/
block: keyof IndexSettingBlocks
}
query_parameters: {
/**
* If `false`, the request returns an error if any wildcard expression, index alias, or `_all` value targets only missing or closed indices.
* This behavior applies even if the request targets other open indices.
* For example, a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
* @server_default true
*/
allow_no_indices?: boolean // default: true
/**
* The type of index that wildcard patterns can match.
* If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
* It supports comma-separated values, such as `open,hidden`.
* @server_default open
*/
expand_wildcards?: ExpandWildcards // default: open
/**
* If `false`, the request returns an error if it targets a missing or closed index.
* @server_default false
*/
ignore_unavailable?: boolean // default: false
/**
* The period to wait for the master node.
* If the master node is not available before the timeout expires, the request fails and returns an error.
* It can also be set to `-1` to indicate that the request should never timeout.
* @server_default 30s
*/
master_timeout?: Duration // default: 30s
/**
* The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
* If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
* It can also be set to `-1` to indicate that the request should never timeout.
* @server_default 30s
*/
timeout?: Duration // default: 30s
}
}
32 changes: 32 additions & 0 deletions specification/indices/remove_block/IndicesRemoveBlockResponse.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* 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 { IndexName } from '@_types/common'

export class Response {
body: {
acknowledged: boolean
indices: IndicesBlockStatus[]
}
}

export class IndicesBlockStatus {
name: IndexName
unblocked: boolean
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
method_request: DELETE /my-index-000001/_block/write
alternatives:
- language: Python
code: |-
resp = client.indices.remove_block(
index="my-index-000001",
block="write",
)
- language: JavaScript
code: |-
const response = await client.indices.removeBlock({
index: "my-index-000001",
block: "write",
});
- language: Ruby
code: |-
response = client.indices.remove_block(
index: "my-index-000001",
block: "write"
)
- language: PHP
code: |-
$resp = $client->indices()->removeBlock([
"index" => "my-index-000001",
"block" => "write",
]);
- language: curl
code: 'curl -X DELETE -H "Authorization: ApiKey $ELASTIC_API_KEY" "$ELASTICSEARCH_URL/my-index-000001/_block/write"'
- language: Java
code: |
client.indices().removeBlock(a -> a
.block(IndicesBlockOptions.Write)
.index("my-index-000001")
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# summary: ''
description: A successful response from `DELETE /my-index-000001/_block/write`, which removes an index block from an index.'
# type: response
# response_code: 200
value: |-
{
"acknowledged" : true,
"indices" : [ {
"name" : "my-index-000001",
"unblocked" : true
} ]
}
Loading