{
  "openapi": "3.1.0",
  "info": {
    "title": "adulting.app API",
    "version": "0.1.0",
    "description": "The adulting.app API for scripts and agents, versioned under `/api/v1/`. Authenticate every request with a **household API key**: `Authorization: Bearer adk_...`, minted on the account page in the web app. A key is scoped to exactly one household \u2014 call `GET /api/v1/households` to discover it. Keys come in two scopes: `read` (safe methods only) and `read_write` (member-level writes). Household administration \u2014 members, invites, billing, key management \u2014 happens in the web app, not through this API.\n\nSuccess responses use the envelope `{\"status\": \"success\", \"data\": ...}`; every error (including auth and 404s) uses `{\"status\": \"error\", \"detail\": \"...\"}`. Resource ids are TypeIDs (`task_01h4...`); bare UUIDs are also accepted anywhere a TypeID is expected. List endpoints return complete, unpaginated collections.\n\nRequests are rate limited per key (120/min); responses carry `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (epoch seconds), and throttled requests get a 429 with `Retry-After`. Create (POST) endpoints honor an optional `Idempotency-Key` header: retrying the identical request with the same key replays the stored response instead of creating a duplicate; reusing a key with a different request body is rejected with 422. Keys expire after 24 hours."
  },
  "paths": {
    "/api/v1/h/{household_id}": {
      "get": {
        "operationId": "household_detail_get",
        "summary": "Get household",
        "tags": [
          "households"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/HouseholdSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/assets": {
      "get": {
        "operationId": "playbook_assets_get",
        "summary": "List assets",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AssetSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_assets_post",
        "summary": "Add an asset",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/AssetSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAssetRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/assets/{asset_id}": {
      "get": {
        "operationId": "playbook_asset_detail_get",
        "summary": "Get an asset",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/AssetSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_asset_detail_patch",
        "summary": "Update an asset",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/AssetSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssetRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_asset_detail_delete",
        "summary": "Delete an asset",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "asset_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `asset_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/assets/{asset_id}/odometer": {
      "get": {
        "operationId": "playbook_asset_odometer_get",
        "summary": "List odometer entries",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OdometerEntrySchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_asset_odometer_post",
        "summary": "Add an odometer entry",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/OdometerEntrySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOdometerEntryRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "asset_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `asset_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/assets/{asset_id}/odometer/{entry_id}": {
      "delete": {
        "operationId": "playbook_asset_odometer_detail_delete",
        "summary": "Delete an odometer entry",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "asset_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `asset_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "entry_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `odometer_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/barcode-lookup": {
      "post": {
        "operationId": "playbook_barcode_lookup_post",
        "summary": "Look up a scanned barcode",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/BarcodeLookupResponse"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BarcodeLookupRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/billing": {
      "get": {
        "operationId": "billing_get",
        "summary": "Billing summary",
        "tags": [
          "billing"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/BillingSummarySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/bus-kit": {
      "get": {
        "operationId": "bus_kit_get",
        "summary": "Bus kit entries",
        "tags": [
          "vault"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BusKitItemSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/bus-kit/{item_slug}": {
      "put": {
        "operationId": "bus_kit_entry_put",
        "summary": "Update a bus kit entry",
        "tags": [
          "vault"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/BusKitItemSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBusKitEntryRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "item_slug",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/api/v1/h/{household_id}/contractors": {
      "get": {
        "operationId": "playbook_contractors_get",
        "summary": "List contractors",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContractorSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_contractors_post",
        "summary": "Add a contractor",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ContractorSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContractorRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/contractors/{contractor_id}": {
      "get": {
        "operationId": "playbook_contractor_detail_get",
        "summary": "Get a contractor",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ContractorDetailSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_contractor_detail_patch",
        "summary": "Update a contractor",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ContractorDetailSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContractorRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_contractor_detail_delete",
        "summary": "Delete a contractor",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "contractor_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `contractor_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/documents": {
      "get": {
        "operationId": "documents_get",
        "summary": "List documents",
        "tags": [
          "vault"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/DocumentSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "documents_post",
        "summary": "Create a document (presigned upload)",
        "tags": [
          "vault"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/CreateDocumentResponse"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDocumentRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/documents/{document_id}": {
      "delete": {
        "operationId": "document_detail_delete",
        "summary": "Delete a document",
        "tags": [
          "vault"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "document_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `document_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/documents/{document_id}/confirm": {
      "post": {
        "operationId": "document_confirm_post",
        "summary": "Confirm an upload",
        "tags": [
          "vault"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/DocumentSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "document_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `document_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/documents/{document_id}/download": {
      "get": {
        "operationId": "document_download_get",
        "summary": "Get a download URL",
        "tags": [
          "vault"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/DownloadSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "document_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `document_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/events": {
      "get": {
        "operationId": "activity_feed_get",
        "summary": "Activity feed",
        "tags": [
          "activity"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/EventFeedSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Keyset pagination cursor from `next_cursor`"
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/events/head": {
      "get": {
        "operationId": "activity_head_get",
        "summary": "Latest event id",
        "tags": [
          "activity"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/EventHeadSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/events/stream": {
      "get": {
        "operationId": "activity_stream_get",
        "summary": "Realtime event stream (SSE)",
        "tags": [
          "activity"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Server-sent events: each `data:` line is an event id; refetch changed resources on receipt. Heartbeats every 25s."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/insurance-policies": {
      "get": {
        "operationId": "playbook_insurance_policies_get",
        "summary": "List insurance policies",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InsurancePolicySchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_insurance_policies_post",
        "summary": "Add an insurance policy",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/InsurancePolicySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInsurancePolicyRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/insurance-policies/{policy_id}": {
      "get": {
        "operationId": "playbook_insurance_policy_detail_get",
        "summary": "Get an insurance policy",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/InsurancePolicySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_insurance_policy_detail_patch",
        "summary": "Update an insurance policy",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/InsurancePolicySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInsurancePolicyRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_insurance_policy_detail_delete",
        "summary": "Delete an insurance policy",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "policy_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `policy_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/invites": {
      "get": {
        "operationId": "household_invites_get",
        "summary": "List pending invites",
        "tags": [
          "households"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InviteSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/kids": {
      "get": {
        "operationId": "playbook_kids_get",
        "summary": "List kids",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KidSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_kids_post",
        "summary": "Add a kid",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/KidSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateKidRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/kids/{kid_id}": {
      "get": {
        "operationId": "playbook_kid_detail_get",
        "summary": "Get a kid",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/KidSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_kid_detail_patch",
        "summary": "Update a kid",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/KidSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateKidRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_kid_detail_delete",
        "summary": "Delete a kid",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "kid_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `kid_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/members": {
      "get": {
        "operationId": "household_members_get",
        "summary": "List members",
        "tags": [
          "households"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/HouseholdMemberSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/money-saved": {
      "get": {
        "operationId": "playbook_money_saved_get",
        "summary": "Money saved by DIY",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/MoneySavedSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/nameplate-scan": {
      "post": {
        "operationId": "playbook_nameplate_scan_post",
        "summary": "Read a nameplate photo",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/NameplateScanResponse"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NameplateScanRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/onboarding/finish": {
      "post": {
        "operationId": "playbook_onboarding_finish_post",
        "summary": "Finish onboarding",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProfileSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/parts": {
      "get": {
        "operationId": "playbook_parts_get",
        "summary": "List parts",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PartSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "asset_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by asset"
          },
          {
            "name": "property_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by property"
          }
        ]
      },
      "post": {
        "operationId": "playbook_parts_post",
        "summary": "Add a part",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PartSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePartRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/parts/{part_id}": {
      "patch": {
        "operationId": "playbook_part_detail_patch",
        "summary": "Update a part",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PartSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePartRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_part_detail_delete",
        "summary": "Delete a part",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "part_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `part_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/pets": {
      "get": {
        "operationId": "playbook_pets_get",
        "summary": "List pets",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PetSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_pets_post",
        "summary": "Add a pet",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PetSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePetRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/pets/{pet_id}": {
      "get": {
        "operationId": "playbook_pet_detail_get",
        "summary": "Get a pet",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PetSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_pet_detail_patch",
        "summary": "Update a pet",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PetSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePetRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_pet_detail_delete",
        "summary": "Delete a pet",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "pet_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `pet_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/pets/{pet_id}/weights": {
      "get": {
        "operationId": "playbook_pet_weights_get",
        "summary": "List weight entries",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PetWeightSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_pet_weights_post",
        "summary": "Add a weight entry",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PetWeightSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePetWeightRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "pet_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `pet_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/pets/{pet_id}/weights/{weight_id}": {
      "delete": {
        "operationId": "playbook_pet_weight_detail_delete",
        "summary": "Delete a weight entry",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "pet_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `pet_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "weight_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `petweight_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/playbooks": {
      "get": {
        "operationId": "playbooks_get",
        "summary": "List playbooks",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PlaybookSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/playbooks/{slug}/activate": {
      "post": {
        "operationId": "playbook_activate_post",
        "summary": "Activate a playbook",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ActivatePlaybookResponse"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Returns 200 with the existing activation if already active.\n\nRequires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "slug",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/api/v1/h/{household_id}/profile": {
      "get": {
        "operationId": "playbook_profile_get",
        "summary": "Get the life profile",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProfileSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "put": {
        "operationId": "playbook_profile_put",
        "summary": "Update the life profile",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProfileSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProfileRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/projects": {
      "get": {
        "operationId": "playbook_projects_get",
        "summary": "List projects",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProjectSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_projects_post",
        "summary": "Create a project",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProjectSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/projects/{project_id}": {
      "get": {
        "operationId": "playbook_project_detail_get",
        "summary": "Get a project",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProjectDetailSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_project_detail_patch",
        "summary": "Update a project",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProjectDetailSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProjectRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_project_detail_delete",
        "summary": "Delete a project",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "project_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `project_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/projects/{project_id}/hold": {
      "post": {
        "operationId": "playbook_project_hold_post",
        "summary": "Put a project on hold",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProjectDetailSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HoldProjectRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_project_hold_delete",
        "summary": "Resume a held project",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ProjectDetailSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "project_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `project_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/projects/{project_id}/materials": {
      "get": {
        "operationId": "playbook_project_materials_get",
        "summary": "List project shopping-list items",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TaskMaterialSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_project_materials_post",
        "summary": "Add a project shopping-list item",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskMaterialSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTaskMaterialRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "project_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `project_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/projects/{project_id}/materials/{material_id}": {
      "patch": {
        "operationId": "playbook_project_material_detail_patch",
        "summary": "Update a project shopping-list item",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskMaterialSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTaskMaterialRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_project_material_detail_delete",
        "summary": "Delete a project shopping-list item",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "project_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `project_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "material_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `material_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/properties": {
      "get": {
        "operationId": "playbook_properties_get",
        "summary": "List properties",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PropertySchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_properties_post",
        "summary": "Add a property",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PropertySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePropertyRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/properties/{property_id}": {
      "get": {
        "operationId": "playbook_property_detail_get",
        "summary": "Get a property",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PropertySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_property_detail_patch",
        "summary": "Update a property",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PropertySchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePropertyRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_property_detail_delete",
        "summary": "Delete a property",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "property_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `property_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/repairs": {
      "get": {
        "operationId": "playbook_repairs_get",
        "summary": "List repairs",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RepairLogSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_repairs_post",
        "summary": "Log a repair",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/RepairLogSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRepairLogRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/repairs/{repair_id}": {
      "get": {
        "operationId": "playbook_repair_detail_get",
        "summary": "Get a repair",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/RepairLogSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_repair_detail_patch",
        "summary": "Update a repair",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/RepairLogSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRepairLogRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_repair_detail_delete",
        "summary": "Delete a repair",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "repair_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `repair_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/spend-report": {
      "get": {
        "operationId": "playbook_spend_report_get",
        "summary": "Maintenance spend report",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/SpendReportSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/stats": {
      "get": {
        "operationId": "household_stats_get",
        "summary": "Member completion stats",
        "tags": [
          "households"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/StatsSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks": {
      "get": {
        "operationId": "playbook_tasks_get",
        "summary": "List tasks",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TaskSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "assignee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "`everyone` (default), `me`, `unassigned`, or a member id"
          },
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by project"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by task status: `pending`, `snoozed`, `completed`, `dismissed`, or `skipped`"
          }
        ]
      },
      "post": {
        "operationId": "playbook_tasks_post",
        "summary": "Create a custom task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomTaskRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/suggestions": {
      "get": {
        "operationId": "playbook_task_suggestions_get",
        "summary": "Renewal-task suggestions",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TaskSuggestionSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Curated renewal suggestions from household profile facts; act on one via the standard task-create endpoint with `suggestion_slug` set."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}": {
      "get": {
        "operationId": "playbook_task_detail_get",
        "summary": "Get a task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "playbook_task_detail_patch",
        "summary": "Update a custom task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomTaskRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_task_detail_delete",
        "summary": "Delete a task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/assign": {
      "post": {
        "operationId": "playbook_task_assign_post",
        "summary": "Assign a task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignTaskRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/complete": {
      "post": {
        "operationId": "playbook_task_complete_post",
        "summary": "Complete a task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/CompleteTaskResponse"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteTaskRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/dismiss": {
      "post": {
        "operationId": "playbook_task_dismiss_post",
        "summary": "Dismiss a task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DismissTaskRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/materials": {
      "get": {
        "operationId": "playbook_task_materials_get",
        "summary": "List task materials",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TaskMaterialSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_task_materials_post",
        "summary": "Add a task material",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskMaterialSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTaskMaterialRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/materials/{material_id}": {
      "patch": {
        "operationId": "playbook_task_material_detail_patch",
        "summary": "Update a task material",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskMaterialSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTaskMaterialRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "playbook_task_material_detail_delete",
        "summary": "Delete a task material",
        "tags": [
          "playbook"
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "material_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `material_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/notes": {
      "get": {
        "operationId": "playbook_task_notes_get",
        "summary": "List task notes",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TaskNoteSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "playbook_task_notes_post",
        "summary": "Add a task note",
        "tags": [
          "playbook"
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskNoteSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTaskNoteRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/reopen": {
      "post": {
        "operationId": "playbook_task_reopen_post",
        "summary": "Reopen a completed task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/ReopenTaskResponse"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/skip": {
      "post": {
        "operationId": "playbook_task_skip_post",
        "summary": "Skip a task occurrence",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key."
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/h/{household_id}/tasks/{task_id}/snooze": {
      "post": {
        "operationId": "playbook_task_snooze_post",
        "summary": "Snooze a task",
        "tags": [
          "playbook"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TaskSchema"
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Requires a `read_write` key.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnoozeTaskRequest"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "household_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `household_` prefix (a bare UUID is also accepted)."
        },
        {
          "name": "task_id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "TypeID with the `task_` prefix (a bare UUID is also accepted)."
        }
      ]
    },
    "/api/v1/households": {
      "get": {
        "operationId": "households_list_create_get",
        "summary": "Discover the key's household",
        "tags": [
          "households"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "data"
                  ],
                  "properties": {
                    "status": {
                      "const": "success"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/HouseholdSchema"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "description": "Returns exactly one household: the one the presented API key belongs to."
      }
    }
  },
  "components": {
    "schemas": {
      "ActivatePlaybookResponse": {
        "additionalProperties": false,
        "properties": {
          "playbook": {
            "$ref": "#/components/schemas/PlaybookSchema"
          },
          "created_task_count": {
            "type": "integer"
          }
        },
        "required": [
          "playbook",
          "created_task_count"
        ],
        "type": "object"
      },
      "AssetSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "property_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "make_model": {
            "type": "string"
          },
          "install_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "notes": {
            "type": "string"
          },
          "model_number": {
            "type": "string"
          },
          "serial_number": {
            "type": "string"
          },
          "gtin": {
            "type": "string"
          },
          "warranty_expires": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "warranty_notes": {
            "type": "string"
          },
          "manual_url": {
            "type": "string"
          },
          "purchase_price_usd": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "vin": {
            "type": "string"
          },
          "year": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "license_plate": {
            "type": "string"
          },
          "registration_state": {
            "type": "string"
          },
          "latest_odometer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OdometerEntrySchema"
              },
              {
                "type": "null"
              }
            ]
          },
          "annualized_miles": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "expected_lifespan_min_years": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "expected_lifespan_max_years": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "age_years": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "eol_status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "property_id",
          "type",
          "label",
          "make_model",
          "install_date",
          "notes",
          "model_number",
          "serial_number",
          "gtin",
          "warranty_expires",
          "warranty_notes",
          "manual_url",
          "purchase_price_usd",
          "vin",
          "year",
          "license_plate",
          "registration_state",
          "latest_odometer",
          "annualized_miles",
          "expected_lifespan_min_years",
          "expected_lifespan_max_years",
          "age_years",
          "eol_status"
        ],
        "type": "object"
      },
      "AssignTaskRequest": {
        "additionalProperties": false,
        "properties": {
          "member_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "BarcodeLookupRequest": {
        "additionalProperties": false,
        "properties": {
          "gtin": {
            "maxLength": 14,
            "minLength": 8,
            "pattern": "^\\d{8,14}$",
            "type": "string"
          }
        },
        "required": [
          "gtin"
        ],
        "type": "object"
      },
      "BarcodeLookupResponse": {
        "additionalProperties": false,
        "properties": {
          "gtin": {
            "type": "string"
          },
          "found": {
            "type": "boolean"
          },
          "brand": {
            "type": "string"
          },
          "product_name": {
            "type": "string"
          }
        },
        "required": [
          "gtin",
          "found",
          "brand",
          "product_name"
        ],
        "type": "object"
      },
      "BillingSummarySchema": {
        "additionalProperties": false,
        "properties": {
          "subscription": {
            "$ref": "#/components/schemas/SubscriptionSchema"
          },
          "entitlements": {
            "$ref": "#/components/schemas/EntitlementsSchema"
          },
          "trial_ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "subscription",
          "entitlements",
          "trial_ends_at"
        ],
        "type": "object"
      },
      "BusKitItemSchema": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "completed": {
            "type": "boolean"
          }
        },
        "required": [
          "slug",
          "title",
          "prompt",
          "body",
          "completed"
        ],
        "type": "object"
      },
      "CompleteTaskRequest": {
        "additionalProperties": false,
        "properties": {
          "note": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "cost_usd": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "performed_by": {
            "default": "",
            "enum": [
              "",
              "diy",
              "hired"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "CompleteTaskResponse": {
        "additionalProperties": false,
        "properties": {
          "task": {
            "$ref": "#/components/schemas/TaskSchema"
          },
          "completion": {
            "$ref": "#/components/schemas/CompletionSchema"
          }
        },
        "required": [
          "task",
          "completion"
        ],
        "type": "object"
      },
      "CompletionSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "completed_by_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "completed_at": {
            "format": "date-time",
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "cost_usd": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "performed_by": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "completed_by_id",
          "completed_at",
          "note",
          "cost_usd",
          "performed_by"
        ],
        "type": "object"
      },
      "ContractorDetailSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "trade": {
            "type": "string"
          },
          "company": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "would_use_again": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "repair_count": {
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "repairs": {
            "items": {
              "$ref": "#/components/schemas/RepairLogSchema"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "trade",
          "company",
          "phone",
          "email",
          "website",
          "notes",
          "would_use_again",
          "repair_count",
          "created_at",
          "repairs"
        ],
        "type": "object"
      },
      "ContractorSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "trade": {
            "type": "string"
          },
          "company": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "would_use_again": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "repair_count": {
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "trade",
          "company",
          "phone",
          "email",
          "website",
          "notes",
          "would_use_again",
          "repair_count",
          "created_at"
        ],
        "type": "object"
      },
      "CreateAssetRequest": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "maxLength": 32,
            "type": "string"
          },
          "label": {
            "maxLength": 100,
            "type": "string"
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "make_model": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "install_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "model_number": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          },
          "serial_number": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          },
          "gtin": {
            "default": "",
            "maxLength": 14,
            "pattern": "^(?:\\d{8,14})?$",
            "type": "string"
          },
          "warranty_expires": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "warranty_notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "manual_url": {
            "default": "",
            "maxLength": 500,
            "type": "string"
          },
          "purchase_price_usd": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "vin": {
            "default": "",
            "maxLength": 17,
            "type": "string"
          },
          "year": {
            "anyOf": [
              {
                "maximum": 2100,
                "minimum": 1900,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "license_plate": {
            "default": "",
            "maxLength": 20,
            "type": "string"
          },
          "registration_state": {
            "default": "",
            "maxLength": 2,
            "type": "string"
          }
        },
        "required": [
          "type",
          "label"
        ],
        "type": "object"
      },
      "CreateContractorRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "trade": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          },
          "company": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "phone": {
            "default": "",
            "maxLength": 50,
            "type": "string"
          },
          "email": {
            "default": "",
            "maxLength": 254,
            "type": "string"
          },
          "website": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "would_use_again": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "CreateCustomTaskRequest": {
        "additionalProperties": false,
        "properties": {
          "title": {
            "maxLength": 200,
            "type": "string"
          },
          "due_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "why": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "how": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "cost_of_skipping": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "project_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "asset_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "pet_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "kind": {
            "default": "",
            "enum": [
              "",
              "registration",
              "inspection",
              "insurance",
              "tax",
              "warranty",
              "license",
              "subscription",
              "vet",
              "other",
              "hvac",
              "plumbing",
              "exterior",
              "safety",
              "financial",
              "household",
              "seasonal",
              "vehicle"
            ],
            "type": "string"
          },
          "lead_times": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "recurrence_every": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "recurrence_unit": {
            "default": "",
            "enum": [
              "",
              "days",
              "weeks",
              "months",
              "years"
            ],
            "type": "string"
          },
          "recurrence_anchor": {
            "default": "completion",
            "enum": [
              "completion",
              "calendar"
            ],
            "type": "string"
          },
          "suggestion_slug": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "CreateDocumentRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 255,
            "type": "string"
          },
          "size": {
            "maximum": 26214400,
            "minimum": 0,
            "type": "integer"
          },
          "mime": {
            "default": "",
            "maxLength": 128,
            "type": "string"
          },
          "kind": {
            "default": "",
            "maxLength": 32,
            "type": "string"
          },
          "linked_asset_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "linked_task_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "linked_pet_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "linked_policy_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "name",
          "size"
        ],
        "type": "object"
      },
      "CreateDocumentResponse": {
        "additionalProperties": false,
        "properties": {
          "document": {
            "$ref": "#/components/schemas/DocumentSchema"
          },
          "upload_url": {
            "type": "string"
          }
        },
        "required": [
          "document",
          "upload_url"
        ],
        "type": "object"
      },
      "CreateInsurancePolicyRequest": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "home",
              "auto",
              "umbrella",
              "flood",
              "renters",
              "gap",
              "life",
              "other"
            ],
            "type": "string"
          },
          "carrier": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "policy_number": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          },
          "premium_usd": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "billing_frequency": {
            "default": "",
            "enum": [
              "",
              "monthly",
              "quarterly",
              "semi_annual",
              "annual"
            ],
            "type": "string"
          },
          "renewal_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "property_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "asset_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "kind",
          "carrier"
        ],
        "type": "object"
      },
      "CreateKidRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "birthdate": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreateOdometerEntryRequest": {
        "additionalProperties": false,
        "properties": {
          "reading": {
            "exclusiveMinimum": 0,
            "maximum": 2147483647,
            "type": "integer"
          },
          "unit": {
            "enum": [
              "mi",
              "km"
            ],
            "type": "string"
          },
          "recorded_on": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "note": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "reading",
          "unit"
        ],
        "type": "object"
      },
      "CreatePartRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "spec": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "asset_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "purchase_url": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "last_purchased": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "name",
          "spec"
        ],
        "type": "object"
      },
      "CreatePetRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "species": {
            "maxLength": 16,
            "type": "string"
          },
          "breed": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          },
          "birthdate": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "last_vet_visit": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "vet_name": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "vet_phone": {
            "default": "",
            "maxLength": 50,
            "type": "string"
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          }
        },
        "required": [
          "name",
          "species"
        ],
        "type": "object"
      },
      "CreatePetWeightRequest": {
        "additionalProperties": false,
        "properties": {
          "weight": {
            "exclusiveMinimum": 0,
            "type": "number"
          },
          "unit": {
            "enum": [
              "lb",
              "kg"
            ],
            "type": "string"
          },
          "measured_on": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "note": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "weight",
          "unit"
        ],
        "type": "object"
      },
      "CreateProjectRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreatePropertyRequest": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "maxLength": 100,
            "type": "string"
          },
          "owns": {
            "enum": [
              "own",
              "rent"
            ],
            "type": "string"
          },
          "home_type": {
            "enum": [
              "single_family",
              "townhouse",
              "condo",
              "mobile_home",
              "multi_family",
              "other"
            ],
            "type": "string"
          },
          "home_age_band": {
            "enum": [
              "pre_1960",
              "1960_1979",
              "1980_1999",
              "2000_2009",
              "2010_present",
              "unknown"
            ],
            "type": "string"
          },
          "zip": {
            "maxLength": 10,
            "type": "string"
          },
          "use": {
            "default": "primary",
            "enum": [
              "primary",
              "secondary",
              "long_term_rental",
              "short_term_rental"
            ],
            "type": "string"
          },
          "street_address": {
            "default": "",
            "maxLength": 200,
            "type": "string"
          },
          "city": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          },
          "state": {
            "default": "",
            "maxLength": 2,
            "type": "string"
          }
        },
        "required": [
          "label",
          "owns",
          "home_type",
          "home_age_band",
          "zip"
        ],
        "type": "object"
      },
      "CreateRepairLogRequest": {
        "additionalProperties": false,
        "properties": {
          "title": {
            "maxLength": 200,
            "type": "string"
          },
          "repaired_on": {
            "format": "date",
            "type": "string"
          },
          "cost_usd": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer"
          },
          "performed_by": {
            "enum": [
              "diy",
              "hired"
            ],
            "type": "string"
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "asset_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "contractor_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "project_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          }
        },
        "required": [
          "title",
          "repaired_on",
          "cost_usd",
          "performed_by"
        ],
        "type": "object"
      },
      "CreateTaskMaterialRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "quantity": {
            "default": "",
            "maxLength": 100,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreateTaskNoteRequest": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 50000,
            "type": "string"
          }
        },
        "required": [
          "body"
        ],
        "type": "object"
      },
      "DismissTaskRequest": {
        "additionalProperties": false,
        "properties": {
          "reason": {
            "maxLength": 50000,
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "DocumentSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size": {
            "type": "integer"
          },
          "mime": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "linked_asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "linked_task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "linked_pet_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "linked_policy_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "size",
          "mime",
          "kind",
          "status",
          "linked_asset_id",
          "linked_task_id",
          "linked_pet_id",
          "linked_policy_id",
          "created_at"
        ],
        "type": "object"
      },
      "DownloadSchema": {
        "additionalProperties": false,
        "properties": {
          "download_url": {
            "type": "string"
          }
        },
        "required": [
          "download_url"
        ],
        "type": "object"
      },
      "EntitlementsSchema": {
        "additionalProperties": false,
        "properties": {
          "is_entitled": {
            "type": "boolean"
          },
          "plan": {
            "type": "string"
          },
          "vault_enabled": {
            "type": "boolean"
          },
          "deadline_radar_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "is_entitled",
          "plan",
          "vault_enabled",
          "deadline_radar_enabled"
        ],
        "type": "object"
      },
      "EventFeedSchema": {
        "additionalProperties": false,
        "properties": {
          "events": {
            "items": {
              "$ref": "#/components/schemas/EventSchema"
            },
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "events",
          "next_cursor"
        ],
        "type": "object"
      },
      "EventHeadSchema": {
        "additionalProperties": false,
        "description": "Change-detection cursor: the household's most recent event id (realtime-updates\nspec). Clients poll this as the fallback when the SSE stream is unavailable.",
        "properties": {
          "head": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "head"
        ],
        "type": "object"
      },
      "EventSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "verb": {
            "type": "string"
          },
          "actor_name": {
            "type": "string"
          },
          "target_type": {
            "type": "string"
          },
          "target_id": {
            "type": "string"
          },
          "target_label": {
            "type": "string"
          },
          "payload": {
            "additionalProperties": true,
            "type": "object"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "verb",
          "actor_name",
          "target_type",
          "target_id",
          "target_label",
          "payload",
          "created_at"
        ],
        "type": "object"
      },
      "HoldProjectRequest": {
        "additionalProperties": false,
        "properties": {
          "reason": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          }
        },
        "type": "object"
      },
      "HouseholdMemberSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "is_you": {
            "type": "boolean"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "joined_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "is_you",
          "email",
          "name",
          "role",
          "joined_at"
        ],
        "type": "object"
      },
      "HouseholdMemberStatSchema": {
        "additionalProperties": false,
        "properties": {
          "member_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          }
        },
        "required": [
          "member_id",
          "name",
          "count"
        ],
        "type": "object"
      },
      "HouseholdSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "plan_status": {
            "type": "string"
          },
          "stats_opted_out": {
            "type": "boolean"
          },
          "trial_ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "entitlements": {
            "$ref": "#/components/schemas/EntitlementsSchema"
          }
        },
        "required": [
          "id",
          "name",
          "timezone",
          "plan_status",
          "stats_opted_out",
          "trial_ends_at",
          "entitlements"
        ],
        "type": "object"
      },
      "InsurancePolicySchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "home",
              "auto",
              "umbrella",
              "flood",
              "renters",
              "gap",
              "life",
              "other"
            ],
            "type": "string"
          },
          "carrier": {
            "type": "string"
          },
          "policy_number": {
            "type": "string"
          },
          "premium_usd": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "billing_frequency": {
            "enum": [
              "",
              "monthly",
              "quarterly",
              "semi_annual",
              "annual"
            ],
            "type": "string"
          },
          "renewal_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "notes": {
            "type": "string"
          },
          "property_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "asset_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "renewal_task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "carrier",
          "policy_number",
          "premium_usd",
          "billing_frequency",
          "renewal_date",
          "notes",
          "property_ids",
          "asset_ids",
          "renewal_task_id",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "InviteSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "email",
          "role",
          "status",
          "created_at",
          "expires_at"
        ],
        "type": "object"
      },
      "KidSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "birthdate": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "birthdate",
          "created_at"
        ],
        "type": "object"
      },
      "MoneySavedSchema": {
        "additionalProperties": false,
        "properties": {
          "total_usd": {
            "type": "integer"
          }
        },
        "required": [
          "total_usd"
        ],
        "type": "object"
      },
      "NameplateScanRequest": {
        "additionalProperties": false,
        "properties": {
          "image": {
            "maxLength": 2000000,
            "minLength": 1,
            "type": "string"
          },
          "mime": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp"
            ],
            "type": "string"
          }
        },
        "required": [
          "image",
          "mime"
        ],
        "type": "object"
      },
      "NameplateScanResponse": {
        "additionalProperties": false,
        "properties": {
          "readable": {
            "type": "boolean"
          },
          "brand": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "model_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "serial_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "readable",
          "brand",
          "model_number",
          "serial_number"
        ],
        "type": "object"
      },
      "OdometerEntrySchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "reading": {
            "type": "integer"
          },
          "unit": {
            "enum": [
              "mi",
              "km"
            ],
            "type": "string"
          },
          "recorded_on": {
            "format": "date",
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "reading",
          "unit",
          "recorded_on",
          "note",
          "created_at"
        ],
        "type": "object"
      },
      "PartSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "property_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "spec": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "purchase_url": {
            "type": "string"
          },
          "last_purchased": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "asset_id",
          "property_id",
          "name",
          "spec",
          "notes",
          "purchase_url",
          "last_purchased",
          "created_at"
        ],
        "type": "object"
      },
      "PetSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "species": {
            "type": "string"
          },
          "breed": {
            "type": "string"
          },
          "birthdate": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_vet_visit": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "vet_name": {
            "type": "string"
          },
          "vet_phone": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "latest_weight": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PetWeightSchema"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "species",
          "breed",
          "birthdate",
          "last_vet_visit",
          "vet_name",
          "vet_phone",
          "notes",
          "photo_url",
          "latest_weight",
          "created_at"
        ],
        "type": "object"
      },
      "PetWeightSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "weight": {
            "type": "number"
          },
          "unit": {
            "enum": [
              "lb",
              "kg"
            ],
            "type": "string"
          },
          "measured_on": {
            "format": "date",
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "weight",
          "unit",
          "measured_on",
          "note",
          "created_at"
        ],
        "type": "object"
      },
      "PlaybookItemSchema": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "why": {
            "type": "string"
          },
          "how": {
            "type": "string"
          },
          "cost_of_skipping": {
            "type": "string"
          },
          "due_offset_days": {
            "type": "integer"
          },
          "effort_minutes": {
            "type": "integer"
          },
          "est_value_usd": {
            "type": "integer"
          }
        },
        "required": [
          "slug",
          "title",
          "why",
          "how",
          "cost_of_skipping",
          "due_offset_days",
          "effort_minutes",
          "est_value_usd"
        ],
        "type": "object"
      },
      "PlaybookSchema": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlaybookItemSchema"
            },
            "type": "array"
          },
          "activated": {
            "type": "boolean"
          },
          "activated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "slug",
          "title",
          "description",
          "items",
          "activated",
          "activated_at"
        ],
        "type": "object"
      },
      "ProfileSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "has_kids": {
            "type": "boolean"
          },
          "has_pets": {
            "type": "boolean"
          },
          "moved_in_on": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "onboarded_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "state",
          "has_kids",
          "has_pets",
          "moved_in_on",
          "onboarded_at",
          "updated_at"
        ],
        "type": "object"
      },
      "ProjectDetailSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "status": {
            "enum": [
              "planning",
              "in_progress",
              "on_hold",
              "done"
            ],
            "type": "string"
          },
          "on_hold": {
            "type": "boolean"
          },
          "hold_reason": {
            "type": "string"
          },
          "tasks_done": {
            "type": "integer"
          },
          "tasks_total": {
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "tasks": {
            "items": {
              "$ref": "#/components/schemas/TaskSchema"
            },
            "type": "array"
          },
          "repairs": {
            "items": {
              "$ref": "#/components/schemas/RepairLogSchema"
            },
            "type": "array"
          },
          "materials": {
            "items": {
              "$ref": "#/components/schemas/TaskMaterialSchema"
            },
            "type": "array"
          },
          "spend_usd": {
            "type": "integer"
          },
          "history": {
            "items": {
              "$ref": "#/components/schemas/EventSchema"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "notes",
          "status",
          "on_hold",
          "hold_reason",
          "tasks_done",
          "tasks_total",
          "created_at",
          "updated_at",
          "tasks",
          "repairs",
          "materials",
          "spend_usd",
          "history"
        ],
        "type": "object"
      },
      "ProjectSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "status": {
            "enum": [
              "planning",
              "in_progress",
              "on_hold",
              "done"
            ],
            "type": "string"
          },
          "on_hold": {
            "type": "boolean"
          },
          "hold_reason": {
            "type": "string"
          },
          "tasks_done": {
            "type": "integer"
          },
          "tasks_total": {
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "notes",
          "status",
          "on_hold",
          "hold_reason",
          "tasks_done",
          "tasks_total",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "PropertySchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "street_address": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "owns": {
            "type": "string"
          },
          "use": {
            "type": "string"
          },
          "home_type": {
            "type": "string"
          },
          "home_age_band": {
            "type": "string"
          },
          "zip": {
            "type": "string"
          },
          "climate_zone": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "label",
          "street_address",
          "city",
          "state",
          "owns",
          "use",
          "home_type",
          "home_age_band",
          "zip",
          "climate_zone",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "ReopenTaskResponse": {
        "additionalProperties": false,
        "description": "`successor_kept` is true when the reopened task's completion had spawned a next\noccurrence that someone had already engaged with, so it was left in place instead of\nwithdrawn \u2014 the UI says so rather than leaving an unexplained duplicate.",
        "properties": {
          "task": {
            "$ref": "#/components/schemas/TaskSchema"
          },
          "successor_kept": {
            "type": "boolean"
          }
        },
        "required": [
          "task",
          "successor_kept"
        ],
        "type": "object"
      },
      "RepairLogSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "property_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "contractor_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "repaired_on": {
            "format": "date",
            "type": "string"
          },
          "cost_usd": {
            "type": "integer"
          },
          "performed_by": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "property_id",
          "asset_id",
          "contractor_id",
          "project_id",
          "title",
          "repaired_on",
          "cost_usd",
          "performed_by",
          "notes",
          "created_at"
        ],
        "type": "object"
      },
      "SnoozeTaskRequest": {
        "additionalProperties": false,
        "properties": {
          "due_date": {
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "due_date"
        ],
        "type": "object"
      },
      "SpendBreakdownSchema": {
        "additionalProperties": false,
        "properties": {
          "total_usd": {
            "type": "integer"
          },
          "diy_usd": {
            "type": "integer"
          },
          "hired_usd": {
            "type": "integer"
          }
        },
        "required": [
          "total_usd",
          "diy_usd",
          "hired_usd"
        ],
        "type": "object"
      },
      "SpendReportSchema": {
        "additionalProperties": false,
        "properties": {
          "years": {
            "items": {
              "$ref": "#/components/schemas/SpendReportYearSchema"
            },
            "type": "array"
          }
        },
        "required": [
          "years"
        ],
        "type": "object"
      },
      "SpendReportYearSchema": {
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer"
          },
          "prevention": {
            "$ref": "#/components/schemas/SpendBreakdownSchema"
          },
          "repair": {
            "$ref": "#/components/schemas/SpendBreakdownSchema"
          }
        },
        "required": [
          "year",
          "prevention",
          "repair"
        ],
        "type": "object"
      },
      "StatsSchema": {
        "additionalProperties": false,
        "properties": {
          "member_stats": {
            "items": {
              "$ref": "#/components/schemas/HouseholdMemberStatSchema"
            },
            "type": "array"
          },
          "streak_weeks": {
            "type": "integer"
          }
        },
        "required": [
          "member_stats",
          "streak_weeks"
        ],
        "type": "object"
      },
      "SubscriptionSchema": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "seats": {
            "type": "integer"
          },
          "current_period_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "status",
          "plan",
          "seats",
          "current_period_end"
        ],
        "type": "object"
      },
      "TaskMaterialSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "quantity": {
            "type": "string"
          },
          "purchased": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "quantity",
          "purchased"
        ],
        "type": "object"
      },
      "TaskNoteSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "author_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "author_name": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "author_id",
          "author_name",
          "body",
          "created_at"
        ],
        "type": "object"
      },
      "TaskSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "property_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "pet_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "why": {
            "type": "string"
          },
          "how": {
            "type": "string"
          },
          "cost_of_skipping": {
            "type": "string"
          },
          "due_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "due_mileage": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "due_mileage_unit": {
            "anyOf": [
              {
                "enum": [
                  "mi",
                  "km"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "lead_times": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "suggestion_slug": {
            "type": "string"
          },
          "dismissed_reason": {
            "type": "string"
          },
          "assigned_to_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "materials": {
            "items": {
              "$ref": "#/components/schemas/TaskMaterialSchema"
            },
            "type": "array"
          },
          "recurrence_every": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "recurrence_unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "recurrence_anchor": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "property_id",
          "template_id",
          "asset_id",
          "pet_id",
          "project_id",
          "title",
          "why",
          "how",
          "cost_of_skipping",
          "due_date",
          "due_mileage",
          "due_mileage_unit",
          "status",
          "source",
          "kind",
          "lead_times",
          "suggestion_slug",
          "dismissed_reason",
          "assigned_to_id",
          "materials",
          "recurrence_every",
          "recurrence_unit",
          "recurrence_anchor"
        ],
        "type": "object"
      },
      "TaskSuggestionSchema": {
        "additionalProperties": false,
        "description": "A curated renewal suggestion (moved from the retired deadlines app).",
        "properties": {
          "slug": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "default_lead_times": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "recurrence": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "target_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "target_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "slug",
          "kind",
          "title",
          "description",
          "default_lead_times",
          "recurrence",
          "scope",
          "target_id",
          "target_label"
        ],
        "type": "object"
      },
      "UpdateAssetRequest": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "label": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "make_model": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "install_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "model_number": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "serial_number": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "gtin": {
            "anyOf": [
              {
                "maxLength": 14,
                "pattern": "^(?:\\d{8,14})?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "warranty_expires": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "warranty_notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "manual_url": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "purchase_price_usd": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "vin": {
            "anyOf": [
              {
                "maxLength": 17,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "year": {
            "anyOf": [
              {
                "maximum": 2100,
                "minimum": 1900,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "license_plate": {
            "anyOf": [
              {
                "maxLength": 20,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "registration_state": {
            "anyOf": [
              {
                "maxLength": 2,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateBusKitEntryRequest": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "default": "",
            "maxLength": 50000,
            "type": "string"
          },
          "completed": {
            "default": false,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "UpdateContractorRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "trade": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "company": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "phone": {
            "anyOf": [
              {
                "maxLength": 50,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "email": {
            "anyOf": [
              {
                "maxLength": 254,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "website": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "would_use_again": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateCustomTaskRequest": {
        "additionalProperties": false,
        "properties": {
          "title": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "due_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "why": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "how": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "cost_of_skipping": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "project_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "asset_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "pet_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "kind": {
            "anyOf": [
              {
                "enum": [
                  "",
                  "registration",
                  "inspection",
                  "insurance",
                  "tax",
                  "warranty",
                  "license",
                  "subscription",
                  "vet",
                  "other",
                  "hvac",
                  "plumbing",
                  "exterior",
                  "safety",
                  "financial",
                  "household",
                  "seasonal",
                  "vehicle"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "lead_times": {
            "anyOf": [
              {
                "items": {
                  "type": "integer"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "recurrence_every": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "recurrence_unit": {
            "anyOf": [
              {
                "enum": [
                  "",
                  "days",
                  "weeks",
                  "months",
                  "years"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "recurrence_anchor": {
            "anyOf": [
              {
                "enum": [
                  "completion",
                  "calendar"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateInsurancePolicyRequest": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "anyOf": [
              {
                "enum": [
                  "home",
                  "auto",
                  "umbrella",
                  "flood",
                  "renters",
                  "gap",
                  "life",
                  "other"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "carrier": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "policy_number": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "premium_usd": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "billing_frequency": {
            "anyOf": [
              {
                "enum": [
                  "",
                  "monthly",
                  "quarterly",
                  "semi_annual",
                  "annual"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "renewal_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "property_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "asset_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateKidRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "birthdate": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdatePartRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "spec": {
            "anyOf": [
              {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "purchase_url": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "last_purchased": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdatePetRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "species": {
            "anyOf": [
              {
                "maxLength": 16,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "breed": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "birthdate": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "last_vet_visit": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "vet_name": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "vet_phone": {
            "anyOf": [
              {
                "maxLength": 50,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateProfileRequest": {
        "additionalProperties": false,
        "properties": {
          "state": {
            "anyOf": [
              {
                "maxLength": 2,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "has_kids": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "has_pets": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "moved_in_on": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateProjectRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdatePropertyRequest": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "owns": {
            "anyOf": [
              {
                "enum": [
                  "own",
                  "rent"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "use": {
            "anyOf": [
              {
                "enum": [
                  "primary",
                  "secondary",
                  "long_term_rental",
                  "short_term_rental"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "home_type": {
            "anyOf": [
              {
                "enum": [
                  "single_family",
                  "townhouse",
                  "condo",
                  "mobile_home",
                  "multi_family",
                  "other"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "home_age_band": {
            "anyOf": [
              {
                "enum": [
                  "pre_1960",
                  "1960_1979",
                  "1980_1999",
                  "2000_2009",
                  "2010_present",
                  "unknown"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "zip": {
            "anyOf": [
              {
                "maxLength": 10,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "street_address": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "city": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "state": {
            "anyOf": [
              {
                "maxLength": 2,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateRepairLogRequest": {
        "additionalProperties": false,
        "properties": {
          "title": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "repaired_on": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "cost_usd": {
            "anyOf": [
              {
                "maximum": 2147483647,
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "performed_by": {
            "anyOf": [
              {
                "enum": [
                  "diy",
                  "hired"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "property_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "asset_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "contractor_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "project_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 50000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "UpdateTaskMaterialRequest": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "quantity": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "purchased": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      }
    },
    "responses": {
      "Error": {
        "description": "Client error",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "status",
                "detail"
              ],
              "properties": {
                "status": {
                  "const": "error"
                },
                "detail": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "adk_...",
        "description": "Household API key, minted on the account page in the web app. `read` keys may only use safe methods; `read_write` keys write at member level."
      }
    }
  },
  "servers": [
    {
      "url": "https://api.adulting.app"
    }
  ]
}
