openapi: 3.1.0
info:
  title: Raumrechner Runtime API
  version: 1.0.0
  description: Runtime endpoints for rule-based Raumrechner orientation values. Outputs are estimates, not norm planning, live prices, product tests, medical advice, or material guarantees.
servers:
  - url: https://raumrechner.de
paths:
  /api/lichtbedarf:
    get:
      operationId: getLightRequirement
      summary: Estimate room light requirement.
      parameters:
        - name: room_type
          in: query
          schema:
            type: string
            enum: [wohnzimmer, kueche, homeoffice, flur, schlafzimmer, bad_spiegel]
          required: false
        - name: area_m2
          in: query
          schema:
            type: number
            minimum: 1
            maximum: 500
          required: true
        - name: usage_intensity
          in: query
          schema:
            type: string
            enum: [gemuetlich, normal, detail]
          required: false
        - name: wall_brightness
          in: query
          schema:
            type: string
            enum: [hell, normal, dunkel]
          required: false
        - name: ceiling_height_m
          in: query
          schema:
            type: number
            minimum: 1.8
            maximum: 8
          required: false
        - name: lamp_count
          in: query
          schema:
            type: number
            minimum: 1
            maximum: 80
          required: false
        - name: socket
          in: query
          schema:
            type: string
          required: false
      responses:
        "200":
          description: Light requirement estimate.
          content:
            application/json:
              schema:
                type: object
        "400":
          description: Invalid parameter.
  /api/powerstation-estimate:
    get:
      operationId: getPowerstationEstimate
      summary: Estimate powerstation Wh need, runtime, reserve, and solar status.
      parameters:
        - name: device_watts
          in: query
          schema:
            type: number
            minimum: 1
            maximum: 5000
          required: true
        - name: hours_per_day
          in: query
          schema:
            type: number
            minimum: 0.1
            maximum: 24
          required: true
        - name: days_until_recharge
          in: query
          schema:
            type: number
            minimum: 0.25
            maximum: 30
          required: false
        - name: reserve_percent
          in: query
          schema:
            type: number
            minimum: 0
            maximum: 100
          required: false
        - name: station_capacity_wh
          in: query
          schema:
            type: number
            minimum: 1
          required: false
        - name: inverter
          in: query
          schema:
            type: string
            enum: [true, false]
          required: false
        - name: solar_panel_wp
          in: query
          schema:
            type: number
            minimum: 0
          required: false
        - name: effective_sun_hours
          in: query
          schema:
            type: number
            minimum: 0
            maximum: 12
          required: false
      responses:
        "200":
          description: Powerstation estimate.
          content:
            application/json:
              schema:
                type: object
        "400":
          description: Invalid parameter.
  /api/putzmittel-rule:
    get:
      operationId: getCleanerRule
      summary: Return a rule-based cleaner class recommendation for a surface and soil.
      parameters:
        - name: surface
          in: query
          schema:
            type: string
          required: false
        - name: soil
          in: query
          schema:
            type: string
          required: false
        - name: context
          in: query
          schema:
            type: string
            enum: [normal, kids_pets, eco]
          required: false
        - name: purchase_goal
          in: query
          schema:
            type: string
            enum: [ausgewogen, mild, guenstig]
          required: false
      responses:
        "200":
          description: Cleaner rule result.
          content:
            application/json:
              schema:
                type: object
        "400":
          description: Invalid parameter.
