# HTTP

Type: `bindings.http`

Status: stable

Reference: https://docs.dapr.io/reference/components-reference/supported-bindings/http/

## Example

```
apiVersion: cra.diagrid.io/v1beta1
kind: Component
metadata:
  name: <name>
spec:
  type: bindings.http
  version: v1
  metadata:
    # The base URL of the HTTP endpoint to invoke
    - name: url
      value: "http://host:port/path, http://myservice:8000/customer"
    # Client certificate for mTLS: either a PEM-encoded string, or a path to a certificate on disk (Optional)
    #- name: MTLSClientCert
    #  value: | 
    #    /path/to/client.pem
    # Client key for mTLS: either a PEM-encoded string, or a path to a certificate on disk (Optional)
    #- name: MTLSClientKey
    #  value: | 
    #    /path/to/client.key
    # Set TLS renegotiation setting (Optional)
    #- name: MTLSRenegotiation
    #  value: "RenegotiateOnceAsClient"
    # CA certificate: either a PEM-encoded string, or a path to a certificate on disk (Optional)
    #- name: MTLSRootCA
    #  value: | 
    #    /path/to/ca.pem
    # Create an error if a non-2XX status code is returned (Optional)
    #- name: errorIfNot2XX
    #  value: "true"
    # Max amount of data to read from the response body, as a resource quantity. A value `<= 0` means no limit. (Optional)
    #- name: maxResponseBodySize
    #  value: "100Mi"
    # The duration after which HTTP requests should be canceled. (Optional)
    #- name: responseTimeout
    #  value: "10s, 5m"
    # The security token to include on an outgoing HTTP request as a header (Optional)
    #- name: securityToken
    #  value: "this-value-is-preferably-injected-from-a-secret-store"
    # The header name on an outgoing HTTP request for a security token (Optional)
    #- name: securityTokenHeader
    #  value: "X-Security-Token"

```

## Binding information

Input Binding: no

Output Binding: yes

### Output Binding operations:

- `create`: Alias for "post", for backwards-compatibility

- `get`: Read data/records

- `head`: Identical to get except that the server does not return a response body

- `post`: Typically used to create records or send commands

- `put`: Update data/records

- `patch`: Sometimes used to update a subset of fields of a record

- `delete`: Delete data/record

- `options`: Requests for information about the communication options available (not commonly used)

- `trace`: Used to invoke a remote, application-layer loop-back of the request message (not commonly used)

## Metadata

### `url`

**Required** - The base URL of the HTTP endpoint to invoke

Example value: `http://host:port/path, http://myservice:8000/customer`

### `MTLSClientCert`

Client certificate for mTLS: either a PEM-encoded string, or a path to a certificate on disk

Example value:

```
/path/to/client.pem
```

### `MTLSClientKey`

Client key for mTLS: either a PEM-encoded string, or a path to a certificate on disk

Example value:

```
/path/to/client.key
```

### `MTLSRenegotiation`

Set TLS renegotiation setting

Example value: `RenegotiateOnceAsClient`

Allowed values:

- RenegotiateNever

- RenegotiateOnceAsClient

- RenegotiateFreelyAsClient

### `MTLSRootCA`

CA certificate: either a PEM-encoded string, or a path to a certificate on disk

Example value:

```
/path/to/ca.pem
```

### `errorIfNot2XX`

Create an error if a non-2XX status code is returned

Default value: `true`

### `maxResponseBodySize` (bytesize)

Max amount of data to read from the response body, as a resource quantity. A value `<= 0` means no limit.

Default value: `100Mi`

Example value: `100 (as bytes), 1k, 10Ki, 1M, 1G`

### `responseTimeout`

The duration after which HTTP requests should be canceled.

Example value: `10s, 5m`

### `securityToken`

The security token to include on an outgoing HTTP request as a header

Example value: `this-value-is-preferably-injected-from-a-secret-store`

### `securityTokenHeader`

The header name on an outgoing HTTP request for a security token

Example value: `X-Security-Token`
