@impact0815/node-red-contrib-home-connect 0.0.0-stage → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUILD-INFO.json +23 -0
- package/CHANGELOG.md +53 -0
- package/LICENSE +21 -0
- package/NOTICE +19 -0
- package/README.de.md +344 -0
- package/README.md +343 -2
- package/SECURITY.md +47 -0
- package/docs/API-COVERAGE.md +59 -0
- package/docs/ARCHITECTURE.md +95 -0
- package/docs/DASHBOARD.de.md +121 -0
- package/docs/DASHBOARD.md +121 -0
- package/docs/FIRST-PUSH.md +42 -0
- package/docs/GITHUB-UPDATE.md +76 -0
- package/docs/LOCAL-LAN.de.md +150 -0
- package/docs/LOCAL-LAN.md +150 -0
- package/docs/MESSAGE-API.md +111 -0
- package/docs/RELEASE.md +91 -0
- package/docs/TROUBLESHOOTING.de.md +230 -0
- package/docs/TROUBLESHOOTING.md +230 -0
- package/docs/images/README.md +10 -0
- package/docs/images/dashboard-details-en.png +0 -0
- package/docs/images/dashboard-overview-en.png +0 -0
- package/docs/official-api-contract.json +418 -0
- package/examples/01-first-steps-device-list.json +148 -0
- package/examples/02-events.json +165 -0
- package/examples/03-safe-read-write.json +155 -0
- package/examples/04-local-read-only.json +214 -0
- package/examples/README.de.md +62 -0
- package/examples/README.md +62 -0
- package/examples/dashboard-dishwasher-washer-oven.json +628 -0
- package/examples/dashboard-screenshot-simulated.json +405 -0
- package/examples/demo-home-connect-flowfuse-1.34.1-scriptless.json +390 -0
- package/lib/client.js +600 -0
- package/lib/constants.js +66 -0
- package/lib/dashboard-i18n.js +255 -0
- package/lib/device-label.js +39 -0
- package/lib/errors.js +51 -0
- package/lib/health.js +525 -0
- package/lib/local-client.js +1014 -0
- package/lib/local-crypto.js +122 -0
- package/lib/local-diagnostics.js +115 -0
- package/lib/local-profile.js +706 -0
- package/lib/local-trace.js +103 -0
- package/lib/oauth.js +23 -0
- package/lib/rate-limiter.js +186 -0
- package/lib/simulator.js +290 -0
- package/lib/sse.js +58 -0
- package/lib/validation.js +194 -0
- package/lib/websocket-transport.js +374 -0
- package/nodes/home-connect.html +795 -0
- package/nodes/home-connect.js +699 -0
- package/nodes/locales/de/home-connect.html +19 -0
- package/nodes/locales/de/home-connect.json +10 -0
- package/nodes/locales/en-US/home-connect.json +10 -0
- package/package.json +76 -4
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Home Connect troubleshooting and FAQ
|
|
2
|
+
|
|
3
|
+
Back to the [English README](../README.md).
|
|
4
|
+
|
|
5
|
+
Start with the visible symptom. Never include credentials, hostnames, appliance IDs, or OAuth codes in a bug report.
|
|
6
|
+
|
|
7
|
+
## 1. Two-minute preflight check
|
|
8
|
+
|
|
9
|
+
1. Is the expected build installed?
|
|
10
|
+
```bash
|
|
11
|
+
cd ~/.node-red
|
|
12
|
+
node -p "require('./node_modules/@impact0815/node-red-contrib-home-connect/BUILD-INFO.json')"
|
|
13
|
+
```
|
|
14
|
+
Expect version `0.2.0`, build `hc-0.2.0-final`, and `pkce: false`.
|
|
15
|
+
2. Is the correct connection selected and clearly named?
|
|
16
|
+
3. Did you click **Done → Deploy** after the latest change?
|
|
17
|
+
4. Are the Redirect URIs in the Developer Portal and Node-RED exactly identical?
|
|
18
|
+
5. Can the browser reach the configured Node-RED address?
|
|
19
|
+
6. Did OAuth finish on the **Home Connect authorized** page?
|
|
20
|
+
7. Do scopes include `IdentifyAppliance` and the required appliance-specific permissions?
|
|
21
|
+
|
|
22
|
+
## 2. Authorize is disabled
|
|
23
|
+
|
|
24
|
+
This is intentional: the configuration node checks whether this exact saved configuration exists in the running Node-RED runtime.
|
|
25
|
+
|
|
26
|
+
- **New or changed connection:** click Done, deploy, and reopen the connection.
|
|
27
|
+
- **Built-in simulator:** OAuth is not required.
|
|
28
|
+
- **Still disabled:** restart Node-RED completely and hard-reload the browser. Check for an old or duplicate package installation.
|
|
29
|
+
|
|
30
|
+
## 3. `CONFIG_NOT_FOUND`
|
|
31
|
+
|
|
32
|
+
**Meaning:** the URL contains the ID of a configuration node that the running runtime does not know.
|
|
33
|
+
|
|
34
|
+
Typical causes:
|
|
35
|
+
|
|
36
|
+
- an example or simulator configuration was referenced;
|
|
37
|
+
- the connection was created in the editor but not deployed;
|
|
38
|
+
- an old browser tab contains an authorization URL for a deleted configuration;
|
|
39
|
+
- another runtime instance is still active after a package or flow change.
|
|
40
|
+
|
|
41
|
+
**Fix:**
|
|
42
|
+
|
|
43
|
+
1. Close the old authorization tab.
|
|
44
|
+
2. Select the correct connection in the Home Connect node.
|
|
45
|
+
3. Give it an unambiguous name.
|
|
46
|
+
4. Click Done → Deploy.
|
|
47
|
+
5. Reopen the connection.
|
|
48
|
+
6. Start a new authorization from that connection.
|
|
49
|
+
|
|
50
|
+
## 4. Misleading connection name
|
|
51
|
+
|
|
52
|
+
The **Environment** field controls the API host; the name does not. A name such as `Simulator` with the Production environment is still risky. The editor now warns about this combination. Rename, save, and deploy it.
|
|
53
|
+
|
|
54
|
+
## 5. Exact Redirect URI comparison
|
|
55
|
+
|
|
56
|
+
These parts must match:
|
|
57
|
+
|
|
58
|
+
| Part | Common mistake |
|
|
59
|
+
|---|---|
|
|
60
|
+
| Protocol | `http` in the portal, `https` in Node-RED |
|
|
61
|
+
| Host | DNS name in one place, IP address in the other |
|
|
62
|
+
| Port | port omitted in one place |
|
|
63
|
+
| Path | typo in `/home-connect/oauth/callback` |
|
|
64
|
+
| Ending | extra slash `/callback/` |
|
|
65
|
+
| Case | different characters in the path |
|
|
66
|
+
|
|
67
|
+
Copy the complete URI from one field to the other instead of retyping it.
|
|
68
|
+
|
|
69
|
+
## 6. After sign-in: localhost, `ERR_EMPTY_RESPONSE`, connection failed
|
|
70
|
+
|
|
71
|
+
From the browser's perspective, `localhost` is the browser's own computer. If Node-RED runs on a NAS, server, Raspberry Pi, Home Assistant, ioBroker, or another computer/container, the browser cannot reach Node-RED there via localhost.
|
|
72
|
+
|
|
73
|
+
1. Choose a Node-RED hostname or IP address reachable from the browser.
|
|
74
|
+
2. Append `/home-connect/oauth/callback`.
|
|
75
|
+
3. Change the URI in the Developer Portal.
|
|
76
|
+
4. Enter the identical URI in Node-RED.
|
|
77
|
+
5. Click Done → Deploy.
|
|
78
|
+
6. Start OAuth again.
|
|
79
|
+
|
|
80
|
+
## 7. `unauthorized_client` / `client or redirection URI not authorized`
|
|
81
|
+
|
|
82
|
+
Check in this order:
|
|
83
|
+
|
|
84
|
+
1. Was the Client ID copied from the correct Developer Portal Application?
|
|
85
|
+
2. Does the Redirect URI match character for character?
|
|
86
|
+
3. Does the Application use the Authorization Code Grant?
|
|
87
|
+
4. Is PKCE disabled for that Application?
|
|
88
|
+
5. Is build `hc-0.2.0-final` running?
|
|
89
|
+
6. Did you start a new authorization after each change?
|
|
90
|
+
|
|
91
|
+
If the Client Secret was exposed, stop troubleshooting with that value: regenerate it, replace it in Node-RED, deploy, and authorize again.
|
|
92
|
+
|
|
93
|
+
## 8. Old code still runs after an update
|
|
94
|
+
|
|
95
|
+
A flow deploy does not reload Node.js runtime code. Use BUILD-INFO in addition to the npm version when checking for duplicate installs.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
cd ~/.node-red
|
|
99
|
+
npm uninstall @impact0815/node-red-contrib-home-connect
|
|
100
|
+
rm -rf node_modules/@impact0815/node-red-contrib-home-connect
|
|
101
|
+
npm install --force /absolute/path/impact0815-node-red-contrib-home-connect-0.2.0.tgz
|
|
102
|
+
node -p "require('./node_modules/@impact0815/node-red-contrib-home-connect/BUILD-INFO.json')"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Then restart Node-RED or the container completely, hard-reload the browser, and begin OAuth again. Authorization codes and state links are short-lived and single-use.
|
|
106
|
+
|
|
107
|
+
## 9. `No refresh token is stored. Complete OAuth authorization first.`
|
|
108
|
+
|
|
109
|
+
The refresh token is saved only after a successful callback.
|
|
110
|
+
|
|
111
|
+
- Start authorization from the deployed connection.
|
|
112
|
+
- Complete sign-in and consent.
|
|
113
|
+
- Wait for **Home Connect authorized**.
|
|
114
|
+
- Only then use Test, Discover, Read, or Events.
|
|
115
|
+
|
|
116
|
+
If it still fails, record the callback's error code but never publish codes or tokens.
|
|
117
|
+
|
|
118
|
+
## 10. `insufficient_scope`
|
|
119
|
+
|
|
120
|
+
The token may not access the requested resource.
|
|
121
|
+
|
|
122
|
+
1. Keep `IdentifyAppliance`.
|
|
123
|
+
2. Add the relevant appliance-specific scope, such as `Dishwasher-Monitor`, `Washer-Monitor`, or `Oven-Monitor`.
|
|
124
|
+
3. Add only the required `*-Control` and/or `*-Settings` for actions.
|
|
125
|
+
4. Click Done → Deploy.
|
|
126
|
+
5. Authorize again; an existing refresh token does not gain new permissions automatically.
|
|
127
|
+
|
|
128
|
+
The generic `Monitor` scope can be insufficient for some Applications/accounts.
|
|
129
|
+
|
|
130
|
+
## 11. Events stays on `reconnecting`
|
|
131
|
+
|
|
132
|
+
`reconnecting` is a consequence, not the root cause. Connect the Events node's second output to Debug.
|
|
133
|
+
|
|
134
|
+
Common causes:
|
|
135
|
+
|
|
136
|
+
- no refresh token;
|
|
137
|
+
- missing monitor scope;
|
|
138
|
+
- expired or revoked authorization;
|
|
139
|
+
- network/proxy interruption of the SSE stream;
|
|
140
|
+
- too many parallel event streams.
|
|
141
|
+
|
|
142
|
+
Repair Test/appliance discovery first, then prefer one Events node with appliance ID `*`.
|
|
143
|
+
|
|
144
|
+
## 12. Successful end state
|
|
145
|
+
|
|
146
|
+
Setup is complete when:
|
|
147
|
+
|
|
148
|
+
1. the browser page displays **Home Connect authorized**;
|
|
149
|
+
2. Test reports an appliance count without an error;
|
|
150
|
+
3. **Load appliances** populates the selector;
|
|
151
|
+
4. the Events node emits events instead of reconnecting indefinitely.
|
|
152
|
+
|
|
153
|
+
## 13. Safe bug reports
|
|
154
|
+
|
|
155
|
+
Safe to include:
|
|
156
|
+
|
|
157
|
+
- package version and build ID;
|
|
158
|
+
- Node.js and Node-RED versions;
|
|
159
|
+
- environment type (Production/Simulator), without a private hostname;
|
|
160
|
+
- error code and sanitized message;
|
|
161
|
+
- simulator-based reproduction steps.
|
|
162
|
+
|
|
163
|
+
Never include:
|
|
164
|
+
|
|
165
|
+
- Client ID or Client Secret;
|
|
166
|
+
- access or refresh tokens;
|
|
167
|
+
- authorization code or OAuth state;
|
|
168
|
+
- real Redirect URI, hostname, or IP address;
|
|
169
|
+
- real `haId`, serial number, or appliance number;
|
|
170
|
+
- complete events or debug output containing personal data.
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
## 14. Understanding health and warning codes
|
|
174
|
+
|
|
175
|
+
Every functional output uses schema `home-connect-health/v1`:
|
|
176
|
+
|
|
177
|
+
- `ok`: no current concern
|
|
178
|
+
- `running`: a program is running
|
|
179
|
+
- `info`: useful, non-urgent notice
|
|
180
|
+
- `warning`: restriction or paused/aborting state
|
|
181
|
+
- `action_required`: local intervention or renewed authorization required
|
|
182
|
+
- `offline`: appliance, event stream, or network unavailable
|
|
183
|
+
- `error`: appliance/API error
|
|
184
|
+
|
|
185
|
+
`warnings` is deduplicated. Every entry contains at least `source`, `code`, `severity`, `text.de`, `text.en`, and `transient`. Short-lived notices also include timing fields and disappear after expiry. Status conditions remain only while the current status confirms them.
|
|
186
|
+
|
|
187
|
+
Important codes:
|
|
188
|
+
|
|
189
|
+
| Code | Meaning | Action |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| `HC_OPERATION_ACTION_REQUIRED` | appliance requests local intervention | inspect appliance display, door, and supplies |
|
|
192
|
+
| `HC_STREAM_DISCONNECTED` | SSE connection disconnected | wait for reconnect; inspect output 2 if persistent |
|
|
193
|
+
| `HC_OAUTH_INSUFFICIENT_SCOPE` | token has insufficient rights | correct scope, deploy, authorize again |
|
|
194
|
+
| `HC_OAUTH_AUTHORIZATION_EXPIRED` | authorization missing/expired/revoked | authorize again |
|
|
195
|
+
| `HC_API_RATE_LIMITED` | HTTP 429/API limit | reduce polling and observe `retryAfter` |
|
|
196
|
+
| `HC_NETWORK_ERROR` | network/timeout | check DNS, proxy, TLS, and reachability |
|
|
197
|
+
|
|
198
|
+
The Events node also emits synthetic `CONNECTED`/`DISCONNECTED` lifecycle events for the actual SSE stream. They contain no credentials.
|
|
199
|
+
|
|
200
|
+
## 15. HTTP 429 / `1000 calls in 1 day`
|
|
201
|
+
|
|
202
|
+
By default, the local limiter prevents this package from sending more than 900 API attempts in a rolling 24-hour window. The connection editor displays current usage and any active block. When the budget is exhausted, output 2 receives `LOCAL_RATE_LIMITED`; `retryAfter` and `resetAt` state the remaining wait.
|
|
203
|
+
|
|
204
|
+
If Home Connect has already returned HTTP 429 with text such as `remaining period of 75502 seconds`, the package adopts that block period and sends no further API calls until it expires. The state survives deploys and restarts. Do not repeatedly click **Test** or Inject nodes. Reduce polling substantially, prefer one all-appliance event stream, and do not request snapshots every 15 seconds. Check other computers or programs using the same Developer Portal Application because their calls are outside the local counter.
|
|
205
|
+
|
|
206
|
+
## 16. Firmware version or update is missing
|
|
207
|
+
|
|
208
|
+
This is not a configuration error. The publicly documented Home Connect API does not provide firmware version, firmware history, or firmware update. The package does not use undocumented endpoints and intentionally provides no firmware button. It displays only documented appliance information such as name, brand, type, `vib`/E-number, and connection state when supplied. Check firmware only through official manufacturer/Home Connect channels.
|
|
209
|
+
|
|
210
|
+
## 17. Local LAN profiles and connection failures
|
|
211
|
+
|
|
212
|
+
For local configurations, OAuth, authorization, refresh-token, and cloud daily-budget sections are intentionally hidden. Setup succeeds when **Test connection** in every device card reports a local read-only connection and Discover/Read/Events return `local: true` and `readOnly: true`.
|
|
213
|
+
|
|
214
|
+
Check in this order:
|
|
215
|
+
|
|
216
|
+
1. Confirm the profile folder is mounted at the entered path inside the Node-RED host/container and readable by its service account. Then explicitly click **Scan profiles / Detect devices**.
|
|
217
|
+
2. Keep appliance JSON, `DeviceDescription.xml`, and `FeatureMapping.xml` from the same Profile Downloader export together. `LOCAL_PROFILE_FILES_INCOMPLETE` names a missing file; `LOCAL_PROFILE_ORPHAN_COMPANION` indicates mismatched folders/names.
|
|
218
|
+
3. A duplicate profile ID lists the affected files. Do not guess an assignment: remove the duplicate/old export and scan again.
|
|
219
|
+
4. A successful scan says, for example, **3 device profiles found**, with one card per complete profile. If a card is absent, read the issues directly below the result.
|
|
220
|
+
5. Enter Host/IP in every card. Missing, malformed, or public IPs are marked. Hostnames are resolved server-side during testing. Only private/link-local targets are accepted; loopback/public targets return `LOCAL_HOST_NOT_PRIVATE`. An individual card test uses that card's current fields immediately; it does not require Done/Deploy and is not blocked by empty sibling cards.
|
|
221
|
+
6. Leave **Connection type: Auto (recommended)**. An explicit AES/TLS/PSK profile declaration wins; IV presence is only the fallback. `LOCAL_PROFILE_IV_MISSING` with an AES override means the original IV is absent.
|
|
222
|
+
7. Click **Test connection** and read its seven stages. `LOCAL_NETWORK_ERROR`/timeout stops at **IP reachable**. `EHOSTUNREACH` means no network path and is not a protocol failure: check power/standby, IP, Wi-Fi, VLAN routing, and firewall. `LOCAL_TLS_PSK_UNAVAILABLE`/`LOCAL_TRANSPORT_UNSUPPORTED` stops at **Transport detected**. `LOCAL_WEBSOCKET_UPGRADE_FAILED` means TCP or TLS succeeded but the appliance rejected the upgrade on `/homeconnect`. The test reads local resources only.
|
|
223
|
+
8. After all cards are valid, click **Done → Deploy**. `localDeviceMappings` is saved again on Done and restored after deploy. Never copy Host/IP into Read/Events; select the descriptive label while the full ID remains internal.
|
|
224
|
+
9. `LOCAL_CRYPTO_AUTH_FAILED`, `LOCAL_PROFILE_KEY_REJECTED`, or `LOCAL_PROFILE_AUTHENTICATION_FAILED` points to the wrong/incomplete profile; re-download it and never edit/guess PSK/IV. `LOCAL_PROTOCOL_REJECTED` is separate and identifies resource, action, negotiated version, and device code. An unsupported `/ro/*` path is tolerated once another read or appliance `NOTIFY` delivered data. If all five paths are rejected, `rejectedResources` contains the complete sequence. `/ci/services` must be version 1 without an empty `data` array.
|
|
225
|
+
10. If only numeric UIDs appear, restore the XML files from the same download and scan again.
|
|
226
|
+
11. Manual profile JSON is only the optional **Advanced** fallback. It is disabled/ignored while a folder is set. Generate it from detected profiles and assignments instead of writing it manually.
|
|
227
|
+
12. For real firmware differences, briefly enable the safe protocol trace under **Advanced**. With no path, the bounded sanitized memory trace is shown only after the test; an absolute path writes JSONL mode `0600` on POSIX. On Windows, restrict the trace path to the Node-RED service account with an NTFS ACL because POSIX mode bits are not reliable there. PSK, IV, keys, nonces, and appliance/network identifiers are removed. Inspect before sharing, then disable tracing and delete the file.
|
|
228
|
+
13. `LOCAL_HEARTBEAT_TIMEOUT` or `LOCAL_DISCONNECTED` after an initially successful connection points to power/standby, Wi-Fi roaming, VLAN/firewall, or packet loss. The runtime rebuilds transport, crypto state, `sID`, `msgID`, services, and read session with backoff.
|
|
229
|
+
|
|
230
|
+
`LOCAL_READ_ONLY` is not a connectivity failure. It proves the local write barrier worked. Use a separate cloud configuration for guarded writes. See [Local LAN connection](LOCAL-LAN.md).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Documentation screenshots
|
|
2
|
+
|
|
3
|
+
The final 0.2.0 release includes two user-provided, visually reviewed English PNG captures from the isolated simulated Demo:
|
|
4
|
+
|
|
5
|
+
- `dashboard-overview-en.png` — English **Demo Overview** with three simulated summary cards; 2048 × 511; SHA-256 `fda4af394e65bb2cc48eafec152ae04eabe422d4c18a19a5a2152c7e13dce222`
|
|
6
|
+
- `dashboard-details-en.png` — English details view with three simulated appliance cards; 2048 × 1063; SHA-256 `35f260f5ef49a8e8afb60c0ef19fb57961e966dbf44ce3f7039879e681a2dff9`
|
|
7
|
+
|
|
8
|
+
Visual and OCR-assisted privacy review confirmed that both captures show only English Demo content. Every card is marked `SIMULATED`; visible identifiers are synthetic `Demo`/`DEMO-*` values. The frames contain no browser profile or chrome, account name, email address, hostname, IP address, OAuth material, credential, token, QR code, local profile data, real appliance identifier, unrelated tab/window, or private notification.
|
|
9
|
+
|
|
10
|
+
Do not substitute screenshots from a real installation. `npm run release:check` verifies the exact reviewed SHA-256 hashes as well as PNG structure, minimum dimensions, and sensitive-looking metadata.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"source": "Official Home Connect Swagger 2.0 specifications supplied with the project review",
|
|
4
|
+
"specifications": [
|
|
5
|
+
{
|
|
6
|
+
"file": "hcsdk-simulation.yaml",
|
|
7
|
+
"sha256": "5942f5ca450a46fa9a6f53ff6d13627972040f105dcd786efddcf9a44ce376a3",
|
|
8
|
+
"swagger": "2.0",
|
|
9
|
+
"host": "simulator.home-connect.com",
|
|
10
|
+
"basePath": "/api",
|
|
11
|
+
"consumes": [
|
|
12
|
+
"application/vnd.bsh.sdk.v1+json"
|
|
13
|
+
],
|
|
14
|
+
"produces": [
|
|
15
|
+
"application/vnd.bsh.sdk.v1+json"
|
|
16
|
+
],
|
|
17
|
+
"operations": [
|
|
18
|
+
{
|
|
19
|
+
"method": "GET",
|
|
20
|
+
"path": "/api/homeappliances",
|
|
21
|
+
"operationId": "get_home_appliances"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"method": "GET",
|
|
25
|
+
"path": "/api/homeappliances/{haId}",
|
|
26
|
+
"operationId": "get_specific_appliance"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"method": "GET",
|
|
30
|
+
"path": "/api/homeappliances/{haId}/programs",
|
|
31
|
+
"operationId": "get_all_programs"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"method": "GET",
|
|
35
|
+
"path": "/api/homeappliances/{haId}/programs/available",
|
|
36
|
+
"operationId": "get_available_programs"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"method": "GET",
|
|
40
|
+
"path": "/api/homeappliances/{haId}/programs/available/{programkey}",
|
|
41
|
+
"operationId": "get_available_program"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"method": "GET",
|
|
45
|
+
"path": "/api/homeappliances/{haId}/programs/active",
|
|
46
|
+
"operationId": "get_active_program"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"method": "PUT",
|
|
50
|
+
"path": "/api/homeappliances/{haId}/programs/active",
|
|
51
|
+
"operationId": "start_program"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"method": "DELETE",
|
|
55
|
+
"path": "/api/homeappliances/{haId}/programs/active",
|
|
56
|
+
"operationId": "stop_program"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"method": "GET",
|
|
60
|
+
"path": "/api/homeappliances/{haId}/programs/active/options",
|
|
61
|
+
"operationId": "get_active_program_options"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"method": "PUT",
|
|
65
|
+
"path": "/api/homeappliances/{haId}/programs/active/options",
|
|
66
|
+
"operationId": "set_active_program_options"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"method": "GET",
|
|
70
|
+
"path": "/api/homeappliances/{haId}/programs/active/options/{optionkey}",
|
|
71
|
+
"operationId": "get_active_program_option"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"method": "PUT",
|
|
75
|
+
"path": "/api/homeappliances/{haId}/programs/active/options/{optionkey}",
|
|
76
|
+
"operationId": "set_active_program_option"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"method": "GET",
|
|
80
|
+
"path": "/api/homeappliances/{haId}/programs/selected",
|
|
81
|
+
"operationId": "get_selected_program"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"method": "PUT",
|
|
85
|
+
"path": "/api/homeappliances/{haId}/programs/selected",
|
|
86
|
+
"operationId": "set_selected_program"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"method": "GET",
|
|
90
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options",
|
|
91
|
+
"operationId": "get_selected_program_options"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"method": "PUT",
|
|
95
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options",
|
|
96
|
+
"operationId": "set_selected_program_options"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"method": "GET",
|
|
100
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options/{optionkey}",
|
|
101
|
+
"operationId": "get_selected_program_option"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"method": "PUT",
|
|
105
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options/{optionkey}",
|
|
106
|
+
"operationId": "set_selected_program_option"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"method": "GET",
|
|
110
|
+
"path": "/api/homeappliances/{haId}/images",
|
|
111
|
+
"operationId": "get_images"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"method": "GET",
|
|
115
|
+
"path": "/api/homeappliances/{haId}/images/{imagekey}",
|
|
116
|
+
"operationId": "get_image"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"method": "GET",
|
|
120
|
+
"path": "/api/homeappliances/{haId}/settings",
|
|
121
|
+
"operationId": "get_settings"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"method": "PUT",
|
|
125
|
+
"path": "/api/homeappliances/{haId}/settings",
|
|
126
|
+
"operationId": "set_settings"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"method": "GET",
|
|
130
|
+
"path": "/api/homeappliances/{haId}/settings/{settingkey}",
|
|
131
|
+
"operationId": "get_setting"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"method": "PUT",
|
|
135
|
+
"path": "/api/homeappliances/{haId}/settings/{settingkey}",
|
|
136
|
+
"operationId": "set_setting"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"method": "GET",
|
|
140
|
+
"path": "/api/homeappliances/{haId}/status",
|
|
141
|
+
"operationId": "get_status"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"method": "GET",
|
|
145
|
+
"path": "/api/homeappliances/{haId}/status/{statuskey}",
|
|
146
|
+
"operationId": "get_status_value"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"method": "GET",
|
|
150
|
+
"path": "/api/homeappliances/events",
|
|
151
|
+
"operationId": "get_all_events"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"method": "GET",
|
|
155
|
+
"path": "/api/homeappliances/{haId}/events",
|
|
156
|
+
"operationId": "get_events"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"oauth": {
|
|
160
|
+
"type": "oauth2",
|
|
161
|
+
"flow": "accessCode",
|
|
162
|
+
"authorizationUrl": "https://simulator.home-connect.com/security/oauth/authorize",
|
|
163
|
+
"tokenUrl": "https://simulator.home-connect.com/security/oauth/token"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"file": "hcsdk-production.yaml",
|
|
168
|
+
"sha256": "a0704118d429eb1a7becf9d624068a2c48ce8d7c0a2250128be2487ff0758c57",
|
|
169
|
+
"swagger": "2.0",
|
|
170
|
+
"host": "api.home-connect.com",
|
|
171
|
+
"basePath": "/api",
|
|
172
|
+
"consumes": [
|
|
173
|
+
"application/vnd.bsh.sdk.v1+json"
|
|
174
|
+
],
|
|
175
|
+
"produces": [
|
|
176
|
+
"application/vnd.bsh.sdk.v1+json"
|
|
177
|
+
],
|
|
178
|
+
"operations": [
|
|
179
|
+
{
|
|
180
|
+
"method": "GET",
|
|
181
|
+
"path": "/api/homeappliances",
|
|
182
|
+
"operationId": "get_home_appliances"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"method": "GET",
|
|
186
|
+
"path": "/api/homeappliances/{haId}",
|
|
187
|
+
"operationId": "get_specific_appliance"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"method": "GET",
|
|
191
|
+
"path": "/api/homeappliances/{haId}/programs",
|
|
192
|
+
"operationId": "get_all_programs"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"method": "GET",
|
|
196
|
+
"path": "/api/homeappliances/{haId}/programs/available",
|
|
197
|
+
"operationId": "get_available_programs"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"method": "GET",
|
|
201
|
+
"path": "/api/homeappliances/{haId}/programs/available/{programkey}",
|
|
202
|
+
"operationId": "get_available_program"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"method": "GET",
|
|
206
|
+
"path": "/api/homeappliances/{haId}/programs/active",
|
|
207
|
+
"operationId": "get_active_program"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"method": "PUT",
|
|
211
|
+
"path": "/api/homeappliances/{haId}/programs/active",
|
|
212
|
+
"operationId": "start_program"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"method": "DELETE",
|
|
216
|
+
"path": "/api/homeappliances/{haId}/programs/active",
|
|
217
|
+
"operationId": "stop_program"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"method": "GET",
|
|
221
|
+
"path": "/api/homeappliances/{haId}/programs/active/options",
|
|
222
|
+
"operationId": "get_active_program_options"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"method": "PUT",
|
|
226
|
+
"path": "/api/homeappliances/{haId}/programs/active/options",
|
|
227
|
+
"operationId": "set_active_program_options"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"method": "GET",
|
|
231
|
+
"path": "/api/homeappliances/{haId}/programs/active/options/{optionkey}",
|
|
232
|
+
"operationId": "get_active_program_option"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"method": "PUT",
|
|
236
|
+
"path": "/api/homeappliances/{haId}/programs/active/options/{optionkey}",
|
|
237
|
+
"operationId": "set_active_program_option"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"method": "GET",
|
|
241
|
+
"path": "/api/homeappliances/{haId}/programs/selected",
|
|
242
|
+
"operationId": "get_selected_program"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"method": "PUT",
|
|
246
|
+
"path": "/api/homeappliances/{haId}/programs/selected",
|
|
247
|
+
"operationId": "set_selected_program"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"method": "GET",
|
|
251
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options",
|
|
252
|
+
"operationId": "get_selected_program_options"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"method": "PUT",
|
|
256
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options",
|
|
257
|
+
"operationId": "set_selected_program_options"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"method": "GET",
|
|
261
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options/{optionkey}",
|
|
262
|
+
"operationId": "get_selected_program_option"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"method": "PUT",
|
|
266
|
+
"path": "/api/homeappliances/{haId}/programs/selected/options/{optionkey}",
|
|
267
|
+
"operationId": "set_selected_program_option"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"method": "GET",
|
|
271
|
+
"path": "/api/homeappliances/{haId}/images",
|
|
272
|
+
"operationId": "get_images"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"method": "GET",
|
|
276
|
+
"path": "/api/homeappliances/{haId}/images/{imagekey}",
|
|
277
|
+
"operationId": "get_image"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"method": "GET",
|
|
281
|
+
"path": "/api/homeappliances/{haId}/settings",
|
|
282
|
+
"operationId": "get_settings"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"method": "PUT",
|
|
286
|
+
"path": "/api/homeappliances/{haId}/settings",
|
|
287
|
+
"operationId": "set_settings"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"method": "GET",
|
|
291
|
+
"path": "/api/homeappliances/{haId}/settings/{settingkey}",
|
|
292
|
+
"operationId": "get_setting"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"method": "PUT",
|
|
296
|
+
"path": "/api/homeappliances/{haId}/settings/{settingkey}",
|
|
297
|
+
"operationId": "set_setting"
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"method": "GET",
|
|
301
|
+
"path": "/api/homeappliances/{haId}/status",
|
|
302
|
+
"operationId": "get_status"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"method": "GET",
|
|
306
|
+
"path": "/api/homeappliances/{haId}/status/{statuskey}",
|
|
307
|
+
"operationId": "get_status_value"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"method": "GET",
|
|
311
|
+
"path": "/api/homeappliances/{haId}/commands",
|
|
312
|
+
"operationId": "get_available_commands"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"method": "PUT",
|
|
316
|
+
"path": "/api/homeappliances/{haId}/commands",
|
|
317
|
+
"operationId": "put_commands"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"method": "PUT",
|
|
321
|
+
"path": "/api/homeappliances/{haId}/commands/{commandkey}",
|
|
322
|
+
"operationId": "put_command"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"method": "GET",
|
|
326
|
+
"path": "/api/homeappliances/events",
|
|
327
|
+
"operationId": "get_all_events"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"method": "GET",
|
|
331
|
+
"path": "/api/homeappliances/{haId}/events",
|
|
332
|
+
"operationId": "get_events"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"method": "GET",
|
|
336
|
+
"path": "/api/homeappliances/{haId}/map/maps",
|
|
337
|
+
"operationId": "get_maps"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"method": "GET",
|
|
341
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}",
|
|
342
|
+
"operationId": "get_map"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"method": "GET",
|
|
346
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/occupancyGrid",
|
|
347
|
+
"operationId": "get_map_occupancy_grid"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"method": "GET",
|
|
351
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/layout",
|
|
352
|
+
"operationId": "get_map_layout"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"method": "GET",
|
|
356
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/cleaningStatus",
|
|
357
|
+
"operationId": "get_map_cleaning_status"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"method": "GET",
|
|
361
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/cleaningStatus/objects",
|
|
362
|
+
"operationId": "get_map_detected_objects"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"method": "GET",
|
|
366
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/cleaningStatus/objects/{objectId}",
|
|
367
|
+
"operationId": "get_map_detected_object"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"method": "GET",
|
|
371
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/rooms",
|
|
372
|
+
"operationId": "get_map_rooms"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"method": "GET",
|
|
376
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/rooms/{roomId}",
|
|
377
|
+
"operationId": "get_map_room"
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"method": "GET",
|
|
381
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/zones",
|
|
382
|
+
"operationId": "get_map_zones"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"method": "GET",
|
|
386
|
+
"path": "/api/homeappliances/{haId}/map/maps/{mapId}/zones/{zoneId}",
|
|
387
|
+
"operationId": "get_map_zone"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"method": "GET",
|
|
391
|
+
"path": "/api/homeappliances/{haId}/map/robot/position",
|
|
392
|
+
"operationId": "get_map_robot_position"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"method": "GET",
|
|
396
|
+
"path": "/api/homeappliances/{haId}/map/config/restrictions",
|
|
397
|
+
"operationId": "get_map_config_restrictions"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"method": "GET",
|
|
401
|
+
"path": "/api/homeappliances/{haId}/map/cleaningSummary",
|
|
402
|
+
"operationId": "get_map_cleaning_summaries"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"method": "GET",
|
|
406
|
+
"path": "/api/homeappliances/{haId}/map/cleaningSummary/{counter}",
|
|
407
|
+
"operationId": "get_map_cleaning_summary"
|
|
408
|
+
}
|
|
409
|
+
],
|
|
410
|
+
"oauth": {
|
|
411
|
+
"type": "oauth2",
|
|
412
|
+
"flow": "accessCode",
|
|
413
|
+
"authorizationUrl": "https://api.home-connect.com/security/oauth/authorize",
|
|
414
|
+
"tokenUrl": "https://api.home-connect.com/security/oauth/token"
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
}
|