openapi: 3.1.0 info: title: Home Automation Backend (Python) description: Home automation backend with auth, runtime config, Home Assistant integrations, TickTick integration, and SQLite-backed recorders. version: 0.1.0 paths: /status: get: tags: - system summary: Get Status operationId: get_status_status_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/StatusResponse' /login: get: tags: - auth summary: Login Page operationId: login_page_login_get responses: '200': description: Successful Response content: text/html: schema: type: string post: tags: - auth summary: Login Submit operationId: login_submit_login_post requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Body_login_submit_login_post' required: true responses: '200': description: Successful Response content: text/html: schema: type: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /config/change-password: post: tags: - auth summary: Change Password Submit operationId: change_password_submit_config_change_password_post requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Body_change_password_submit_config_change_password_post' required: true responses: '200': description: Successful Response content: text/html: schema: type: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /logout: post: tags: - auth summary: Logout operationId: logout_logout_post requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Body_logout_logout_post' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /: get: tags: - pages summary: Home operationId: home__get responses: '200': description: Successful Response content: text/html: schema: type: string /admin: get: tags: - pages summary: Admin Redirect operationId: admin_redirect_admin_get responses: '200': description: Successful Response content: text/html: schema: type: string /config: get: tags: - pages summary: Config Page operationId: config_page_config_get responses: '200': description: Successful Response content: text/html: schema: type: string post: tags: - pages summary: Config Submit operationId: config_submit_config_post responses: '200': description: Successful Response content: text/html: schema: type: string /homeassistant/publish: post: tags: - homeassistant summary: Publish From Homeassistant operationId: publish_from_homeassistant_homeassistant_publish_post responses: '200': description: Successful Response content: application/json: schema: {} /location/record: post: tags: - location summary: Create Location Record operationId: create_location_record_location_record_post responses: '200': description: Successful Response content: application/json: schema: {} /poo/record: post: tags: - poo summary: Create Poo Record operationId: create_poo_record_poo_record_post responses: '200': description: Successful Response content: application/json: schema: {} /poo/latest: get: tags: - poo summary: Notify Latest Poo operationId: notify_latest_poo_poo_latest_get responses: '200': description: Successful Response content: application/json: schema: {} /ticktick/auth/start: get: tags: - ticktick summary: Start Ticktick Auth operationId: start_ticktick_auth_ticktick_auth_start_get responses: '200': description: Successful Response content: application/json: schema: {} /ticktick/auth/code: get: tags: - ticktick summary: Handle Ticktick Auth Code operationId: handle_ticktick_auth_code_ticktick_auth_code_get responses: '200': description: Successful Response content: application/json: schema: {} components: schemas: Body_change_password_submit_config_change_password_post: properties: current_password: type: string title: Current Password new_password: type: string title: New Password confirm_password: type: string title: Confirm Password csrf_token: type: string title: Csrf Token type: object required: - current_password - new_password - confirm_password - csrf_token title: Body_change_password_submit_config_change_password_post Body_login_submit_login_post: properties: username: type: string title: Username password: type: string title: Password csrf_token: type: string title: Csrf Token type: object required: - username - password - csrf_token title: Body_login_submit_login_post Body_logout_logout_post: properties: csrf_token: type: string title: Csrf Token type: object required: - csrf_token title: Body_logout_logout_post HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError StatusResponse: properties: status: type: string title: Status type: object required: - status title: StatusResponse ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError