Живой, read-only поток государственных событий Приднестровья поверх NATS — отключения коммунальных услуг, позиции транспорта и новые законопроекты, доступные из любого клиента: браузер, сервер или CLI.
events.address.md — это публичный, доступный только на чтение хаб событий ПМР поверх NATS. Он нейтрально агрегирует публичные события Приднестровья из разных источников и публикует их в реальном времени. Сейчас доступны четыре потока: отключения коммунальных услуг (ЖКХ), онлайн-позиции общественного транспорта, новые законопроекты Верховного Совета и судебные дела — со временем могут добавляться и другие провайдеры.
Никакого бэкенда и опроса API: вы открываете одно NATS-соединение к
wss://events.address.md,
подписываетесь на нужные subject'ы и получаете события по мере их появления.
Хаб ничего не хранит про вас — это чистый pub/sub транспорт.
Всё публикуется под корневым subject'ом pmr.>.
Фильтруйте по поставщику, типу события, маршруту, борту или созыву — NATS-подписки делают это за вас.
| Subject | Payload | Описание |
|---|---|---|
| pmr.utility.event.<supplier>.<event> | UtilityEvent | Отключения/возобновления ЖКХ (water/electricity, shutdown/resume) |
| pmr.transit.vehicle.<route>.<id> | VehiclePosition | Позиции общественного транспорта |
| pmr.vspmr.bill.new.<conv>.<number> | BillAdded | Новые законопроекты Верховного Совета ПМР |
| pmr.court.<court>.case.<event>.<id> | CourtCase | Новые судебные дела и изменения по ним (arbitration, new/changed) |
{
"incidentId": "f7c1-…",
"supplier": "water",
"event": "shutdown",
"organization": "ГУП Водоснабжение и Водоотведение",
"description": "Отключение воды",
"eventStart": "2026-06-21T10:00",
"eventStop": "2026-06-21T18:00",
"publishedAt": "2026-06-21T07:00:00Z",
"source": { "messageId": 123, "chatId": -100123 },
"addresses": [
{ "region": { "name": "…", "kladr": "…", "type": "…" },
"city": { "name": "…", "kladr": "…", "type": "…" },
"street": { "name": "Пушкина", "kladr": "001-01.001", "type": "ул" },
"houses": ["1", "3", "5-9"] }
]
}
{
"vehicleId": "12345",
"label": "А 884 ЕХ",
"route": { "ref": "3", "type": "trolley_bus", "name": "…" },
"lat": 46.84, "lng": 29.61,
"bearing": 120.0, "speedKmh": 24.0,
"ts": "2026-06-21T07:00:00Z",
"source": "ocity", "stale": false
}
{
"number": "123/1",
"conv": "VIII",
"name": "О внесении изменений в Закон …",
"url": "https://vspmr.org/legislation/bills/…",
"author": "…",
"committee": "…",
"publishedAt": "2026-08-15T09:00:00Z"
}
{
"court": "arbitration",
"sourceId": "32564",
"number": "702/26-11",
"instance": "pervaya",
"caseType": "Административные правоотношения",
"title": "Дело об оспаривании решений органов…",
"status": "Иск оставлен без движения",
"detailsUrl": "https://arbitr.gospmr.org/…",
"participants": [
{ "type": "claimant",
"name": "ОАО «Техносервис»",
"address": { "text": "г. Рыбница, ул. …" } },
{ "type": "respondent", "name": "ГА г. Рыбница" }
],
"events": [
{ "status": "Иск оставлен без движения",
"date": "2026-08-21T00:00:00Z" }
],
"changes": [
{ "field": "status",
"old": "Принято к производству",
"new": "Иск оставлен без движения" }
],
"publishedAt": "2026-08-21T02:14:00Z"
}
UtilityEvent — camelCase; eventStart/eventStop
в формате yyyy-MM-dd'T'HH:mm, publishedAt — ISO-8601 instant;
null-поля опускаются. VehiclePosition — снимок текущего положения борта общественного транспорта.
BillAdded — новый законопроект, зарегистрированный в Верховном Совете;
author/committee опускаются, если неизвестны.
CourtCase — судебное дело: case.new — дело
впервые замечено, case.changed — изменилось, и тогда массив
changes перечисляет, что именно (статус, резолюция, новые участники).
Публикуется только то, что открыто на сайте суда.
Любой NATS-клиент — Go, Python, JS, nats CLI — говорит с хабом по защищённому WebSocket. Ниже два примера: универсальный CLI и браузерный nats.ws.
Официальные SDK для Go, Python, JS и др., либо nats CLI — все умеют wss.
Подключитесь к wss://events.address.md под анонимным пользователем public.
Слушайте pmr.> целиком или сузьте до конкретного потока/маршрута.
Получайте сообщения и читайте JSON-payload средствами вашего клиента.
# подписаться на все события
nats sub -s wss://events.address.md "pmr.>"
<script type="module">
import { connect, StringCodec } from "https://cdn.jsdelivr.net/npm/nats.ws@1.30.3/esm/nats.js";
const nc = await connect({ servers: "wss://events.address.md" });
const sc = StringCodec();
const sub = nc.subscribe("pmr.>");
for await (const m of sub) {
console.log(m.subject, sc.decode(m.data));
}
</script>