Список полей
GET /v1/fields возвращает зарегистрированные поля постранично, от старых к новым. С его помощью удобно сверять данные AgroSat с вашей базой.
Примеры на Python и JavaScript используют API, session и headers из быстрого старта.
Страницы и курсоры
Заголовок раздела «Страницы и курсоры»| Параметр | Примечание |
|---|---|
limit |
Размер страницы, от 1 до 200. По умолчанию 50. |
cursor |
next_cursor с предыдущей страницы. Для первой страницы не передаётся. |
external_id |
Вернуть только поле с этим идентификатором. |
Рядом с data каждая страница содержит next_cursor. Страница, запрошенная с limit=1:
{ "success": true, "data": [ { "id": "cmgz7k2qv0004l8p3a9d1x6rt", "external_id": "f-1001", "name": "Северный участок 3", "area_ha": 41.53, "status": "ready", "created_at": "2026-04-28T09:14:03.512Z" } ], "next_cursor": "MjAyNi0wNC0yOFQwOToxNDowMy41MTJafGNtZ3o3azJxdjAwMDRsOHAzYTlkMXg2cnQ"}Чтобы получить следующую страницу, передайте next_cursor в параметре cursor. На последней странице next_cursor равен null. Считайте курсор непрозрачной строкой: не собирайте и не изменяйте его.
cursor=""while :; do page=$(curl -s -G https://api.agrosat.uz/v1/fields \ -H "X-API-Key: $AGROSAT_API_KEY" \ --data-urlencode "limit=200" \ ${cursor:+--data-urlencode "cursor=$cursor"}) echo "$page" | jq -r '.data[] | [.external_id, .id, .status] | @tsv' cursor=$(echo "$page" | jq -r '.next_cursor // empty') [ -z "$cursor" ] && breakdonedef all_fields(session): params = {"limit": 200} while True: r = session.get(f"{API}/fields", params=params, timeout=30) r.raise_for_status() page = r.json() yield from page["data"] if page["next_cursor"] is None: return params["cursor"] = page["next_cursor"]
by_external_id = {f["external_id"]: f for f in all_fields(session)}async function* allFields() { let cursor = null; do { const url = new URL(`${API}/fields`); url.searchParams.set("limit", "200"); if (cursor) url.searchParams.set("cursor", cursor); const page = await (await fetch(url, { headers })).json(); if (!page.success) throw new Error(`${page.error.code}: ${page.error.message}`); yield* page.data; cursor = page.next_cursor; } while (cursor !== null);}
for await (const field of allFields()) console.log(field.external_id, field.status);Поле, зарегистрированное во время обхода, появится на одной из следующих страниц. Удалённое поле пропадает со всех страниц.
Поиск поля по вашему идентификатору
Заголовок раздела «Поиск поля по вашему идентификатору»curl -G https://api.agrosat.uz/v1/fields \ -H "X-API-Key: $AGROSAT_API_KEY" \ --data-urlencode "external_id=f-1001"data содержит найденное поле или пуст, если такого поля нет. Запрос списка не расходует юниты.
Что дальше
Заголовок раздела «Что дальше»Регистрация полейИдемпотентная регистрация и удаление.
ОшибкиЧто означает invalid_request при неверном курсоре.
