openapi: 3.0.1
info:
  title: coordinator rest
  description: QS coordinator rest service
  contact:
    name: 'QS Qualität und Sicherheit GmbH '
    url: http://www.q-s.de/
    email: info@q-s.de
  version: 1.0.0
tags:
- name: coordinator
paths:
  /deregister-location:
    post:
      summary: deactivates an existing location
      description: deactivates an existing location
      operationId: deregister_location
      requestBody:
        description: the location key
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationKey'
        required: true
      responses:
        "200":
          description: the location is deregistered or a functional error appeared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: invalid location
  /deregister-scheme-participant:
    post:
      summary: deactivates an existing scheme participant
      description: deactivates an existing scheme participant
      operationId: deregister_scheme_participant
      requestBody:
        description: the scheme participant QsID
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        "200":
          description: the scheme participant is deregistered or a functional error
            appeared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: invalid scheme participant
  /authenticate:
    post:
      summary: returns an jwt token if the user is allowed to use the service
      description: returns an jwt token if the user is allowed to use the service
      operationId: authenticate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationData'
      responses:
        "200":
          description: The token
          content:
            application/json:
              schema:
                type: string
        "403":
          description: Login not valid
  /check-location/{location_number}/{production_scope}:
    get:
      summary: checks if a location exists in the database
      description: "returns a list of location keys of an existing location, returns\
        \ an empty list if the location doesn't exits"
      operationId: check_location
      parameters:
      - name: location_number
        in: path
        description: the location number
        required: true
        schema:
          type: string
      - name: production_scope
        in: path
        description: the production scope
        required: true
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: a list of location keys
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckLocationResponse'
        "403":
          description: invalid bearer token
  /create-bundle:
    post:
      summary: creates a bundle
      description: creates a bundle
      operationId: create_bundle
      requestBody:
        description: the bundle data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BundleData'
        required: true
      responses:
        "200":
          description: the location is deregistered or a functional error appeared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: invalid location
  /audits:
    get:
      summary: a list of audits
      description: Returns a list of audits. Either the update_since parameter must
        be set or the location_number and the production_scope must be set.
      operationId: audits
      parameters:
      - name: modified-since
        in: query
        description: the date after an update happend
        schema:
          type: string
          format: date
        example: "{2020-01-31}"
      - name: modified-to
        in: query
        description: "the date before an update happend, only in combination with\
          \ modified-since"
        schema:
          type: string
          format: date
        example: "{2020-01-31}"
      - name: audit-from
        in: query
        description: the audit date from
        schema:
          type: string
          format: date
        example: "{2020-01-31}"
      - name: audit-to
        in: query
        description: the audit date to
        schema:
          type: string
          format: date
        example: "{2020-01-31}"
      - name: location_number
        in: query
        description: a location number
        schema:
          type: string
        example: "{276123456789012}"
      - name: production_scope
        in: query
        description: a production scope
        schema:
          type: integer
          format: int32
        example: "{1001}"
      responses:
        "200":
          description: a list of audits or a functional error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditResponse'
        "403":
          description: invalid bearer token
  /login-status:
    get:
      summary: gets the login status of the scheme participants
      description: gets the login status of the scheme participants.
      operationId: login_status
      parameters:
      - name: QsID
        in: query
        description: QS-ID of the scheme participant
        schema:
          type: string
      - name: noLogin
        in: query
        description: only scheme participants without login
        schema:
          type: boolean
      responses:
        "200":
          description: a list of logins or a functional error-
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginStatusResponse'
        "403":
          description: invalid bearer token
        "404":
          description: invalid scheme participant
  /location/{location_number}/{production_scope}:
    get:
      summary: gets the location detail
      description: returns the location detail information
      operationId: location
      parameters:
      - name: location_number
        in: path
        description: the location number
        required: true
        schema:
          type: string
        example: "{276123456789012}"
      - name: production_scope
        in: path
        description: the production scope of the location
        required: true
        schema:
          type: integer
          format: int32
        example: "{1001}"
      - name: contact-persons
        in: query
        description: get the contact persons
        schema:
          type: boolean
      - name: audits
        in: query
        description: get the audits
        schema:
          type: boolean
      - name: blockages
        in: query
        description: get the blockages
        schema:
          type: boolean
      responses:
        "200":
          description: The location detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationResponse'
        "403":
          description: invalid bearer token
        "404":
          description: location not found
  /location-update/{location_number}/{production_scope}:
    get:
      summary: gets the location detail
      description: returns the location detail information
      operationId: location_update
      parameters:
      - name: location_number
        in: path
        description: the location number
        required: true
        schema:
          type: string
        example: "{276123456789012}"
      - name: production_scope
        in: path
        description: the production scope of the location
        required: true
        schema:
          type: integer
          format: int32
        example: "{1001}"
      responses:
        "200":
          description: The location detail for update
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationUpdateResponse'
        "403":
          description: invalid bearer token
        "404":
          description: location not found
  /locations:
    get:
      summary: a list of location keys
      description: returns a list of location keys owned by the coordinator
      operationId: locations
      parameters:
      - name: modified
        in: query
        description: the date after an update happend
        schema:
          type: string
          format: date
        example: "{2020-01-31}"
      - name: unbundled
        in: query
        description: lists all unbundled locations
        schema:
          type: boolean
      responses:
        "200":
          description: A list of location keys
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationsResponse'
        "403":
          description: invalid bearer token
  /scheme-participants:
    get:
      summary: a list of scheme participant QsID's
      description: returns a list of scheme participant QsID's owned by the coordinator
      operationId: scheme-participants
      responses:
        "200":
          description: A list of QsID's
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemeParticipantsResponse'
        "403":
          description: invalid bearer token
  /scheme-participant/{qs-id}:
    get:
      summary: gets the scheme participant detail
      description: returns the scheme participant detail information
      operationId: scheme_participant
      parameters:
      - name: qs-id
        in: path
        description: the scheme participant QsID
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The scheme participan detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemeParticipantResponse'
        "403":
          description: invalid bearer token
        "404":
          description: scheme participant not found
  /scheme-participant-update/{qs-id}:
    get:
      summary: gets the scheme participant detail for update
      description: returns the scheme participant detail information for update
      operationId: scheme-participant-update
      parameters:
      - name: qs-id
        in: path
        description: the scheme participant QsID
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The scheme participan detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemeParticipant4UpdateResponse'
        "403":
          description: invalid bearer token
        "404":
          description: scheme participant not found
  /location-insert:
    post:
      summary: inserts the location
      description: inserts the location
      operationId: location_insert
      requestBody:
        description: the location detail data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationInsert'
        required: true
      responses:
        "200":
          description: possible functional error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationInsertResponse'
        "403":
          description: invalid bearer token
        "404":
          description: scheme participant not found
        "409":
          description: location collision
  /scheme-participant-insert:
    post:
      summary: creates a scheme participant
      description: creates a scheme participant
      operationId: scheme_participant_insert
      requestBody:
        description: the scheme participant detail data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SchemeParticipantInsert'
        required: true
      responses:
        "200":
          description: The scheme participan detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemeParticipantInsertResponse'
        "403":
          description: invalid bearer token
        "409":
          description: some data collision
  /location-merge:
    post:
      summary: location merge
      description: "Merges multiple locations into one. The new location will receive\
        \ all the data from the primary location (audits, sample related data,...)"
      operationId: location_merge
      requestBody:
        description: the merge data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationMerge'
        required: true
      responses:
        "200":
          description: a functional response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
  /location-split:
    post:
      summary: location split
      description: "Splits a location in multiple locations. The primary location\
        \ will receive all the attached data (audits, sample related data,...)"
      operationId: location_split
      requestBody:
        description: the split data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationSplit'
        required: true
      responses:
        "200":
          description: a functional response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "400":
          description: invalid input data
        "403":
          description: invalid bearer token
  /certification-scheme-update:
    post:
      summary: update the chertification scheme
      description: "Updates the certification scheme an its related data (certification\
        \ scheme, certification body, certificate validity)"
      operationId: certification-scheme-update
      requestBody:
        description: the certification data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CertificationData'
        required: true
      responses:
        "200":
          description: a functional response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
  /create-login:
    post:
      summary: creates the login of the scheme participants
      description: creates the login of the scheme participants.
      operationId: create-login
      requestBody:
        description: The login status
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLogin'
        required: true
      responses:
        "200":
          description: a list of logins or a functional error-
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginStatusResponse'
        "403":
          description: invalid bearer token
        "404":
          description: invalid scheme participant
  /location-update:
    post:
      summary: updates the location details
      description: updates the location details
      operationId: location_update_1
      requestBody:
        description: the location detail data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationUpdate'
        required: true
      responses:
        "200":
          description: possible functional error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: location/scheme participant not found
  /location-uptade:
    post:
      summary: updates the location details
      description: updates the location details
      operationId: location_update_2
      requestBody:
        description: the location detail data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationUpdate'
        required: true
      responses:
        "200":
          description: possible functional error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: location/scheme participant not found
      deprecated: true
  /location-key-update:
    post:
      summary: updates a location key
      description: updates a location key
      operationId: location_key_update
      requestBody:
        description: the old and the new location key
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationKey-Update'
        required: true
      responses:
        "200":
          description: the key is changed or a functional error appeared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: invalid location
  /scheme-participant-update:
    post:
      summary: updates the scheme participant details
      description: updates the scheme participant details
      operationId: scheme_participant_update
      requestBody:
        description: the scheme participant detail data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SchemeParticipantUpdate'
        required: true
      responses:
        "200":
          description: The scheme participan detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: scheme participant not found
  /scheme-participant-id-update:
    post:
      summary: updates a QS-ID
      description: updates a scheme participant QS-ID
      operationId: scheme_participant_id_update
      requestBody:
        description: the old and the new QS-ID
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QS-ID-Update'
        required: true
      responses:
        "200":
          description: the QS-ID is changed or a functional error appeared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: invalid scheme participant
  /activate-location:
    post:
      summary: activates an existing location
      description: activates an existing location
      operationId: activate_location
      requestBody:
        description: the location key
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationKey'
        required: true
      responses:
        "200":
          description: the location is registered or a functional error appeared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        "403":
          description: invalid bearer token
        "404":
          description: invalid location
