﻿---
title: Tutorials
description: Hands-on, task-focused guides for working with the Kibana platform from inside a plugin. If you're new to Kibana development, start with Getting started...
url: https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials
products:
  - Kibana
---

# Tutorials
Hands-on, task-focused guides for working with the Kibana platform from inside a plugin. If you're new to Kibana development, start with [Getting started](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/getting-started) instead.

## Data access

- [Access the Elasticsearch client](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/access-the-elasticsearch-client-in-a-plugin) — obtain the Elasticsearch client in plugin lifecycle hooks and route handlers
- [Search saved objects](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/saved-object-search-method) — use the powerful `search` method on `SavedObjectsClientContract`
- [Data views API](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/data-views-api) — create, query, and manage data views programmatically
- [data.search services](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/kibana-data-search-services) — run search requests with async search, sessions, and custom strategies


## HTTP APIs

- [Register and access an endpoint](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/registering-and-accessing-an-endpoint) — add a custom HTTP API and call it from client-side code
- [Versioning HTTP APIs](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/versioning-http-apis) — create or migrate to versioned HTTP APIs
- [Versioning interfaces](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/versioning-interfaces) — manage request and response schema versions over time
- [Generate OAS documentation](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/generating-oas-for-http-apis) — generate OpenAPI Specification docs for your HTTP APIs


## Building UIs

- [Register an application](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/registering-an-application) — register a top-level application in Kibana
- [Page template](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/kibana-page-template) — create consistent page layouts with `KibanaPageTemplate`
- [Recently viewed](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/chrome-recently-viewed) — register items in the side navigation's "Recently Viewed" list via `chrome.recentlyAccessed`
- [Expressions service](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/kibana-expressions-service) — build and execute expression pipelines
- [Lens Config Builder API](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/lens-config-builder-api-examples) — embed Lens visualizations using the config builder API
- [Add data tutorials](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/home-tutorials) — register data ingestion tutorials in the Kibana home screen


## Configuration

- [Configure your plugin](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/configuring-your-plugin) — define a config schema and read values at runtime
- [UI settings](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/ui-settings) — register a new UI setting (aka advanced setting / uiSetting) and read it at runtime


## Platform services

- [Logging](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/logging-service) — structured logging from the server
- [Reporting integration](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/reporting-integration) — integrate your plugin with the Reporting plugin
- [Screenshotting service](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/screenshotting/kibana-screenshotting-service) — generate screenshots programmatically
- [Development telemetry](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/development-telemetry) — register telemetry events for usage analytics
- [Internationalization (i18n)](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/i18n) — add translatable strings and use the i18n tooling


## External plugin development

- [Overview](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/external-plugin-development) — differences when developing plugins outside the Kibana repository
- [Plugin tooling](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/plugin-tooling) — build and package tooling for external plugins
- [Functional tests](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/external-plugin-functional-tests) — run FTR tests for plugins outside the repo
- [Testing plugins](https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/extend/tutorials/testing-kibana-plugin) — set up tests for a Kibana plugin