Complete management API and CLI command parity
This commit is contained in:
@@ -2272,7 +2272,7 @@ scadabridge --url <url> cached-call discard --site-id <string> --tracked-operati
|
||||
|
||||
### `secured-write` — Query two-person write requests
|
||||
|
||||
`secured-write list` reads the MxGateway secured-write queue and terminal history. It requires any of Operator, Verifier or Administrator and applies the caller's site scope. This CLI group exposes listing only; submitting, approving and rejecting are management/UI operations.
|
||||
`secured-write list` reads the MxGateway secured-write queue and terminal history. It requires any of Operator, Verifier or Administrator and applies the caller's site scope. This group also exposes `submit`, `approve`, and `reject` through the same server-side authorization and separation-of-duties checks as the UI; see the parity additions below.
|
||||
|
||||
```sh
|
||||
scadabridge secured-write list --status Pending --site site-a --skip 0 --take 50
|
||||
@@ -2424,3 +2424,104 @@ Role enforcement is applied by the ManagementActor on the server side. The CLI a
|
||||
## Issues & Missing Features
|
||||
|
||||
If you encounter bugs, unexpected behavior, or missing features in the CLI, log them in [`cli_issues.md`](../../cli_issues.md) in the project root. Include a brief description, the command involved, and any relevant error output.
|
||||
|
||||
|
||||
## Management parity additions (2026-09-10)
|
||||
|
||||
The production CLI exposes all 149 HTTP-eligible management contracts across 20
|
||||
command groups. `CliApplication.BuildRoot()` is used both by the executable and
|
||||
by the HTTP-dispatch parity test. Site-only `ReadTagValues` and the retired
|
||||
`ResolveRoles` flow are not accepted by `POST /management`; binding tests continue
|
||||
using the site's existing transport.
|
||||
|
||||
### Shared schema library
|
||||
|
||||
```sh
|
||||
scadabridge shared-schema list
|
||||
scadabridge shared-schema get --id 7
|
||||
scadabridge shared-schema create --name PumpPayload --schema-file ./pump.schema.json --scope Pump
|
||||
scadabridge shared-schema update --id 7 --name PumpPayload --schema-file ./pump.schema.json
|
||||
scadabridge shared-schema delete --id 7
|
||||
```
|
||||
|
||||
Create/update read UTF-8 JSON from `--schema-file`; the server validates schema
|
||||
structure and uniqueness. Update replaces the name, schema, and scope; omitting
|
||||
`--scope` clears it. Mutations require Designer access.
|
||||
|
||||
### Individual notification edits and provider creation
|
||||
|
||||
```sh
|
||||
scadabridge notification rename --id 4 --name "Shift engineers"
|
||||
scadabridge notification recipient add --list-id 4 --name "On-call engineer" --email engineer@example.com
|
||||
scadabridge notification recipient delete --id 18
|
||||
scadabridge notification smtp create --server smtp.example.com --port 587 --auth-mode None --from-address alerts@example.com
|
||||
scadabridge notification sms create --account-sid AC0123456789abcdef0123456789abcdef --from-number +15551234567 --auth-token "<token>"
|
||||
```
|
||||
|
||||
Rename and individual recipient edits preserve unrelated recipient IDs and names.
|
||||
Recipient add accepts `--email` and/or `--phone`; the server checks them against
|
||||
its owning list's channel. Existing `notification update` retains its whole-list
|
||||
recipient replacement semantics.
|
||||
|
||||
SMTP/SMS create accept their update options except `--id` and send distinct create
|
||||
contracts. SMS create requires an auth token and a sender (`--from-number` and/or
|
||||
`--messaging-service-sid`). Provider creation/update requires Administrator access.
|
||||
|
||||
SMS create and update also accept:
|
||||
|
||||
| Option | Meaning |
|
||||
|---|---|
|
||||
| `--connection-timeout-seconds` | Positive connection timeout |
|
||||
| `--max-retries` | Nonnegative retry setting |
|
||||
| `--retry-delay-seconds` | Nonnegative retry delay |
|
||||
|
||||
Omission preserves existing update values or uses creation defaults. Explicit
|
||||
zero retry settings retain the existing outbox fallback semantics; they do not
|
||||
promise that delivery will never retry. Existing secret-preservation and
|
||||
messaging-service-ID clearing behavior on update is unchanged.
|
||||
|
||||
### Template, instance, and connection edits
|
||||
|
||||
```sh
|
||||
scadabridge template resolved-members --id 3
|
||||
scadabridge template move --id 3 --folder-id 8
|
||||
scadabridge template native-alarm-source update --id 5 --name Pressure --connection Plc --source-ref Pressure --locked
|
||||
scadabridge instance attribute-override delete --instance-id 7 --attribute Module.Speed
|
||||
scadabridge instance native-alarm-source list --instance-id 7
|
||||
scadabridge data-connection move --id 9 --site-id 2
|
||||
```
|
||||
|
||||
`resolved-members` inspects effective inherited template members, without applying
|
||||
composition or instance overrides. Omit `--folder-id` to move a template to the
|
||||
root. Native-alarm-source update replaces all contract fields: optional `--filter`
|
||||
and `--description` clear when omitted, and omitted `--locked` means false.
|
||||
Individual attribute-override deletion preserves other overrides. Server-side
|
||||
role, site-scope, locking, and dependency checks remain authoritative.
|
||||
|
||||
### Secured-write lifecycle
|
||||
|
||||
```sh
|
||||
scadabridge secured-write submit --site site-a --connection Plc --tag-path Pump.Setpoint --value-json 42 --value-type Int32 --comment "Approved operating procedure"
|
||||
scadabridge secured-write approve --id 123 --comment "Verified setpoint"
|
||||
scadabridge secured-write reject --id 124 --comment "Incorrect target"
|
||||
```
|
||||
|
||||
Submit requires Operator access; approve/reject require Verifier access. The
|
||||
server derives identity from authentication and enforces a different principal
|
||||
for the verification decision. Approval can execute a real device write.
|
||||
`--value-json` must be valid JSON; the server validates the value/type pairing.
|
||||
IDs for approve/reject are 64-bit integers; `--comment` is optional.
|
||||
|
||||
Approval exits zero only for an `Executed` response. A server-reported execution
|
||||
failure exits one while retaining the response details; malformed or unexpected
|
||||
approval responses also fail. Authorization denial exits two. JSON/table output
|
||||
continues to use the standard formatter.
|
||||
|
||||
### Deployment deadline policy
|
||||
|
||||
`deploy instance`, `instance deploy`, `deploy artifacts`, `site deploy-artifacts`,
|
||||
and `deploy site` defer the overall deadline to the Management API. They keep the
|
||||
bounded socket-connect timeout but do not impose the ordinary 30-second client
|
||||
request deadline on a deployment that may still be applying. The API's configured
|
||||
long-running timeout remains authoritative. Ordinary commands retain a 30-second
|
||||
client deadline; explicit bundle/Flow Debugger timeouts retain their own policies.
|
||||
|
||||
Reference in New Issue
Block a user