Unidades
Gerenciar unidades autonomas de um empreendimento via API.
Unidades
Gerencie as unidades autonomas (apartamentos, salas, lojas, etc.) de um empreendimento. Cada unidade pertence a um empreendimento e pode estar associada a uma tipologia e a um bloco.
Todos os endpoints de unidades sao aninhados sob um empreendimento. Voce precisa do development_id (ID do empreendimento) em todas as chamadas.
GET /v1/developments/:id/units
Lista todas as unidades de um empreendimento com paginacao e filtros.
Path Parameters
| Parametro | Tipo | Descricao |
|---|---|---|
id | string | ID do empreendimento |
Query Parameters
| Parametro | Tipo | Padrao | Descricao |
|---|---|---|---|
page | number | 1 | Pagina atual |
limit | number | 20 | Itens por pagina (max: 100) |
status | string | - | Filtrar por status da unidade |
block_id | string | - | Filtrar por bloco |
typology_id | string | - | Filtrar por tipologia |
Request
curl -X GET "https://api.octabuild.com.br/v1/developments/dev_abc123/units?status=disponivel&block_id=blk_001&page=1&limit=20" \
-H "Authorization: Bearer ea_live_sua_chave_aqui"Response
{
"success": true,
"data": [
{
"id": "unt_a1b2c3d4",
"development_id": "dev_abc123",
"designation": "Apto 101",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 65.40,
"private_area_equiv": 68.20,
"common_area_real": 12.50,
"common_area_equiv": 14.00,
"total_area_real": 77.90,
"total_area_equiv": 82.20,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-12",
"status": "disponivel",
"boundary_front": "Corredor de circulacao",
"boundary_back": "Unidade 102",
"boundary_right": "Fachada norte",
"boundary_left": "Fachada sul",
"boundary_floor": "Laje do terreo",
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-02-10T14:00:00Z"
},
{
"id": "unt_e5f6g7h8",
"development_id": "dev_abc123",
"designation": "Apto 102",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 65.40,
"private_area_equiv": 68.20,
"common_area_real": 12.50,
"common_area_equiv": 14.00,
"total_area_real": 77.90,
"total_area_equiv": 82.20,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-13",
"status": "disponivel",
"boundary_front": "Corredor de circulacao",
"boundary_back": "Unidade 101",
"boundary_right": "Fachada norte",
"boundary_left": "Fachada sul",
"boundary_floor": "Laje do terreo",
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-02-10T14:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 48,
"pages": 3
}
}POST /v1/developments/:id/units
Cria uma nova unidade no empreendimento.
Path Parameters
| Parametro | Tipo | Descricao |
|---|---|---|
id | string | ID do empreendimento |
Request Body
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
designation | string | Sim | Designacao da unidade (ex: "Apto 101", "Sala 02") |
typology_id | string | Nao | ID da tipologia |
block_id | string | Nao | ID do bloco |
floor | number | Nao | Pavimento/andar |
private_area_real | number | Nao | Area privativa real (m2) |
private_area_equiv | number | Nao | Area privativa equivalente (m2) |
common_area_real | number | Nao | Area comum real (m2) |
common_area_equiv | number | Nao | Area comum equivalente (m2) |
total_area_real | number | Nao | Area total real (m2) |
total_area_equiv | number | Nao | Area total equivalente (m2) |
proportionality_coefficient | number | Nao | Coeficiente de proporcionalidade (fracao ideal) |
parking_spot | string | Nao | Identificacao da vaga de garagem |
status | string | Nao | Status da unidade |
boundary_front | string | Nao | Confrontacao pela frente |
boundary_back | string | Nao | Confrontacao pelos fundos |
boundary_right | string | Nao | Confrontacao pela direita |
boundary_left | string | Nao | Confrontacao pela esquerda |
boundary_floor | string | Nao | Confrontacao pelo piso |
Request
curl -X POST https://api.octabuild.com.br/v1/developments/dev_abc123/units \
-H "Authorization: Bearer ea_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"designation": "Apto 201",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 2,
"private_area_real": 65.40,
"private_area_equiv": 68.20,
"common_area_real": 12.50,
"common_area_equiv": 14.00,
"total_area_real": 77.90,
"total_area_equiv": 82.20,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-21",
"status": "disponivel",
"boundary_front": "Corredor de circulacao",
"boundary_back": "Unidade 202",
"boundary_right": "Fachada norte",
"boundary_left": "Fachada sul",
"boundary_floor": "Laje do 1o pavimento"
}'Response (201 Created)
{
"success": true,
"data": {
"id": "unt_new123abc",
"development_id": "dev_abc123",
"designation": "Apto 201",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 2,
"private_area_real": 65.40,
"private_area_equiv": 68.20,
"common_area_real": 12.50,
"common_area_equiv": 14.00,
"total_area_real": 77.90,
"total_area_equiv": 82.20,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-21",
"status": "disponivel",
"boundary_front": "Corredor de circulacao",
"boundary_back": "Unidade 202",
"boundary_right": "Fachada norte",
"boundary_left": "Fachada sul",
"boundary_floor": "Laje do 1o pavimento",
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-25T10:30:00Z",
"updated_at": "2026-02-25T10:30:00Z"
}
}GET /v1/developments/:id/units/:unitId
Busca uma unidade especifica do empreendimento.
Path Parameters
| Parametro | Tipo | Descricao |
|---|---|---|
id | string | ID do empreendimento |
unitId | string | ID da unidade |
Request
curl -X GET https://api.octabuild.com.br/v1/developments/dev_abc123/units/unt_a1b2c3d4 \
-H "Authorization: Bearer ea_live_sua_chave_aqui"Response
{
"success": true,
"data": {
"id": "unt_a1b2c3d4",
"development_id": "dev_abc123",
"designation": "Apto 101",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 65.40,
"private_area_equiv": 68.20,
"common_area_real": 12.50,
"common_area_equiv": 14.00,
"total_area_real": 77.90,
"total_area_equiv": 82.20,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-12",
"status": "disponivel",
"boundary_front": "Corredor de circulacao",
"boundary_back": "Unidade 102",
"boundary_right": "Fachada norte",
"boundary_left": "Fachada sul",
"boundary_floor": "Laje do terreo",
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-02-10T14:00:00Z"
}
}PUT /v1/developments/:id/units/:unitId
Atualiza uma unidade existente. Envie apenas os campos que deseja alterar.
Path Parameters
| Parametro | Tipo | Descricao |
|---|---|---|
id | string | ID do empreendimento |
unitId | string | ID da unidade |
Request Body
Aceita os mesmos campos do POST, todos opcionais. Campos nao enviados permanecem inalterados.
Request
curl -X PUT https://api.octabuild.com.br/v1/developments/dev_abc123/units/unt_a1b2c3d4 \
-H "Authorization: Bearer ea_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"status": "vendida",
"parking_spot": "V-12A"
}'Response
{
"success": true,
"data": {
"id": "unt_a1b2c3d4",
"development_id": "dev_abc123",
"designation": "Apto 101",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 65.40,
"private_area_equiv": 68.20,
"common_area_real": 12.50,
"common_area_equiv": 14.00,
"total_area_real": 77.90,
"total_area_equiv": 82.20,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-12A",
"status": "vendida",
"boundary_front": "Corredor de circulacao",
"boundary_back": "Unidade 102",
"boundary_right": "Fachada norte",
"boundary_left": "Fachada sul",
"boundary_floor": "Laje do terreo",
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-02-25T11:00:00Z"
}
}DELETE /v1/developments/:id/units/:unitId
Exclui permanentemente uma unidade do empreendimento.
Esta operacao e irreversivel. Unidades com vendas ou reservas vinculadas nao podem ser excluidas. Atualize o status para cancelada se precisar inativa-la.
Path Parameters
| Parametro | Tipo | Descricao |
|---|---|---|
id | string | ID do empreendimento |
unitId | string | ID da unidade |
Request
curl -X DELETE https://api.octabuild.com.br/v1/developments/dev_abc123/units/unt_a1b2c3d4 \
-H "Authorization: Bearer ea_live_sua_chave_aqui"Response
{
"success": true,
"data": {
"id": "unt_a1b2c3d4",
"deleted": true
}
}POST /v1/developments/:id/units/bulk
Cria multiplas unidades em lote. Ideal para cadastro inicial de empreendimentos com muitas unidades.
Maximo de 500 unidades por requisicao. Para empreendimentos maiores, divida em multiplas chamadas.
Path Parameters
| Parametro | Tipo | Descricao |
|---|---|---|
id | string | ID do empreendimento |
Request Body
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
units | array | Sim | Array de objetos de unidade (max: 500) |
Cada objeto dentro do array units aceita os mesmos campos do POST /v1/developments/:id/units. O campo designation e obrigatorio em cada item.
Request
curl -X POST https://api.octabuild.com.br/v1/developments/dev_abc123/units/bulk \
-H "Authorization: Bearer ea_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"units": [
{
"designation": "Apto 101",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 65.40,
"total_area_real": 77.90,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-01",
"status": "disponivel"
},
{
"designation": "Apto 102",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 72.10,
"total_area_real": 85.30,
"proportionality_coefficient": 0.0138,
"parking_spot": "V-02",
"status": "disponivel"
},
{
"designation": "Apto 201",
"typology_id": "typ_abc456",
"block_id": "blk_001",
"floor": 2,
"private_area_real": 65.40,
"total_area_real": 77.90,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-03",
"status": "disponivel"
}
]
}'Response (201 Created)
{
"success": true,
"data": {
"created": 3,
"units": [
{
"id": "unt_bulk001",
"development_id": "dev_abc123",
"designation": "Apto 101",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 65.40,
"private_area_equiv": null,
"common_area_real": null,
"common_area_equiv": null,
"total_area_real": 77.90,
"total_area_equiv": null,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-01",
"status": "disponivel",
"boundary_front": null,
"boundary_back": null,
"boundary_right": null,
"boundary_left": null,
"boundary_floor": null,
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-25T12:00:00Z",
"updated_at": "2026-02-25T12:00:00Z"
},
{
"id": "unt_bulk002",
"development_id": "dev_abc123",
"designation": "Apto 102",
"typology_id": "typ_xyz789",
"block_id": "blk_001",
"floor": 1,
"private_area_real": 72.10,
"private_area_equiv": null,
"common_area_real": null,
"common_area_equiv": null,
"total_area_real": 85.30,
"total_area_equiv": null,
"proportionality_coefficient": 0.0138,
"parking_spot": "V-02",
"status": "disponivel",
"boundary_front": null,
"boundary_back": null,
"boundary_right": null,
"boundary_left": null,
"boundary_floor": null,
"typology": {
"id": "typ_xyz789",
"name": "2 Quartos com Suite"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-25T12:00:00Z",
"updated_at": "2026-02-25T12:00:00Z"
},
{
"id": "unt_bulk003",
"development_id": "dev_abc123",
"designation": "Apto 201",
"typology_id": "typ_abc456",
"block_id": "blk_001",
"floor": 2,
"private_area_real": 65.40,
"private_area_equiv": null,
"common_area_real": null,
"common_area_equiv": null,
"total_area_real": 77.90,
"total_area_equiv": null,
"proportionality_coefficient": 0.0125,
"parking_spot": "V-03",
"status": "disponivel",
"boundary_front": null,
"boundary_back": null,
"boundary_right": null,
"boundary_left": null,
"boundary_floor": null,
"typology": {
"id": "typ_abc456",
"name": "3 Quartos com 2 Suites"
},
"block": {
"id": "blk_001",
"name": "Torre A"
},
"created_at": "2026-02-25T12:00:00Z",
"updated_at": "2026-02-25T12:00:00Z"
}
]
}
}Campos da Unidade
Referencia completa dos campos retornados na resposta.
| Campo | Tipo | Descricao |
|---|---|---|
id | string | Identificador unico da unidade |
development_id | string | ID do empreendimento |
designation | string | Designacao/nome da unidade (ex: "Apto 101") |
typology_id | string | null | ID da tipologia associada |
block_id | string | null | ID do bloco associado |
floor | number | null | Numero do pavimento/andar |
private_area_real | number | null | Area privativa real em m2 |
private_area_equiv | number | null | Area privativa equivalente em m2 |
common_area_real | number | null | Area comum real em m2 |
common_area_equiv | number | null | Area comum equivalente em m2 |
total_area_real | number | null | Area total real em m2 |
total_area_equiv | number | null | Area total equivalente em m2 |
proportionality_coefficient | number | null | Coeficiente de proporcionalidade (fracao ideal) |
parking_spot | string | null | Identificacao da vaga de garagem |
status | string | null | Status atual da unidade |
boundary_front | string | null | Confrontacao pela frente |
boundary_back | string | null | Confrontacao pelos fundos |
boundary_right | string | null | Confrontacao pela direita |
boundary_left | string | null | Confrontacao pela esquerda |
boundary_floor | string | null | Confrontacao pelo piso |
typology | object | null | Tipologia aninhada: { id, name } |
block | object | null | Bloco aninhado: { id, name } |
created_at | string | Data de criacao (ISO 8601) |
updated_at | string | Data da ultima atualizacao (ISO 8601) |
Erros Comuns
| Codigo | Erro | Solucao |
|---|---|---|
400 | Field 'designation' is required | Informe o campo designation no body |
400 | Field 'units' must be a non-empty array | O endpoint bulk espera { "units": [...] } |
400 | Maximum 500 units per batch | Reduza o array para no maximo 500 itens |
400 | Invalid JSON body | Verifique a formatacao do JSON enviado |
404 | Development not found | Verifique o ID do empreendimento e se pertence a sua organizacao |
404 | Unit not found | Verifique o ID da unidade e se pertence ao empreendimento informado |
500 | INSERT_ERROR | Erro ao inserir. Verifique se typology_id e block_id existem |