# Trouble with adding and removing indexes using core Kibana Api

**URL:** <https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853>\
**Category:** Kibana\
**Tags:** kibana-plugin-development\
**Created:** [June 3, 2021, 10:30am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853 "2021-06-03T10:30:21Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![kibanaPluginDev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kibanaplugindev/32/87937_2.png) [@kibanaPluginDev](https://discuss.elastic.co/u/kibanaPluginDev)\
**Post date:** [June 3, 2021, 10:30am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/1 "2021-06-03T10:30:21Z")

</div>

We are really facing problems in implementing elasticsearch requests from Kibana Plugin using the core kibana API for elasticsearch? Also referred migration examples and the legacy to new platform migration document. Could you please provide sample query to implement adding indexes, removing indexes/index pattern, updating indexes, adding alias name, etc for third party kibana plugin?

---

<div class="post-metadata">

**Author:** ![Vadims\_Daleckis](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vadims_daleckis/32/57613_2.png) [@Vadims\_Daleckis](https://discuss.elastic.co/u/Vadims_Daleckis)\
**Post date:** [June 3, 2021, 11:08am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/2 "2021-06-03T11:08:48Z")

</div>

Hello @kibanaPluginDev ,

In the latest version of Kibana to work with Index Patterns you need to get hold of the Index Pattern client from the `data` plugin through the plugin contract. However, an extra complication is that it must happen within a route handler.

I could look something like this:

```
class MyPlugin {
  setup(setupCore) {
    const router = setupCore.http.createRouter();
    router.post({
      path: '/api/my-plugin/do-something',
      validate: {
        body: schema.object({
          // ...
        }),
      },
    async (ctx, req, res) => {
      const [startCore, startPlugins] = await setupCore.getStartServices();
      const savedObjectsClient = startCore.savedObjects.client;
      const elasticsearchClient = startCore.elasticsearch.client.asCurrentUser;
      const indexPatternsService = await startPlugins.data.indexPatterns.indexPatternsServiceFactory(
        savedObjectsClient,
        elasticsearchClient
      );

      // For example, create new index pattern:
      const indexPattern = await indexPatternsService.createAndSave(
        // ..
      );

      return res.ok({})
  }
}
```

---

<div class="post-metadata">

**Author:** ![kibanaPluginDev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kibanaplugindev/32/87937_2.png) [@kibanaPluginDev](https://discuss.elastic.co/u/kibanaPluginDev)\
**Post date:** [June 3, 2021, 11:56am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/3 "2021-06-03T11:56:54Z")

</div>

> [@Vadims\_Daleckis](#):
>
> ```auto
> const [startCore, startPlugins] = await setupCore.getStartServices();
> const savedObjectsClient = startCore.savedObjects.client;
> const elasticsearchClient = startCore.elasticsearch.client.asCurrentUser;
> const indexPatternsService = await startPlugins.data.indexPatterns.indexPatternsServiceFactory(
> savedObjectsClient,
> elasticsearchClient
> );
> 
> ```

Hello @Vadims_Daleckis ,  
I tried things as you suggested . Still getting bad request any clue?

> import { IRouter, CoreSetup } from '../../../../src/core/server';
> 
> export function defineRoutes(router: IRouter, core: CoreSetup) {  
> router.post(  
> {  
> path: '/api/sip/addTribeIndexPattern2',  
> validate: false,  
> },  
> async (context, request, response) =\> {  
> const [startCore, startPlugins] = await core.getStartServices();  
> const savedObjectsClient = startCore.savedObjects.client;  
> const elasticsearchClient = startCore.elasticsearch.client.asCurrentUser;  
> const indexPatternsService = await startPlugins.data.indexPatterns.indexPatternsServiceFactory(  
> savedObjectsClient,  
> elasticsearchClient  
> );  
> const pattern = 'pattern1';  
> const indexPattern = await indexPatternsService.createAndSave(  
> {  
> title: pattern,  
> },  
> true  
> );
> 
> ```
> return response.ok({
> body: { indexPattern },
> });
> }
> 
> ```
> 
> );  
> }

---

<div class="post-metadata">

**Author:** ![Vadims\_Daleckis](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vadims_daleckis/32/57613_2.png) [@Vadims\_Daleckis](https://discuss.elastic.co/u/Vadims_Daleckis)\
**Post date:** [June 3, 2021, 12:05pm UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/4 "2021-06-03T12:05:56Z")

</div>

What error are you seeing?

---

<div class="post-metadata">

**Author:** ![kibanaPluginDev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kibanaplugindev/32/87937_2.png) [@kibanaPluginDev](https://discuss.elastic.co/u/kibanaPluginDev)\
**Post date:** [June 3, 2021, 12:11pm UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/5 "2021-06-03T12:11:09Z")

</div>

> [@Vadims\_Daleckis](#):
>
> ```auto
> const [startCore, startPlugins] = await setupCore.getStartServices();
> const savedObjectsClient = startCore.savedObjects.client;
> const elasticsearchClient = startCore.elasticsearch.client.asCurrentUser;
> const indexPatternsService = await startPlugins.data.indexPatterns.indexPatternsServiceFactory(
> savedObjectsClient,
> elasticsearchClient
> );
> 
> ```

It says Property 'client' does not exist on type 'SavedObjectsServiceStart'. Similarly for asCurrentUser, and data . Getting a bad request in Postman.

---

<div class="post-metadata">

**Author:** ![Vadims\_Daleckis](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vadims_daleckis/32/57613_2.png) [@Vadims\_Daleckis](https://discuss.elastic.co/u/Vadims_Daleckis)\
**Post date:** [June 3, 2021, 12:14pm UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/6 "2021-06-03T12:14:24Z")

</div>

In Postman, are you providing all the necessary authentication headers? Maybe worth executing the request from Kibana browser-side, to make sure all authentication information is set properly.

In a browser-side plugin, you could do:

```
class MyPlugin {
  start(core) {
    core.http.post(/* ... */)
      .then(console.log)
      .catch(console.error);
  }
}
```

---

<div class="post-metadata">

**Author:** ![kibanaPluginDev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kibanaplugindev/32/87937_2.png) [@kibanaPluginDev](https://discuss.elastic.co/u/kibanaPluginDev)\
**Post date:** [June 14, 2021, 6:56am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/7 "2021-06-14T06:56:21Z")

</div>

Hello @Vadims_Daleckis ,  
I'm still getting error in the postman while trying to hit that post request .

> {  
> "statusCode": 400,  
> "error": "Bad Request",  
> "message": "Request must contain a kbn-xsrf header."  
> }

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 12, 2021, 6:56am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/8 "2021-07-12T06:56:42Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.

---

<div class="post-metadata">

**Author:** ![Vadims\_Daleckis](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vadims_daleckis/32/57613_2.png) [@Vadims\_Daleckis](https://discuss.elastic.co/u/Vadims_Daleckis)\
**Post date:** [August 18, 2021, 9:20am UTC](https://discuss.elastic.co/t/trouble-with-adding-and-removing-indexes-using-core-kibana-api/274853/9 "2021-08-18T09:20:29Z")

</div>

You are not able to execute your HTTP request from Postman because your request is missing the XSRF header, see this thread on a similar question about the XSRF header: [Where can I get the correct kbn-xsrf value for my plugin HTTP requests?](https://discuss.elastic.co/t/where-can-i-get-the-correct-kbn-xsrf-value-for-my-plugin-http-requests/158725)
