[{"data":1,"prerenderedAt":221},["ShallowReactive",2],{"page:\u002Fproperties\u002Fpublication":3,"operation:setPropertyPublication":67},{"id":4,"title":5,"body":6,"description":57,"extension":58,"meta":59,"navigation":60,"operation":61,"path":62,"rawbody":63,"seo":64,"stem":65,"__hash__":66},"docs\u002Fproperties\u002Fpublication.md","Publish or unpublish",{"type":7,"value":8,"toc":53},"minimark",[9,40,50],[10,11,12,13,17,18,21,22,25,26,29,30,35,36,39],"p",{},"Send ",[14,15,16],"code",{},"{\"published\": true}"," to publish. The response is ",[14,19,20],{},"202 Accepted",", with ",[14,23,24],{},"Location"," and ",[14,27,28],{},"Retry-After: 2",". Follow ",[31,32,34],"a",{"href":33},"\u002Fproperties\u002Fpublication-status","publication status"," until ",[14,37,38],{},"published"," is true. A property remains private while processing or after an error.",[10,41,12,42,45,46,49],{},[14,43,44],{},"{\"published\": false}"," to remove it from the catalogue immediately (",[14,47,48],{},"200","). A pending worker cannot publish it afterwards. This does not guarantee removal of images already downloaded or cached by third parties.",[10,51,52],{},"Publication is an explicit choice, independent of commercial status. Save the property before publishing; external API requests also require type, operation, title and city. Each public photo is a permanent copy with an independent random ID. New photos are watermarked; existing photos grandfathered during migration may remain unmarked. No original path, filename or private storage URL is returned.",{"title":54,"searchDepth":55,"depth":55,"links":56},"",3,[],"Set desired visibility and generate protected public images.","md",{},true,"setPropertyPublication","\u002Fproperties\u002Fpublication","---\ntitle: Publish or unpublish\ndescription: Set desired visibility and generate protected public images.\noperation: setPropertyPublication\n---\n\nSend `{\"published\": true}` to publish. The response is `202 Accepted`, with `Location` and `Retry-After: 2`. Follow [publication status](\u002Fproperties\u002Fpublication-status) until `published` is true. A property remains private while processing or after an error.\n\nSend `{\"published\": false}` to remove it from the catalogue immediately (`200`). A pending worker cannot publish it afterwards. This does not guarantee removal of images already downloaded or cached by third parties.\n\nPublication is an explicit choice, independent of commercial status. Save the property before publishing; external API requests also require type, operation, title and city. Each public photo is a permanent copy with an independent random ID. New photos are watermarked; existing photos grandfathered during migration may remain unmarked. No original path, filename or private storage URL is returned.\n",{"title":5,"description":57},"properties\u002Fpublication","RF-CKsKTVhoSGwZas7KCVTGAhW-Z6pc2umvhIBzzHsI",{"id":61,"method":68,"path":69,"fullPath":70,"summary":71,"tag":72,"scopes":73,"url":75,"description":76,"pathParams":77,"queryParams":84,"headerParams":85,"body":86,"responses":94,"samples":204,"docsPath":62},"PUT","\u002Fproperties\u002F{property_id}\u002Fpublication","\u002Fv1\u002Fproperties\u002F{property_id}\u002Fpublication","Set property publication","Publication",[74],"properties:publish","https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F{property_id}\u002Fpublication","Sets desired visibility. Publishing returns 202 while public copies are prepared; new photos are watermarked. Unpublishing returns 200. Poll Retrieve publication until published or failed. Requires the `properties:publish` scope.",[78],{"name":79,"type":80,"required":60,"nullable":81,"constraints":82},"property_id","integer",false,[83],"≥ 1",[],[],{"schemaName":87,"required":60,"fields":88,"ignored":93},"PublicationRequest",[89],{"name":38,"type":90,"required":60,"nullable":81,"description":91,"constraints":92},"boolean","Desired visibility. Publishing prepares public copies before making the property public; new photos are watermarked.",[],[],[95,152,184,188,191,194,197,201],{"status":48,"description":96,"schemaName":97,"fields":98,"example":150,"exampleHtml":151},"Successful response.","PublicationResponse",[99,105],{"name":100,"type":101,"required":81,"nullable":81,"defaultValue":102,"enumValues":103,"constraints":104},"status","string","ok",[102],[],{"name":106,"type":107,"required":60,"nullable":81,"constraints":108,"children":109},"data","PublicationState",[],[110,118,120,123,146],{"name":100,"type":101,"required":60,"nullable":81,"enumValues":111,"constraints":117},[112,113,114,38,115,116],"private","pending","processing","ready","failed",[],{"name":38,"type":90,"required":60,"nullable":81,"constraints":119},[],{"name":121,"type":90,"required":60,"nullable":81,"constraints":122},"requested",[],{"name":124,"type":125,"required":81,"nullable":81,"constraints":126,"children":127},"images","array of objects",[],[128,131,135,139,143],{"name":129,"type":101,"required":60,"nullable":81,"constraints":130},"id",[],{"name":132,"type":101,"required":60,"nullable":81,"description":133,"constraints":134},"url","Permanent opaque public-copy URL. New photos are watermarked; migrated legacy copies may remain unmarked. Never an original or upload URL.",[],{"name":136,"type":80,"required":81,"nullable":81,"defaultValue":137,"constraints":138},"order","1",[],{"name":140,"type":90,"required":81,"nullable":81,"defaultValue":141,"constraints":142},"is_primary","false",[],{"name":144,"type":101,"required":81,"nullable":81,"defaultValue":54,"constraints":145},"title",[],{"name":147,"type":101,"required":81,"nullable":60,"description":148,"constraints":149},"error","Safe diagnostic code. Retry the same publication request after correcting the cause.",[],"{\n  \"status\": \"ok\",\n  \"data\": {\n    \"status\": \"private\",\n    \"published\": false,\n    \"requested\": false,\n    \"images\": []\n  }\n}","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"ok\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  \"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"status\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"private\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"published\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"requested\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"images\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: []\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"status":153,"description":154,"schemaName":97,"fields":155,"example":150,"exampleHtml":151},"202","Accepted",[156,159],{"name":100,"type":101,"required":81,"nullable":81,"defaultValue":102,"enumValues":157,"constraints":158},[102],[],{"name":106,"type":107,"required":60,"nullable":81,"constraints":160,"children":161},[],[162,165,167,169,182],{"name":100,"type":101,"required":60,"nullable":81,"enumValues":163,"constraints":164},[112,113,114,38,115,116],[],{"name":38,"type":90,"required":60,"nullable":81,"constraints":166},[],{"name":121,"type":90,"required":60,"nullable":81,"constraints":168},[],{"name":124,"type":125,"required":81,"nullable":81,"constraints":170,"children":171},[],[172,174,176,178,180],{"name":129,"type":101,"required":60,"nullable":81,"constraints":173},[],{"name":132,"type":101,"required":60,"nullable":81,"description":133,"constraints":175},[],{"name":136,"type":80,"required":81,"nullable":81,"defaultValue":137,"constraints":177},[],{"name":140,"type":90,"required":81,"nullable":81,"defaultValue":141,"constraints":179},[],{"name":144,"type":101,"required":81,"nullable":81,"defaultValue":54,"constraints":181},[],{"name":147,"type":101,"required":81,"nullable":60,"description":148,"constraints":183},[],{"status":185,"description":186,"schemaName":187},"401","The API key is missing, malformed, unknown, revoked or expired.","ExternalApiError",{"status":189,"description":190,"schemaName":187},"403","The API key lacks the required scope.",{"status":192,"description":193,"schemaName":187},"404","The resource does not exist in this business.",{"status":195,"description":196,"schemaName":187},"409","Duplicate contact or idempotency key reused with a different payload.",{"status":198,"description":199,"schemaName":200},"422","A path parameter, query parameter or body field is invalid.","ExternalValidationError",{"status":202,"description":203,"schemaName":187},"500","Unexpected server error while processing the request.",[205,211,216],{"id":206,"label":207,"lang":208,"code":209,"html":210},"curl","cURL","bash","curl -X PUT \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F1\u002Fpublication\" \\\n  -H \"X-Api-Key: $VESTTA_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n  \"published\": true\n}'","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -X\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> PUT\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F1\u002Fpublication\"\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"X-Api-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"Content-Type: application\u002Fjson\"\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">  -d\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> '{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">  \"published\": true\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">}'\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":212,"label":213,"lang":212,"code":214,"html":215},"javascript","JavaScript","const response = await fetch('https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F1\u002Fpublication', {\n  method: 'PUT',\n  headers: {\n    'X-Api-Key': process.env.VESTTA_API_KEY,\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    \"published\": true\n  }),\n})\n\nconst data = await response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> response\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> fetch\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">(\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F1\u002Fpublication'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">, {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  method: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'PUT'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  headers: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    'X-Api-Key'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: process.env.\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">VESTTA_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    'Content-Type'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">'application\u002Fjson'\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  body: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">JSON\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">.\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">stringify\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">({\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    \"published\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">true\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">  }),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">const\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> data\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> await\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">json\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"id":217,"label":218,"lang":217,"code":219,"html":220},"python","Python","import os\n\nimport requests\n\nresponse = requests.put(\n    \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F1\u002Fpublication\",\n    headers={\"X-Api-Key\": os.environ[\"VESTTA_API_KEY\"]},\n    json={\n        \"published\": True,\n    },\n)\nresponse.raise_for_status()\ndata = response.json()","\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49\">import\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> requests.put(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">    \"https:\u002F\u002Fapi.vestta.io\u002Fv1\u002Fproperties\u002F1\u002Fpublication\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    headers\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"X-Api-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"VESTTA_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]},\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">    json\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62\">        \"published\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">True\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">response.raise_for_status()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">data \u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> response.json()\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1791929309646]