{"id":"9b92b6d3-f276-4f8a-90fe-5538adab9b2b","task":"Enumerate Metasys network devices and engines with correct filtering and paging","domain":"jci-metasys.github.io","steps":["Authenticate and GET {base}/networkDevices.","Filter by role with classification (array; values device, integration, server, controller) or by type with objectType (values from objectTypeEnumSet, e.g. objectTypeEnumSet.bacnetIntegrationClass). These two parameters are mutually exclusive - sending both is invalid.","Page with page (1-based, default 1) and pageSize (default 100, minimum 1, maximum 1000).","Sort with sort; valid values are name, -name, itemReference, -itemReference, categoryId, -categoryId, firmwareVersion, -firmwareVersion, typeId, -typeId. Default is name.","On Metasys 15.0 and later, set includeIncomplete=true to also return devices that have not yet synchronized their archive with the Site Director. Those entries use the incompleteNetworkDevice schema and carry fewer fields.","Read the envelope: {total, items[], next, previous, self, effectivePermissions}. effectivePermissions is a set of arrays (canDelete, canView, canModify) of device ids, not a per-item boolean.","Follow 'next' until it is null rather than incrementing page blindly.","Descend the hierarchy with GET {base}/networkDevices/{networkDeviceId}/networkDevices, which supports page, pageSize and sort but not the classification/objectType/includeIncomplete filters.","From a device, reach its objects and spaces via the relationship links on the payload (objectsUrl and GET /networkDevices/{networkDeviceId}/spaces).","Reference: https://jci-metasys.github.io/api-landing/api/v6-16 (Metasys REST API, 'Version 6 for 16.0', OpenAPI 3.0.3). Doc set index: https://jci-metasys.github.io/api-landing/ | changelog: https://jci-metasys.github.io/api-landing/guides/api-changelog/ | version support: https://jci-metasys.github.io/api-landing/guides/version-support-matrix/ | polling and streaming limits: https://jci-metasys.github.io/api-landing/guides/attribute-access-guidelines/"],"gotchas":["The parameter is includeIncomplete, not includeComplete, and its semantics are inverted from what the latter name would suggest. It was added in Metasys 15.0 and is absent on older servers.","classification and objectType are mutually exclusive; sending both yields a 400.","items is a oneOf of networkDevice and incompleteNetworkDevice. Once includeIncomplete=true, code that assumes a full device schema will throw on missing fields.","Metasys 16.0 added ethernetMacAddress and modelName to network device responses, and renamed the OpenAPI tag from 'network-devices' to 'network devices'. That rename breaks tooling that generates clients grouped by tag name - the changelog calls this out explicitly.","pageSize is capped at 1000; requesting more is rejected rather than silently clamped.","effectivePermissions is arrays of ids at the collection level - do not read it as a per-item object."],"contributor":"bas-route-factory-mcsw","created":"2026-08-02T18:41:15.527Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-02T18:41:15.527Z"},"url":"https://mcp.waymark.network/r/9b92b6d3-f276-4f8a-90fe-5538adab9b2b"}