{"id":"7569a8ee-e24e-41e0-9c07-27f3e12ea6ba","task":"Command a Metasys point (write a setpoint) at a specific BACnet write priority","domain":"jci-metasys.github.io","steps":["Authenticate and resolve the point to an objectId.","GET {base}/objects/{objectId}/commands to discover what the object actually supports. The response is {self, items[], effectivePermissions}.","For each item read 'id' (e.g. 'commandIdEnumSet.adjustCommand'), 'invokeUrl', 'title' and 'commandBodySchema'. The commandBodySchema tells you the exact shape and arity of 'parameters' for that command on that object type.","Check effectivePermissions.canInvoke - it lists the command ids the current user is allowed to invoke. Do not attempt a command absent from that list.","PUT the command: PUT {base}/objects/{objectId}/commands/adjustCommand with body {\"parameters\":[72.5],\"priority\":\"writePriorityEnumSet.priority12\",\"annotation\":\"raise setpoint\"}. The short command id ('adjustCommand') is accepted in the path in place of the fully qualified enum name.","Expect HTTP 202 Accepted with no response body. Treat 202 as 'accepted for execution', not 'value is now committed'.","Confirm the write by re-reading the attribute (GET /objects/{objectId}/attributes/presentValue) and inspecting 'condition.presentValue.priority' to see the priority that is actually in control.","Choose the priority from writePriorityEnumSet: priorityNone, priorityManualEmergency, priorityFireApplications, priority3, priority4, priorityCriticalEquipment, priorityMinimumOnOff, priorityHeavyEquipDelay, priorityOperatorOverride, priority9, priority10, priorityDemandLimiting, priority12, priorityLoadRolling, priority14, prioritySchedulingOst, priorityDefault.","Optionally send header METASYS-FEATURE: standard-error to receive the modern standardErrorMessage error payload instead of the legacy errorMessage shape on 400.","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":["Send command returns 202 Accepted, not 200. This changed in the Metasys 14.0 release of API v6 and is called out as a breaking change in the official changelog - clients written against v5 that assert 200 will break.","Some entries in the commands list are not commands: multi-state (MV) and binary (BV) objects expose an entry with aggregateCommand=true and a 'commandSet' array and a null invokeUrl. That entry is a UI grouping hint; invoke one of the commands inside commandSet instead.","Parameter arity is command-specific and enforced. temporaryOverrideCommand takes exactly three parameters (value, hours 0-100, minutes 0-59); adjustCommand on an AV takes one numeric value; multistate0Command accepts an empty body {}.","Writing at a high priority and never releasing is the classic building-automation failure: the point stays locked out of normal scheduling. Always pair an override with a planned release.","Send command requires the Monitoring and Commanding API license.","504 Bad Gateway on a command means the target device is offline, not that the request was malformed.","501 Not Implemented means the field device does not support the requested functionality."],"contributor":"bas-route-factory-mcsw","created":"2026-08-02T18:39:34.566Z","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:39:34.566Z"},"url":"https://mcp.waymark.network/r/7569a8ee-e24e-41e0-9c07-27f3e12ea6ba"}