{"openapi":"3.1.0","info":{"title":"RESIVIS","version":"0.1"},"paths":{"/v1/health":{"get":{"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/email/start":{"post":{"summary":"Email Start","operationId":"email_start_v1_auth_email_start_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/email/verify":{"post":{"summary":"Email Verify","operationId":"email_verify_v1_auth_email_verify_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/apple":{"post":{"summary":"Apple","operationId":"apple_v1_auth_apple_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google":{"post":{"summary":"Google","operationId":"google_v1_auth_google_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site/find":{"get":{"summary":"Site Find","description":"An address as typed -> the places it could be (OpenStreetMap; searched when asked, not as each letter is\ntyped).","operationId":"site_find_v1_site_find_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site/orient":{"get":{"summary":"Site Orient","description":"Which way the house at a place faces, with the buildings and streets round it (metres east and north of\nit) for drawing a small map.","operationId":"site_orient_v1_site_orient_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"street","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"}},{"name":"number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/signout":{"post":{"summary":"Signout","operationId":"signout_v1_auth_signout_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me":{"get":{"summary":"Get Me","operationId":"get_me_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"patch":{"summary":"Patch Me","operationId":"patch_me_v1_me_patch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Me","operationId":"delete_me_v1_me_delete","parameters":[{"name":"confirm","in":"query","required":false,"schema":{"type":"string","default":"","title":"Confirm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/ai-credit":{"get":{"summary":"Admin Ai Credit","description":"(12 Oct: \"how much AI credit do I have left\") the AI Gateway's credit for the people who run this server:\nwhat's left and what's been spent, asked of the gateway with the server's own key (never shown).","operationId":"admin_ai_credit_v1_admin_ai_credit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/feedback":{"get":{"summary":"Feedback List","operationId":"feedback_list_v1_feedback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Feedback","description":"What someone thinks of the app, in their words, with where they were (screen, design, floor, view) and,\nif they chose, a picture of it. Kept for the people who run the server (GET /v1/feedback).","operationId":"feedback_v1_feedback_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/agents":{"get":{"summary":"Agents List","operationId":"agents_list_v1_me_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Agents Connect","operationId":"agents_connect_v1_me_agents_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/agents/{key_id}":{"delete":{"summary":"Agents Disconnect","operationId":"agents_disconnect_v1_me_agents__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/deletion":{"get":{"summary":"Deletion","description":"What deleting the account takes with it, in numbers, for the screen that asks.","operationId":"deletion_v1_me_deletion_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/me/export.zip":{"get":{"summary":"Export Everything","description":"Everything of yours, before deleting: each project's designs, floor by floor (as RESIVIS keeps them),\nwith the comments, in one zip.","operationId":"export_everything_v1_me_export_zip_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/projects":{"get":{"summary":"List Projects","operationId":"list_projects_v1_projects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create Project","operationId":"create_project_v1_projects_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}":{"get":{"summary":"Get Project","operationId":"get_project_v1_projects__pid__get","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Patch Project","operationId":"patch_project_v1_projects__pid__patch","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Project","operationId":"delete_project_v1_projects__pid__delete","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/designs":{"post":{"summary":"New Design","operationId":"new_design_v1_projects__pid__designs_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/rooms":{"get":{"summary":"Design Rooms","description":"Every room of a design, floor by floor (to pick one).","operationId":"design_rooms_v1_designs__did__rooms_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/ideas":{"post":{"summary":"Room Ideas","description":"Ideas for one room: the room laid out up to three ways (plankit.ideas), each a new design copied from\n``from`` with that room rearranged, named for what moved; the ones with the fewest problems first.","operationId":"room_ideas_v1_projects__pid__ideas_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/add-space":{"get":{"summary":"Space Info","description":"What Add space needs to show: the ground floor's width at the rear, and the rules by house type.","operationId":"space_info_v1_projects__pid__add_space_get","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Add Space","description":"Add space, tried in a new design copied from ``from``: a rear extension (``depth`` mm) is drawn onto the\nground floor, full width; the other kinds start a design named for them, to draw in the editor.","operationId":"add_space_v1_projects__pid__add_space_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}":{"get":{"summary":"Get Design","operationId":"get_design_v1_designs__did__get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Patch Design","operationId":"patch_design_v1_designs__did__patch","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Design","operationId":"delete_design_v1_designs__did__delete","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/history":{"get":{"summary":"Design History","operationId":"design_history_v1_designs__did__history_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/restore":{"post":{"summary":"Restore","operationId":"restore_v1_designs__did__restore_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/editor":{"post":{"summary":"Open Editor","operationId":"open_editor_v1_designs__did__editor_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/plan.svg":{"get":{"summary":"Plan Svg","description":"The floor's plan; ``focus`` (room ids, comma-separated): just those rooms and what's round them; ``n``: as\nit stood at that revision.","operationId":"plan_svg_v1_designs__did__plan_svg_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"overlay","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overlay"}},{"name":"focus","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Focus"}},{"name":"n","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/stairs":{"get":{"summary":"Stairs Info","description":"The stair (the prototype's Stairs): its numbers, what the building regulations ask of them, and the\nchecks on it in words (headroom, winders, the void).","operationId":"stairs_info_v1_designs__did__stairs_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Stairs Set","description":"The stair's numbers typed in (floor to floor, risers, going, width, the turns): one revision, then the\nstair as it is now with its checks.","operationId":"stairs_set_v1_designs__did__stairs_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/stairs.png":{"get":{"summary":"Stairs Png","operationId":"stairs_png_v1_designs__did__stairs_png_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"width","in":"query","required":false,"schema":{"type":"integer","default":1400,"title":"Width"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/kitchen":{"get":{"summary":"Kitchen Info","description":"The kitchen (the prototype's Kitchen): each run's units in order with their widths, the worktop and base\nlengths, the door style and finishes, and what the kitchen checks say about it in words.","operationId":"kitchen_info_v1_designs__did__kitchen_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/kitchen.png":{"get":{"summary":"Kitchen Png","description":"The kitchen sheet: its plan and an elevation of each run.","operationId":"kitchen_png_v1_designs__did__kitchen_png_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"width","in":"query","required":false,"schema":{"type":"integer","default":1400,"title":"Width"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/drawings.pdf":{"get":{"summary":"Drawings Pdf","description":"(11 Oct) The editor's drawings as a PDF for the app to save or share (the editor's Download): one\n(``sheet``), a room's (``room``) or every drawing on the floor (``every``); with the drawing pack's plan.","operationId":"drawings_pdf_v1_designs__did__drawings_pdf_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"sheet","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet"}},{"name":"room","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room"}},{"name":"every","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Every"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/lighting":{"get":{"summary":"Lighting Info","description":"Light levels room by room (the prototype's Lighting): the light the downlights put on the floor against\nwhat the room needs, the darkest, how even it is, and where it's darker.","operationId":"lighting_info_v1_designs__did__lighting_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/source-plan":{"get":{"summary":"Source Plan","description":"The plan picture a floor was (or is being) drawn from, as sent (a PDF's page as read).","operationId":"source_plan_v1_designs__did__source_plan_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/plan.geom":{"get":{"summary":"Plan Geom","description":"Where plan.svg / plan.png put the plan: a point (x, y) in mm is at ((x - minx) * s + m, (y - miny) * s + m)\nof a W × H picture (pins on the plan, and taps on it back to mm).","operationId":"plan_geom_v1_designs__did__plan_geom_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/plan.png":{"get":{"summary":"Plan Png","operationId":"plan_png_v1_designs__did__plan_png_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"overlay","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overlay"}},{"name":"width","in":"query","required":false,"schema":{"type":"integer","default":1200,"title":"Width"}},{"name":"focus","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Focus"}},{"name":"n","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/check":{"get":{"summary":"Check","description":"What was read from a plan or a scan, to check: each room with its size (and the note about it, if one\nwas made), how the scale was found, and the questions left, each with answers to pick from.","operationId":"check_v1_designs__did__check_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/decisions":{"get":{"summary":"Decisions","description":"Before it goes to the builder, over every floor: what must be fixed (the errors still open), what's the\nperson's call (questions, and choices with options), and the guesses made that they haven't confirmed.","operationId":"decisions_v1_designs__did__decisions_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/scale":{"post":{"summary":"Scale","description":"A plan with no sizes on it, scaled from one length the person knows: ``wall`` is ``length`` mm. The\nscale's note becomes a fact (what they gave).","operationId":"scale_v1_designs__did__scale_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/answers":{"post":{"summary":"Answers","description":"The person's checks: ``rooms`` they confirmed (their sizes become facts), and ``answers`` {id: {choice,\ntext}} to the questions (the choice, or the right answer in their words, confirmed). One revision.","operationId":"answers_v1_designs__did__answers_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/conversation":{"get":{"summary":"Design Conversation","description":"The editor's conversation on a design (a floor of it), newest last, each turn with its trace: what the\ndesigner was told, each step it took and what came back. For the people who can change the design.","operationId":"design_conversation_v1_designs__did__conversation_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/conversations":{"get":{"summary":"Admin Conversations","description":"Every design's conversation turns (newest last) for the people who run this server (RESIVIS_ADMINS), to\nfind where the designer goes wrong: ``stuck`` keeps the turns that changed nothing, failed or were stopped.","operationId":"admin_conversations_v1_admin_conversations_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"days","in":"query","required":false,"schema":{"type":"number","default":7,"title":"Days"}},{"name":"stuck","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stuck"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/brief.json":{"get":{"summary":"Brief Json","operationId":"brief_json_v1_designs__did__brief_json_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"n","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/model.glb":{"get":{"summary":"Model Glb","operationId":"model_glb_v1_designs__did__model_glb_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/ar-link":{"post":{"summary":"Ar Link","description":"(15 Oct, Android: Google's Scene Viewer, as iPhone has Quick Look with the USDZ) a link to the floor's AR\nmodel good for 30 minutes, and the Scene Viewer address that opens it. Free, like the USDZ.","operationId":"ar_link_v1_designs__did__ar_link_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/model.usdz":{"get":{"summary":"Model Usdz","description":"For AR (free): the floor without ceilings, to place on a table or walk round at full size.","operationId":"model_usdz_v1_designs__did__model_usdz_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"ceiling","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Ceiling"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/quantities":{"get":{"summary":"Quantities","operationId":"quantities_v1_designs__did__quantities_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/costs":{"get":{"summary":"Costs","description":"Quantities and costs (the prototype's Costs): one line per material to order over every floor, with its\nprice per m² from the price book (the materials library), you, or your builder, and what it comes to; the\nkitchen and labour as lines for a quote. Comes with the quantities (a Project pass).","operationId":"costs_v1_designs__did__costs_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"book","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/prices":{"put":{"summary":"Put Price","operationId":"put_price_v1_projects__pid__prices_put","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/plan.dxf":{"get":{"summary":"Plan Dxf","description":"A floor as DXF for CAD (Studio): walls, rooms with names and areas, doors with their swings, windows,\nfittings (plankit.cad).","operationId":"plan_dxf_v1_designs__did__plan_dxf_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/model.ifc":{"get":{"summary":"Model Ifc","description":"The whole home as IFC for BIM software (Studio): a storey per floor, walls, spaces, doors and windows.","operationId":"model_ifc_v1_designs__did__model_ifc_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/export/{kind}":{"post":{"summary":"Export Cad","description":"Where a CAD or building-model file is downloaded from (DWG: CAD apps open the DXF).","operationId":"export_cad_v1_designs__did__export__kind__post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/drawings":{"post":{"summary":"Drawings","description":"The builder's drawing pack for each floor (plans, setting out, electrical, plumbing, elevations, schedules).","operationId":"drawings_v1_designs__did__drawings_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{jid}":{"get":{"summary":"Job","operationId":"job_v1_jobs__jid__get","parameters":[{"name":"jid","in":"path","required":true,"schema":{"type":"string","title":"Jid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/jobs":{"get":{"summary":"Project Jobs","description":"What's running for this project, and what finished in the last hour (for the project screen's card).","operationId":"project_jobs_v1_projects__pid__jobs_get","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{jid}/files/{path}":{"get":{"summary":"Job File","operationId":"job_file_v1_jobs__jid__files__path__get","parameters":[{"name":"jid","in":"path","required":true,"schema":{"type":"string","title":"Jid"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/scan":{"post":{"summary":"Scan","description":"A RoomPlan scan (CapturedStructure or CapturedRoom JSON) becomes a floor of the starting point.","operationId":"scan_v1_projects__pid__scan_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/start":{"post":{"summary":"Start From","description":"Fill a new, empty project from the example home or a copy of a design ({start: example|copy, from}).","operationId":"start_from_v1_projects__pid__start_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/plan-photo":{"post":{"summary":"Plan Photo","description":"A floor plan (a photo, a screenshot or a document), drawn into the starting point by the drawing model.\nThe plans are found in it (a PDF's pages that are drawings), and each is drawn into the floor it shows; with\n``floor`` only that floor is drawn (added, named ``label``, when the project doesn't have it). It runs in the\nbackground: the rooms appear as they're drawn, the project's jobs show how far it's got, and the floors being\ndrawn can't be edited until it's done. Floors that already have rooms are only drawn afresh with ``replace``\n(409 without: the app asks first); what was there stays in the history.","operationId":"plan_photo_v1_projects__pid__plan_photo_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}},{"name":"floor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"replace","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Replace"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/floors/{floor}/move":{"post":{"summary":"Move Floor","description":"A floor said to be another ({label, to?, replace?}): a plan that didn't say which floor it showed was drawn\non the first empty one, and the person says which it is. Its drawing moves there in every design (new\nrevisions: the history keeps where it was); a floor made only for it goes. 409 when that floor has rooms\nalready (``replace`` to draw over them).","operationId":"move_floor_v1_projects__pid__floors__floor__move_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}},{"name":"floor","in":"path","required":true,"schema":{"type":"string","title":"Floor"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/people":{"get":{"summary":"People","operationId":"people_v1_projects__pid__people_get","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/invites":{"post":{"summary":"Invite","description":"An invite link (and a code to type); with an email address, and email set up on this server, it's emailed\ntoo (``sent``). A phone number goes in as their name: the app shares the message by text.","operationId":"invite_v1_projects__pid__invites_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/qr.svg":{"get":{"summary":"Qr","description":"A QR code of one of this server's links (an invite, a view link), to show on site.","operationId":"qr_v1_qr_svg_get","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/invites/{iid}":{"delete":{"summary":"Revoke","operationId":"revoke_v1_projects__pid__invites__iid__delete","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}},{"name":"iid","in":"path","required":true,"schema":{"type":"string","title":"Iid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{pid}/members/{uid}":{"patch":{"summary":"Patch Member","operationId":"patch_member_v1_projects__pid__members__uid__patch","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}},{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Remove Member","operationId":"remove_member_v1_projects__pid__members__uid__delete","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}},{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{token}":{"get":{"summary":"Invite Preview","operationId":"invite_preview_v1_invites__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{token}/accept":{"post":{"summary":"Accept","operationId":"accept_v1_invites__token__accept_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/comments":{"get":{"summary":"Comments","operationId":"comments_v1_designs__did__comments_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Add Comment","operationId":"add_comment_v1_designs__did__comments_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/comments/{cid}":{"patch":{"summary":"Patch Comment","operationId":"patch_comment_v1_comments__cid__patch","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string","title":"Cid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Comment","operationId":"delete_comment_v1_comments__cid__delete","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string","title":"Cid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/approve":{"post":{"summary":"Approve","operationId":"approve_v1_designs__did__approve_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/ask-approval":{"post":{"summary":"Ask Approval","description":"Ask someone on the project to approve this design (Studio): it's in their activity, and emailed when the\nserver can.","operationId":"ask_approval_v1_designs__did__ask_approval_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/designs/{did}/proposal":{"get":{"summary":"Proposal","description":"What someone approving a design sees: whose proposal (the studio's name), the version, a picture, what it\nchanges from the home as it is (a few lines), and the approvals so far.","operationId":"proposal_v1_designs__did__proposal_get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/activity":{"get":{"summary":"Activity","operationId":"activity_v1_activity_get","parameters":[{"name":"project","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/activity/seen":{"post":{"summary":"Activity Seen","operationId":"activity_seen_v1_activity_seen_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/projects/{pid}/renders":{"get":{"summary":"Project Renders","operationId":"project_renders_v1_projects__pid__renders_get","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/renders/{job}/retry":{"post":{"summary":"Render Retry","description":"A render that didn't finish, tried again as it was: on RunPod's GPUs when they're set up, else on this\nMac's Blender now, or by the render watcher. Not charged again, unless its credits were given back when it\nfailed (14 Oct): then it's charged as a new render.","operationId":"render_retry_v1_renders__job__retry_post","parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/renders/{job}/{img}":{"get":{"summary":"Render Img","operationId":"render_img_v1_renders__job___img__get","parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}},{"name":"img","in":"path","required":true,"schema":{"type":"string","title":"Img"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/catalogue":{"get":{"summary":"Catalogue","description":"Products read from their pages (shared by everyone on this server) and your own things from photos\n(yours only: \"My things\", 9 Oct), newest first; ``q`` narrows it, ``mine`` keeps to your things.","operationId":"catalogue_v1_catalogue_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mine"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Catalogue Read","description":"A product link: from the catalogue when it's been read before (anyone); read from its page now (a Project\npass or Studio: it uses the model) otherwise, or again with ``force``.","operationId":"catalogue_read_v1_catalogue_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/catalogue/{prod}/photo":{"get":{"summary":"Catalogue Photo","description":"The small copy of the photo one of your things came from: yours only.","operationId":"catalogue_photo_v1_catalogue__prod__photo_get","parameters":[{"name":"prod","in":"path","required":true,"schema":{"type":"string","title":"Prod"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/catalogue/{prod}":{"delete":{"summary":"Catalogue Forget","description":"One of your things gone, its photo with it (what's in a plan stays as it was placed).","operationId":"catalogue_forget_v1_catalogue__prod__delete","parameters":[{"name":"prod","in":"path","required":true,"schema":{"type":"string","title":"Prod"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Catalogue One","operationId":"catalogue_one_v1_catalogue__prod__get","parameters":[{"name":"prod","in":"path","required":true,"schema":{"type":"string","title":"Prod"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plans":{"get":{"summary":"List Plans","operationId":"list_plans_v1_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/billing/claim":{"post":{"summary":"Claim","description":"After a purchase in the app: the store's transaction, checked on RevenueCat, recorded once under the store's\nown id (whichever id the app sent), with the store's dates.","operationId":"claim_v1_billing_claim_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/restore":{"post":{"summary":"Restore Purchases","description":"Restore purchases: a Studio subscription still running on this person's store record comes back.","operationId":"restore_purchases_v1_billing_restore_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/billing/revenuecat":{"post":{"summary":"Revenuecat Webhook","description":"RevenueCat's webhook: Studio renewals, cancellations reaching their end, refunds.","operationId":"revenuecat_webhook_v1_billing_revenuecat_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/credits":{"get":{"summary":"My Credits","description":"What this person can spend (on a project: there, its pass's first), what things cost and what they've\nused lately.","operationId":"my_credits_v1_credits_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/test-plan":{"post":{"summary":"Admin Test Plan","description":"(13 Oct: \"I'll need to be able to test as the different users to verify\") put an account (yours, or\n``email``'s) on a plan for testing: free, pass, pass_plus (studio while it's on sale); ``null`` for its own\nagain. A switch starts its credits again.","operationId":"admin_test_plan_v1_admin_test_plan_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/test-credits":{"post":{"summary":"Admin Test Credits","description":"Test credits (``amount``, up to 100,000) for an account (yours, or ``email``'s), or ``clear``: what it's\nspent forgotten and its test credits gone, so its plan's credits start again.","operationId":"admin_test_credits_v1_admin_test_credits_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dev/grant":{"post":{"summary":"Dev Grant","description":"Testing without the store (only with RESIVIS_DEV_BILLING=1).","operationId":"dev_grant_v1_dev_grant_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/e/{did}":{"get":{"summary":"Editor Page","operationId":"editor_page_e__did__get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/e/{did}/tour":{"post":{"summary":"Editor Tour","description":"The editor's tour finished or skipped (11 Oct): it doesn't show again until it's asked for (Account, or\n\"Show me around\" in the design's menu). -> {ok}","operationId":"editor_tour_e__did__tour_post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","title":"Did"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/client/{fid}":{"post":{"summary":"Client","description":"What the phone measured for the last edit (round trip, redraw), added to the log (on the Mac only).","operationId":"client_live_client__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/oops":{"post":{"summary":"Oops","description":"(12 Oct) something in the editor page itself went wrong: the person is told in words, we get its details\nhere (the server's log; on the Mac, its live log as well).","operationId":"oops_live_oops_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/floors":{"get":{"summary":"List Floors","operationId":"list_floors_live_floors_get","parameters":[{"name":"design","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Design"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Add Floor","description":"Another floor, above the top one or below the bottom one (the cloud's designs; the Mac's house is its file).","operationId":"add_floor_live_floors_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/floors/remove":{"post":{"summary":"Remove Floor","description":"A floor taken out of the house (the cloud's designs: every design of the project; it can be brought back).","operationId":"remove_floor_live_floors_remove_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/floors/restore":{"post":{"summary":"Restore Floor","operationId":"restore_floor_live_floors_restore_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/plan/{fid}":{"get":{"summary":"Plan","operationId":"plan_live_plan__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Full"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/wall_stack/{fid}/{wall}":{"get":{"summary":"Wall Stack","description":"The walls in line with this one on the other floors (7 Oct: \"if I amend the 1st floor wall as load bearing,\nhow should this impact the ground and other floors?\"): for each floor above or below, the wall faces that\nstand on the same line and overlap it, whether each is load-bearing (said or a guess), and what follows —\na load-bearing wall wants one under it (or a beam); the wall it stands on carries it.","operationId":"wall_stack_live_wall_stack__fid___wall__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"wall","in":"path","required":true,"schema":{"type":"string","title":"Wall"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/stacks/{fid}":{"get":{"summary":"Stacks Route","description":"The soil stack across floors (8 Oct): the floor above's stacks and where each comes down through this\nfloor; this floor's and where each goes down through the floor below, and whether one there is in line.","operationId":"stacks_route_live_stacks__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/planning/{fid}":{"get":{"summary":"Planning Route","description":"Planning for what's been added to the house (8 Oct): this floor against the house as it was (the\ndesign's starting point), each extension's kind and size and whether it looks like permitted development.","operationId":"planning_route_live_planning__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/roof/{fid}":{"get":{"summary":"Roof Route","description":"The roof over the house and the loft under it (8 Oct, the gaps): its form, pitch, dormers, how much of\nthe loft has headroom, Permitted Development for dormers, and its lines on the plan (on its top floor).","operationId":"roof_route_live_roof__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/roof.glb/{fid}":{"get":{"summary":"Roof Glb","description":"The roof in 3D (for the whole house): its slopes, gable ends, dormers, the walls up to its plate; drawn\nover the house's top floor, whichever floor asks.","operationId":"roof_glb_live_roof_glb__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/beams/{fid}":{"get":{"summary":"Beams Route","description":"Where this floor needs a beam (8 Oct): under the floor above's load-bearing walls with nothing under them\nhere, where its own load-bearing walls were taken out or cut into since the starting point — where, how far,\nwhat it carries and what each end sits on; never its size (an engineer's).","operationId":"beams_route_live_beams__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/stair_match/{fid}":{"get":{"summary":"Stair Match Get","description":"Each stair here against the same flight on the floor above or below (the Checks' \"the stairs don't line up\"),\nlight: after a change, without the whole plan again.","operationId":"stair_match_get_live_stair_match__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Stair Match Apply","description":"Make a stair here the same flight as the one on the floor above or below: where it stands, its size, its\nnumbers and its turns as built there (a turn worked out there included), one change. ``way`` \"there\": the\nother way round — the other floor's made the same as this one (12 Oct: both fixes in the Checks).","operationId":"stair_match_apply_live_stair_match__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/source_plan/{fid}":{"get":{"summary":"Source Plan","description":"The plan picture this floor is being (or was) drawn from, to show while it's read.","operationId":"source_plan_live_source_plan__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/op/{fid}":{"post":{"summary":"Op","operationId":"op_live_op__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/drag/{fid}":{"post":{"summary":"Drag","description":"A selected wall, door, socket or piece dragged by (dx, dy) mm and let go (see ``_dragged``).","operationId":"drag_live_drag__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/drag_group/{fid}":{"post":{"summary":"Drag Group","description":"Several pieces selected together, dragged by (dx, dy) and let go (8 Oct: multi-select): each moves as it\nwould on its own (one against a wall slides along it, or snaps onto another), a piece placed on or beside\nanother that's moving goes with it, one with no room where it lands stays; one change, one undo.","operationId":"drag_group_live_drag_group__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/drag_preview/{fid}":{"post":{"summary":"Drag Preview","description":"Where a piece would land if let go here, without moving it (the 3D view's touch and hold, 7 Oct: \"it\nneeds to snap and have arrows\"): its footprint, centre, front and height as it would stand, how far it\nwould be from what's round it on each side, and whether it would hit something.","operationId":"drag_preview_live_drag_preview__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/opening.glb/{fid}/{oid}":{"get":{"summary":"Opening Glb","description":"A door or window on its own, in a stretch of its wall (the Structure view's look at it).","operationId":"opening_glb_live_opening_glb__fid___oid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"oid","in":"path","required":true,"schema":{"type":"string","title":"Oid"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/faces/{fid}/{wall}":{"get":{"summary":"Wall Faces","description":"A wall's two faces with their finishes (10 Oct, the wall's panel: \"Faces\"), and what the face picker\noffers, by tab (inside: paint, tiles, panelling, wallpaper, bare plaster; outside: brick, render, cladding).","operationId":"wall_faces_live_faces__fid___wall__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"wall","in":"path","required":true,"schema":{"type":"string","title":"Wall"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/face.glb/{fid}/{wall}":{"get":{"summary":"Face Glb","description":"A wall face in 3D in its finish, with the corner either side (the face picker's look at it).","operationId":"face_glb_live_face_glb__fid___wall__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"wall","in":"path","required":true,"schema":{"type":"string","title":"Wall"}},{"name":"side","in":"query","required":false,"schema":{"type":"string","default":"inside","title":"Side"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/chat/{fid}":{"post":{"summary":"Chat","description":"A message in the editor's conversation (see ``begin``); the page follows a turn on /live/turn.","operationId":"chat_live_chat__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/ask/{fid}":{"post":{"summary":"Ask","description":"The same, answered when it's done (for the API and agents connected through MCP).","operationId":"ask_live_ask__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/credits/{fid}":{"get":{"summary":"Credits Here","description":"(13 Oct) what this person can spend on this design and what things cost (None on the Mac: nothing's\ncharged there).","operationId":"credits_here_live_credits__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/turn/{fid}":{"get":{"summary":"Turn","operationId":"turn_live_turn__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/turn/{fid}/stop":{"post":{"summary":"Turn Stop","description":"Stop the turn running on this floor (7 Oct: a turn that had made its edit kept the floor locked, and\nthere was no way out).","operationId":"turn_stop_live_turn__fid__stop_post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/drawings/{fid}":{"get":{"summary":"Drawing List","description":"The drawings there are for a room (its floor set out, ceiling and electrics, plumbing, each wall), a wall\n(its elevation) or, with neither, the floor's waste runs (sections, falls schedule).","operationId":"drawing_list_live_drawings__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"room","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room"}},{"name":"wall","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wall"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/drawing/{fid}/{sheet}":{"get":{"summary":"Drawing","description":"One of them, as SVG (drawn once a version: asked again, it's the same, or 304 when the browser has it).","operationId":"drawing_live_drawing__fid___sheet__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"sheet","in":"path","required":true,"schema":{"type":"string","title":"Sheet"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/drawings.pdf/{fid}":{"get":{"summary":"Drawings Pdf","description":"(11 Oct: \"it should probably have a download button: export the current plan or the whole plan as a pack\n(behind the paid plans)\") the drawings as a PDF to keep or send: one (``sheet``), a room's (``room``) or every\ndrawing on the floor (``every``) — with the drawing pack's plan.","operationId":"drawings_pdf_live_drawings_pdf__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"sheet","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet"}},{"name":"room","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room"}},{"name":"every","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Every"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/layer/{fid}/{name}":{"get":{"summary":"Layer","operationId":"layer_live_layer__fid___name__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"part","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Part"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/setup/{fid}":{"get":{"summary":"Services Setup","description":"(10 Oct, services step by step) the questions the services need, in order, each done or next — with what\nthe house's other floors already say (the consumer unit, the boiler, the water main, a stack coming down) —\nwhat heats each room with its heat loss, and the designer's proposals waiting to be accepted.","operationId":"services_setup_live_setup__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/materials/{fid}":{"get":{"summary":"Materials","operationId":"materials_live_materials__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"kind","in":"query","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"id","in":"query","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/item.glb/{fid}/{iid}":{"get":{"summary":"Item Glb","operationId":"item_glb_live_item_glb__fid___iid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"iid","in":"path","required":true,"schema":{"type":"string","title":"Iid"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/model.glb/{fid}":{"get":{"summary":"Model Glb","description":"The whole floor in 3D as it stands in this session (built on first ask after each change, ~2–6 s).\n``against``: drawn beside that floor (the walk's next floor, the whole house), so without the flights of the\nstairs both have — that floor draws its own (11 Oct, testers: \"stairs have a bug with a double railing\").","operationId":"model_glb_live_model_glb__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}},{"name":"against","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Against"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/band.glb/{fid}":{"get":{"summary":"Band Glb","description":"The floor over this one, at its edges (the whole house: 11 Oct, testers: \"why is there this white line between\nthe floors?\"): the outside walls carried on up through the floor's depth, from ``z0`` (the ceiling) to ``z1``\n(the next floor), in their brick, render or cladding — a skin round the house's outline, the floor itself\ndrawn inside it.","operationId":"band_glb_live_band_glb__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"z0","in":"query","required":false,"schema":{"type":"number","default":2400,"title":"Z0"}},{"name":"z1","in":"query","required":false,"schema":{"type":"number","default":2650,"title":"Z1"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/ceiling.glb/{fid}":{"get":{"summary":"Ceiling Glb","description":"Its ceilings and downlights (404 when it has no rooms).","operationId":"ceiling_glb_live_ceiling_glb__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/garden.jpg":{"get":{"summary":"Garden","description":"What's seen out of the windows, walking round inside by day (15 Oct, the walk view's review: \"the outdoors\nis fake: flat cyan sky\"): a garden all round, as a panorama (ambientCG's Day Environment HDRI 004, CC0),\nstored at a third of its light so the sky's near white.","operationId":"garden_live_garden_jpg_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/live/views/{fid}":{"get":{"summary":"Cameras","description":"The brief's named cameras, for the 3D view's list.","operationId":"cameras_live_views__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/product":{"post":{"summary":"Product","description":"Read a product link (from the catalogue unless ``force``), or read an uploaded photo into one of the\nperson's own things (an item, a surface or stairs: ``products.from_photo``).","operationId":"product_live_product_post","parameters":[{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/catalog":{"get":{"summary":"Catalog List","description":"The catalogue this person can see: product links (everyone's) and their own things from photos (9 Oct,\n\"My things\"); ``mine``: just theirs, newest first.","operationId":"catalog_list_live_catalog_get","parameters":[{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mine"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/catalog/{prod}":{"get":{"summary":"Catalog One","description":"One product's whole record (the app's catalogue hands one over to place).","operationId":"catalog_one_live_catalog__prod__get","parameters":[{"name":"prod","in":"path","required":true,"schema":{"type":"string","title":"Prod"}},{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Catalog Edit","description":"Put one of your things right (its name, sizes as measured, shape, colours, kind of item), or ``delete``\nit (its photo too). What's already in a plan stays as it was placed.","operationId":"catalog_edit_live_catalog__prod__post","parameters":[{"name":"prod","in":"path","required":true,"schema":{"type":"string","title":"Prod"}},{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/catalog/{prod}/photo":{"get":{"summary":"Catalog Photo","description":"The small copy of the photo one of your things came from: yours only, never anyone else's.","operationId":"catalog_photo_live_catalog__prod__photo_get","parameters":[{"name":"prod","in":"path","required":true,"schema":{"type":"string","title":"Prod"}},{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/fit/{fid}":{"post":{"summary":"Fit","description":"Would this product fit where it's meant to go? Tried on a copy of the plan; nothing changes.","operationId":"fit_live_fit__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/place/{fid}":{"post":{"summary":"Place","operationId":"place_live_place__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/render/{fid}":{"post":{"summary":"Render","description":"The 3D view's camera, rendered photoreal by Blender on this Mac's GPU — at a moment of the day when one is\ngiven (the sun from the site). Queued as a render job; it starts at once (or with the render watcher).","operationId":"render_live_render__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/renders":{"get":{"summary":"Renders","operationId":"renders_live_renders_get","parameters":[{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/render_img/{job}/{img}":{"get":{"summary":"Render Img","operationId":"render_img_live_render_img__job___img__get","parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}},{"name":"img","in":"path","required":true,"schema":{"type":"string","title":"Img"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/bake/{fid}":{"post":{"summary":"Bake","description":"The light at a moment of the day baked into the walk view (``lightmap``): every critic of the walk view's\nreview asked for it. Laid out here (light-map UVs over the floor's walk-view model), baked like a render (on\nthis Mac's Blender, or a GPU on RunPod): included in a paid plan, else charged as a quick render. ``when``:\nan ISO time (the sun at the site); without one, the floor in the sky's light alone. ``auto``: asked for by\nthe walk view itself (``_auto_bakes``), never charged. One at a time: one on its way is the answer.","operationId":"bake_live_bake__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/baked/{fid}":{"get":{"summary":"Baked","description":"This floor's light bake: the newest one fitting its model as it is (``fits``), else the newest on its way\nor failed (``fits`` false: the plan changed since, or it isn't done).","operationId":"baked_live_baked__fid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/baked_file/{job}/{name}":{"get":{"summary":"Baked File","operationId":"baked_file_live_baked_file__job___name__get","parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/site/find":{"post":{"summary":"Site Find","description":"An address → where it is and which way the house there faces (OpenStreetMap; needs the internet).","operationId":"site_find_live_site_find_post","parameters":[{"name":"fid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/layouts/{fid}/{rid}":{"post":{"summary":"Layouts","description":"Other arrangements of a room's pieces (``solver.room_layouts``), the room as it is first: each drawn small\n(the room, its doors, the pieces) with what its checks still find, to pick from (7 Oct: \"an auto layout view,\nwhich presents viable configurations\").","operationId":"layouts_live_layouts__fid___rid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"rid","in":"path","required":true,"schema":{"type":"string","title":"Rid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/layouts/{fid}/{rid}/use":{"post":{"summary":"Layouts Use","description":"Use one of them: its pieces moved, one change (one undo).","operationId":"layouts_use_live_layouts__fid___rid__use_post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"rid","in":"path","required":true,"schema":{"type":"string","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/alike/{fid}/{iid}":{"get":{"summary":"Alike","description":"The same kind of piece elsewhere in the house (this floor and the others), to make this one the same: its\ntype, size and the materials picked for it (7 Oct: \"if I select a bed or a wardrobe, offer to reuse one\nalready set up\").","operationId":"alike_live_alike__fid___iid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"iid","in":"path","required":true,"schema":{"type":"string","title":"Iid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/site/save/{fid}":{"post":{"summary":"Site Save","description":"The site on every floor (one house, one place).","operationId":"site_save_live_site_save__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/upload/{fid}":{"post":{"summary":"Upload","description":"A photo or file from the phone (the raw bytes as the body): kept in live-sessions/uploads; an image's\nmain colour is read off its middle for one-tap paint.","operationId":"upload_live_upload__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","default":"photo.jpg","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/uploads/{uid}":{"get":{"summary":"Get Upload","operationId":"get_upload_live_uploads__uid__get","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/mood/{fid}":{"post":{"summary":"Mood Read","description":"(10 Oct) The look a few pictures share — 1–6 of the person's own uploads (their photos, screenshots from\nPinterest or a shop) — in RESIVIS's own words, to try on a room: the name, a line of words, swatches of what\nit picked. ``style_room`` (``/live/op``) applies it. Only the person who sent the pictures can have them read,\nand nothing of them is kept with the reading.","operationId":"mood_read_live_mood__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/design/{fid}/looks":{"post":{"summary":"Design Looks","description":"Three looks for a room (``design.suggest``): the library's first — free, at once, ready before anyone\nasks (13 Oct: \"why does the designer put together designs only when the user clicks … can't this be done in\nadvance?\": the editor asks for the room in view, ``prefetch``) — and the designer's (a model, in credits) when\nasked for more (``designer``); ``avoid``: the names already shown. Their pictures start drawing at once.","operationId":"design_looks_live_design__fid__looks_post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/design/{fid}/picture/{lid}":{"get":{"summary":"Design Picture","description":"A look's picture (PNG), drawn in the room on a copy of the floor; ``now``: the room as it stands.","operationId":"design_picture_live_design__fid__picture__lid__get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"lid","in":"path","required":true,"schema":{"type":"string","title":"Lid"}},{"name":"room","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/design/{fid}/use":{"post":{"summary":"Design Use","description":"Use a look: one change. Straight after trying another look in the same room (nothing changed since), it\ntakes that one's place, so trying looks one after another leaves one change to undo.","operationId":"design_use_live_design__fid__use_post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/design/{fid}/room":{"get":{"summary":"Design Room","description":"A room's own finishes to adjust after a look (the editor beside the designer): its walls and floor now, and\nthe paints and floors to pick from.","operationId":"design_room_live_design__fid__room_get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"room","in":"query","required":true,"schema":{"type":"string","title":"Room"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/design/{fid}/kitchen":{"get":{"summary":"Design Kitchen","description":"A room's kitchen by its groups, for the Design view: what each is now, the choices, the drawings.","operationId":"design_kitchen_live_design__fid__kitchen_get","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}},{"name":"room","in":"query","required":true,"schema":{"type":"string","title":"Room"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/undo/{fid}":{"post":{"summary":"Undo","operationId":"undo_live_undo__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/redo/{fid}":{"post":{"summary":"Redo","operationId":"redo_live_redo__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/save/{fid}":{"post":{"summary":"Save","operationId":"save_live_save__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/forget/{fid}":{"post":{"summary":"Forget","operationId":"forget_live_forget__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/rescan/{fid}":{"post":{"summary":"Rescan","description":"The floor's RoomPlan scan read again, as it's read now (9 Oct: the reading gets better; no need to walk\nthe rooms again). One undo puts the plan back; the site and anything said about the house stay.","operationId":"rescan_live_rescan__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/reset/{fid}":{"post":{"summary":"Reset","operationId":"reset_live_reset__fid__post","parameters":[{"name":"fid","in":"path","required":true,"schema":{"type":"string","title":"Fid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/support":{"get":{"summary":"My Support","operationId":"my_support_v1_support_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Ask Support","description":"A message to RESIVIS support from the app: {text, subject?, ticket? (more on one of yours), context?}.","operationId":"ask_support_v1_support_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/support":{"get":{"summary":"Admin List","operationId":"admin_list_v1_admin_support_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/support/{tid}":{"get":{"summary":"Admin Ticket","operationId":"admin_ticket_v1_admin_support__tid__get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/support/{tid}/send":{"post":{"summary":"Admin Send","operationId":"admin_send_v1_admin_support__tid__send_post","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/support/{tid}/close":{"post":{"summary":"Admin Close","operationId":"admin_close_v1_admin_support__tid__close_post","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/support/{tid}/reopen":{"post":{"summary":"Admin Reopen","operationId":"admin_reopen_v1_admin_support__tid__reopen_post","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/.well-known/apple-app-site-association":{"get":{"summary":"Aasa","operationId":"aasa__well_known_apple_app_site_association_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v/{token}":{"get":{"summary":"View Link","description":"A project's view link: its chosen design's plans, floor by floor, for anyone with the link (no sign-in);\nturned off by the owner, it says so.","operationId":"view_link_v__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/i/{token}":{"get":{"summary":"Invite Link","operationId":"invite_link_i__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}