---
name: "Search::Elasticsearch::Role::Client::Direct"
section: "3pm"
platform: "linux"
package: "libsearch-elasticsearch-perl"
version: "8.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Search::Elasticsearch::Role::Client::Direct"
---

# Search::Elasticsearch::Role::Client::Direct(3pm)

Request parsing for Direct clients

## NAME

Search::Elasticsearch::Role::Client::Direct - Request parsing for Direct clients

## VERSION

version 8.12

## DESCRIPTION

This role provides the single `parse_request()` method for classes which need to parse an API definition from Search::Elasticsearch::Role::API and convert it into a request which can be passed to "**perform\_request()**" in Search::Elasticsearch::Transport.

## METHODS

### perform\_request()

```
    $request = $client->parse_request(\%defn,\%params);
```

The `%defn` is a definition returned by "**api()**" in Search::Elasticsearch::Role::API with an extra key `"name"` which should be the name of the method that was called on the client.  For instance if the user calls `"$client->search"`, then the `"name"` should be `"search"`.

`parse_request()` will turn the parameters that have been passed in into a `"path"` (via "**path\_init()**" in Search::Elasticsearch::Util::API::Path), a query-string hash (via "qs\_init" in Search::Elasticsearch::Util::API::QS) and will through a `"body"` value directly.

**NOTE:** If a `"path"` key is specified in the `%params` then it will be used directly, instead of trying to build path from the path template.  Similarly, if a `"params"` key is specified in the `%params`, then it will be used as a basis for the query string hash.  For instance:

```
    $client->perform_request(
        {
            method => 'GET',
            name   => 'new_method'
        },
        {
            path   => '/new/method',
            params => { foo => 'bar' },
            body   => \%body
        }
    );
```

This makes it easy to add support for custom plugins or new functionality not yet supported by the released client.

## AUTHOR

Enrico Zimuel \<enrico.zimuel@elastic.co\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2024 by Elasticsearch BV.

This is free software, licensed under:

```
  The Apache License, Version 2.0, January 2004
```
