# FloodValue

covered_no_data oznacza zmapowany obszar i działkę poza wszystkimi strefami: {q10: false, q100: false, q500: false}. Uwagi powodziowe używają polskich nazw miesięcy, wskazują scenariusz Q1% (raz na 100 lat) i odróżniają brak zagrożenia na mapie od nieznanego zakresu danych.

Layer keys: `flood`.

## Cost and inputs

`x-request-cost`: 1 request per call via [GET /v1/layer/{layer}](../operations/layer.md).

Dokładnie jeden z parametrów q, id, point (lat i lng razem liczą się jako point). Wszystkie punkty odczytu API i wszystkie narzędzia obsługują te trzy warianty.

## Value schema

| Field | Required | Schema / constraints | Description |
| --- | --- | --- | --- |
| `map_edition` | no | `{"type": ["string", "null"]}` | Cykl MZP i daty publikacji obiektów z validityPeriod.beginPosition; brakujące daty są wyraźnie wskazane. endPosition metadanych nigdy nie wyznacza zakresu danych. |
| `q10` | yes | `{"type": "boolean"}` | not specified in the source contract |
| `q100` | yes | `{"type": "boolean"}` | not specified in the source contract |
| `q100_share_pct` | no | `{"type": ["number", "null"]}` | not specified in the source contract |
| `q500` | yes | `{"type": "boolean"}` | not specified in the source contract |

```json
{
  "description": "covered_no_data oznacza zmapowany obszar i działkę poza wszystkimi strefami: {q10: false, q100: false, q500: false}. Uwagi powodziowe używają polskich nazw miesięcy, wskazują scenariusz Q1% (raz na 100 lat) i odróżniają brak zagrożenia na mapie od nieznanego zakresu danych.",
  "properties": {
    "map_edition": {
      "description": "Cykl MZP i daty publikacji obiektów z validityPeriod.beginPosition; brakujące daty są wyraźnie wskazane. endPosition metadanych nigdy nie wyznacza zakresu danych.",
      "type": [
        "string",
        "null"
      ]
    },
    "q10": {
      "type": "boolean"
    },
    "q100": {
      "type": "boolean"
    },
    "q100_share_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "q500": {
      "type": "boolean"
    }
  },
  "required": [
    "q10",
    "q100",
    "q500"
  ],
  "type": "object"
}
```

## Empty answer: covered_no_data

The contract states this empty `value`:

```json
{
  "q10": false,
  "q100": false,
  "q500": false
}
```

## Coverage states

Cztery stany zakresu danych dla jednej kategorii w danym miejscu. covered: źródło obejmuje to miejsce i zawiera rekord; value zawiera ten rekord. covered_no_data: źródło obejmuje to miejsce, lecz nie zawiera rekordu; value ma określoną dla danej kategorii pustą wartość (false, 0, [], none), nigdy null; jest to potwierdzony brak rekordu, za który naliczana jest opłata. not_covered: źródło nie obejmuje miejsca albo państwo nie publikuje tych danych w postaci do odczytu maszynowego; value=null, agent nie może wyciągać wniosków, a opłata jest zwracana, gdy zapytanie dotyczy tych danych. not_computed: posiadamy źródło, lecz nie obliczyliśmy jeszcze wyniku dla tego miejsca, np. trwa ładowanie zbioru; value=null, opłata jest zwracana. Każdy stan zawiera uwagę napisaną prostym językiem.

States: `covered` | `covered_no_data` | `not_covered` | `not_computed`.

`LayerAnswer` required fields: `layer`, `coverage`, `value`, `note`, `source`, `as_of`, `layer_version`.

## Billing rule

Koszt żądania. charged: liczba naliczonych wywołań po zwrotach. refunded: liczba wywołań naliczonych, a następnie zwróconych. rule: zastosowana reguła. Płatne są odpowiedzi, potwierdzone braki rekordów (covered_no_data) i niejednoznaczne listy kandydatów. Bezpłatne są błędne dane wejściowe (400), brak uwierzytelnienia (401), odpowiedzi bez zmiany danych (304) i operacje bezpłatne. Zwrot obejmuje pozostałe 4xx, każde 5xx, status not_covered oraz odpowiedź dotyczącą jednej kategorii ze stanem not_covered lub not_computed. W operacjach zbiorczych liczby dotyczą poszczególnych elementów.

Rule values: `charged` | `free_operation` | `free_invalid_input` | `free_unauthorized` | `free_not_modified` | `refunded_client_error` | `refunded_server_error` | `refunded_not_covered` | `refunded_not_computed` | `batch_mixed`.

## curl example

```sh
curl --silent --show-error --request GET "https://mcp.agentdzialek.pl/v1/layer/flood" --get \
  -H "X-Api-Key: ${LANDFEED_API_KEY}" \
  --data-urlencode 'id=141803_2.0001.12/3'
```
