# Sidekiq public API documentation

Sidekiq provides a number of public APIs for various functionality.

1. Middleware
2. Lifecycle Events
3. Data API
4. Components

## Middleware

Middleware run around the the client-side push and the server-side execution of jobs. This allows plugins which mutate job data or provide additional functionality during the executiong of specific jobs.

## Lifecycle Events

With lifecycle events, Sidekiq plugins can register a callback upon `startup`, `quiet` or `shutdown`.
This is useful for starting and stopping your own Threads or services within the Sidekiq process.

## Data API

The code in `sidekiq/api` provides a Ruby facade on top of Sidekiq's persistent data within Redis.
It contains many classes and methods for discovering, searching and iterating through the real-time job data within the queues and sets inside Redis.
This API powers the Sidekiq::Web UI.

## Components (ALPHA)

Coming in Sidekiq 7.0, Components are elements of code which run inside each Sidekiq process.
They are passed a handle to the Sidekiq container which gives them direct access
to resources like the Logger, Redis connection pool and other registered resources.