openapi: 3.0.1
info:
  version: 1.6.0
  title: DLRG Logo Generator
  description: 'Generator für DLRG Corporate-Design-konforme Logos.'
  termsOfService: https://www.dlrg.de/impressum-und-genderhinweis/
  contact:
    name: Arbeitskreis IT
    url: https://hilfe.dlrg.net
    email: webmaster@dlrg.de
  license:
    name: CC BY-ND 4.0
    url: 'https://creativecommons.org/licenses/by-nd/4.0/deed.de'
servers:
  - url: https://api.dlrg.net/logo/v1
tags:
  - name: Stammverband
    description: Generiert Logos im Layout des Stammverbands
  - name: Jugend
    description: Generiert Logos im Layout der Jugend
paths:
  /stammverband/png:
    get:
      operationId: getStammverbandPng
      tags:
        - Stammverband
      parameters:
        - $ref: '#/components/parameters/size'
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
        - $ref: '#/components/parameters/svcolor'
        - $ref: '#/components/parameters/stacked'
      responses:
        '200':
          $ref: '#/components/responses/PNG'

  /stammverband/svg:
    get:
      operationId: getStammverbandSvg
      tags:
        - Stammverband
      parameters:
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
        - $ref: '#/components/parameters/svcolor'
        - $ref: '#/components/parameters/stacked'
      responses:
        '200':
          $ref: '#/components/responses/SVG'

  /stammverband/favicon:
    get:
      operationId: getStammverbandFavicon
      tags:
        - Stammverband
      parameters:
        - $ref: '#/components/parameters/dimension'
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
      responses:
        '200':
          $ref: '#/components/responses/PNG'

  /stammverband/claim/svg:
    get:
      operationId: getStammverbandClaimSvg
      tags:
        - Stammverband
      parameters:
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
        - $ref: '#/components/parameters/svcolor'
      responses:
        '200':
          $ref: '#/components/responses/SVG'

  /stammverband/claim/png:
    get:
      operationId: getStammverbandClaimPng
      tags:
        - Stammverband
      parameters:
        - $ref: '#/components/parameters/size'
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
        - $ref: '#/components/parameters/svcolor'
      responses:
        '200':
          $ref: '#/components/responses/PNG'

  /jugend/png:
    get:
      operationId: getJugendPng
      tags:
        - Jugend
      parameters:
        - $ref: '#/components/parameters/size'
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
        - $ref: '#/components/parameters/jcolor'
        - $ref: '#/components/parameters/stacked'
      responses:
        '200':
          $ref: '#/components/responses/PNG'

  /jugend/svg:
    get:
      operationId: getJugendSvg
      tags:
        - Jugend
      parameters:
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
        - $ref: '#/components/parameters/jcolor'
        - $ref: '#/components/parameters/stacked'
      responses:
        '200':
          $ref: '#/components/responses/SVG'

  /jugend/favicon:
    get:
      operationId: getJugendFavicon
      tags:
        - Jugend
      parameters:
        - $ref: '#/components/parameters/dimension'
        - $ref: '#/components/parameters/line1'
        - $ref: '#/components/parameters/line2'
      responses:
        '200':
          $ref: '#/components/responses/PNG'

components:
  parameters:
    size:
      in: query
      name: size
      required: true
      schema:
        type: integer
        minimum: 20
        maximum: 1600
        default: 144
    dimension:
      in: query
      name: size
      required: true
      schema:
        type: integer
        minimum: 16
        maximum: 1000
        default: 32
    stacked:
      in: query
      name: stacked
      schema:
        type: boolean
        default: false
    line1:
      in: query
      name: line1
      required: true
      schema:
        type: string
      description: Obere Zeile des Textes auf der rechten Seite
      example: 'Ortsgruppe'
    line2:
      in: query
      name: line2
      schema:
        type: string
      description: Untere Zeile des Textes auf der rechten Seite
      example: 'Musterhausen e.V.'
    svcolor:
      in: query
      name: farbe
      schema:
        type: string
        enum:
          - vollfarbe
          - rot
          - gelb
          - weiss
          - schwarz
        default: vollfarbe
      description: Farbwahl für das gesamte Logo. Hintergrund ist transparent.
    jcolor:
      in: query
      name: farbe
      schema:
        type: string
        enum:
          - vollfarbe
          - regenbogen
          - flamingo
          - saphir
          - weiss
          - schwarz
        default: vollfarbe
      description: Farbwahl für das gesamte Logo. Hintergrund ist transparent.
  responses:
    PNG:
      description: OK
      content:
        image/png:
          schema:
            type: string
            format: binary
    SVG:
      description: OK
      content:
        image/svg+xml:
          schema:
            type: string

