Hello,
I am using the Appear X Platform connector and need to enable/disable multiple IP Outputs (table 1600, State column 1603/1643) with a single HTTP request to the Appear, instead of one request per output.
From our analysis:
The Appear API SetOutputs accepts a list of outputs, and the connector already has bulk-related functionality in QAction 32092.
However, the existing bulk path does not appear to support the State/Enabled field or table 1600.
We also found that an InterApp GenericRequest (ReqType.IpGatewayOutputs, ReqVerb.Post) can potentially send a raw SetOutputs request with multiple outputs.
Could you please clarify:
Is there an official/supported way in the connector to enable/disable multiple IP Outputs using a single Appear request? If not, is there a plan to support this?
We can provide more details or test any proposed solution on our system.
Thank you.
Hello Maximiliano,
Your analysis is spot-on. Here is the clarification regarding the current state of the connector and the available options:
1. Is there an official/supported way to enable/disable multiple IP Outputs in a single request?
No, not currently.
- Table 1600 Behavior: Column
1643(ipoutputsstatus_1643, the write column for State1603) triggers QAction 9 (Set IP Outputs), which is configured withrow="true". Setting this column across multiple rows causes QAction 9 to execute once per row, resulting in one individual HTTPsetOutputsrequest per output. - QAction 32092 ("Tables Bulk Update"): As you observed, QAction 32092 only handles bulk updates for:
- Decoder Services (PID
3782) - IP Output Input Redundancy Settings (PID
30592/31092for table 30500/30600) viaSetInputRedundancySettings(currently only implemented for API version 1.31).
It does not target Table 1600 (IpOutputs) or theEnabled/Stateproperty.
- Decoder Services (PID
2. Can you use the InterApp GenericRequest as a workaround?
Yes, technically this is possible, but there are a few important considerations:
- Execution Flow: An InterApp message with:
RequestType = GenericRequest.ReqType.IpGatewayOutputsRequestVerb = GenericRequest.ReqVerb.PostSlot = <slotNumber>RequestData = <raw JSON-RPC request string>
will be queued in the connector's internal buffer and sent via HTTP Session 430 (
POSTtoRequestHandler.GetUriForBoard(slot)). Once completed, the connector automatically triggers a poll refresh forRequestType.IpGateway_Outputsto update Table 1600. - Key Constraints:
- Per-Slot Scoping: Appear X boards have independent REST/JSON-RPC endpoints (
/api/slot/{slot}). Outputs can only be bundled into a single HTTP request if they reside on the same module/slot. Outputs across different slots will still require separate requests per slot. - Schema & Version Matching: The raw JSON-RPC payload must conform to the exact Appear schema version running on that card (e.g.
ipgateway:1.31/output/SetOutputs,1.42,1.51, or1.58). - Internal Cache Delay: The connector's in-memory output dictionary is only refreshed after the subsequent
GetOutputspolling cycle completes.
- Per-Slot Scoping: Appear X boards have independent REST/JSON-RPC endpoints (
3. Is there a plan to support this natively?
Currently, there is no active development task to extend bulk updates to Table 1600.
To implement native support cleanly, the connector would need:
- A dedicated bulk update parameter (similar to PID
30592) or a context menu / Automation entry point that accepts multiple output keys and desired states. - Logic in
IpGatewayHelperto group the requested changes bySlot, update the in-memory cache, and dispatch a singleSetOutputsJSON-RPC request per slot across all supported API versions (1.31 through 1.58).
If you require this natively in the standard connector, please submit a feature request / improvement collaboration task through the usual Skyline support or product channels. Since you mentioned being able to test on your system, noting that in the request will definitely help speed up verification!
Hello Shawn,
Thank you for the clarification.
I will submit the feature request through the Skyline support channel.
Thank you for your help.
Best regards,
Maximiliano