# no-channel-trailing-slash

Channel names must not have trailing slashes in their address.

| AsyncAPI | Compatibility |
|  --- | --- |
| 2.6 | ✅ |
| 3.0 | ✅ |


## API design principles

Depending on the protocol, the trailing slash may indicate an error or simple inconsistency between channels or documentation.
Enable this rule to make sure that no channel address includes the trailing slash.

## Configuration

| Option | Type | Description |
|  --- | --- | --- |
| severity | string | Possible values: `off`, `warn`, `error`. Default `off`. |


An example configuration:


```yaml
rules:
  no-channel-trailing-slash: error
```

## Examples

Given the following configuration:


```yaml
rules:
  no-channel-trailing-slash: error
```

Example of an **incorrect** channel:


```yaml
channels:
  channel1:
    address: events/trailing/
    messages:
      event1:
        $ref: '#/components/messages/event1'
```

Example of a **correct** channel:


```yaml
channels:
  channel1:
    address: events/expected
    messages:
      event1:
        $ref: '#/components/messages/event1'
```

### Channel rules for AsyncAPI 2.6

The syntax for how the channels are described changed with the AsyncAPI 3.0 release.
This rule also works with AsyncAPI 2.6 and checks the channel address used as the key of the `channels` object.
For example, the rule produces an error when it sees this channel with a trailing slash:


```yaml
channels:
  events/trailing/: # channel address value checked by rule
    subscribe:
      message:
        $ref: '#/components/messages/event1'
```

Change the channel name to `events/expected` (or another value without a trailing slash) to comply with this rule.

## Resources

- [Rule source async3](https://github.com/Redocly/redocly-cli/blob/main/packages/core/src/rules/async3/no-channel-trailing-slash.ts)
- [Rule source async2](https://github.com/Redocly/redocly-cli/blob/main/packages/core/src/rules/async2/no-channel-trailing-slash.ts)