components:
  schemas:
    Response:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
    LocationKey:
      type: object
      properties:
        location_number:
          type: string
        production_scope:
          type: integer
          format: int32
    AuthenticationData:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
    CheckLocationResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        location_key_list:
          type: array
          items:
            $ref: '#/components/schemas/LocationKey'
    BundleData:
      type: object
      properties:
        bundle_name:
          type: string
        bundle_number:
          type: integer
          format: int32
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationKey'
      description: QS-ID
    AdditionalInformation:
      type: object
      oneOf:
      - $ref: '#/components/schemas/AdditionalInformationAnimal'
      - $ref: '#/components/schemas/AdditionalInformationCoordinator'
      - $ref: '#/components/schemas/AdditionalInformationFuitVegetablesPotatoes'
      - $ref: '#/components/schemas/AdditionalInformationTransport'
    AdditionalInformationAnimal:
      type: object
      properties:
        livestock_farming_information:
          type: array
          items:
            $ref: '#/components/schemas/LivestockFarming'
        on_farm_mixer:
          type: boolean
        mobile_feed_milling_and_mixing_plants:
          type: boolean
        transport_less_than_50:
          type: boolean
        transport_less_than_65:
          type: boolean
        transport_over_50:
          type: boolean
        own_vehicles:
          type: boolean
    AdditionalInformationCoordinator:
      type: object
      properties:
        cattle_farming:
          type: boolean
        pig_farming:
          type: boolean
        poultry_farming:
          type: boolean
        livestock_transport:
          type: boolean
        crop_farming:
          type: boolean
        grassland_use_and_forage_production:
          type: boolean
        food_potato_production:
          type: boolean
        fruit_production:
          type: boolean
        vegetable_production:
          type: boolean
    AdditionalInformationFuitVegetablesPotatoes:
      type: object
      properties:
        product:
          type: array
          items:
            $ref: '#/components/schemas/Products'
    AdditionalInformationTransport:
      type: object
      properties:
        transport_company:
          type: boolean
        own_vehicles:
          type: boolean
        transport_less_than_50:
          type: boolean
        transport_less_than_65:
          type: boolean
        transport_over_50:
          type: boolean
    AuditDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        checklist_name:
          type: string
        checklist_uuid:
          type: string
          format: uuid
        from:
          type: string
          format: yyyy-MM-dd'T'HH:mm:ss
        to:
          type: string
          format: yyyy-MM-dd'T'HH:mm:ss
        certification_body:
          type: string
        auditor:
          type: string
        releasing_person:
          type: string
        authorisation:
          type: string
          format: yyyy-MM-dd
        informant:
          type: string
        audit_type:
          type: string
          enum:
          - ANNOUNCED_SYSTEM_AUDIT
          - UNANNOUNCED_SYSTEM_AUDIT
          - SPOT_AUDIT
          - RANDOM_SAMPLE_AUDIT
          - AUDIT_OF_SPECIAL_PURPOSE
          - PARALLEL_AUDIT
          - QMM_BASIS
          - QMM_PLUS
          - QMM_PLUS_CONFIRMATION_AUDIT
          - QMM_PLUS_STOCK_CHECK
          - FIN
          - HKD
          - TGA
          - FIAS
        info_combined_audit:
          type: string
        general_ko:
          type: boolean
        general_ko_comment:
          type: string
        comment:
          type: string
        audit_result:
          type: string
          enum:
          - STATUS_1
          - STATUS_2
          - STATUS_3
          - STATUS_4
          - PASSED
          - FAILED
          - QMM_FAILED
          - QMM_PLUS
          - QMM_PLUS_PLUS
          - QMM_PLUS_PASSED_WITH_RESERVATION
          - QMM_PLUS__PLUS_PASSED_WITH_RESERVATION
        result:
          type: number
          format: float
        proportion_of_c_evaluations:
          type: number
          format: float
        proportion_of_d_evaluations:
          type: number
          format: float
        proportion_of_cd_evaluations:
          type: number
          format: float
        index_bsi:
          type: number
          format: float
        index_thi:
          type: number
          format: float
        index_fias:
          type: number
          format: float
        index_biodiversity:
          type: number
          format: float
        status_biodiversity:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        index_water:
          type: number
          format: float
        status_water:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        index_energy:
          type: number
          format: float
        status_energy:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        vlog:
          type: boolean
        regionalfenster:
          type: boolean
        audited_location:
          type: array
          items:
            $ref: '#/components/schemas/AuditedLocation'
        checkpoints:
          type: array
          items:
            $ref: '#/components/schemas/Checkpoints'
        corrective_actions_report:
          type: array
          items:
            $ref: '#/components/schemas/CorrectiveActionsReport'
    AuditResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        auditList:
          type: array
          items:
            $ref: '#/components/schemas/AuditDetail'
    AuditedLocation:
      type: object
      properties:
        location_key:
          $ref: '#/components/schemas/LocationKey'
        production_scope:
          type: integer
          format: int32
        inspection_working_and_social_conditions_requested:
          type: boolean
        additional_information:
          $ref: '#/components/schemas/AdditionalInformation'
    Checkpoints:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        number:
          type: string
        requirement:
          type: string
        evaluation:
          type: string
          enum:
          - A
          - B
          - C
          - D
          - E
          - KO
        comment:
          type: string
    CorrectiveActionsReport:
      type: object
      properties:
        number:
          type: string
        description_of_nonconformity:
          type: string
        agreed_corrective_actions:
          type: string
        production_branch:
          type: string
          enum:
          - CATTLE
          - PIG
          - POULTRY
          - POTATO
          - FRUIT_VEGETABLE
          - TRANSPORT
        deadline_for_correction:
          type: string
          format: yyyy-MM-dd
        implemented:
          type: string
          format: yyyy-MM-dd
        comment:
          type: string
        state:
          type: string
          enum:
          - OPEN
          - IN_PROGRESS
          - NOT_FIXED
          - FIXED
          - UNCHECKED
          - SUBSEQENTLY_FIXED
    LivestockFarming:
      type: object
      properties:
        places:
          type: integer
          format: int32
        production_scope:
          type: integer
          format: int32
        indoor:
          type: boolean
        indoor_places:
          type: integer
          format: int32
        outdoor:
          type: boolean
        outdoor_places:
          type: integer
          format: int32
    Products:
      type: object
      properties:
        number:
          type: string
        area:
          type: number
        area_greenhouse:
          type: number
    LoginStatus:
      type: object
      properties:
        login_status:
          type: string
          enum:
          - NO_LOGIN
          - LOGIN_ACTIVE
          - LOGIN_DISABLED
          - TOKEN_ACTIVE
          - TOKEN_INACTIVE
        login:
          type: string
        token:
          type: string
        validUntil:
          type: string
          format: yyyy-MM-dd
    LoginStatusResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        loginStatus:
          type: array
          items:
            $ref: '#/components/schemas/LoginStatus'
    Blockage:
      type: object
      properties:
        reason:
          type: string
        from:
          type: string
          format: yyyy-MM-dd
        to:
          type: string
          format: yyyy-MM-dd
        info:
          type: string
    CertificationDataDetail:
      type: object
      properties:
        certification_body:
          type: string
        certification_scheme:
          type: string
          enum:
          - QS
          - QS_GAP
          - GLOBAL_GAP
          - GLOBAL_GAP_OPT1_CMS
          - GLOBAL_GAP_OPT2
          - AMA_RIND
          - AMA_GAP
          - IKB_LAND
          - CODIPLAN
          - BE_PORK
          - QM_MILCH
          - QMM
          - DECLARATION_OF_COMMITMENT_ANTIBIOTICA
          - DECLARATION_OF_COMMITMENT_SALMONELLA
          - DECLARATION_OF_COMMITMENT_ANTIBIOTICA_SALMONELLA
        inspected_production_scope:
          type: integer
          format: int32
        approved_production_scope:
          type: integer
          format: int32
        auditing:
          type: string
          enum:
          - ANNOUNCED_SYSTEM
          - UNANNOUNCED_SYSTEM
          - UNANNOUNCED_SPOT
          - UNANNOUNCED_SYSTEM_SPOT
        eligible_to_deliver_until:
          type: string
          format: yyyy-MM-dd
        blocked:
          type: boolean
    ContactPerson:
      type: object
      properties:
        uuid:
          type: string
          description: only required when changing an existing person
        salutation:
          type: string
          enum:
          - EMPTY
          - MR
          - MRS
          - COMPANY
        title:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        type:
          type: string
          enum:
          - CONTACT_PERSON
          - ASSISTANT_CONTACT
          - LEGAL_REPRESENTATIVE
          - CRISIS_MANAGER
          - SAMPLER
          - FEED_ADMINISTRATOR
          - LOCATION_ADMINISTARTOR
          - QUALITY_MANAGER
        phone1:
          type: string
        phone2:
          type: string
        mobil:
          type: string
        fax:
          type: string
        mail:
          type: string
        language:
          type: string
          enum:
          - GERMAN
          - ENGLISH
          - SPAIN
    LocationDetail:
      type: object
      properties:
        location_key:
          $ref: '#/components/schemas/LocationKey'
        name:
          type: string
        street:
          type: string
        postal_code:
          type: string
        city:
          type: string
        post_office_box_postal_code:
          type: string
        post_office_box:
          type: string
        country:
          type: string
          description: ISO-3166 NUMERIC
        federal_state:
          type: string
          description: only mandatory for country germany
          enum:
          - BADEN_WUERTTEMBERG
          - BAYERN
          - BERLIN
          - BRANDENBURG
          - BREMEN
          - HAMBURG
          - HESSEN
          - MECKLENBURG_VORPOMMERN
          - NIEDERSACHSEN
          - NORDRHEIN_WESTFALEN
          - RHEINLAND_PFALZ
          - SAARLAND
          - SACHSEN
          - SACHSEN_ANHALT
          - SCHLESWIG_HOLSTEIN
          - THUERINGEN
          - UNKNOWN
        url:
          type: string
        location_plan:
          type: string
        bundle:
          $ref: '#/components/schemas/BundleData'
        vlog:
          type: boolean
        regionalfenster:
          type: boolean
        regionalfenster_passed:
          type: boolean
        fias:
          type: boolean
        fias_status:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        family_business:
          type: boolean
        fin_biodiversity:
          type: boolean
        index_fin_biodiversity:
          type: number
          format: float
        status_fin_biodiversity:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        fin_water:
          type: boolean
        index_fin_water:
          type: number
          format: float
        status_fin_water:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        fin_energy:
          type: boolean
        index_fin_energy:
          type: number
          format: float
        status_fin_energy:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
          - BLOCKED
        mcd:
          type: boolean
        status_mcd:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
        hkd:
          type: boolean
        status_hkd:
          type: string
          enum:
          - APPLICANT
          - PASSED
          - FAILED
        transport_vehicle_amount:
          type: integer
          description: only mandatory for 904
          format: int32
        monday:
          $ref: '#/components/schemas/OfficeHours'
        tuesday:
          $ref: '#/components/schemas/OfficeHours'
        wednesday:
          $ref: '#/components/schemas/OfficeHours'
        thurstday:
          $ref: '#/components/schemas/OfficeHours'
        friday:
          $ref: '#/components/schemas/OfficeHours'
        saturday:
          $ref: '#/components/schemas/OfficeHours'
        sunday:
          $ref: '#/components/schemas/OfficeHours'
        bundler:
          type: string
        location_status:
          type: string
          enum:
          - STATUS_1
          - STATUS_2
          - STATUS_3
          - STATUS_4
          - APPLICANT
          - BUNDLE_MEMBER
          - PASSED
          - ELIGIBLE_TO_DELIVER
          - IKB_CERTIFICATED
          - FAILED
          - QM_MILK_AUDITED
          - GLOBALGAP_CERRTIFIED
          - VEGAPLAN_CERRTIFIED
          - CODIPLAN_CERRTIFIED
          - KAT_CERRTIFIED
          - DKHV_MEMBER
          - QMM_APPLICANT
          - QMM_BASIS
          - QMM_FAILED
          - QMM_PLUS
          - QMM_PLUS_PLUS
          - QMM_PLUS_PLUS_PLUS
        scheme_participant:
          type: string
          description: QS-ID
        registration_number:
          type: array
          items:
            $ref: '#/components/schemas/RegistrationNumber'
        contact_person:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
        certification_data:
          $ref: '#/components/schemas/CertificationDataDetail'
        blockages:
          type: array
          items:
            $ref: '#/components/schemas/Blockage'
        none_blocking:
          type: array
          items:
            $ref: '#/components/schemas/NoneBlocking'
        audits:
          type: array
          items:
            $ref: '#/components/schemas/AuditDetail'
        additional_information:
          $ref: '#/components/schemas/AdditionalInformation'
    LocationResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        location:
          $ref: '#/components/schemas/LocationDetail'
    NoneBlocking:
      type: object
      properties:
        reason:
          type: string
        from:
          type: string
          format: yyyy-MM-dd
        to:
          type: string
          format: yyyy-MM-dd
        info:
          type: string
    OfficeHours:
      type: object
      properties:
        open_from:
          type: string
          format: HH:mm
        open_to:
          type: string
          format: HH:mm
        closed_from:
          type: string
          format: HH:mm
        closed_to:
          type: string
          format: HH:mm
    RegistrationNumber:
      type: object
      properties:
        type:
          type: string
          enum:
          - GLOBAL_GAP
          - IKB_LAND
          - QM_MILCH
          - CUSTOMER
          - THKG
          - SUB_GLN
        number:
          type: string
    CertificationData:
      type: object
      properties:
        location_key:
          $ref: '#/components/schemas/LocationKey'
        certification_body:
          type: string
          description: required for QS and QS_GAP
        certification_scheme:
          type: string
          enum:
          - QS
          - QS_GAP
          - GLOBAL_GAP
          - GLOBAL_GAP_OPT1_CMS
          - GLOBAL_GAP_OPT2
          - AMA_RIND
          - AMA_GAP
          - IKB_LAND
          - CODIPLAN
          - BE_PORK
          - QM_MILCH
          - QMM
          - DECLARATION_OF_COMMITMENT_ANTIBIOTICA
          - DECLARATION_OF_COMMITMENT_SALMONELLA
          - DECLARATION_OF_COMMITMENT_ANTIBIOTICA_SALMONELLA
        auditing:
          type: string
          enum:
          - ANNOUNCED_SYSTEM
          - UNANNOUNCED_SYSTEM
          - UNANNOUNCED_SPOT
          - UNANNOUNCED_SYSTEM_SPOT
        certificate_runtime:
          type: string
          format: yyyy-MM-dd
        production_scope:
          type: integer
          description: required for QS/QS_GAP
          format: int32
        registration_number:
          type: string
        products:
          type: array
          items:
            $ref: '#/components/schemas/Products'
    FeedingInformation:
      type: object
      properties:
        on_farm_mixer:
          type: boolean
        mobile_feed_milling_and_mixing_plants:
          type: boolean
      description: only used by animal production
    LocationUpdate:
      type: object
      properties:
        location_key:
          $ref: '#/components/schemas/LocationKey'
        name:
          type: string
        street:
          type: string
        postal_code:
          type: string
        city:
          type: string
        post_office_box_postal_code:
          type: string
        post_office_box:
          type: string
        country:
          type: string
          description: ISO-3166 NUMERIC
        federal_state:
          type: string
          description: only mandatory for country germany
          enum:
          - BADEN_WUERTTEMBERG
          - BAYERN
          - BERLIN
          - BRANDENBURG
          - BREMEN
          - HAMBURG
          - HESSEN
          - MECKLENBURG_VORPOMMERN
          - NIEDERSACHSEN
          - NORDRHEIN_WESTFALEN
          - RHEINLAND_PFALZ
          - SAARLAND
          - SACHSEN
          - SACHSEN_ANHALT
          - SCHLESWIG_HOLSTEIN
          - THUERINGEN
          - UNKNOWN
        url:
          type: string
        location_plan:
          type: string
        vlog:
          type: boolean
        regionalfenster:
          type: boolean
        fias:
          type: boolean
        family_business:
          type: boolean
        fin_biodiversity:
          type: boolean
        fin_water:
          type: boolean
        fin_energy:
          type: boolean
        hkd:
          type: boolean
        mcd:
          type: boolean
        transport_vehicle_amount:
          type: integer
          description: only mandatory for 904
          format: int32
        feeding:
          $ref: '#/components/schemas/FeedingInformation'
        monday:
          $ref: '#/components/schemas/OfficeHours'
        tuesday:
          $ref: '#/components/schemas/OfficeHours'
        wednesday:
          $ref: '#/components/schemas/OfficeHours'
        thurstday:
          $ref: '#/components/schemas/OfficeHours'
        friday:
          $ref: '#/components/schemas/OfficeHours'
        saturday:
          $ref: '#/components/schemas/OfficeHours'
        sunday:
          $ref: '#/components/schemas/OfficeHours'
        certification_data:
          $ref: '#/components/schemas/CertificationData'
        contact_person:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
    LocationUpdateResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        location:
          $ref: '#/components/schemas/LocationUpdate'
    LocationsResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationKey'
    SchemeParticipantsResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        schemeParticipants:
          type: array
          items:
            type: string
    SchemeParticipantDetail:
      type: object
      properties:
        qsID:
          type: string
        name:
          type: string
        street:
          type: string
        postal_code:
          type: string
        city:
          type: string
        post_office_box_postal_code:
          type: string
        post_office_box:
          type: string
        country:
          type: string
          description: ISO-3166 NUMERIC
        federal_state:
          type: string
          description: only mandatory for country germany
          enum:
          - BADEN_WUERTTEMBERG
          - BAYERN
          - BERLIN
          - BRANDENBURG
          - BREMEN
          - HAMBURG
          - HESSEN
          - MECKLENBURG_VORPOMMERN
          - NIEDERSACHSEN
          - NORDRHEIN_WESTFALEN
          - RHEINLAND_PFALZ
          - SAARLAND
          - SACHSEN
          - SACHSEN_ANHALT
          - SCHLESWIG_HOLSTEIN
          - THUERINGEN
          - UNKNOWN
        url:
          type: string
        location_plan:
          type: string
        registration_number:
          type: array
          items:
            $ref: '#/components/schemas/RegistrationNumber'
        contact_person:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
    SchemeParticipantResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        scheme_participant:
          $ref: '#/components/schemas/SchemeParticipantDetail'
    SchemeParticipant4UpdateResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        scheme_participant:
          $ref: '#/components/schemas/SchemeParticipantUpdate'
    SchemeParticipantUpdate:
      type: object
      properties:
        update_type:
          type: string
          enum:
          - OVERWRITE
          - NEW
        qsID:
          type: string
        name:
          type: string
        street:
          type: string
        postal_code:
          type: string
        city:
          type: string
        post_office_box_postal_code:
          type: string
        post_office_box:
          type: string
        country:
          type: string
          description: ISO-3166 NUMERIC
        federal_state:
          type: string
          description: only mandatory for country germany
          enum:
          - BADEN_WUERTTEMBERG
          - BAYERN
          - BERLIN
          - BRANDENBURG
          - BREMEN
          - HAMBURG
          - HESSEN
          - MECKLENBURG_VORPOMMERN
          - NIEDERSACHSEN
          - NORDRHEIN_WESTFALEN
          - RHEINLAND_PFALZ
          - SAARLAND
          - SACHSEN
          - SACHSEN_ANHALT
          - SCHLESWIG_HOLSTEIN
          - THUERINGEN
          - UNKNOWN
        url:
          type: string
        location_plan:
          type: string
        registration_number:
          type: array
          items:
            $ref: '#/components/schemas/RegistrationNumber'
        contact_person:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
    LocationInsertResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        location_key:
          $ref: '#/components/schemas/LocationKey'
    LocationInsert:
      type: object
      properties:
        location_key:
          $ref: '#/components/schemas/LocationKey'
        name:
          type: string
        street:
          type: string
        postal_code:
          type: string
        city:
          type: string
        post_office_box_postal_code:
          type: string
        post_office_box:
          type: string
        country:
          type: string
          description: ISO-3166 NUMERIC
        federal_state:
          type: string
          description: only mandatory for country germany
          enum:
          - BADEN_WUERTTEMBERG
          - BAYERN
          - BERLIN
          - BRANDENBURG
          - BREMEN
          - HAMBURG
          - HESSEN
          - MECKLENBURG_VORPOMMERN
          - NIEDERSACHSEN
          - NORDRHEIN_WESTFALEN
          - RHEINLAND_PFALZ
          - SAARLAND
          - SACHSEN
          - SACHSEN_ANHALT
          - SCHLESWIG_HOLSTEIN
          - THUERINGEN
          - UNKNOWN
        url:
          type: string
        location_plan:
          type: string
        scheme_participant:
          type: string
          description: QS-ID of the scheme participant
        vlog:
          type: boolean
        regionalfenster:
          type: boolean
        fias:
          type: boolean
        family_business:
          type: boolean
        hkd:
          type: boolean
        mcd:
          type: boolean
        monday:
          $ref: '#/components/schemas/OfficeHours'
        tuesday:
          $ref: '#/components/schemas/OfficeHours'
        wednesday:
          $ref: '#/components/schemas/OfficeHours'
        thurstday:
          $ref: '#/components/schemas/OfficeHours'
        friday:
          $ref: '#/components/schemas/OfficeHours'
        saturday:
          $ref: '#/components/schemas/OfficeHours'
        sunday:
          $ref: '#/components/schemas/OfficeHours'
        transport_vehicle_amount:
          type: integer
          description: only mandatory for 904
          format: int32
        certification_data:
          $ref: '#/components/schemas/CertificationData'
        contact_person:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
    SchemeParticipantInsertResponse:
      type: object
      properties:
        return_code:
          type: integer
          format: int32
        error_messages:
          type: array
          items:
            type: string
        qsID:
          type: string
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationKey'
    SchemeParticipantInsert:
      type: object
      properties:
        qsID:
          type: string
          description: optional
        name:
          type: string
        street:
          type: string
        postal_code:
          type: string
        city:
          type: string
        post_office_box_postal_code:
          type: string
        post_office_box:
          type: string
        country:
          type: string
          description: ISO-3166 NUMERIC
        federal_state:
          type: string
          description: only mandatory for country germany
          enum:
          - BADEN_WUERTTEMBERG
          - BAYERN
          - BERLIN
          - BRANDENBURG
          - BREMEN
          - HAMBURG
          - HESSEN
          - MECKLENBURG_VORPOMMERN
          - NIEDERSACHSEN
          - NORDRHEIN_WESTFALEN
          - RHEINLAND_PFALZ
          - SAARLAND
          - SACHSEN
          - SACHSEN_ANHALT
          - SCHLESWIG_HOLSTEIN
          - THUERINGEN
          - UNKNOWN
        url:
          type: string
        location_plan:
          type: string
        registration_number:
          type: array
          items:
            $ref: '#/components/schemas/RegistrationNumber'
        contact_person:
          type: array
          items:
            $ref: '#/components/schemas/ContactPerson'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationInsert'
    LocationMerge:
      type: object
      properties:
        reason:
          type: string
          enum:
          - BUSINESS_MERGE
          - SHARED_AUDIT
        info:
          type: string
        new_location_key:
          $ref: '#/components/schemas/LocationKey'
        old_location_keys:
          type: array
          items:
            $ref: '#/components/schemas/LocationKey'
    LocationSplit:
      type: object
      properties:
        reason:
          type: string
          enum:
          - BUSINESS_SPLIT
          - SEPARATED_AUDIT
        info:
          type: string
        original_location_key:
          $ref: '#/components/schemas/LocationKey'
        new_location_keys:
          type: array
          items:
            $ref: '#/components/schemas/LocationKey'
    CreateLogin:
      type: object
      properties:
        qsID:
          type: string
        sendMail:
          type: boolean
    LocationKey-Update:
      type: object
      properties:
        old_location_key:
          $ref: '#/components/schemas/LocationKey'
        new_location_key:
          $ref: '#/components/schemas/LocationKey'
    QS-ID-Update:
      type: object
      properties:
        old_QsID:
          type: string
        new_QsID:
          type: string
