# Work with Response Metadata

The following are Apex classes to work with response metadata for errors and warnings. Slack returns response metadata as part of the Web API calls, which are helpful for debugging or error handling. Detailed errors and warnings are returned in the `messages` field in the response metadata.

## ResponseMetadata Class

Represents response metadata from a Slack Web API call.

### Usage

When receiving a response from Slack's API call, use `getResponseMetadata().getMessages()` to retrieve any error messages. This example shows how to retrieve the error messages from [`Slack.ChatPostMessageResponse`](/docs/platform/salesforce-slack-sdk/guide/apex_ref_chat.md#chatpostmessageresponse-class).

```java
Slack.ChatPostMessageRequest req = new Slack.ChatPostMessageRequest.builder()
    .channel((String) this.parameters.get('channelId'))
    .text('Details for record id' + recordId)
    .viewReference(viewReference)
    .build();

Slack.ChatPostMessageResponse response = userClient.ChatPostMessage(req);
if (response.getError() != null) {
    System.debug(response.getResponseMetadata().getMessages());
}
```

### ResponseMetadata Methods

The following are methods for `ResponseMetadata`.

#### getMessages()

**Signature**

```java
public List<String> getMessages()
```

**Return Value**

Type: List\<String>

#### getNextCursor()

Responses include the `next_cursor` value to navigate through additional results. See [Paginating through collections](https://api.slack.com/docs/pagination).

**Signature**

```java
public String getNextCursor()
```

**Return Value**

Type: String

#### getResponseMetadata()

**Signature**

```java
public Slack.ResponseMetadata getResponseMetadata()
```

**Return Value**

Type: [Slack.ResponseMetadata](/docs/platform/salesforce-slack-sdk/guide/apex_ref_response_metadata.md#responsemetadata-class)

#### getWarnings()

**Signature**

```java
public List<String> getWarnings()
```

**Return Value**

Type: List\<String>

#### setMessages(messages)

**Signature**

```java
public void setMessages(List<String> messages)
```

**Parameters**

*messages*

Type: List\<String>

**Return Value**

Type: void

#### setNextCursor(nextCursor)

**Signature**

```java
public void setNextCursor(String nextCursor)
```

**Parameters**

*messages*

Type: String

**Return Value**

Type: void

#### ssetResponseMetadata(responseMetadata)

**Signature**

```java
public void setResponseMetadata(Slack.ResponseMetadata responseMetadata)
```

**Parameters**

responseMetadata

Type: [Slack.ResponseMetadata](/docs/platform/salesforce-slack-sdk/guide/apex_ref_response_metadata.md#responsemetadata-class)

**Return Value**

Type: void

#### setWarnings(warnings)

**Signature**

```java
public void setWarnings(List<String> warnings)
```

**Parameters**

*warnings*

Type: List\<String>

**Return Value**

Type: void

## ErrorResponseMetadata Class

Represents response metadata for an error.

### ErrorResponseMetadata Methods

The following are methods for `ErrorResponseMetadata`.

#### getMessages()

**Signature**

```java
public List<String> getMessages()
```

**Return Value**

Type: List\<String>

#### setMessages(messages)

**Signature**

```java
public void setMessages(List<String> messages)
```

**Parameters**

*messages*

Type: List\<String>

**Return Value**

Type: void

## WarningResponseMetadata Class

Represents response metadata for a warning.

### WarningResponseMetadata Methods

The following are methods for `WarningResponseMetadata`.

#### getWarnings()

**Signature**

```java
public List<String> getWarnings()
```

**Return Value**

Type: List\<String>

#### setWarnings(warnings)

```java
public void setWarnings(List<String> warnings)
```

**Parameters**

*warnings*

Type: List\<String>

**Return Value**

Type: void
