curl --request PATCH \
--url https://api.anhome.tuanle.dev/api/v1/rooms/{room_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"base_rent": "3000000",
"default_deposit": "3000000",
"name": "<string>",
"floor": "<string>",
"area_m2": 1,
"note": "<string>"
}
'import requests
url = "https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}"
payload = {
"base_rent": "3000000",
"default_deposit": "3000000",
"name": "<string>",
"floor": "<string>",
"area_m2": 1,
"note": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
base_rent: '3000000',
default_deposit: '3000000',
name: '<string>',
floor: '<string>',
area_m2: 1,
note: '<string>'
})
};
fetch('https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'base_rent' => '3000000',
'default_deposit' => '3000000',
'name' => '<string>',
'floor' => '<string>',
'area_m2' => 1,
'note' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}"
payload := strings.NewReader("{\n \"base_rent\": \"3000000\",\n \"default_deposit\": \"3000000\",\n \"name\": \"<string>\",\n \"floor\": \"<string>\",\n \"area_m2\": 1,\n \"note\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"base_rent\": \"3000000\",\n \"default_deposit\": \"3000000\",\n \"name\": \"<string>\",\n \"floor\": \"<string>\",\n \"area_m2\": 1,\n \"note\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"base_rent\": \"3000000\",\n \"default_deposit\": \"3000000\",\n \"name\": \"<string>\",\n \"floor\": \"<string>\",\n \"area_m2\": 1,\n \"note\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"property_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"has_active_lease": true,
"base_rent": "3000000",
"default_deposit": "3000000",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"images": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"image_url": "<string>",
"sort_order": 123,
"media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"alt_text": "<string>"
}
],
"floor": "<string>",
"area_m2": 123,
"note": "<string>",
"archived_at": "2023-11-07T05:31:56Z",
"cover_image": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"image_url": "<string>",
"sort_order": 123,
"media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"alt_text": "<string>"
},
"meter_reading_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"request_id": "<string>",
"meta": {}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}Update room
Updates editable room attributes such as name, floor, area, and base rent. The status field sets only the operational override (ADR 0017): VACANT clears it to AVAILABLE, HIDDEN/MAINTENANCE set it, and OCCUPIED is rejected (422) because occupancy is derived from the active lease. The response status is derived and has_active_lease carries the true occupancy.
curl --request PATCH \
--url https://api.anhome.tuanle.dev/api/v1/rooms/{room_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"base_rent": "3000000",
"default_deposit": "3000000",
"name": "<string>",
"floor": "<string>",
"area_m2": 1,
"note": "<string>"
}
'import requests
url = "https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}"
payload = {
"base_rent": "3000000",
"default_deposit": "3000000",
"name": "<string>",
"floor": "<string>",
"area_m2": 1,
"note": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
base_rent: '3000000',
default_deposit: '3000000',
name: '<string>',
floor: '<string>',
area_m2: 1,
note: '<string>'
})
};
fetch('https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'base_rent' => '3000000',
'default_deposit' => '3000000',
'name' => '<string>',
'floor' => '<string>',
'area_m2' => 1,
'note' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}"
payload := strings.NewReader("{\n \"base_rent\": \"3000000\",\n \"default_deposit\": \"3000000\",\n \"name\": \"<string>\",\n \"floor\": \"<string>\",\n \"area_m2\": 1,\n \"note\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"base_rent\": \"3000000\",\n \"default_deposit\": \"3000000\",\n \"name\": \"<string>\",\n \"floor\": \"<string>\",\n \"area_m2\": 1,\n \"note\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anhome.tuanle.dev/api/v1/rooms/{room_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"base_rent\": \"3000000\",\n \"default_deposit\": \"3000000\",\n \"name\": \"<string>\",\n \"floor\": \"<string>\",\n \"area_m2\": 1,\n \"note\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"property_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"has_active_lease": true,
"base_rent": "3000000",
"default_deposit": "3000000",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"images": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"image_url": "<string>",
"sort_order": 123,
"media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"alt_text": "<string>"
}
],
"floor": "<string>",
"area_m2": 123,
"note": "<string>",
"archived_at": "2023-11-07T05:31:56Z",
"cover_image": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"image_url": "<string>",
"sort_order": 123,
"media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"alt_text": "<string>"
},
"meter_reading_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"request_id": "<string>",
"meta": {}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"fields": [
{
"path": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"details": "<unknown>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Room ID
Body
JSON payload used to update room.
Request payload for update room.
Default monthly rent amount for the room.
"3000000"
Default deposit amount used when creating leases.
"3000000"
Human-readable name for the resource.
1 - 120Floor label or number where the room is located.
80Current lifecycle or operational status.
VACANT, OCCUPIED, HIDDEN, MAINTENANCE Room area in square meters.
x >= 0Optional note captured by the operator.
1000Response
Updated room
Endpoint-specific response payload. See the referenced schema for the resource fields.
Show child attributes
Show child attributes
Request correlation identifier returned from X-Request-Id or generated by the API.
Optional response metadata such as pagination limits, counts, or export context.