API за агента и конектора
Тези крайни точки (endpoints) се използват само от агенти и конектори. Те не са част от OpenAPI спецификацията на портала; форматите на съобщенията им са описани в Протокол на агента и конектора.
- Заявките се автентикират с
Authorization: Bearer <agent or connector key>. Ключовете се съхраняват като SHA-256 хешове и се кешират за 60 s; WebSocket връзката на отменен ключ се затваря незабавно с код 4003 на всяка реплика. - Ограничението на честотата на заявките по IP на
/api/v1не важи тук (много агенти споделят NAT адреси); ограничава се само регистрирането (RMM_ENROLL_RATE_PER_MINUTE). - Непознатите JSON полета се игнорират, така че по-новите агенти продължават да работят с по-стари сървъри.
Агент (/api/agent/v1)
| Метод | Път | Бележки |
|---|---|---|
| POST | /enroll | {enrollment_token, hostname, fqdn, domain, machine_guid, machine_sid, os, agent_version} → 201 {agent_id, device_id, agent_key, ws_url, config}. 401 непознат токен, 409 изчерпан, 410 изтекъл или отменен, 422 невалидна заявка. Повторното регистриране на същата машина (разпозната по machine_guid, после по machine_sid) запазва устройството и ротира ключа. |
| GET | /ws | Надграждане до WebSocket. |
| GET | /config | Текущата конфигурация на агента (интервали, флагове на функции). |
| GET | /jobs/pending | Резервно HTTP допитване (polling), когато WebSocket е блокиран. |
| POST | /jobs/{id}/ack, /jobs/{id}/progress, /jobs/{id}/result | Резервен HTTP вариант. |
| PUT | /jobs/{id}/output | Пълният изход на задача run_script (Content-Encoding: gzip, текст, най-много 10 MiB) → 204. |
| POST | /inventory | Пълен или делта отчет; използва се и когато отчетът надхвърля WebSocket рамката от 1 MB. Приема се Content-Encoding: gzip; 32 MB при пренос, 64 MB след декомпресиране. |
| POST | /heartbeat | Резервен HTTP вариант. |
| GET | /packages/{id}/download-url | {url, sha256, size_bytes, expires_at}: нова връзка с валидност един час за готов пакет на тенанта на агента или за глобален пакет; 404 в противен случай. |
| GET | /releases/winget | {files: [{name, url, size_bytes, role: bundle or dependency}]}: файловете на App Installer под releases/winget/; 404 winget_bootstrap_unavailable, когато няма хоствани файлове. |
| GET | /releases/latest?component=agent&channel=stable | {version, url, sha256, signature}. |
Конектор (/api/connector/v1)
| Метод | Път | Бележки |
|---|---|---|
| POST | /enroll | {enrollment_token, hostname, domain, version} → 201 {connector_id, connector_key, ws_url}. Само токени от вид connector (401 в противен случай). Повторното регистриране на същата машина (тенант, име на хост, домейн) ротира ключа ѝ и затваря старата връзка. |
| GET | /ws | WebSocket; сървърът изпраща задачи adsync.run, ldap.test, ldap.ous, push_agent, wake, update_agent. |
| POST | /heartbeat | Резервен HTTP вариант. |
| GET | /jobs/pending | Резервен HTTP вариант. |
| POST | /jobs/{id}/ack, /jobs/{id}/progress, /jobs/{id}/result | Резервен HTTP вариант. |
| POST | /adsync/runs/{id}/chunk | {seq, computers[], complete, total?} (най-много 1000 компютъра) за части, надхвърлящи ограничението на WebSocket рамката; приема се gzip, 16 MiB → 202. |
| POST | /push/targets | Резервен HTTP вариант на push.target. |
| GET | /releases/latest?component=connector | Най-новото издание на конектора. |