{"version":"1.0","operations":[{"id":"discoverCard","method":"GET","path":"/.well-known/heart-card.json","level":"basic","summary":"Public HEART Card","risk":"read","phrases":["who are you","identify yourself"]},{"id":"getCard","method":"GET","path":"/heart/v1/card","level":"connected","summary":"HEART Card at the caller's clearance","risk":"read","phrases":[],"scope":"heart.read"},{"id":"getPulse","method":"GET","path":"/heart/v1/pulse","level":"basic","summary":"Current Pulse","risk":"read","phrases":["how are you","are you ok","is it working","health","status","alive"],"scope":"heart.read"},{"id":"getRhythm","method":"GET","path":"/heart/v1/rhythm","level":"connected","summary":"Event history, or a live stream","risk":"read","phrases":["what happened","recent events","history","timeline"],"scope":"heart.read"},{"id":"listArrhythmias","method":"GET","path":"/heart/v1/arrhythmias","level":"basic","summary":"List alerts","risk":"read","phrases":["what is wrong","any problems","alarms","alerts","faults","issues"],"scope":"heart.read"},{"id":"postArrhythmias","method":"POST","path":"/heart/v1/arrhythmias","level":"connected","summary":"Report a problem to the system","risk":"write","phrases":["i want to report","report a problem","something is broken"],"scope":"heart.tend"},{"id":"getArrhythmia","method":"GET","path":"/heart/v1/arrhythmias/{id}","level":"basic","summary":"Get one alert","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"acknowledgeArrhythmia","method":"POST","path":"/heart/v1/arrhythmias/{id}/acknowledge","level":"connected","summary":"Acknowledge an alert","risk":"write","phrases":[],"params":["id"],"scope":"heart.tend"},{"id":"invokeCapability","method":"POST","path":"/heart/v1/capabilities/{name}/invoke","level":"full","summary":"Invoke a capability","risk":"per-item","phrases":[],"params":["name"],"scope":"heart.invoke"},{"id":"listActions","method":"GET","path":"/heart/v1/actions","level":"basic","summary":"List actions","risk":"read","phrases":[],"scope":"heart.read"},{"id":"getAction","method":"GET","path":"/heart/v1/actions/{id}","level":"basic","summary":"Get one action","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"decideAction","method":"POST","path":"/heart/v1/actions/{id}/decision","level":"basic","summary":"Approve, deny or cancel an action","risk":"none","phrases":[],"params":["id"],"scope":"heart.approve"},{"id":"ask","method":"POST","path":"/heart/v1/ask","level":"connected","summary":"Ask the HEART about its system","risk":"read","phrases":[],"scope":"heart.ask"},{"id":"reason","method":"POST","path":"/heart/v1/reason","level":"reasoning-gateway","summary":"Provider-neutral reasoning call","risk":"read","phrases":[],"scope":"heart.reason"},{"id":"receiveMessage","method":"POST","path":"/heart/v1/inbox","level":"connected","summary":"Receive a HEART message from a peer","risk":"read","phrases":[],"scope":"heart.send"},{"id":"listSubscriptions","method":"GET","path":"/heart/v1/subscriptions","level":"connected","summary":"List the caller's subscriptions","risk":"read","phrases":[],"scope":"heart.subscribe"},{"id":"createSubscription","method":"POST","path":"/heart/v1/subscriptions","level":"connected","summary":"Subscribe a webhook","risk":"write","phrases":[],"scope":"heart.subscribe"},{"id":"deleteSubscription","method":"DELETE","path":"/heart/v1/subscriptions/{id}","level":"connected","summary":"Remove a subscription","risk":"write","phrases":[],"params":["id"],"scope":"heart.subscribe"},{"id":"getSubscriptionsId","method":"GET","path":"/heart/v1/subscriptions/{id}","level":"connected","summary":"One subscription","risk":"read","phrases":[],"params":["id"],"scope":"heart.subscribe"},{"id":"patchSubscriptionsId","method":"PATCH","path":"/heart/v1/subscriptions/{id}","level":"connected","summary":"Pause or resume a subscription","risk":"write","phrases":["pause notifications","pause the webhook","resume notifications"],"params":["id"],"scope":"heart.subscribe"},{"id":"listReceipts","method":"GET","path":"/heart/v1/receipts","level":"connected","summary":"List Valve receipts","risk":"read","phrases":["what data left","what was sent to the cloud"],"scope":"heart.read"},{"id":"getEvolution","method":"GET","path":"/heart/v1/evolution","level":"full","summary":"Model pins, candidates and regression results","risk":"read","phrases":["which model","what ai model"],"scope":"heart.read"},{"id":"listSystems","method":"GET","path":"/heart/v1/systems","level":"heart-gateway","summary":"Every hosted system's HEART Card","risk":"read","phrases":[],"scope":"heart.read"},{"id":"getCapabilities","method":"GET","path":"/heart/v1/capabilities","level":"connected","summary":"Search capabilities (q, kind, risk)","risk":"read","phrases":["what can you do","help","commands","abilities"],"scope":"heart.read"},{"id":"getCapabilitiesName","method":"GET","path":"/heart/v1/capabilities/{name}","level":"connected","summary":"One capability","risk":"read","phrases":[],"params":["name"],"scope":"heart.read"},{"id":"postArrhythmiasIdResolve","method":"POST","path":"/heart/v1/arrhythmias/{id}/resolve","level":"connected","summary":"Mark an alert resolved","risk":"write","phrases":[],"params":["id"],"scope":"heart.tend"},{"id":"postArrhythmiasIdSilence","method":"POST","path":"/heart/v1/arrhythmias/{id}/silence","level":"connected","summary":"Silence repeats of an alert for a period","risk":"write","phrases":[],"params":["id"],"scope":"heart.tend"},{"id":"deleteArrhythmiasIdSilence","method":"DELETE","path":"/heart/v1/arrhythmias/{id}/silence","level":"connected","summary":"End a silence early","risk":"write","phrases":["unmute the alarm","stop silencing","end the silence"],"params":["id"],"scope":"heart.tend"},{"id":"getComponents","method":"GET","path":"/heart/v1/components","level":"module-inventory","summary":"Everything inside the system, as a tree","risk":"read","phrases":["parts","what is inside","modules installed","sensors attached"],"scope":"heart.read"},{"id":"getComponentsId","method":"GET","path":"/heart/v1/components/{id}","level":"module-inventory","summary":"One component and its status","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"getDependencies","method":"GET","path":"/heart/v1/dependencies","level":"module-inventory","summary":"External services and systems it relies on","risk":"read","phrases":["what does it depend on","external services"],"scope":"heart.read"},{"id":"getProperties","method":"GET","path":"/heart/v1/properties","level":"module-properties","summary":"All readable values","risk":"read","phrases":["readings","current values","sensor values"],"scope":"heart.read"},{"id":"getPropertiesName","method":"GET","path":"/heart/v1/properties/{name}","level":"module-properties","summary":"Read one value, or stream it","risk":"read","phrases":[],"params":["name"],"scope":"heart.read"},{"id":"putPropertiesName","method":"PUT","path":"/heart/v1/properties/{name}","level":"module-properties","summary":"Write one value","risk":"write","phrases":[],"params":["name"],"scope":"heart.configure"},{"id":"getConfig","method":"GET","path":"/heart/v1/config","level":"module-config","summary":"Current configuration","risk":"read","phrases":["settings","configuration"],"scope":"heart.read"},{"id":"patchConfig","method":"PATCH","path":"/heart/v1/config","level":"module-config","summary":"Change settings (JSON Merge Patch)","risk":"write","phrases":["change setting","change the configuration","set the option"],"scope":"heart.configure"},{"id":"postConfigValidate","method":"POST","path":"/heart/v1/config/validate","level":"module-config","summary":"Check settings without applying them","risk":"read","phrases":[],"scope":"heart.configure"},{"id":"getConfigHistory","method":"GET","path":"/heart/v1/config/history","level":"module-config","summary":"Earlier revisions","risk":"read","phrases":[],"scope":"heart.read"},{"id":"postConfigRollback","method":"POST","path":"/heart/v1/config/rollback","level":"module-config","summary":"Return to an earlier revision","risk":"write","phrases":["undo the settings","restore old settings"],"scope":"heart.configure"},{"id":"getMetrics","method":"GET","path":"/heart/v1/metrics","level":"module-telemetry","summary":"List metrics","risk":"read","phrases":["metrics","graphs","trends"],"scope":"heart.read"},{"id":"getMetricsName","method":"GET","path":"/heart/v1/metrics/{name}","level":"module-telemetry","summary":"Time series (from, to, step)","risk":"read","phrases":[],"params":["name"],"scope":"heart.read"},{"id":"getLogs","method":"GET","path":"/heart/v1/logs","level":"module-telemetry","summary":"Read or stream logs","risk":"read","phrases":["logs","log file","debug output"],"scope":"heart.read"},{"id":"getDiagnostics","method":"GET","path":"/heart/v1/diagnostics","level":"module-diagnostics","summary":"Available tests and past runs","risk":"read","phrases":["which tests","available tests"],"scope":"heart.read"},{"id":"postDiagnosticsBundle","method":"POST","path":"/heart/v1/diagnostics/bundle","level":"module-diagnostics","summary":"Build a support bundle","risk":"read","phrases":["support bundle","send logs to support","collect debug information"],"scope":"heart.operate"},{"id":"postDiagnosticsTest","method":"POST","path":"/heart/v1/diagnostics/{test}","level":"module-diagnostics","summary":"Run a self-test","risk":"per-item","phrases":["run a self test","test yourself","check the hardware","run diagnostics"],"params":["test"],"scope":"heart.operate"},{"id":"getLifecycle","method":"GET","path":"/heart/v1/lifecycle","level":"module-lifecycle","summary":"Current phase and allowed operations","risk":"read","phrases":[],"scope":"heart.read"},{"id":"postLifecycleOperation","method":"POST","path":"/heart/v1/lifecycle/{operation}","level":"module-lifecycle","summary":"restart, shutdown, sleep, wake, drain, reload, power-cycle, safe-mode, maintenance-on, maintenance-off, partial resets, factory-reset, decommission","risk":"per-item","phrases":["restart","reboot","force restart","hard reboot","power cycle","shut down","turn off","sleep","wake","safe mode","drain","stop taking new work","factory reset","reset the settings","reset the network","maintenance mode","decommission"],"params":["operation"],"scope":"heart.operate"},{"id":"getSoftware","method":"GET","path":"/heart/v1/software","level":"module-software","summary":"Installed software and firmware","risk":"read","phrases":["firmware version","what version","installed software"],"scope":"heart.read"},{"id":"getSoftwareSbom","method":"GET","path":"/heart/v1/software/sbom","level":"module-software","summary":"Software bill of materials (SPDX or CycloneDX)","risk":"read","phrases":["bill of materials","sbom","open source components"],"scope":"heart.read"},{"id":"getSoftwareUpdates","method":"GET","path":"/heart/v1/software/updates","level":"module-software","summary":"Available updates, update channel and policy","risk":"read","phrases":["any updates","check for updates","available updates","is there a new version"],"scope":"heart.read"},{"id":"postSoftwareUpdates","method":"POST","path":"/heart/v1/software/updates","level":"module-software","summary":"Start a signed update","risk":"destructive","phrases":["update firmware","upgrade","install new version","patch"],"scope":"heart.operate"},{"id":"getSoftwareUpdatesId","method":"GET","path":"/heart/v1/software/updates/{id}","level":"module-software","summary":"Update progress","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"postSoftwareRollback","method":"POST","path":"/heart/v1/software/rollback","level":"module-software","summary":"Return to the previous version","risk":"write","phrases":["undo the update","previous firmware","downgrade"],"scope":"heart.operate"},{"id":"getArtifacts","method":"GET","path":"/heart/v1/artifacts","level":"module-artifacts","summary":"List stored files","risk":"read","phrases":["stored files","recordings","reports available"],"scope":"heart.read"},{"id":"postArtifacts","method":"POST","path":"/heart/v1/artifacts","level":"module-artifacts","summary":"Upload a file","risk":"write","phrases":["upload a file"],"scope":"heart.configure"},{"id":"getArtifactsId","method":"GET","path":"/heart/v1/artifacts/{id}","level":"module-artifacts","summary":"File details","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"deleteArtifactsId","method":"DELETE","path":"/heart/v1/artifacts/{id}","level":"module-artifacts","summary":"Delete a file","risk":"write","phrases":[],"params":["id"],"scope":"heart.configure"},{"id":"getArtifactsIdContent","method":"GET","path":"/heart/v1/artifacts/{id}/content","level":"module-artifacts","summary":"Download, with HTTP range support","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"getSchedules","method":"GET","path":"/heart/v1/schedules","level":"module-schedules","summary":"List schedules and maintenance windows","risk":"read","phrases":["what is scheduled","planned jobs"],"scope":"heart.read"},{"id":"postSchedules","method":"POST","path":"/heart/v1/schedules","level":"module-schedules","summary":"Schedule any operation for later","risk":"per-item","phrases":["do this later","tonight","every sunday","schedule","maintenance window"],"scope":"heart.configure"},{"id":"getSchedulesId","method":"GET","path":"/heart/v1/schedules/{id}","level":"module-schedules","summary":"One schedule","risk":"read","phrases":[],"params":["id"],"scope":"heart.read"},{"id":"deleteSchedulesId","method":"DELETE","path":"/heart/v1/schedules/{id}","level":"module-schedules","summary":"Remove a schedule","risk":"write","phrases":[],"params":["id"],"scope":"heart.configure"},{"id":"getTendingAutonomy","method":"GET","path":"/heart/v1/tending/autonomy","level":"module-control","summary":"Autonomy now: the ceiling a person set, the current level and the mode that follows from it","risk":"read","phrases":[],"scope":"heart.read"},{"id":"putTendingAutonomy","method":"PUT","path":"/heart/v1/tending/autonomy","level":"module-control","summary":"Set the autonomy ceiling, 0 to 5","risk":"per-item","phrases":["only suggest","ask me first","autonomy","let it act"],"scope":"heart.tend"},{"id":"putTendingAllowlist","method":"PUT","path":"/heart/v1/tending/allowlist","level":"module-control","summary":"Replace the allowlist of write actions that may run without asking","risk":"per-item","phrases":[],"scope":"heart.admin"},{"id":"postTendingStop","method":"POST","path":"/heart/v1/tending/stop","level":"module-control","summary":"Stop all autonomous action at once","risk":"read","phrases":["stop acting","emergency stop for the ai","hands off","stop what you are doing","do nothing on your own","stop autonomy","stop all automatic actions"],"scope":"heart.tend"},{"id":"getTendingRules","method":"GET","path":"/heart/v1/tending/rules","level":"module-control","summary":"List Tending rules","risk":"read","phrases":[],"scope":"heart.read"},{"id":"putTendingRulesId","method":"PUT","path":"/heart/v1/tending/rules/{id}","level":"module-control","summary":"Add or change a rule","risk":"destructive","phrases":[],"params":["id"],"scope":"heart.admin"},{"id":"deleteTendingRulesId","method":"DELETE","path":"/heart/v1/tending/rules/{id}","level":"module-control","summary":"Remove a rule","risk":"write","phrases":[],"params":["id"],"scope":"heart.admin"},{"id":"postTendingProposals","method":"POST","path":"/heart/v1/tending/proposals","level":"module-control","summary":"Deliver a brain's Proposal. It becomes an Action with initiator ai, which passes the gate (Core Standard 7.3).","risk":"write","phrases":[],"scope":"heart.propose"},{"id":"getTendingTrialsId","method":"GET","path":"/heart/v1/tending/trials/{id}","level":"module-control","summary":"One Trial, as heart.trial (Core Standard 7.5)","risk":"read","phrases":["show the trial","did the fix work","how did the change go"],"params":["id"],"scope":"heart.read"},{"id":"getValvePolicy","method":"GET","path":"/heart/v1/valve/policy","level":"module-privacy","summary":"Current Valve policy","risk":"read","phrases":[],"scope":"heart.read"},{"id":"putValvePolicy","method":"PUT","path":"/heart/v1/valve/policy","level":"module-privacy","summary":"Change Valve policy","risk":"per-item","phrases":[],"scope":"heart.admin"},{"id":"getConsents","method":"GET","path":"/heart/v1/consents","level":"module-privacy","summary":"List consents","risk":"read","phrases":[],"scope":"heart.read"},{"id":"postConsents","method":"POST","path":"/heart/v1/consents","level":"module-privacy","summary":"Record a consent","risk":"write","phrases":["i agree","give consent"],"scope":"heart.data"},{"id":"deleteConsentsId","method":"DELETE","path":"/heart/v1/consents/{id}","level":"module-privacy","summary":"Withdraw a consent","risk":"write","phrases":[],"params":["id"],"scope":"heart.data"},{"id":"postDataExport","method":"POST","path":"/heart/v1/data/export","level":"module-privacy","summary":"Export one person's data","risk":"read","phrases":["download my data","export my data","copy of my data"],"scope":"heart.data"},{"id":"postDataErase","method":"POST","path":"/heart/v1/data/erase","level":"module-privacy","summary":"Erase one person's data","risk":"destructive","phrases":["delete my data","forget me","erase my information"],"scope":"heart.data"},{"id":"getBrain","method":"GET","path":"/heart/v1/brain","level":"module-brain","summary":"Whether it may consult a brain now, under which lease, and why not","risk":"read","phrases":["brain status","is the brain cut","brain lease","kill switch","which models are allowed"],"scope":"heart.read"},{"id":"postBrainSignal","method":"POST","path":"/heart/v1/brain/signal","level":"module-brain","summary":"A signed signal from the Command Center that only lowers risk (brain-off, revoke-model, revoke-use, autonomy-stop)","risk":"read","phrases":[]},{"id":"postBrainRestore","method":"POST","path":"/heart/v1/brain/restore","level":"module-brain","summary":"The owner lets the brain come back after a cut; the next valid lease is then accepted","risk":"destructive","phrases":["restore the brain","bring the brain back","undo the brain cut"],"scope":"heart.admin"},{"id":"putBrainOffline","method":"PUT","path":"/heart/v1/brain/offline","level":"module-brain","summary":"Turn auto mode on or off (a local model may go on, narrowing, while the link is lost)","risk":"per-item","phrases":["auto mode","offline brain","think without internet","turn off auto mode"],"scope":"heart.tend"},{"id":"getAiPolicy","method":"GET","path":"/heart/v1/ai/policy","level":"module-ai","summary":"Providers, budgets and regions","risk":"read","phrases":[],"scope":"heart.read"},{"id":"putAiPolicy","method":"PUT","path":"/heart/v1/ai/policy","level":"module-ai","summary":"Change them","risk":"destructive","phrases":["change budget","use another ai provider","spending limit"],"scope":"heart.admin"},{"id":"getAiUsage","method":"GET","path":"/heart/v1/ai/usage","level":"module-ai","summary":"Calls, tokens and cost over time","risk":"read","phrases":["how much ai cost","ai spending","token usage"],"scope":"heart.read"},{"id":"getMemory","method":"GET","path":"/heart/v1/memory","level":"module-memory","summary":"List stored memory","risk":"read","phrases":[],"scope":"heart.read"},{"id":"postMemorySearch","method":"POST","path":"/heart/v1/memory/search","level":"module-memory","summary":"Search memory","risk":"read","phrases":[],"scope":"heart.read"},{"id":"deleteMemoryId","method":"DELETE","path":"/heart/v1/memory/{id}","level":"module-memory","summary":"Forget one item","risk":"write","phrases":[],"params":["id"],"scope":"heart.data"},{"id":"putEvolutionPinsPurpose","method":"PUT","path":"/heart/v1/evolution/pins/{purpose}","level":"module-evolving","summary":"Pin a model for a purpose","risk":"destructive","phrases":[],"params":["purpose"],"scope":"heart.admin"},{"id":"postEvolutionRollback","method":"POST","path":"/heart/v1/evolution/rollback","level":"module-evolving","summary":"Return to the previous pin","risk":"write","phrases":[],"scope":"heart.admin"},{"id":"getEvolutionLessons","method":"GET","path":"/heart/v1/evolution/lessons","level":"module-evolving","summary":"What it has learned from incidents","risk":"read","phrases":[],"scope":"heart.read"},{"id":"postFeedback","method":"POST","path":"/heart/v1/feedback","level":"module-evolving","summary":"Rate an answer or action","risk":"read","phrases":["that was wrong","good answer","bad answer"],"scope":"heart.ask"},{"id":"getSecurity","method":"GET","path":"/heart/v1/security","level":"module-security","summary":"Certificates, keys and boot state","risk":"read","phrases":["certificate expiry","secure boot"],"scope":"heart.read"},{"id":"getSecurityAttestation","method":"GET","path":"/heart/v1/security/attestation","level":"module-security","summary":"Evidence of what is running (RFC 9334)","risk":"read","phrases":[],"scope":"heart.read"},{"id":"postSecurityRotate","method":"POST","path":"/heart/v1/security/rotate","level":"module-security","summary":"Rotate the identity key","risk":"destructive","phrases":["rotate keys","renew certificate","change the keys"],"scope":"heart.admin"},{"id":"getAudit","method":"GET","path":"/heart/v1/audit","level":"module-security","summary":"Tamper-evident audit log","risk":"read","phrases":["who changed","who did this","audit","access log"],"scope":"heart.read"},{"id":"getPresenceMethods","method":"GET","path":"/heart/v1/presence/methods","level":"module-presence","summary":"Enrolled ways to prove presence, without key material","risk":"read","phrases":["my passkeys","how can i approve"],"scope":"heart.admin"},{"id":"postPresenceMethods","method":"POST","path":"/heart/v1/presence/methods","level":"module-presence","summary":"Enrol a passkey or a CIBA device for the calling person","risk":"destructive","phrases":["add a passkey","register my phone for approvals"],"scope":"heart.admin"},{"id":"deletePresenceMethodsId","method":"DELETE","path":"/heart/v1/presence/methods/{id}","level":"module-presence","summary":"Remove a way to prove presence","risk":"write","phrases":[],"params":["id"],"scope":"heart.admin"},{"id":"getPlatform","method":"GET","path":"/heart/v1/platform","level":"module-platform","summary":"Hardware, OS, power, network and clock","risk":"read","phrases":["battery","power source","wifi signal","network","clock","time sync","hardware model"],"scope":"heart.read"},{"id":"postProvisioningClaim","method":"POST","path":"/heart/v1/provisioning/claim","level":"module-provisioning","summary":"First-time claim by an owner","risk":"destructive","phrases":[]},{"id":"postProvisioningTransfer","method":"POST","path":"/heart/v1/provisioning/transfer","level":"module-provisioning","summary":"Transfer to a new owner","risk":"destructive","phrases":[],"scope":"heart.admin"},{"id":"postProvisioningRelease","method":"POST","path":"/heart/v1/provisioning/release","level":"module-provisioning","summary":"Give the system up without naming a new owner","risk":"destructive","phrases":["give up ownership","release the device","i sold it"],"scope":"heart.admin"},{"id":"getAccessGrants","method":"GET","path":"/heart/v1/access/grants","level":"module-access","summary":"Who may call the system, and with which client certificate","risk":"read","phrases":["who has access","who can use it"],"scope":"heart.admin"},{"id":"putAccessGrantsPrincipal","method":"PUT","path":"/heart/v1/access/grants/{principal}","level":"module-access","summary":"Give a principal a role, or change its grant","risk":"per-item","phrases":["give access","share with the installer"],"params":["principal"],"scope":"heart.admin"},{"id":"deleteAccessGrantsPrincipal","method":"DELETE","path":"/heart/v1/access/grants/{principal}","level":"module-access","summary":"Remove a principal's grant","risk":"write","phrases":["remove access","revoke access"],"params":["principal"],"scope":"heart.admin"},{"id":"getPeers","method":"GET","path":"/heart/v1/peers","level":"module-peers","summary":"Known peers and their trust","risk":"read","phrases":["who do you trust","connected systems"],"scope":"heart.read"},{"id":"putPeersId","method":"PUT","path":"/heart/v1/peers/{id}","level":"module-peers","summary":"Trust a peer or set its clearance","risk":"destructive","phrases":[],"params":["id"],"scope":"heart.admin"},{"id":"deletePeersId","method":"DELETE","path":"/heart/v1/peers/{id}","level":"module-peers","summary":"Remove a peer","risk":"write","phrases":[],"params":["id"],"scope":"heart.admin"},{"id":"postBatch","method":"POST","path":"/heart/v1/batch","level":"module-batch","summary":"Several operations in one call","risk":"per-item","phrases":[],"scope":"heart.read"},{"id":"getFleetCommands","method":"GET","path":"/heart/v1/fleet/commands","level":"module-fleet","summary":"List fleet commands","risk":"read","phrases":[],"scope":"heart.fleet"},{"id":"postFleetCommands","method":"POST","path":"/heart/v1/fleet/commands","level":"module-fleet","summary":"Run one operation across selected systems, in stages","risk":"per-item","phrases":["all devices","every unit","whole fleet","all systems at the site"],"scope":"heart.fleet"},{"id":"getFleetCommandsId","method":"GET","path":"/heart/v1/fleet/commands/{id}","level":"module-fleet","summary":"Progress per system","risk":"read","phrases":[],"params":["id"],"scope":"heart.fleet"},{"id":"postFleetCommandsIdControl","method":"POST","path":"/heart/v1/fleet/commands/{id}/{control}","level":"module-fleet","summary":"Pause, resume or cancel a fleet command","risk":"per-item","phrases":["pause the rollout","stop the rollout","resume the rollout","cancel the rollout"],"params":["id","control"],"scope":"heart.fleet"},{"id":"deleteSystemsRef","method":"DELETE","path":"/heart/v1/systems/{ref}","level":"module-fleet","summary":"Remove a system from the Gateway","risk":"write","phrases":[],"params":["ref"],"scope":"heart.fleet"},{"id":"getCustom","method":"GET","path":"/heart/v1/custom","level":"module-custom","summary":"List custom definitions","risk":"read","phrases":[],"scope":"heart.read"},{"id":"getCustomName","method":"GET","path":"/heart/v1/custom/{name}","level":"module-custom","summary":"One definition","risk":"read","phrases":[],"params":["name"],"scope":"heart.read"},{"id":"putCustomName","method":"PUT","path":"/heart/v1/custom/{name}","level":"module-custom","summary":"Add or change a definition","risk":"destructive","phrases":[],"params":["name"],"scope":"heart.configure"},{"id":"deleteCustomName","method":"DELETE","path":"/heart/v1/custom/{name}","level":"module-custom","summary":"Remove a definition","risk":"write","phrases":[],"params":["name"],"scope":"heart.configure"},{"id":"postCustomNamePreview","method":"POST","path":"/heart/v1/custom/{name}/preview","level":"module-custom","summary":"Show the exact native request, without sending it","risk":"read","phrases":[],"params":["name"],"scope":"heart.configure"},{"id":"postNativeProtocol","method":"POST","path":"/heart/v1/native/{protocol}","level":"module-native","summary":"Send one raw native request","risk":"destructive","phrases":[],"params":["protocol"],"scope":"heart.native"},{"id":"serve","method":"POST","path":"/heart/v1/serve","level":"module-core","summary":"Understand a plain request, check it and carry it out","risk":"per-item","phrases":[],"scope":"heart.ask"},{"id":"getCore","method":"GET","path":"/heart/v1/core","level":"module-core","summary":"Core class, active tier and index version","risk":"read","phrases":[],"scope":"heart.read"},{"id":"getCoreIndex","method":"GET","path":"/heart/v1/core/index","level":"module-core","summary":"The API Index this Core understands","risk":"read","phrases":[],"scope":"heart.read"}]}
