Every listing endpoint in ldap-subscriber-api.yaml accepts
?subscribe=1, which upgrades the response to text/event-stream
and keeps the connection open. This document describes the events
delivered on those streams.
const es = new EventSource('/realm/example.org/subscriber?subscribe=1');
es.addEventListener('ready', () => {
// initial state has finished replaying; subsequent `entry`
// events are live changes
});
es.addEventListener('entry', (e) => {
const { entryUUID, syncOp, body } = JSON.parse(e.data);
switch (syncOp) {
case 'present': // existing record (during initial replay)
case 'add': // newly created
case 'modify': applyUpsert(body); break; // full new state in `body`
case 'delete': applyDelete(body); break; // tombstone: only id + _url
}
});
Two SSE event names are used:
ready (fires once) marks the boundary between the initial
replay of existing records and the live change stream. Its
payload is an empty object.entry (fires repeatedly) carries one record. The JSON payload
tells you what kind of change it represents via syncOp, and
carries the record itself under body. Records always include
a _url field pointing at the matching REST resource.delete events carry only id and _url in body, not the
attributes the record had before it was removed. By the time the
server emits the event, the record is already gone from the
underlying directory and its attributes are unrecoverable;
consumers that need the old state must keep their own copy keyed
on entryUUID.
Resources are identified in the URL by their id. When an id
changes, that's a rename, and a single underlying rename surfaces
on the stream as two events rather than one modify:
delete carrying the old id and _url, followed byadd carrying the new id, _url, and the full object
body.Both events share the same entryUUID, so consumers that want to
treat a rename as a single logical operation can correlate by
UUID. Consumers that only care about the current URL of a record
can treat the pair as an ordinary remove-then-create.
The same shape applies when a record moves between collections
(for example, a subscriber re-homed to a different realm): the
URL changes, so the stream emits delete against the old URL
and add against the new one.
Each entry is emitted with an SSE id: line containing an
opaque resume cookie. EventSource captures these automatically and
sends the most recent one back as Last-Event-ID when it
reconnects, so for browser clients no extra code is needed:
reconnects pick up where the previous stream left off, without
replaying the initial state.
Non-EventSource clients should:
id: value they received,Last-Event-ID: <that value> on the new
request.Cookies are accepted only if they are 1024 bytes or fewer and contain no control characters; otherwise the server returns 400 Bad Request.
Internally the stream is driven by an LDAP syncrepl persistent
search (RFC 4533). The syncOp values (present, add,
modify, delete) and the entryUUID field come from that
protocol. Consumers do not need to know about LDAP to use the
stream: the events describe REST resources, and body contains
the same JSON shape returned by the corresponding GET endpoint.
The same host that serves the REST API. Streams are reached by
appending ?subscribe=1 to the corresponding listing endpoint
(and any of the supported filter_* query parameters).
Changes to the set of realms.
Subscribe to realm changes
Available only on servers:
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "example.org",
"description": "Subscribers homed in example.org",
"serviceProfile": "http://localhost:3000/service/fixedLine/profile/INETG1M",
"_url": "/realm/example.org"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "example.org",
"description": "Subscribers homed in example.org",
"serviceProfile": "http://localhost:3000/service/fixedLine/profile/INETG1M",
"_url": "/realm/example.org"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "example.org",
"description": "Subscribers homed in example.org",
"serviceProfile": "http://localhost:3000/service/fixedLine/profile/INETG10M",
"_url": "/realm/example.org"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "example.org",
"_url": "/realm/example.org"
}
}
Changes to the subscribers that belong to a single realm.
Subscribe to subscriber changes in a realm
Available only on servers:
Identifier of the parent realm.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "foo+bar",
"subscriberId": 123456789,
"serviceStatus": "enabled",
"serviceId": "fixedLine",
"serviceProfile": "http://localhost:3000/service/fixedLine/profile/INETG1M",
"_url": "/realm/example.org/subscriber/foo+bar"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "foo+bar",
"subscriberId": 123456789,
"serviceStatus": "enabled",
"serviceId": "fixedLine",
"serviceProfile": "http://localhost:3000/service/fixedLine/profile/INETG1M",
"_url": "/realm/example.org/subscriber/foo+bar"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "foo+bar",
"subscriberId": 123456789,
"serviceStatus": "suspended",
"statusReason": "non-payment",
"serviceId": "fixedLine",
"serviceProfile": "http://localhost:3000/service/fixedLine/profile/INETG1M",
"serviceProfileSuspended": "http://localhost:3000/service/fixedLine/profile/suspendedNonPayment",
"_url": "/realm/example.org/subscriber/foo+bar"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "foo+bar",
"_url": "/realm/example.org/subscriber/foo+bar"
}
}
Changes to subscriber groups.
Subscribe to subscriber-group changes
Available only on servers:
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "business-subs",
"policy": "business",
"_url": "/group/business-subs"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "business-subs",
"policy": "business",
"_url": "/group/business-subs"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "business-subs",
"policy": "business-premium",
"_url": "/group/business-subs"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "business-subs",
"_url": "/group/business-subs"
}
}
Changes to top-level service definitions.
Subscribe to service changes
Available only on servers:
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "fixedLine",
"_url": "/service/fixedLine"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "fixedLine",
"_url": "/service/fixedLine"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "fixedLine",
"_url": "/service/fixedLine"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "fixedLine",
"_url": "/service/fixedLine"
}
}
Changes to service profiles within one service.
Subscribe to service-profile changes for one service
Available only on servers:
Identifier of the parent service.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "INETG1M",
"_url": "/service/fixedLine/profile/INETG1M"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "INETG1M",
"_url": "/service/fixedLine/profile/INETG1M"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "INETG1M",
"_url": "/service/fixedLine/profile/INETG1M"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "INETG1M",
"_url": "/service/fixedLine/profile/INETG1M"
}
}
Changes to policies attached to a single service profile.
Subscribe to policy changes for one service profile
Available only on servers:
Identifier of the parent service.
Identifier of the parent service profile.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "allow-high-bw",
"_url": "/service/fixedLine/profile/INETG1M/policy/allow-high-bw",
"radiusAttribute": "reply.Vendor-Specific.Nokia-SR.Subsc-ID-Str = \"%{User-Name}@example.org\""
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "allow-high-bw",
"_url": "/service/fixedLine/profile/INETG1M/policy/allow-high-bw",
"radiusAttribute": "reply.Vendor-Specific.Nokia-SR.Subsc-ID-Str = \"%{User-Name}@example.org\""
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "allow-high-bw",
"_url": "/service/fixedLine/profile/INETG1M/policy/allow-high-bw",
"radiusAttribute": "reply.Vendor-Specific.Nokia-SR.Subsc-ID-Str = \"%{User-Name}@premium.example.org\""
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "allow-high-bw",
"_url": "/service/fixedLine/profile/INETG1M/policy/allow-high-bw"
}
}
Changes to RADIUS clients.
Subscribe to client changes
Available only on servers:
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "192.0.2.1",
"freeradiusClientShortname": "edge-bng-01",
"freeradiusClientGroup": "BNGs",
"_url": "/client/192.0.2.1"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "192.0.2.1",
"freeradiusClientShortname": "edge-bng-01",
"freeradiusClientGroup": "BNGs",
"_url": "/client/192.0.2.1"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "192.0.2.1",
"freeradiusClientShortname": "edge-bng-01",
"freeradiusClientGroup": "BNGs",
"freeradiusClientComment": "reprovisioned 2026-05-18",
"_url": "/client/192.0.2.1"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "192.0.2.1",
"_url": "/client/192.0.2.1"
}
}
Changes to the physical ports configured on one client.
Subscribe to physical-port changes on one client
Available only on servers:
Identifier of the parent client.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "1%2F2%2F3",
"type": "physical",
"port": "1/2/3",
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "1%2F2%2F3",
"type": "physical",
"port": "1/2/3",
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "1%2F2%2F3",
"type": "physical",
"port": "1/2/3",
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-04",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "1%2F2%2F3",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
Changes to the QinQ taggings configured on one physical port of a client.
Subscribe to QinQ tagging changes on one client port
Available only on servers:
Identifier of the parent client.
Identifier of the parent physical port.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "100+25",
"type": "qinq",
"svlan": 100,
"cvlan": 25,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "100+25",
"type": "qinq",
"svlan": 100,
"cvlan": 25,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "100+25",
"type": "qinq",
"svlan": 100,
"cvlan": 25,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-04",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "100+25",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
Changes to the single-tag (S-tag) taggings configured on one physical port of a client.
Subscribe to S-tag tagging changes on one client port
Available only on servers:
Identifier of the parent client.
Identifier of the parent physical port.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "100",
"type": "physStag",
"port": "1/2/3",
"svlan": 100,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "100",
"type": "physStag",
"port": "1/2/3",
"svlan": 100,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "100",
"type": "physStag",
"port": "1/2/3",
"svlan": 100,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-04",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "100",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
Changes to client groups.
Subscribe to client-group changes
Available only on servers:
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "BNGs",
"_url": "/clientGroup/BNGs"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "BNGs",
"_url": "/clientGroup/BNGs"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "BNGs",
"_url": "/clientGroup/BNGs"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "BNGs",
"_url": "/clientGroup/BNGs"
}
}
Changes to access devices.
Subscribe to access-device changes
Available only on servers:
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "dslam-03",
"freeradiusClientShortname": "DSLAM03-D6",
"freeradiusClientType": "dslam",
"_url": "/accessDevice/dslam-03"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "dslam-03",
"freeradiusClientShortname": "DSLAM03-D6",
"freeradiusClientType": "dslam",
"_url": "/accessDevice/dslam-03"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "dslam-03",
"freeradiusClientShortname": "DSLAM03-D6",
"freeradiusClientType": "dslam",
"freeradiusClientComment": "rack-swap to row 4",
"_url": "/accessDevice/dslam-03"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "dslam-03",
"_url": "/accessDevice/dslam-03"
}
}
Changes to the physical ports configured on one access device.
Subscribe to physical-port changes on one access device
Available only on servers:
Identifier of the parent access device.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "1%2F2%2F3",
"type": "physical",
"port": "1/2/3",
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "1%2F2%2F3",
"type": "physical",
"port": "1/2/3",
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "1%2F2%2F3",
"type": "physical",
"port": "1/2/3",
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-04",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "1%2F2%2F3",
"_url": "/client/192.0.2.1/port/1%2F2%2F3"
}
}
Changes to the QinQ taggings configured on one physical port of an access device.
Subscribe to QinQ tagging changes on one access device port
Available only on servers:
Identifier of the parent access device.
Identifier of the parent physical port.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "100+25",
"type": "qinq",
"svlan": 100,
"cvlan": 25,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "100+25",
"type": "qinq",
"svlan": 100,
"cvlan": 25,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "100+25",
"type": "qinq",
"svlan": 100,
"cvlan": 25,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-04",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "100+25",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/qinq/100+25"
}
}
Changes to the single-tag (S-tag) taggings configured on one physical port of an access device.
Subscribe to S-tag tagging changes on one access device port
Available only on servers:
Identifier of the parent access device.
Identifier of the parent physical port.
Accepts one of the following messages:
Marks the boundary between initial state replay and live change events.
Sent once between initial replay and live changes.
{}
A record that already existed when the stream was opened. Sent during the initial replay.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "present",
"body": {
"id": "100",
"type": "physStag",
"port": "1/2/3",
"svlan": 100,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
A newly created record. The body has the same shape as the corresponding GET response, plus _url.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "add",
"body": {
"id": "100",
"type": "physStag",
"port": "1/2/3",
"svlan": 100,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-03",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
An existing record was changed. The body is the full new state, not a patch.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "modify",
"body": {
"id": "100",
"type": "physStag",
"port": "1/2/3",
"svlan": 100,
"remoteAssociation": "http://localhost:3000/accessDevice/dslam-04",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
A record was removed. The body is a tombstone with only id and _url; the original attributes are not replayed.
{
"entryUUID": "2c8e1f3a-7b46-4d6f-9a4d-92ad1e1f4ab2",
"syncOp": "delete",
"body": {
"id": "100",
"_url": "/client/192.0.2.1/port/1%2F2%2F3/stag/100"
}
}
Marks the boundary between initial state replay and live change events.
Stand-in body for delete events. Only enough information to
identify which record went away.