> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blueplant.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Kunde anlegen

> Legt einen neuen Kunden an.



## OpenAPI

````yaml api/openapi.json POST /customer
openapi: 3.1.0
info:
  title: blueplant API
  version: v1
  description: >-
    Öffentliche REST-API von blueplant zum Anlegen von Stammdaten (Kunden,
    Standorte, Kontaktpersonen, Pflanzen, Behälter und Produkte) aus anderen
    Systemen. Authentifiziert wird mit deinem API-Schlüssel aus den
    Mandanten-Einstellungen.
servers:
  - url: https://api.blueplant.app/api/v1
    description: Produktiv
security:
  - ApiKey: []
paths:
  /customer:
    post:
      tags:
        - Kunden & Standorte
      summary: Kunde anlegen
      description: >-
        Legt einen neuen Kunden an. Der Kunde ist die übergeordnete Einheit, der
        Standorte, Kontaktpersonen und Produkte zugeordnet werden.
      operationId: createCustomer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - companyName
                - address
              properties:
                companyName:
                  type: string
                  description: Name des Unternehmens.
                address:
                  $ref: '#/components/schemas/Address'
                externalId:
                  type: string
                  description: >-
                    Eigene Referenz aus deinem System, um den Kunden später
                    zuzuordnen.
                mainContactPerson:
                  $ref: '#/components/schemas/MainContactPerson'
                validFrom:
                  type: string
                  format: date
                  description: Beginn der Gültigkeit.
                validUntil:
                  type: string
                  format: date
                  description: Ende der Gültigkeit.
      responses:
        '201':
          description: Kunde angelegt.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    Address:
      type: object
      description: Postanschrift mit optionaler Geo-Position.
      required:
        - streetName
        - houseNumber
        - zipCode
        - city
      properties:
        streetName:
          type: string
          description: Straße.
        houseNumber:
          type: string
          description: Hausnummer.
        zipCode:
          type: string
          description: Postleitzahl.
        city:
          type: string
          description: Ort.
        location:
          $ref: '#/components/schemas/Location'
    MainContactPerson:
      type: object
      description: >-
        Hauptansprechpartner des Kunden. TODO: genaue Feldnamen mit dem Dev-Team
        bestätigen.
      properties:
        salutation:
          type: string
          enum:
            - female
            - male
            - guess
          description: Anrede.
        firstName:
          type: string
          description: Vorname.
        lastName:
          type: string
          description: Nachname.
        phoneNumberMobile:
          type: string
          description: Mobilnummer.
        emailAddress:
          type: string
          format: email
          description: E-Mail-Adresse.
        function:
          type: string
          description: Funktion beim Kunden.
    IdResponse:
      type: object
      description: Antwort mit der ID des angelegten Objekts.
      properties:
        id:
          type: string
          format: uuid
          description: ID des angelegten Objekts.
    Location:
      type: object
      description: Geografische Position.
      properties:
        lat:
          type: number
          minimum: -90
          maximum: 90
          description: Breitengrad.
        lng:
          type: number
          minimum: -180
          maximum: 180
          description: Längengrad.
    ValidationError:
      type: object
      description: Validierungsfehler mit feldbezogenen Meldungen.
      properties:
        message:
          type: string
          example: invalid input
        errors:
          type: array
          description: Liste der fehlerhaften Felder mit Meldungen.
          items:
            type: object
  responses:
    ValidationError:
      description: Ungültiges Request-Payload (Validierungsfehler).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationError'
    Unauthorized:
      description: Authentifizierung fehlgeschlagen – prüfe deinen API-Schlüssel.
    TooManyRequests:
      description: Zu viele Anfragen – versuche es später erneut.
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: ApiKey
      description: >-
        Dein API-Schlüssel aus den Mandanten-Einstellungen, gesendet im Header
        `ApiKey`.

````