{"openapi":"3.1.0","info":{"title":"Life Admin API","version":"1.0.0","description":"REST API exposing the actions of the Life Admin product. Authenticate with a Kavaro API key as a bearer token."},"servers":[{"url":"https://kavaro.ai"}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","description":"A Kavaro API key (user- or organization-scoped)."}}},"security":[{"ApiKeyAuth":[]}],"paths":{"/api/rest/actions/list_life_documents":{"post":{"operationId":"list_life_documents","summary":"List documents","description":"List stored household documents and policies (passports, driving licences, insurance, warranties, visas, vaccinations, ID cards) — the records kept in the product, NOT files attached to the current chat (those are listed by list_attached_documents) — with their id, category, holder, expiry and status. Optionally filter by category, holder, or only those expiring within `expiringInDays` days.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["documents:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"description":"Only documents of this category","type":"string","enum":["passport","driving_licence","insurance","warranty","visa","vaccination","id_card","other"]},"holder":{"description":"Only documents for this family member (case-insensitive)","type":"string"},"expiringInDays":{"description":"Only documents expiring within this many days (includes already-expired)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"description":"Max documents to return; defaults to 100","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/get_document":{"post":{"operationId":"get_document","summary":"Inspect document","description":"Get one document with all its fields and its file attachments. Use this to obtain ids and details before editing or sharing.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["documents:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentId":{"type":"string","description":"The document to inspect"}},"required":["documentId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/list_subscriptions":{"post":{"operationId":"list_subscriptions","summary":"List subscriptions","description":"List subscriptions and recurring payments (id, name, vendor, category, amount, currency, cadence, next charge, last used, status). Optionally filter by status, or only those not used in the last `unusedForDays` days (for 'which subscriptions haven't I used in 3 months?').","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["subscriptions:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"description":"Only subscriptions with this status","type":"string","enum":["active","paused","cancelled"]},"category":{"description":"Only subscriptions of this category","type":"string","enum":["streaming","software","utility","insurance","membership","finance","other"]},"unusedForDays":{"description":"Only active subscriptions whose lastUsedAt is older than this many days (or never recorded)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"description":"Max to return; defaults to 100","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/list_properties":{"post":{"operationId":"list_properties","summary":"List homes","description":"List the household's homes/properties with their id, name and address.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/get_property":{"post":{"operationId":"get_property","summary":"Inspect home","description":"Get one home with all its services (utilities, broadband, mortgage/rent, appliances) and any documents attached to it.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string","description":"The property to inspect"}},"required":["propertyId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/list_vehicles":{"post":{"operationId":"list_vehicles","summary":"List vehicles","description":"List the household's vehicles with their id, name, registration and renewal due dates (MOT/inspection, tax, insurance, service).","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["vehicles:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/get_vehicle":{"post":{"operationId":"get_vehicle","summary":"Inspect vehicle","description":"Get one vehicle with all its renewal dates and its linked policy documents.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["vehicles:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"vehicleId":{"type":"string","description":"The vehicle to inspect"}},"required":["vehicleId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/list_trips":{"post":{"operationId":"list_trips","summary":"List trips","description":"List planned trips with id, destination, country and travel dates.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["travel:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"description":"Only trips with this status","type":"string","enum":["planned","booked","completed","cancelled"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/get_trip":{"post":{"operationId":"get_trip","summary":"Inspect trip","description":"Get one trip with its travel-readiness checklist: which documents (passport, visa, travel insurance, vaccinations) expire before departure and which are missing.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["travel:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tripId":{"type":"string","description":"The trip to inspect"}},"required":["tripId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/get_timeline":{"post":{"operationId":"get_timeline","summary":"Upcoming renewals & costs","description":"Get the household's upcoming renewals and expiries across everything (documents, subscriptions, home services, vehicle obligations) within `daysAhead` days, plus a recurring-cost summary (annual and monthly totals per currency). Use this for 'what's renewing/expiring soon?' and 'how much do I spend on recurring services every year?'.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["timeline:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"daysAhead":{"description":"How far ahead to include upcoming items; defaults to 90","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/trip_readiness":{"post":{"operationId":"trip_readiness","summary":"What expires before a trip","description":"Given a trip (by id, or a destination + departure date), return which documents will be expired or expiring around the departure date — passport validity, visas, travel insurance and vaccinations — so you can answer 'what expires before my trip to X?'.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["travel:view"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tripId":{"description":"An existing trip to check","type":"string"},"destination":{"description":"Destination, when not using an existing trip","type":"string"},"departAt":{"description":"Departure date (ISO) when not using an existing trip","type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/create_document":{"post":{"operationId":"create_document","summary":"Add document","description":"Store a new document/policy with its expiry to track.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["documents:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","description":"Short title, e.g. 'Anna's passport' or 'Home insurance'"},"category":{"description":"Defaults to other","type":"string","enum":["passport","driving_licence","insurance","warranty","visa","vaccination","id_card","other"]},"holder":{"description":"Which family member it belongs to","type":"string"},"reference":{"description":"Document/policy/certificate number","type":"string"},"issuer":{"description":"Issuing authority or insurer","type":"string"},"country":{"type":"string"},"issuedAt":{"description":"Issue date (ISO)","type":"string"},"expiresAt":{"description":"Expiry/renewal date (ISO)","type":"string"},"reminderLeadDays":{"description":"Days before expiry to start reminding; defaults to 30","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vehicleId":{"description":"Link this policy/warranty to a vehicle","type":"string"},"propertyId":{"description":"Link this policy/warranty to a home","type":"string"},"notes":{"type":"string"}},"required":["title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/update_document":{"post":{"operationId":"update_document","summary":"Update document","description":"Update fields on a stored document.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["documents:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentId":{"type":"string"},"title":{"type":"string"},"category":{"type":"string","enum":["passport","driving_licence","insurance","warranty","visa","vaccination","id_card","other"]},"holder":{"type":"string"},"reference":{"type":"string"},"issuer":{"type":"string"},"country":{"type":"string"},"issuedAt":{"type":"string"},"expiresAt":{"type":"string"},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["active","expired","archived"]},"vehicleId":{"type":"string"},"propertyId":{"type":"string"},"notes":{"type":"string"}},"required":["documentId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/delete_document":{"post":{"operationId":"delete_document","summary":"Delete document","description":"Permanently delete a stored document.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["documents:delete"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentId":{"type":"string"}},"required":["documentId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/share_document":{"post":{"operationId":"share_document","summary":"Share document","description":"Share a document with another household member (by their user id or email) so they can view it.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["documents:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentId":{"type":"string"},"userId":{"description":"The user id to share with","type":"string"},"email":{"description":"The email of the person to share with","type":"string"},"role":{"description":"Defaults to viewer","type":"string","enum":["viewer","editor"]}},"required":["documentId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/create_subscription":{"post":{"operationId":"create_subscription","summary":"Add subscription","description":"Track a new subscription or recurring payment.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["subscriptions:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"vendor":{"type":"string"},"category":{"type":"string","enum":["streaming","software","utility","insurance","membership","finance","other"]},"amount":{"description":"Amount per billing period","type":"number"},"currency":{"description":"Defaults to EUR","type":"string","enum":["EUR","USD","GBP","DKK"]},"cadence":{"description":"Billing cadence; defaults to monthly","type":"string","enum":["weekly","monthly","quarterly","yearly","one_off"]},"nextChargeAt":{"description":"Next charge date (ISO)","type":"string"},"startedAt":{"type":"string"},"lastUsedAt":{"description":"When it was last used","type":"string"},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/update_subscription":{"post":{"operationId":"update_subscription","summary":"Update subscription","description":"Update a subscription — including marking it used today, pausing or cancelling it.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["subscriptions:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string"},"name":{"type":"string"},"vendor":{"type":"string"},"category":{"type":"string","enum":["streaming","software","utility","insurance","membership","finance","other"]},"amount":{"type":"number"},"currency":{"type":"string","enum":["EUR","USD","GBP","DKK"]},"cadence":{"type":"string","enum":["weekly","monthly","quarterly","yearly","one_off"]},"nextChargeAt":{"type":"string"},"startedAt":{"type":"string"},"lastUsedAt":{"type":"string"},"status":{"type":"string","enum":["active","paused","cancelled"]},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["subscriptionId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/delete_subscription":{"post":{"operationId":"delete_subscription","summary":"Delete subscription","description":"Permanently delete a subscription.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["subscriptions:delete"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string"}},"required":["subscriptionId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/create_property":{"post":{"operationId":"create_property","summary":"Add home","description":"Add a home/property to track.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","description":"e.g. 'Home' or '12 Oak Street'"},"addressLine":{"type":"string"},"latitude":{"description":"Geocoded latitude of the address (for the map)","type":"number"},"longitude":{"description":"Geocoded longitude of the address (for the map)","type":"number"},"tenure":{"description":"Defaults to owned","type":"string","enum":["owned","renting","other"]},"notes":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/update_property":{"post":{"operationId":"update_property","summary":"Update home","description":"Update a home's details.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string"},"name":{"type":"string"},"addressLine":{"type":"string"},"latitude":{"description":"Geocoded latitude of the address (for the map)","anyOf":[{"type":"number"},{"type":"null"}]},"longitude":{"description":"Geocoded longitude of the address (for the map)","anyOf":[{"type":"number"},{"type":"null"}]},"tenure":{"type":"string","enum":["owned","renting","other"]},"notes":{"type":"string"}},"required":["propertyId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/delete_property":{"post":{"operationId":"delete_property","summary":"Delete home","description":"Delete a home and all of its services.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:delete"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string"}},"required":["propertyId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/create_home_service":{"post":{"operationId":"create_home_service","summary":"Add home service","description":"Add a home service / recurring household line to a home — utility, broadband, mortgage/rent or appliance — with its provider, amount and renewal date.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string"},"category":{"type":"string","enum":["electricity","gas","water","broadband","mortgage","rent","appliance","insurance","other"]},"provider":{"type":"string"},"accountNumber":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string","enum":["EUR","USD","GBP","DKK"]},"cadence":{"type":"string","enum":["weekly","monthly","quarterly","yearly","one_off"]},"renewsAt":{"description":"Next renewal / contract end (ISO)","type":"string"},"expiresAt":{"type":"string"},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["propertyId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/update_home_service":{"post":{"operationId":"update_home_service","summary":"Update home service","description":"Update a home service line.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"serviceId":{"type":"string"},"category":{"type":"string","enum":["electricity","gas","water","broadband","mortgage","rent","appliance","insurance","other"]},"provider":{"type":"string"},"accountNumber":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string","enum":["EUR","USD","GBP","DKK"]},"cadence":{"type":"string","enum":["weekly","monthly","quarterly","yearly","one_off"]},"renewsAt":{"type":"string"},"expiresAt":{"type":"string"},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["serviceId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/delete_home_service":{"post":{"operationId":"delete_home_service","summary":"Delete home service","description":"Delete a home service line.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["properties:delete"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"serviceId":{"type":"string"}},"required":["serviceId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/create_vehicle":{"post":{"operationId":"create_vehicle","summary":"Add vehicle","description":"Add a vehicle and its renewal due dates (insurance, MOT/inspection, service, tax).","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["vehicles:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","description":"e.g. 'Family car'"},"make":{"type":"string"},"model":{"type":"string"},"registration":{"type":"string"},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"motDueAt":{"description":"MOT/inspection due (ISO)","type":"string"},"taxDueAt":{"description":"Road tax due (ISO)","type":"string"},"insuranceDueAt":{"description":"Insurance renewal (ISO)","type":"string"},"serviceDueAt":{"description":"Next service (ISO)","type":"string"},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/update_vehicle":{"post":{"operationId":"update_vehicle","summary":"Update vehicle","description":"Update a vehicle's details or renewal dates.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["vehicles:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"vehicleId":{"type":"string"},"name":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"},"registration":{"type":"string"},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"motDueAt":{"type":"string"},"taxDueAt":{"type":"string"},"insuranceDueAt":{"type":"string"},"serviceDueAt":{"type":"string"},"reminderLeadDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notes":{"type":"string"}},"required":["vehicleId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/delete_vehicle":{"post":{"operationId":"delete_vehicle","summary":"Delete vehicle","description":"Permanently delete a vehicle.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["vehicles:delete"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"vehicleId":{"type":"string"}},"required":["vehicleId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/create_trip":{"post":{"operationId":"create_trip","summary":"Add trip","description":"Plan a new trip. Travel mode then checks documents against the departure date.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["travel:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"destination":{"type":"string"},"country":{"type":"string"},"departAt":{"description":"Departure date (ISO)","type":"string"},"returnAt":{"description":"Return date (ISO)","type":"string"},"notes":{"type":"string"}},"required":["destination"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/update_trip":{"post":{"operationId":"update_trip","summary":"Update trip","description":"Update a trip's details or status.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["travel:edit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tripId":{"type":"string"},"destination":{"type":"string"},"country":{"type":"string"},"departAt":{"type":"string"},"returnAt":{"type":"string"},"status":{"type":"string","enum":["planned","booked","completed","cancelled"]},"notes":{"type":"string"}},"required":["tripId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}},"/api/rest/actions/delete_trip":{"post":{"operationId":"delete_trip","summary":"Delete trip","description":"Delete a trip.","tags":["actions"],"security":[{"ApiKeyAuth":[]}],"x-required-permissions":["travel:delete"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tripId":{"type":"string"}},"required":["tripId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"type":"object","properties":{"result":{}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Missing or invalid API key"},"403":{"description":"The key may not invoke this action"},"404":{"description":"Unknown action"}}}}}}