Skip to content

Enumeration schema inlined in OpenAPI YAML instead of declared and referenced #3

@middlewareman

Description

@middlewareman

I have a simple enumeration like this:

sealed trait Outcome extends EnumEntry with Uppercase 

object Outcome extends Enum[Outcome] {
  case object Approved extends Outcome
  case object Denied extends Outcome
  case object Review extends Outcome
  case object Cancelled extends Outcome

  override val values: IndexedSeq[Outcome] = findValues

  def apply(name: String): Outcome = withNameInsensitive(name)

  implicit val decoder: Decoder[Outcome] = Decoder.decodeString map withNameInsensitive
  implicit val encoder: Encoder[Outcome] = Encoder.encodeString contramap (_.entryName)
}

In the generated OpenAPI document, the type is inlined as follows:

components:
  schemas:
    Activity:
      type: object
      properties:
        code:
          type: string
        decision:
          type: string
          enum:
          - APPROVED
          - DENIED
          - REVIEW
          - CANCELLED
    LogEntry:
      required:
      - decision
      - user
      type: object
      properties:
        user:
          type: string
        decision:
          type: string
          enum:
          - APPROVED
          - DENIED
          - REVIEW
          - CANCELLED

How can I instead make it its own type, as follows, without wrapping it in another case class?

components:
  schemas:
    Outcome:
      type: string
      enum:
        - APPROVED
        - DENIED
        - REVIEW
        - CANCELLED
    Activity:
      type: object
      properties:
        code:
          type: string
        decision:
          $ref: '#/components/schemas/Outcome'
    LogEntry:
      required:
      - decision
      - user
      type: object
      properties:
        user:
          type: string
        decision:
          $ref: '#/components/schemas/Outcome'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions