# operation-description-defined

Source: https://apigenie.pl/docs/linter/asyncapi/rules/operation-description-defined

This rule checks whether every operation of an AsyncAPI document has a
meaningful description.

## Rule Details

An operation describes what the application does with a channel: whether it
sends or receives messages, and why. A good description explains when the
messages are produced or consumed, and what the application does with them.

The `operation-description-defined` rule reports
`Operation has no meaningful description` for every operation (in the root
`operations` map and in `components/operations`) whose `description` is
missing or shorter than the configured minimal length. Descriptions coming
from operation traits are not taken into account.

## Configuration

The configuration block is a positive integer: the minimal length of a
description, in characters. The default value is `10`.

**Configuration Example**. The following configuration requires operation
descriptions to be at least 30 characters long.

```yaml
version: "1.0"
commands:
  lint:
    asyncapi:
      rules:
        operation-description-defined: [error, 30]
```

## Examples

**Good**.

```yaml
asyncapi: 3.0.0
info:
  title: Pet Events
  version: 1.0.0
channels:
  petAdopted:
    address: pets.adopted
operations:
  onPetAdopted:
    action: receive
    channel:
      $ref: "#/channels/petAdopted"
    description: Updates the shelter inventory when a pet is adopted.
```

**Bad**. The operation has no description.

```yaml
asyncapi: 3.0.0
info:
  title: Pet Events
  version: 1.0.0
channels:
  petAdopted:
    address: pets.adopted
operations:
  onPetAdopted:
    action: receive
    channel:
      $ref: "#/channels/petAdopted"
```

**Bad**. The description is too short to be useful.

```yaml
asyncapi: 3.0.0
info:
  title: Pet Events
  version: 1.0.0
channels:
  petAdopted:
    address: pets.adopted
operations:
  onPetAdopted:
    action: receive
    channel:
      $ref: "#/channels/petAdopted"
    description: Adopted
```

## When Not to Use It

We recommend to always enable this rule.

## Compatibility

This rule is compatible with AsyncAPI 3.x documents. AsyncAPI 2.x documents
are rejected by the reader and are not linted.
