TAŇBA-OOH Разработчикам

Отправка жалобы

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

ИмяТипОбязательныйОписаниеПример
categorystringдаВид жалобы. no_permit, offensive, dangerous, other
textstringдаСодержание жалобы, до 2000 символов."The sign hangs over the pavement and looks loose."
codestringКод конструкции, если он известен."ALM-0012"
contactstringКак связаться с отправителем; необязательно."name@example.org"
photostring (binary)Фото конструкции, JPEG или PNG, не больше 10 МБ; метаданные удаляются.
websitestringЛовушка для ботов; оставьте пустым.""

Ответы

201 Принято.

application/json

ИмяТипОбязательныйОписаниеПример
statusconstдаВсегда received."received"

Пример

{
  "status": "received"
}

text/html

Ошибки

Ошибки приходят документом problem (application/problem+json) со стабильным полем code.

СтатусЗначение
413Ошибка в виде документа problem.
415Ошибка в виде документа problem.
422Ошибка в виде документа problem.
429Rate 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)