openapi: 3.0.3
info:
  title: apidoc-generator-attributes
  version: 0.1.0-SNAPSHOT
  description: This specified additional options that can be specified when using
    Movio's scala generators
components:
  schemas:
    MovioApidocGeneratorAttributesV0ModelsScalaModelProps:
      description: Additional code generation information for case classes
      type: object
      properties:
        extends:
          description: A list of Scala/Java classes that this model extends
          example: '[com.github.BaseClass1, com.github.BaseClass2]'
          type: array
          items:
            type: string
    MovioApidocGeneratorAttributesV0ModelsScalaFieldProps:
      description: Additional code generation information for case class fields
      type: object
      properties:
        class:
          description: The fully qualified Scala/Java class to use during implementation.
            Note that this class must have a json formatter defined in the generator
            code. Currenly only org.joda.time.LocalDate and org.joda.time.LocalDateTime
            are implemented. In the future this maybe a defined list of supported
            classes
          example: org.joda.time.LocalDate
          type: string
        default:
          description: Used as the default in a case class.
          type: string
        example:
          description: Used in documentation and as a default implementation when
            creating example implementation's of case classes
          type: string
    MovioApidocGeneratorAttributesV0ModelsKafkaProps:
      description: Information needed for generating Kafka wrappers, consumers and
        producers.
      type: object
      required:
      - data_type
      - topic
      - message_generate_key
      properties:
        data_type:
          description: This is the name of the model that this kafka wrapper encapsulated.
            Model name is the same as defined in the models section
          example: person_address
          type: string
        topic:
          description: '[scala] This is a scala snippet that returns a string with
            the topic name for kafka. The generator creates a function on the kafka
            topic object `def topic(tenant: String) = <definition-goes-here>`'
          type: string
        message_generate_key:
          description: '[scala] This is a scala snippet that creates a string used
            as the message ID. The message ID is used as the kafka message ID. The
            generator creates a function on the case class `def generateKey(tenant:
            String) = <definition-goes-here>`'
          default: java.util.UUID.randomUUID().toString
          type: string
    MovioApidocGeneratorAttributesV0ModelsFieldValidation:
      description: Additional validation options not currently in the standard apidoc
        spec
      type: object
      properties:
        regex:
          description: Regex string to validate the field with. The field must be
            a `string` or `[string]`. If the field is a `[string]` all elements in
            the array will be validated
          example: ^[A-Za-z]+$
          type: string
        maximum:
          description: This applies only to `[string]`, `[integer]` and `[long]`.
            The current apidoc spec includes maximum however for an array this the
            maxium size of the array. This validates the max length or number of each
            element of the array. The field must be a `[string]`, `[integer]` or `[long]`.
            All elements in the array will be validated as per standard apidoc specs
          type: integer
          format: int64
        minimum:
          description: This applies only to `[string]`, `[integer]` and `[long]`.
            The current apidoc spec includes minimum however for an array this the
            minimum size of the array. This validates the minimum length or number
            of each element of the array. The field must be a `[string]`, `[integer]`
            or `[long]`. All elements in the array will be validated as per standard
            apidoc specs
          type: integer
          format: int64
