Skip to content
v0.3

tenant.store.update

Update a store (partial; omitted fields keep their value). Setting host repoints where the storefront serves it; clearing it takes the store off routing. theme_key re-skins the store — it names a theme folder the storefront resolves, so an unknown name is accepted here and falls back there. notification_sender_name and notification_reply_to are the identity this store’s transactional messages are sent WITH: the display name in front of the instance’s address, and where a reply goes. Both fall back to the instance when unset (the store’s own name, then the tenant’s name), and both are cleared by sending an empty string. The mail transport’s credential is never a field here — it stays in the instance’s environment.

  • Scope: tenant.store.write
  • System: no
  • Reachable from: POST /v1/commands/tenant.store.update (tenant credential) · MCP tool tenant.store.update · SDK client.call('tenant.store.update', …)
  • Events: tenant.store.updated
{
"properties": {
"guest_checkout_enabled": {
"type": "boolean"
},
"host": {
"type": "string"
},
"id": {
"minLength": 1,
"type": "string"
},
"masked_checkout_enabled": {
"type": "boolean"
},
"name": {
"minLength": 1,
"type": "string"
},
"notification_reply_to": {
"anyOf": [
{
"const": "",
"type": "string"
},
{
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
}
]
},
"notification_sender_name": {
"maxLength": 120,
"type": "string"
},
"theme_key": {
"minLength": 1,
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
}
{
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
}

validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)