Linter rulesSwagger 2.0schema-enum-no-duplicates

schema-enum-no-duplicates

Since 0.9.0 · fixed by --fix

This rule ensures that enum lists do not contain duplicate values.

Rule Details

A duplicate enum value is redundant and usually a copy-paste mistake. It may also break code generators, which turn enum values into constants that must be unique.

The schema-enum-no-duplicates rule checks the enum list of every typed object of a Swagger 2.0 document: schemas, non-body parameters, response headers and items objects (objects with a $ref are checked where they are defined). It reports Duplicate enum value once for every value that is equal to a value listed before it.

Values are compared structurally: arrays are equal when their elements are equal in order, and objects are equal when they have the same keys with equal values, regardless of the order of the keys.

Configuration

None.

Examples

Good.

swagger: '2.0'
info:
  title: Users
  version: 1.0.0
paths: {}
definitions:
  UserStatus:
    type: string
    enum: [ACTIVE, INACTIVE]

Bad. ACTIVE is listed twice, and the two points differ only in the order of their keys.

swagger: '2.0'
info:
  title: Users
  version: 1.0.0
paths: {}
definitions:
  UserStatus:
    type: string
    enum: [ACTIVE, INACTIVE, ACTIVE]
  Corner:
    type: object
    enum:
      - { x: 1, y: 2 }
      - { y: 2, x: 1 }

Automatic fixes

When invoked with --fix, this rule removes every duplicate value, keeping the first occurrence of each value.

When Not to Use It

There is no good reason to keep duplicate enum values, so this rule should always be enabled.

Compatibility

This rule is compatible with Swagger 2.0 documents. OpenAPI 3.x documents are linted by the OpenAPI linter, which has a rule of the same name.

Related rules

Further reading