{
  "openapi": "3.1.0",
  "info": {
    "title": "arvaidasrekis.lt API",
    "version": "1.0.0",
    "description": "Vieša arvaidasrekis.lt API — kontaktų užklausų formos endpoint'as. Mokėjimų ir administravimo API (/mokejimai-api.php) yra privati ir čia nedokumentuojama.",
    "contact": {
      "name": "MB „Arvaidas“",
      "email": "info@arvaidasrekis.lt",
      "url": "https://arvaidasrekis.lt/"
    }
  },
  "servers": [
    {
      "url": "https://arvaidasrekis.lt",
      "description": "Gamybinė aplinka"
    }
  ],
  "paths": {
    "/send-contact.php": {
      "post": {
        "operationId": "sendContactMessage",
        "summary": "Siunčia kontaktinę užklausą svetainės savininkui",
        "description": "Priima formos duomenis (application/x-www-form-urlencoded arba multipart/form-data). Būtinas vartotojo sutikimas `rules_consent=1` (niekada nepažymėtas iš anksto — BDAR). Laukas `website` yra honeypot — botams praneša sėkmę, bet laiško nesiunčia. Dažnumo ribojimas: 5 užklausos per valandą iš vieno IP; atsakyme grąžinamos `RateLimit-*` antraštės, peržengus ribą — 429 su `Retry-After`. Tik POST; kiti metodai grąžina 405.",
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ContactRequest"
              },
              "encoding": {
                "features[]": {
                  "style": "form",
                  "explode": true
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ContactRequest"
              },
              "encoding": {
                "features[]": {
                  "style": "form",
                  "explode": true
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Užklausa priimta (įskaitant honeypot atsakymą)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponse"
                }
              }
            }
          },
          "405": {
            "description": "Neleistas metodas — tik POST",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validacijos klaida (vardas, el. paštas, pranešimas arba trūksta sutikimo)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponse"
                }
              }
            }
          },
          "429": {
            "description": "Per daug užklausų — žr. Retry-After antraštę",
            "headers": {
              "Retry-After": {
                "description": "Sekundės iki kito leistino bandymo",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponse"
                }
              }
            }
          },
          "500": {
            "description": "Nepavyko išsiųsti laiško serveryje",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ContactRequest": {
        "type": "object",
        "required": [
          "name",
          "email",
          "rules_consent"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120,
            "description": "Vartotojo vardas"
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 254,
            "description": "Atsakymo el. pašto adresas"
          },
          "message": {
            "type": "string",
            "maxLength": 5000,
            "description": "Įprastai kontaktų formai privalomas bent 10 simbolių tekstas. Projekto užklausai papildoma informacija neprivaloma."
          },
          "lang": {
            "type": "string",
            "enum": [
              "lt",
              "en",
              "ru"
            ],
            "default": "lt",
            "description": "Atsakymo kalba"
          },
          "rules_consent": {
            "type": "string",
            "enum": [
              "1"
            ],
            "description": "Vartotojo sutikimas su užklausų taisyklėmis (https://arvaidasrekis.lt/uzklausos-taisykles.md). Privaloma, niekada nepažymima automatiškai."
          },
          "website": {
            "type": "string",
            "description": "Honeypot laukas — palikti tuščią"
          },
          "request_kind": {
            "type": "string",
            "enum": [
              "project"
            ],
            "description": "Nurodomas tik projekto vedlio užklausai. Įprastai kontaktų formai nereikalingas."
          },
          "service": {
            "type": "string",
            "enum": [
              "website",
              "system",
              "design",
              "support",
              "consultation"
            ],
            "description": "Privalomas, kai request_kind=project."
          },
          "budget": {
            "type": "string",
            "enum": [
              "discuss",
              "under-1000",
              "1000-3000",
              "3000-7000",
              "over-7000"
            ],
            "default": "discuss",
            "description": "Kliento biudžetas; tai nėra paslaugų kainoraštis."
          },
          "timeline": {
            "type": "string",
            "enum": [
              "flexible",
              "month",
              "quarter",
              "later"
            ],
            "default": "flexible"
          },
          "support_plan": {
            "type": "string",
            "enum": [
              "discuss",
              "one-off",
              "ongoing",
              "growth"
            ],
            "default": "discuss",
            "description": "Į laišką įtraukiamas tik pasirinkus service=support."
          },
          "features[]": {
            "type": "array",
            "maxItems": 6,
            "items": {
              "type": "string",
              "enum": [
                "orders",
                "portal",
                "integrations",
                "languages",
                "content",
                "documents"
              ]
            },
            "description": "Formoje siunčiama kaip features[]."
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "request_kind": {
                  "const": "project"
                }
              },
              "required": [
                "request_kind"
              ]
            },
            "then": {
              "required": [
                "service"
              ]
            },
            "else": {
              "required": [
                "message"
              ],
              "properties": {
                "message": {
                  "minLength": 10
                }
              }
            }
          }
        ]
      },
      "ContactResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "Ar užklausa sėkminga"
          },
          "message": {
            "type": "string",
            "description": "Žinutė vartotojui (pasirinktos kalbos)"
          }
        }
      }
    }
  }
}
