11. Try the same action with OpenApp Scripting
For normal app code, prefer direct SDK methods such as client.entities.actions(...). OpenApp Scripting is useful when you want a script that chains several OpenApp operations (the SDK exposes it as client.scripting).
The previous step, The same call from the SDK, already showed client.scripting.execute for opening the demo door — with the script as a string, or read from a .openapp file. Here is the same pattern end to end:
from openapp_sdk import Client
ENTITY_ID = "paste-your-entity-id-here"API_KEY = "paste-your-full-api-key-here"
client = Client.connect(api_key=API_KEY)result = client.scripting.execute( script=f'entity_action("{ENTITY_ID}", "switchable.open", #{{}});')print(result)Or save the script in open-door.openapp:
entity_action("paste-your-entity-id-here", "switchable.open", #{});Then read that file and run it through the SDK:
from pathlib import Path
from openapp_sdk import Client
API_KEY = "paste-your-full-api-key-here"
client = Client.connect(api_key=API_KEY)result = client.scripting.execute(script=Path("open-door.openapp").read_text())print(result)Scripting runs as an asynchronous execution: execute submits the program, waits for the job to finish, and returns the script’s result. Use create_execution plus get_execution when you want the job itself — to watch progress, or to stop it with cancel_execution. Cancellation is cooperative and doesn’t roll back what the program already did. See Canceling an execution for the full lifecycle.
You have traced the same open-door action from dashboard and portal through curl, the SDK, and an OpenApp Scripting program—plus the earlier path from account and org to integrations, entities, and Virtual Access. Next steps points to deeper guides, production hardware and orgs, and the full reference surface.