Типы параметров запросов и ответов

Параметры запросов

Optional[main_type] (null)

Означает, что параметр необязательный.
Следует отличать null (отсутствие параметра) от передачи пустой строки или символа 0 в параметр param. Пустая строка трактуется как строка, 0 трактуется как число (или boolean значение false).
Пример передачи пустой строки: https://api.carrotquest.io/users/123?param=.
Пример передачи null (параметр вообще отсутствует): https://api.carrotquest.io/users/123.

ID

Идентификатор объекта. Целое положительное число. Минимальное значение - 1. Максимальное значение - 2^64 - 1 (2 в степени 64).
Важно! При получении в объектах, могут возникнуть проблемы с интерпретацией браузером 64-битных чисел.

Boolean

Параметры булева типа могут передаваться по-разному:

  • Если параметр не определен (и не имеет значения по умолчанию), он имеет значение null и трактуется в зависимости от запроса.
  • Любое написание слова false считается значением ложь. Например: False, false, FALSE, FalsE
  • Символ 0, а также пустая строка '' считаются значением ложь
  • Любая другая строка считается значением истина

Timestamp

Временная метка. Время в секундах с 1 января 1970 года по UTC. Может задаваться как целое или вещественное число через символ .. Пример: param=1684923942.123456

Массивы (Array) и объекты (Object, Dict, словарь)

Массивы и объекты должны быть закодированы в JSON перед передачей в параметр (используйте JSON.stringify() или аналоги).
Пример передачи массива: param=["a", "b", "c"].
Массивы с одним уровнем вложенности, содержащие строки или числа могут быть переданы в формате "через запятую". Например, param=1,2,3 или param=a,b,c.

File

Файл. Должен иметь одно из следующих расширений (список может быть ограничен в конкретном запросе): jpg, jpeg, png, gif, pdf, rar, zip, html, csv, docx, doc, xlsx, xls, txt, sig, mp4, rtf, svg, mov, tiff, tif, m4v, mp3, mpeg, webm.
Размер файла не должен превышать 10 Мбайт (размер может быть изменен в конкретном запросе).

Типы данных в ответе

ID

Многие объекты в Carrot quest имеют 64-битный целочисленный первичный ключ. Язык JavaScript (и некоторые другие) имеют ограниченную поддержку 64-битных чисел и округляют их. В связи с этим, чтобы избежать ошибок в API есть возможность возвращать все значения первичного ключа как строки. Для этого служит опциональный boolean параметр (GET или POST метода) id_as_string.

Важно! По умолчанию в целях обратной совместимости возвращаются числа и браузер интерпретирует их неверно.

Примеры:

GET https://api.carrotquest.io/users/{id}

{
  "meta": {
    "status": 200
  },
  "data": {
    "id": 1448121617782670208,
    "app": 100,
    "user_id": null,
    "presence": "idle",
    "removed": null,
    "map_url": "https://maps.googleapis.com/maps/api/staticmap?key=AIzaSyCqpV62wi4C_E5SQN2QPdID_Rm0MRySqik&center=58.01046,56.25017&signature=_hpfhOFKdj3ytqkGjjoPobeb8mw="
  }
}

GET /users/{id}&id_as_string=true

{
  "meta": {
    "status": 200
  },
  "data": {
    "id": "1448121617782670208",
    "app": "100",
    "user_id": null,
    "presence": "idle",
    "removed": null,
    "map_url": "https://maps.googleapis.com/maps/api/staticmap?key=AIzaSyCqpV62wi4C_E5SQN2QPdID_Rm0MRySqik&center=58.01046,56.25017&signature=_hpfhOFKdj3ytqkGjjoPobeb8mw="
  }
}

Datetime

Объект, содержащий дату-время может возвращаться в виде:
* timestamp. Может быть целым или вещественным (с микросекундами) числом. * Строки по стандарту ISO 8601.