Отправка жалобы
POST /v1/complaint
https://verify.tanba-ooh.kz/v1/complaint
Технический текст справочника написан на английском.
Форма (multipart/form-data или url-encoded). Обязательны только category и text; code, photo (JPEG или PNG, не больше 10 МБ, метаданные удаляются) и contact необязательны. website это ловушка для ботов и остается пустым. Не больше 10 жалоб в час с одного адреса клиента.
Аутентификация
Не требуется. Вызов открытый.
Тело запроса
multipart/form-data
| Имя | Тип | Обязательный | Описание | Пример |
|---|---|---|---|---|
category | string | да | Вид жалобы. no_permit, offensive, dangerous, other | |
text | string | да | Содержание жалобы, до 2000 символов. | "The sign hangs over the pavement and looks loose." |
code | string | Код конструкции, если он известен. | "ALM-0012" | |
contact | string | Как связаться с отправителем; необязательно. | "name@example.org" | |
photo | string (binary) | Фото конструкции, JPEG или PNG, не больше 10 МБ; метаданные удаляются. | ||
website | string | Ловушка для ботов; оставьте пустым. | "" |
Ответы
201 Принято.
application/json
| Имя | Тип | Обязательный | Описание | Пример |
|---|---|---|---|---|
status | const | да | Всегда received. | "received" |
Пример
{
"status": "received"
}
text/html
Ошибки
Ошибки приходят документом problem (application/problem+json) со стабильным полем code.
| Статус | Значение |
|---|---|
| 413 | Ошибка в виде документа problem. |
| 415 | Ошибка в виде документа problem. |
| 422 | Ошибка в виде документа problem. |
| 429 | Rate limit, 10 complaints per client address per hour; see Retry-After. |
| default | Ошибка в виде документа problem. |
Примеры кода
curl
curl -X POST 'https://verify.tanba-ooh.kz/v1/complaint' \
-H 'Accept: application/json' \
-F 'category=no_permit' \
-F 'text=The sign hangs over the pavement and looks loose.' \
-F 'code=ALM-0012' \
-F 'contact=name@example.org' \
-F 'website='
Python
import requests
response = requests.post(
"https://verify.tanba-ooh.kz/v1/complaint",
headers={
"Accept": "application/json",
},
files={
"category": (None, "no_permit"),
"text": (None, "The sign hangs over the pavement and looks loose."),
"code": (None, "ALM-0012"),
"contact": (None, "name@example.org"),
"website": (None, ""),
},
)
print(response.status_code, response.text)