{
    "openapi": "3.1.0",
    "info": {
        "title": "HouseCairn API",
        "version": "1.0.0",
        "description": "Version 1 of the HouseCairn API, shared by every client."
    },
    "paths": {
        "/api/v1/account/delete/": {
            "post": {
                "operationId": "account_delete_create",
                "description": "Erase the account of the signed-in person, for good. The address (and the password, for an account that has one) confirm it. Refused while the account is the only owner of a home with other members, or the only administrator.",
                "tags": [
                    "account"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AccountDeletionRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/": {
            "get": {
                "operationId": "homes_list",
                "description": "Homes of the authenticated user (narrowed to the token's homes, if any).\n\nThe list includes homes locked behind a sign-in provider (`locked`); reading\nor changing one answers 403 with `code: sso_required` until the session\nsigns in through it.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedHomeList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "homes_create",
                "description": "Homes of the authenticated user (narrowed to the token's homes, if any).\n\nThe list includes homes locked behind a sign-in provider (`locked`); reading\nor changing one answers 403 with `code: sso_required` until the session\nsigns in through it.",
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/HomeRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Home"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/": {
            "get": {
                "operationId": "homes_retrieve",
                "description": "Homes of the authenticated user (narrowed to the token's homes, if any).\n\nThe list includes homes locked behind a sign-in provider (`locked`); reading\nor changing one answers 403 with `code: sso_required` until the session\nsigns in through it.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Home"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "homes_partial_update",
                "description": "Homes of the authenticated user (narrowed to the token's homes, if any).\n\nThe list includes homes locked behind a sign-in provider (`locked`); reading\nor changing one answers 403 with `code: sso_required` until the session\nsigns in through it.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedHomeRequest"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Home"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/audit/": {
            "get": {
                "operationId": "homes_audit_list",
                "description": "Audit log of the home: roles, invitations, sign-in rule, export. Owners only.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedAuditEventList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/delete/": {
            "post": {
                "operationId": "homes_delete_create",
                "description": "Delete the home for good. The confirmation is the exact name of the home.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/HomeDeletionRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/events/": {
            "post": {
                "operationId": "homes_events_create",
                "description": "For web and API views alike: `get_homes()`, and `get_home()` from the URL.\n\nA home the user cannot see answers 404, never 403, so its existence does\nnot leak. A home of the user that requires a sign-in provider this session\ndid not use raises `SsoRequiredError` (403, with the provider to use).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EventRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "202": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Event"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/export/": {
            "post": {
                "operationId": "homes_export_create",
                "description": "Everything of the home as one archive: `export.json` (versioned, documented in Administration > Export and deletion) and the home's files. Owners only, signed in: an API token cannot export.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/zip": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/invitations/": {
            "get": {
                "operationId": "homes_invitations_list",
                "description": "Pending invitations of a home; owners only.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedInvitationList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "homes_invitations_create",
                "description": "Pending invitations of a home; owners only.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvitationRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Invitation"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/invitations/{invitation_id}/": {
            "delete": {
                "operationId": "homes_invitations_destroy",
                "description": "Revoke the invitation: its link stops working.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "invitation_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this invitation.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/invitations/{invitation_id}/resend/": {
            "post": {
                "operationId": "homes_invitations_resend_create",
                "description": "A new link and a new expiry; the previous link stops working.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "invitation_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this invitation.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Invitation"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/items/": {
            "get": {
                "operationId": "homes_items_list",
                "description": "Items (equipment or surfaces) of a home. Patching `room` moves an item.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "in": "query",
                        "name": "q",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Only names containing this text."
                    },
                    {
                        "in": "query",
                        "name": "room",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "Only items of this room."
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedItemList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "homes_items_create",
                "description": "Items (equipment or surfaces) of a home. Patching `room` moves an item.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ItemRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Item"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/items/{item_id}/": {
            "get": {
                "operationId": "homes_items_retrieve",
                "description": "Items (equipment or surfaces) of a home. Patching `room` moves an item.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "item_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this item.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Item"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "homes_items_partial_update",
                "description": "Items (equipment or surfaces) of a home. Patching `room` moves an item.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "item_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this item.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedItemRequest"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Item"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "homes_items_destroy",
                "description": "Items (equipment or surfaces) of a home. Patching `room` moves an item.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "item_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this item.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/leave/": {
            "post": {
                "operationId": "homes_leave_create",
                "description": "Leave the home. The last owner cannot leave.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/members/": {
            "get": {
                "operationId": "homes_members_list",
                "description": "Members of a home. Owners change roles, remove members and hand over ownership.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedMembershipList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/members/{member_id}/": {
            "get": {
                "operationId": "homes_members_retrieve",
                "description": "Members of a home. Owners change roles, remove members and hand over ownership.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "member_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this membership.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Membership"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "homes_members_partial_update",
                "description": "Members of a home. Owners change roles, remove members and hand over ownership.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "member_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this membership.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedRoleChangeRequest"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Membership"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "homes_members_destroy",
                "description": "Members of a home. Owners change roles, remove members and hand over ownership.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "member_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this membership.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/members/{member_id}/make-owner/": {
            "post": {
                "operationId": "homes_members_make_owner_create",
                "description": "Make this member owner; the acting owner becomes a member.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "member_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this membership.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Membership"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/photos/": {
            "get": {
                "operationId": "homes_photos_list",
                "description": "Photos of rooms and items. Upload as `multipart/form-data`; the image is checked by\nits content, written again without its metadata (location included) and limited in size.",
                "parameters": [
                    {
                        "in": "query",
                        "name": "category",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "general",
                                "open_walls"
                            ]
                        }
                    },
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "query",
                        "name": "item",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "Only photos of this item."
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "in": "query",
                        "name": "room",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "Only photos of this room."
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedPhotoList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "homes_photos_create",
                "description": "Photos of rooms and items. Upload as `multipart/form-data`; the image is checked by\nits content, written again without its metadata (location included) and limited in size.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PhotoUploadRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Photo"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/photos/{photo_id}/": {
            "get": {
                "operationId": "homes_photos_retrieve",
                "description": "Photos of rooms and items. Upload as `multipart/form-data`; the image is checked by\nits content, written again without its metadata (location included) and limited in size.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "photo_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this photo.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Photo"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "homes_photos_partial_update",
                "description": "Photos of rooms and items. Upload as `multipart/form-data`; the image is checked by\nits content, written again without its metadata (location included) and limited in size.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "photo_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this photo.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedPhotoRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedPhotoRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedPhotoRequest"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Photo"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "homes_photos_destroy",
                "description": "Photos of rooms and items. Upload as `multipart/form-data`; the image is checked by\nits content, written again without its metadata (location included) and limited in size.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "photo_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this photo.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/photos/{photo_id}/content/": {
            "get": {
                "operationId": "homes_photos_content_retrieve",
                "description": "The image, as stored: JPEG, PNG or WebP, served inline and never sniffed.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "photo_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this photo.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "image/*": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/photos/{photo_id}/thumbnail/": {
            "get": {
                "operationId": "homes_photos_thumbnail_retrieve",
                "description": "A JPEG thumbnail of the photo.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "photo_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this photo.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "image/jpeg": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/rooms/": {
            "get": {
                "operationId": "homes_rooms_list",
                "description": "Rooms of a home, with their memory (paint, coverings, notes).\n\nListed in their order; `POST .../rooms/reorder/` changes it. Deleting a room\ndeletes its items and photos (they can be restored by the instance owner, not\nthrough the API).",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "in": "query",
                        "name": "q",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Only names containing this text."
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedRoomList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "homes_rooms_create",
                "description": "Rooms of a home, with their memory (paint, coverings, notes).\n\nListed in their order; `POST .../rooms/reorder/` changes it. Deleting a room\ndeletes its items and photos (they can be restored by the instance owner, not\nthrough the API).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RoomRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Room"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/rooms/{room_id}/": {
            "get": {
                "operationId": "homes_rooms_retrieve",
                "description": "Rooms of a home, with their memory (paint, coverings, notes).\n\nListed in their order; `POST .../rooms/reorder/` changes it. Deleting a room\ndeletes its items and photos (they can be restored by the instance owner, not\nthrough the API).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "room_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this room.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Room"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "homes_rooms_partial_update",
                "description": "Rooms of a home, with their memory (paint, coverings, notes).\n\nListed in their order; `POST .../rooms/reorder/` changes it. Deleting a room\ndeletes its items and photos (they can be restored by the instance owner, not\nthrough the API).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "room_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this room.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedRoomRequest"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Room"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "homes_rooms_destroy",
                "description": "Rooms of a home, with their memory (paint, coverings, notes).\n\nListed in their order; `POST .../rooms/reorder/` changes it. Deleting a room\ndeletes its items and photos (they can be restored by the instance owner, not\nthrough the API).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "room_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this room.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/rooms/reorder/": {
            "post": {
                "operationId": "homes_rooms_reorder_create",
                "description": "Put the listed rooms first, in that order; the others keep their order after them.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9a-f-]{36}$"
                        },
                        "required": true
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "homes"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RoomOrderRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedRoomList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/search/": {
            "get": {
                "operationId": "homes_search_retrieve",
                "description": "Rooms and items of a home whose name contains `q`, up to 50 of each.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "required": true
                    },
                    {
                        "in": "query",
                        "name": "q",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SearchResults"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/homes/{home_id}/unlock/": {
            "post": {
                "operationId": "homes_unlock_create",
                "description": "Stop requiring a sign-in provider the instance no longer offers (owners).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "home_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this home.",
                        "required": true
                    }
                ],
                "tags": [
                    "homes"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Home"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/instance/audit/": {
            "get": {
                "operationId": "instance_audit_list",
                "description": "Audit log of the instance: administration, invitations, accounts. No home content.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "instance"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedAuditEventList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/instance/invitations/": {
            "get": {
                "operationId": "instance_invitations_list",
                "description": "Pending invitations to the instance. They are sent by email, never returned.",
                "parameters": [
                    {
                        "name": "cursor",
                        "required": false,
                        "in": "query",
                        "description": "The pagination cursor value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "instance"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedInstanceInvitationList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "instance_invitations_create",
                "description": "Pending invitations to the instance. They are sent by email, never returned.",
                "tags": [
                    "instance"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InstanceInvitationRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InstanceInvitation"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/instance/invitations/{invitation_id}/": {
            "delete": {
                "operationId": "instance_invitations_destroy",
                "description": "Revoke the invitation: its link stops working.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "invitation_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this instance invitation.",
                        "required": true
                    }
                ],
                "tags": [
                    "instance"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/v1/instance/invitations/{invitation_id}/resend/": {
            "post": {
                "operationId": "instance_invitations_resend_create",
                "description": "A new link and a new expiry; the previous link stops working.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "invitation_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "description": "A UUID string identifying this instance invitation.",
                        "required": true
                    }
                ],
                "tags": [
                    "instance"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InstanceInvitation"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/instance/unlock/": {
            "post": {
                "operationId": "instance_unlock_create",
                "description": "Clear the sign-in rule of every home whose provider the instance no longer offers.",
                "tags": [
                    "instance"
                ],
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Unlocked"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/invitations/accept/": {
            "post": {
                "operationId": "invitations_accept_create",
                "description": "Accept an invitation with the secret of its link, for the signed-in account.\n\nThe account's address must be the invited one. Unknown, used, revoked and\nexpired secrets all answer 404.",
                "tags": [
                    "invitations"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvitationAcceptRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiToken": []
                    },
                    {
                        "cookieAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Home"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "AccountDeletionRequest": {
                "type": "object",
                "properties": {
                    "confirm_email": {
                        "type": "string",
                        "format": "email",
                        "minLength": 1
                    },
                    "password": {
                        "type": "string",
                        "minLength": 1
                    }
                },
                "required": [
                    "confirm_email"
                ]
            },
            "AuditEvent": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true,
                        "title": "Date"
                    },
                    "scope": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ScopeEnum"
                            }
                        ],
                        "readOnly": true
                    },
                    "action": {
                        "type": "string",
                        "readOnly": true
                    },
                    "label": {
                        "type": "string",
                        "readOnly": true,
                        "description": "The entry as a sentence, in the API language."
                    },
                    "actor_email": {
                        "type": "string",
                        "format": "email",
                        "readOnly": true
                    },
                    "target_email": {
                        "type": "string",
                        "format": "email",
                        "readOnly": true
                    },
                    "detail": {
                        "readOnly": true
                    }
                },
                "required": [
                    "action",
                    "actor_email",
                    "created_at",
                    "detail",
                    "id",
                    "label",
                    "scope",
                    "target_email"
                ]
            },
            "CategoryEnum": {
                "enum": [
                    "general",
                    "open_walls"
                ],
                "type": "string",
                "description": "* `general` - Photo\n* `open_walls` - Open walls"
            },
            "Event": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "kind": {
                        "type": "string",
                        "maxLength": 64,
                        "pattern": "^[-a-zA-Z0-9_]+$"
                    },
                    "payload": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "kind"
                ]
            },
            "EventRequest": {
                "type": "object",
                "properties": {
                    "kind": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64,
                        "pattern": "^[-a-zA-Z0-9_]+$"
                    },
                    "payload": {
                        "type": "object",
                        "additionalProperties": {}
                    }
                },
                "required": [
                    "kind"
                ]
            },
            "Home": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "currency": {
                        "type": "string",
                        "description": "ISO 4217 code of the currency used for this home's budget.",
                        "pattern": "^[A-Z]{3}$",
                        "maxLength": 3
                    },
                    "role": {
                        "readOnly": true,
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/RoleEnum"
                            },
                            {
                                "$ref": "#/components/schemas/NullEnum"
                            }
                        ]
                    },
                    "required_provider": {
                        "type": "string",
                        "description": "Identifier of the sign-in provider members must use; empty for none.",
                        "maxLength": 100
                    },
                    "locked": {
                        "type": "boolean",
                        "readOnly": true,
                        "description": "True when the home requires a sign-in provider this session did not use."
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "locked",
                    "name",
                    "role",
                    "updated_at"
                ]
            },
            "HomeDeletionRequest": {
                "type": "object",
                "properties": {
                    "confirmation": {
                        "type": "string",
                        "minLength": 1
                    }
                },
                "required": [
                    "confirmation"
                ]
            },
            "HomeRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                    },
                    "currency": {
                        "type": "string",
                        "minLength": 1,
                        "description": "ISO 4217 code of the currency used for this home's budget.",
                        "pattern": "^[A-Z]{3}$",
                        "maxLength": 3
                    },
                    "required_provider": {
                        "type": "string",
                        "description": "Identifier of the sign-in provider members must use; empty for none.",
                        "maxLength": 100
                    }
                },
                "required": [
                    "name"
                ]
            },
            "InstanceInvitation": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "title": "Email address",
                        "maxLength": 254
                    },
                    "sent_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "email",
                    "expires_at",
                    "id",
                    "sent_at"
                ]
            },
            "InstanceInvitationRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email",
                        "minLength": 1,
                        "title": "Email address",
                        "maxLength": 254
                    }
                },
                "required": [
                    "email"
                ]
            },
            "Invitation": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "title": "Email address",
                        "maxLength": 254
                    },
                    "role": {
                        "$ref": "#/components/schemas/RoleEnum"
                    },
                    "sent_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "link": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "readOnly": true,
                        "description": "The invitation link, only in the answer that creates it and only when the instance does not send email; shown once."
                    }
                },
                "required": [
                    "email",
                    "expires_at",
                    "id",
                    "link",
                    "sent_at"
                ]
            },
            "InvitationAcceptRequest": {
                "type": "object",
                "properties": {
                    "token": {
                        "type": "string",
                        "minLength": 1
                    }
                },
                "required": [
                    "token"
                ]
            },
            "InvitationRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email",
                        "minLength": 1,
                        "title": "Email address",
                        "maxLength": 254
                    },
                    "role": {
                        "$ref": "#/components/schemas/RoleEnum"
                    }
                },
                "required": [
                    "email"
                ]
            },
            "Item": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "room": {
                        "type": "string",
                        "format": "uuid",
                        "description": "The room the item is in; change it to move the item."
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "kind": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ItemKindEnum"
                            }
                        ],
                        "title": "Type"
                    },
                    "brand": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "model": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "serial_number": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "installed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "warranty_ends_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "contract": {
                        "type": "string",
                        "title": "Maintenance contract",
                        "description": "Who services it, and the contract number if any.",
                        "maxLength": 200
                    },
                    "contract_url": {
                        "title": "Contract link",
                        "oneOf": [
                            {
                                "type": "string",
                                "format": "uri",
                                "maxLength": 500
                            },
                            {
                                "type": "string",
                                "maxLength": 0
                            }
                        ]
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Link"
                        }
                    },
                    "notes": {
                        "type": "string",
                        "maxLength": 4000
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "name",
                    "room",
                    "updated_at"
                ]
            },
            "ItemKindEnum": {
                "enum": [
                    "equipment",
                    "surface"
                ],
                "type": "string",
                "description": "* `equipment` - Equipment\n* `surface` - Surface"
            },
            "ItemRequest": {
                "type": "object",
                "properties": {
                    "room": {
                        "type": "string",
                        "format": "uuid",
                        "description": "The room the item is in; change it to move the item."
                    },
                    "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                    },
                    "kind": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ItemKindEnum"
                            }
                        ],
                        "title": "Type"
                    },
                    "brand": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "model": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "serial_number": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "installed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "warranty_ends_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "contract": {
                        "type": "string",
                        "title": "Maintenance contract",
                        "description": "Who services it, and the contract number if any.",
                        "maxLength": 200
                    },
                    "contract_url": {
                        "title": "Contract link",
                        "oneOf": [
                            {
                                "type": "string",
                                "format": "uri",
                                "maxLength": 500
                            },
                            {
                                "type": "string",
                                "maxLength": 0
                            }
                        ]
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LinkRequest"
                        }
                    },
                    "notes": {
                        "type": "string",
                        "maxLength": 4000
                    }
                },
                "required": [
                    "name",
                    "room"
                ]
            },
            "Link": {
                "type": "object",
                "properties": {
                    "url": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "label": {
                        "type": "string",
                        "maxLength": 100
                    }
                },
                "required": [
                    "url"
                ]
            },
            "LinkRequest": {
                "type": "object",
                "properties": {
                    "url": {
                        "type": "string",
                        "format": "uri",
                        "minLength": 1,
                        "maxLength": 500
                    },
                    "label": {
                        "type": "string",
                        "maxLength": 100
                    }
                },
                "required": [
                    "url"
                ]
            },
            "MemberUser": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "readOnly": true,
                        "title": "Email address"
                    },
                    "name": {
                        "type": "string",
                        "readOnly": true
                    }
                },
                "required": [
                    "email",
                    "id",
                    "name"
                ]
            },
            "Membership": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "user": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/MemberUser"
                            }
                        ],
                        "readOnly": true
                    },
                    "role": {
                        "$ref": "#/components/schemas/RoleEnum"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "updated_at",
                    "user"
                ]
            },
            "NullEnum": {
                "type": "null"
            },
            "PaginatedAuditEventList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/AuditEvent"
                        }
                    }
                }
            },
            "PaginatedHomeList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Home"
                        }
                    }
                }
            },
            "PaginatedInstanceInvitationList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InstanceInvitation"
                        }
                    }
                }
            },
            "PaginatedInvitationList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Invitation"
                        }
                    }
                }
            },
            "PaginatedItemList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Item"
                        }
                    }
                }
            },
            "PaginatedMembershipList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Membership"
                        }
                    }
                }
            },
            "PaginatedPhotoList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Photo"
                        }
                    }
                }
            },
            "PaginatedRoomList": {
                "type": "object",
                "required": [
                    "results"
                ],
                "properties": {
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cD00ODY%3D\""
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?cursor=cj0xJnA9NDg3"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Room"
                        }
                    }
                }
            },
            "PatchedHomeRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                    },
                    "currency": {
                        "type": "string",
                        "minLength": 1,
                        "description": "ISO 4217 code of the currency used for this home's budget.",
                        "pattern": "^[A-Z]{3}$",
                        "maxLength": 3
                    },
                    "required_provider": {
                        "type": "string",
                        "description": "Identifier of the sign-in provider members must use; empty for none.",
                        "maxLength": 100
                    }
                }
            },
            "PatchedItemRequest": {
                "type": "object",
                "properties": {
                    "room": {
                        "type": "string",
                        "format": "uuid",
                        "description": "The room the item is in; change it to move the item."
                    },
                    "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                    },
                    "kind": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ItemKindEnum"
                            }
                        ],
                        "title": "Type"
                    },
                    "brand": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "model": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "serial_number": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "installed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "warranty_ends_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "contract": {
                        "type": "string",
                        "title": "Maintenance contract",
                        "description": "Who services it, and the contract number if any.",
                        "maxLength": 200
                    },
                    "contract_url": {
                        "title": "Contract link",
                        "oneOf": [
                            {
                                "type": "string",
                                "format": "uri",
                                "maxLength": 500
                            },
                            {
                                "type": "string",
                                "maxLength": 0
                            }
                        ]
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LinkRequest"
                        }
                    },
                    "notes": {
                        "type": "string",
                        "maxLength": 4000
                    }
                }
            },
            "PatchedPhotoRequest": {
                "type": "object",
                "properties": {
                    "category": {
                        "$ref": "#/components/schemas/CategoryEnum"
                    },
                    "caption": {
                        "type": "string",
                        "maxLength": 200
                    }
                }
            },
            "PatchedRoleChangeRequest": {
                "type": "object",
                "properties": {
                    "role": {
                        "$ref": "#/components/schemas/RoleEnum"
                    }
                }
            },
            "PatchedRoomRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                    },
                    "kind": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/RoomKindEnum"
                            }
                        ],
                        "title": "Type"
                    },
                    "notes": {
                        "type": "string",
                        "maxLength": 4000
                    },
                    "paint_colour": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_brand": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_reference": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_batch": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_stock": {
                        "type": "string",
                        "title": "Paint left in stock",
                        "description": "For example: half a tin, in the garage.",
                        "maxLength": 120
                    },
                    "floor_covering": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "wall_covering": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "memory_notes": {
                        "type": "string",
                        "maxLength": 4000
                    }
                }
            },
            "Photo": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "room": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid",
                        "readOnly": true
                    },
                    "item": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid",
                        "readOnly": true
                    },
                    "category": {
                        "$ref": "#/components/schemas/CategoryEnum"
                    },
                    "caption": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "content_type": {
                        "type": "string",
                        "readOnly": true
                    },
                    "size_bytes": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "width": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "height": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "content_url": {
                        "type": "string",
                        "format": "uri",
                        "readOnly": true,
                        "description": "Address of the image."
                    },
                    "thumbnail_url": {
                        "type": "string",
                        "format": "uri",
                        "readOnly": true,
                        "description": "Address of the thumbnail."
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "content_type",
                    "content_url",
                    "created_at",
                    "height",
                    "id",
                    "item",
                    "room",
                    "size_bytes",
                    "thumbnail_url",
                    "updated_at",
                    "width"
                ]
            },
            "PhotoUploadRequest": {
                "type": "object",
                "properties": {
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "description": "A JPEG, PNG or WebP image."
                    },
                    "room": {
                        "type": "string",
                        "format": "uuid",
                        "description": "The room, or `item`, not both."
                    },
                    "item": {
                        "type": "string",
                        "format": "uuid",
                        "description": "The item, or `room`, not both."
                    },
                    "caption": {
                        "type": "string",
                        "default": "",
                        "maxLength": 200
                    },
                    "category": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CategoryEnum"
                            }
                        ],
                        "default": "general"
                    }
                },
                "required": [
                    "file"
                ]
            },
            "RoleEnum": {
                "enum": [
                    "owner",
                    "member",
                    "read_only"
                ],
                "type": "string",
                "description": "* `owner` - Owner\n* `member` - Member\n* `read_only` - Read only"
            },
            "Room": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "kind": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/RoomKindEnum"
                            }
                        ],
                        "title": "Type"
                    },
                    "position": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "notes": {
                        "type": "string",
                        "maxLength": 4000
                    },
                    "paint_colour": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_brand": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_reference": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_batch": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_stock": {
                        "type": "string",
                        "title": "Paint left in stock",
                        "description": "For example: half a tin, in the garage.",
                        "maxLength": 120
                    },
                    "floor_covering": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "wall_covering": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "memory_notes": {
                        "type": "string",
                        "maxLength": 4000
                    },
                    "item_count": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "item_count",
                    "name",
                    "position",
                    "updated_at"
                ]
            },
            "RoomKindEnum": {
                "enum": [
                    "living",
                    "kitchen",
                    "bathroom",
                    "bedroom",
                    "hallway",
                    "office",
                    "utility",
                    "garage",
                    "cellar",
                    "attic",
                    "outdoor",
                    "other"
                ],
                "type": "string",
                "description": "* `living` - Living room\n* `kitchen` - Kitchen\n* `bathroom` - Bathroom\n* `bedroom` - Bedroom\n* `hallway` - Hallway\n* `office` - Office\n* `utility` - Utility room\n* `garage` - Garage\n* `cellar` - Cellar\n* `attic` - Attic\n* `outdoor` - Outdoor\n* `other` - Other"
            },
            "RoomOrderRequest": {
                "type": "object",
                "properties": {
                    "order": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "maxItems": 500
                    }
                },
                "required": [
                    "order"
                ]
            },
            "RoomRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                    },
                    "kind": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/RoomKindEnum"
                            }
                        ],
                        "title": "Type"
                    },
                    "notes": {
                        "type": "string",
                        "maxLength": 4000
                    },
                    "paint_colour": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_brand": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_reference": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_batch": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "paint_stock": {
                        "type": "string",
                        "title": "Paint left in stock",
                        "description": "For example: half a tin, in the garage.",
                        "maxLength": 120
                    },
                    "floor_covering": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "wall_covering": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "memory_notes": {
                        "type": "string",
                        "maxLength": 4000
                    }
                },
                "required": [
                    "name"
                ]
            },
            "ScopeEnum": {
                "enum": [
                    "home",
                    "instance"
                ],
                "type": "string",
                "description": "* `home` - Home\n* `instance` - Instance"
            },
            "SearchResults": {
                "type": "object",
                "properties": {
                    "rooms": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Room"
                        }
                    },
                    "items": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Item"
                        }
                    }
                },
                "required": [
                    "items",
                    "rooms"
                ]
            },
            "Unlocked": {
                "type": "object",
                "properties": {
                    "unlocked": {
                        "type": "integer"
                    }
                },
                "required": [
                    "unlocked"
                ]
            }
        },
        "securitySchemes": {
            "apiToken": {
                "type": "http",
                "scheme": "bearer",
                "description": "HouseCairn API token (hc_...), with scopes read, write or events."
            },
            "cookieAuth": {
                "type": "apiKey",
                "in": "cookie",
                "name": "sessionid"
            }
        }
    }
}