{
  "openapi": "3.0.0",
  "info": {
    "contact": {},
    "description": "Catálogo público de cartas de consórcio contempladas da contemplei. Somente leitura, sem autenticação e com CORS aberto a qualquer origem. Toda resposta vem no envelope { data, meta }.",
    "title": "contemplei — API pública do catálogo",
    "version": "1"
  },
  "servers": [
    {
      "url": "https://contemplei.app"
    }
  ],
  "paths": {
    "/v1/anuncios/compartilhado/{slug}": {
      "get": {
        "description": "Devolve a carta associada a um link de compartilhamento (slug curto gerado pelo vendedor), com crédito, entrada, parcela e administradora. Valores monetários em centavos (BRL). Sem autenticação.",
        "operationId": "AnunciosController_compartilhado_v1",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AnuncioCompartilhadoDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/ResponseMetaDto"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Slug sem carta correspondente"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Carta por link compartilhado",
        "tags": [
          "anuncios"
        ]
      }
    },
    "/v1/anuncios/publico": {
      "get": {
        "description": "Lista paginada das cartas à venda. Filtros: segmentos (imoveis, moveis, servicos; lista separada por vírgula), administradoraIds, creditoMin/creditoMax, entradaMin/entradaMax, parcelaMin/parcelaMax (centavos), cetMin/cetMax, ordenarPor, ordem, page e pageSize (máximo 100). Envelope { data, meta } com meta.total, meta.page e meta.pageSize. Sem autenticação.",
        "operationId": "AnunciosController_catalogoPublico_v1",
        "parameters": [
          {
            "deprecated": true,
            "in": "query",
            "name": "segmento",
            "required": false,
            "schema": {
              "enum": [
                "imoveis",
                "moveis",
                "servicos"
              ],
              "type": "string"
            }
          },
          {
            "deprecated": true,
            "in": "query",
            "name": "administradoraId",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "segmentos",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "imoveis",
                  "moveis",
                  "servicos"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "administradoraIds",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Trecho do código exibido no card do anúncio. Busca parcial e sem diferenciar maiúsculas. No catálogo público só alcança anúncios publicados.",
            "in": "query",
            "name": "codigo",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "subcategorias",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "residencial",
                  "comercial",
                  "rural",
                  "lote",
                  "automovel",
                  "motocicleta",
                  "caminhao",
                  "maquinario",
                  "viagens",
                  "educacao",
                  "estetica",
                  "outros"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "disponivel",
                  "com_reserva"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "creditoMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "creditoMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "entradaMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "entradaMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "parcelaMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "parcelaMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "creditoAlvoCents",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "entradaAlvoCents",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "parcelaAlvoCents",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cetMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cetMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "favoritos",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "destaque",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "ordenarPor",
            "required": false,
            "schema": {
              "enum": [
                "credito",
                "entrada",
                "prazo",
                "createdAt",
                "cet",
                "custoCredito"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ordem",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/AnuncioPublicoResumoDto"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PaginatedResponseMetaDto"
                        },
                        {
                          "$ref": "#/components/schemas/AderenciaMetaExtraDto"
                        }
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Filtro ou paginação inválidos"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Catálogo público de cartas contempladas",
        "tags": [
          "anuncios"
        ],
        "x-paginated": true,
        "x-paginated-meta": "AderenciaMetaExtraDto"
      }
    },
    "/v1/anuncios/publico/arena": {
      "get": {
        "description": "Lista paginada das cartas ofertáveis com crédito, entrada, parcela, CET e administradora lado a lado, para comparação. Aceita os mesmos filtros e paginação do catálogo público (valores em centavos, pageSize máximo 100). Envelope { data, meta } paginado. Sem autenticação.",
        "operationId": "AnunciosController_arenaPublica_v1",
        "parameters": [
          {
            "deprecated": true,
            "in": "query",
            "name": "segmento",
            "required": false,
            "schema": {
              "enum": [
                "imoveis",
                "moveis",
                "servicos"
              ],
              "type": "string"
            }
          },
          {
            "deprecated": true,
            "in": "query",
            "name": "administradoraId",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "segmentos",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "imoveis",
                  "moveis",
                  "servicos"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "administradoraIds",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Trecho do código exibido no card do anúncio. Busca parcial e sem diferenciar maiúsculas. No catálogo público só alcança anúncios publicados.",
            "in": "query",
            "name": "codigo",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "subcategorias",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "residencial",
                  "comercial",
                  "rural",
                  "lote",
                  "automovel",
                  "motocicleta",
                  "caminhao",
                  "maquinario",
                  "viagens",
                  "educacao",
                  "estetica",
                  "outros"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "disponivel",
                  "com_reserva"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "creditoMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "creditoMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "entradaMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "entradaMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "parcelaMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "parcelaMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "creditoAlvoCents",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "entradaAlvoCents",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "parcelaAlvoCents",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cetMin",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cetMax",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "favoritos",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "destaque",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "ordenarPor",
            "required": false,
            "schema": {
              "enum": [
                "credito",
                "entrada",
                "prazo",
                "createdAt",
                "cet",
                "custoCredito"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ordem",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/AnuncioArenaDto"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PaginatedResponseMetaDto"
                        },
                        {
                          "$ref": "#/components/schemas/AderenciaMetaExtraDto"
                        }
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Filtro ou paginação inválidos"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Arena: cartas à venda em formato de tabela comparativa",
        "tags": [
          "anuncios"
        ],
        "x-paginated": true,
        "x-paginated-meta": "AderenciaMetaExtraDto"
      }
    },
    "/v1/anuncios/publico/carta/{seoSlug}": {
      "get": {
        "description": "Devolve a carta indexável identificada pelo seoSlug da página pública /carta/{seoSlug}/, com crédito, entrada, parcelas, CET e administradora. Valores monetários em centavos (BRL). Sem autenticação.",
        "operationId": "AnunciosController_cartaPorSeoSlug_v1",
        "parameters": [
          {
            "in": "path",
            "name": "seoSlug",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AnuncioIndexavelDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/ResponseMetaDto"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Slug sem carta correspondente"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Detalhe de uma carta pelo slug da página",
        "tags": [
          "anuncios"
        ]
      }
    },
    "/v1/anuncios/publico/indexaveis": {
      "get": {
        "description": "Lista paginada das cartas que têm página própria em /carta/{seoSlug}/, com slug, status e data de atualização, para indexação e sitemaps. Parâmetros: page e pageSize (máximo 100). Envelope { data, meta } paginado. Sem autenticação.",
        "operationId": "AnunciosController_indexaveis_v1",
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "pageSize",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 100,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/AnuncioIndexavelDto"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PaginatedResponseMetaDto"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Paginação inválida"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Cartas com página pública própria",
        "tags": [
          "anuncios"
        ],
        "x-paginated": true
      }
    },
    "/v1/anuncios/publico/mercado": {
      "get": {
        "description": "Devolve ágio mínimo, médio e máximo (%) e a quantidade de cartas comparáveis à combinação informada. Parâmetros obrigatórios: segmento, administradoraId e creditoCents (centavos); excludeAnuncioId opcional. Envelope { data, meta } simples. Sem autenticação.",
        "operationId": "AnunciosController_mercadoPublico_v1",
        "parameters": [
          {
            "in": "query",
            "name": "segmento",
            "required": true,
            "schema": {
              "enum": [
                "imoveis",
                "moveis",
                "servicos"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "administradoraId",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "creditoCents",
            "required": true,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "excludeAnuncioId",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MercadoAnuncioResponseDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/ResponseMetaDto"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Parâmetro obrigatório ausente ou inválido"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Ágio de mercado de cartas comparáveis",
        "tags": [
          "anuncios"
        ]
      }
    },
    "/v1/anuncios/publico/{externalId}": {
      "get": {
        "description": "Devolve o resumo público da carta identificada pelo externalId (o id devolvido nas listagens), com crédito, entrada, parcelas e administradora. Valores monetários em centavos (BRL). Sem autenticação.",
        "operationId": "AnunciosController_detalhePublico_v1",
        "parameters": [
          {
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AnuncioPublicoResumoDto"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/ResponseMetaDto"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": ""
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Identificador sem carta publicada correspondente"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            },
            "description": "Limite de requisições por IP excedido; Retry-After e RateLimit-Reset informam quando tentar de novo"
          }
        },
        "summary": "Resumo público de uma carta pelo identificador",
        "tags": [
          "anuncios"
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AderenciaContagemDto": {
        "properties": {
          "aderentes": {
            "type": "number"
          },
          "fora": {
            "type": "number"
          },
          "perto": {
            "type": "number"
          }
        },
        "required": [
          "aderentes",
          "perto",
          "fora"
        ],
        "type": "object"
      },
      "AderenciaDto": {
        "properties": {
          "bloco": {
            "enum": [
              "aderente",
              "perto",
              "fora"
            ],
            "type": "string"
          },
          "creditoDesvioCents": {
            "type": "number"
          },
          "entradaDesvioCents": {
            "nullable": true,
            "type": "number"
          },
          "entradaNivel": {
            "enum": [
              "aderente",
              "perto",
              "fora"
            ],
            "nullable": true,
            "type": "string"
          },
          "parcelaDesvioCents": {
            "nullable": true,
            "type": "number"
          },
          "parcelaNivel": {
            "enum": [
              "aderente",
              "perto",
              "fora"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "bloco",
          "creditoDesvioCents",
          "entradaNivel",
          "entradaDesvioCents",
          "parcelaNivel",
          "parcelaDesvioCents"
        ],
        "type": "object"
      },
      "AderenciaMetaExtraDto": {
        "properties": {
          "aderencia": {
            "$ref": "#/components/schemas/AderenciaContagemDto"
          },
          "juncoes": {
            "items": {
              "$ref": "#/components/schemas/JuncaoSugeridaDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "AdministradoraRegraItemDto": {
        "properties": {
          "descricao": {
            "type": "string"
          },
          "tema": {
            "type": "string"
          },
          "veredito": {
            "enum": [
              "permitido",
              "com_condicoes",
              "nao_permitido"
            ],
            "type": "string"
          }
        },
        "required": [
          "tema",
          "veredito",
          "descricao"
        ],
        "type": "object"
      },
      "AnuncioArenaDto": {
        "properties": {
          "aderencia": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AderenciaDto"
              }
            ],
            "nullable": true
          },
          "administradoraHasLogo": {
            "type": "boolean"
          },
          "administradoraId": {
            "format": "uuid",
            "type": "string"
          },
          "administradoraLogoVersion": {
            "nullable": true,
            "type": "string"
          },
          "administradoraNome": {
            "type": "string"
          },
          "calculos": {
            "$ref": "#/components/schemas/AnuncioCalculosDto"
          },
          "codigo": {
            "type": "string"
          },
          "cover": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CartaImagemCoverDto"
              }
            ],
            "nullable": true
          },
          "creditoCents": {
            "type": "number"
          },
          "destaque": {
            "type": "boolean"
          },
          "entradaCents": {
            "type": "number"
          },
          "grupo": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "parcelaSemSeguroCents": {
            "type": "number"
          },
          "politicaCancelamento": {
            "type": "string"
          },
          "prazoRestanteMeses": {
            "type": "number"
          },
          "publicadoEm": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "regrasAdministradora": {
            "$ref": "#/components/schemas/AnuncioRegrasAdministradoraDto"
          },
          "regrasUtilizacao": {
            "type": "string"
          },
          "saldoDevedorCents": {
            "type": "number"
          },
          "segmento": {
            "enum": [
              "imoveis",
              "moveis",
              "servicos"
            ],
            "type": "string"
          },
          "seguroMensalCents": {
            "type": "number"
          },
          "seoSlug": {
            "type": "string"
          },
          "shareSlug": {
            "type": "string"
          },
          "status": {
            "enum": [
              "rascunho",
              "aguardando_validacao",
              "publicado",
              "reservado",
              "vendido",
              "arquivado"
            ],
            "type": "string"
          },
          "subcategoria": {
            "enum": [
              "residencial",
              "comercial",
              "rural",
              "lote",
              "automovel",
              "motocicleta",
              "caminhao",
              "maquinario",
              "viagens",
              "educacao",
              "estetica",
              "outros"
            ],
            "nullable": true,
            "type": "string"
          },
          "taxaAnaliseCents": {
            "type": "number"
          },
          "taxaTransferenciaCents": {
            "type": "number"
          },
          "valorPagoCorrigidoCents": {
            "type": "number"
          }
        },
        "required": [
          "shareSlug",
          "codigo",
          "segmento",
          "cover",
          "grupo",
          "administradoraNome",
          "administradoraId",
          "administradoraHasLogo",
          "administradoraLogoVersion",
          "creditoCents",
          "entradaCents",
          "prazoRestanteMeses",
          "parcelaSemSeguroCents",
          "seguroMensalCents",
          "saldoDevedorCents",
          "valorPagoCorrigidoCents",
          "taxaTransferenciaCents",
          "taxaAnaliseCents",
          "regrasUtilizacao",
          "politicaCancelamento",
          "regrasAdministradora",
          "calculos",
          "id",
          "seoSlug",
          "destaque",
          "aderencia",
          "status",
          "publicadoEm"
        ],
        "type": "object"
      },
      "AnuncioCalculosDto": {
        "properties": {
          "cetMensal": {
            "nullable": true,
            "type": "number"
          },
          "custoMensal": {
            "nullable": true,
            "type": "number"
          },
          "entradaPct": {
            "type": "number"
          },
          "financeiroCoerente": {
            "type": "boolean"
          },
          "parcelaComSeguroCents": {
            "type": "number"
          },
          "sinalCents": {
            "type": "number"
          },
          "taxaPlataformaCents": {
            "type": "number"
          }
        },
        "required": [
          "entradaPct",
          "sinalCents",
          "parcelaComSeguroCents",
          "taxaPlataformaCents",
          "custoMensal",
          "cetMensal",
          "financeiroCoerente"
        ],
        "type": "object"
      },
      "AnuncioCompartilhadoDto": {
        "properties": {
          "administradoraHasLogo": {
            "type": "boolean"
          },
          "administradoraId": {
            "format": "uuid",
            "type": "string"
          },
          "administradoraLogoVersion": {
            "nullable": true,
            "type": "string"
          },
          "administradoraNome": {
            "type": "string"
          },
          "calculos": {
            "$ref": "#/components/schemas/AnuncioCalculosDto"
          },
          "codigo": {
            "type": "string"
          },
          "cover": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CartaImagemCoverDto"
              }
            ],
            "nullable": true
          },
          "creditoCents": {
            "type": "number"
          },
          "entradaCents": {
            "type": "number"
          },
          "grupo": {
            "type": "string"
          },
          "parcelaSemSeguroCents": {
            "type": "number"
          },
          "politicaCancelamento": {
            "type": "string"
          },
          "prazoRestanteMeses": {
            "type": "number"
          },
          "regrasAdministradora": {
            "$ref": "#/components/schemas/AnuncioRegrasAdministradoraDto"
          },
          "regrasUtilizacao": {
            "type": "string"
          },
          "saldoDevedorCents": {
            "type": "number"
          },
          "segmento": {
            "enum": [
              "imoveis",
              "moveis",
              "servicos"
            ],
            "type": "string"
          },
          "seguroMensalCents": {
            "type": "number"
          },
          "shareSlug": {
            "type": "string"
          },
          "subcategoria": {
            "enum": [
              "residencial",
              "comercial",
              "rural",
              "lote",
              "automovel",
              "motocicleta",
              "caminhao",
              "maquinario",
              "viagens",
              "educacao",
              "estetica",
              "outros"
            ],
            "nullable": true,
            "type": "string"
          },
          "taxaAnaliseCents": {
            "type": "number"
          },
          "taxaTransferenciaCents": {
            "type": "number"
          },
          "valorPagoCorrigidoCents": {
            "type": "number"
          }
        },
        "required": [
          "shareSlug",
          "codigo",
          "segmento",
          "cover",
          "grupo",
          "administradoraNome",
          "administradoraId",
          "administradoraHasLogo",
          "administradoraLogoVersion",
          "creditoCents",
          "entradaCents",
          "prazoRestanteMeses",
          "parcelaSemSeguroCents",
          "seguroMensalCents",
          "saldoDevedorCents",
          "valorPagoCorrigidoCents",
          "taxaTransferenciaCents",
          "taxaAnaliseCents",
          "regrasUtilizacao",
          "politicaCancelamento",
          "regrasAdministradora",
          "calculos"
        ],
        "type": "object"
      },
      "AnuncioIndexavelDto": {
        "properties": {
          "aderencia": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AderenciaDto"
              }
            ],
            "nullable": true
          },
          "administradoraHasLogo": {
            "type": "boolean"
          },
          "administradoraId": {
            "format": "uuid",
            "type": "string"
          },
          "administradoraLogoVersion": {
            "nullable": true,
            "type": "string"
          },
          "administradoraNome": {
            "type": "string"
          },
          "calculos": {
            "$ref": "#/components/schemas/AnuncioCalculosDto"
          },
          "codigo": {
            "type": "string"
          },
          "cover": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CartaImagemCoverDto"
              }
            ],
            "nullable": true
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "creditoCents": {
            "type": "number"
          },
          "destaque": {
            "type": "boolean"
          },
          "entradaCents": {
            "type": "number"
          },
          "grupo": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "parcelaSemSeguroCents": {
            "type": "number"
          },
          "politicaCancelamento": {
            "type": "string"
          },
          "prazoRestanteMeses": {
            "type": "number"
          },
          "regrasAdministradora": {
            "$ref": "#/components/schemas/AnuncioRegrasAdministradoraDto"
          },
          "regrasUtilizacao": {
            "type": "string"
          },
          "saldoDevedorCents": {
            "type": "number"
          },
          "segmento": {
            "enum": [
              "imoveis",
              "moveis",
              "servicos"
            ],
            "type": "string"
          },
          "seguroMensalCents": {
            "type": "number"
          },
          "seoSlug": {
            "type": "string"
          },
          "shareSlug": {
            "type": "string"
          },
          "status": {
            "enum": [
              "rascunho",
              "aguardando_validacao",
              "publicado",
              "reservado",
              "vendido",
              "arquivado"
            ],
            "type": "string"
          },
          "subcategoria": {
            "enum": [
              "residencial",
              "comercial",
              "rural",
              "lote",
              "automovel",
              "motocicleta",
              "caminhao",
              "maquinario",
              "viagens",
              "educacao",
              "estetica",
              "outros"
            ],
            "nullable": true,
            "type": "string"
          },
          "taxaAnaliseCents": {
            "type": "number"
          },
          "taxaTransferenciaCents": {
            "type": "number"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "valorPagoCorrigidoCents": {
            "type": "number"
          }
        },
        "required": [
          "shareSlug",
          "codigo",
          "segmento",
          "cover",
          "grupo",
          "administradoraNome",
          "administradoraId",
          "administradoraHasLogo",
          "administradoraLogoVersion",
          "creditoCents",
          "entradaCents",
          "prazoRestanteMeses",
          "parcelaSemSeguroCents",
          "seguroMensalCents",
          "saldoDevedorCents",
          "valorPagoCorrigidoCents",
          "taxaTransferenciaCents",
          "taxaAnaliseCents",
          "regrasUtilizacao",
          "politicaCancelamento",
          "regrasAdministradora",
          "calculos",
          "id",
          "seoSlug",
          "destaque",
          "aderencia",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "AnuncioPublicoResumoDto": {
        "properties": {
          "aderencia": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AderenciaDto"
              }
            ],
            "nullable": true
          },
          "administradoraHasLogo": {
            "type": "boolean"
          },
          "administradoraId": {
            "format": "uuid",
            "type": "string"
          },
          "administradoraLogoVersion": {
            "nullable": true,
            "type": "string"
          },
          "administradoraNome": {
            "type": "string"
          },
          "calculos": {
            "$ref": "#/components/schemas/AnuncioCalculosDto"
          },
          "codigo": {
            "type": "string"
          },
          "cover": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CartaImagemCoverDto"
              }
            ],
            "nullable": true
          },
          "creditoCents": {
            "type": "number"
          },
          "destaque": {
            "type": "boolean"
          },
          "entradaCents": {
            "type": "number"
          },
          "grupo": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "parcelaSemSeguroCents": {
            "type": "number"
          },
          "politicaCancelamento": {
            "type": "string"
          },
          "prazoRestanteMeses": {
            "type": "number"
          },
          "regrasAdministradora": {
            "$ref": "#/components/schemas/AnuncioRegrasAdministradoraDto"
          },
          "regrasUtilizacao": {
            "type": "string"
          },
          "saldoDevedorCents": {
            "type": "number"
          },
          "segmento": {
            "enum": [
              "imoveis",
              "moveis",
              "servicos"
            ],
            "type": "string"
          },
          "seguroMensalCents": {
            "type": "number"
          },
          "seoSlug": {
            "type": "string"
          },
          "shareSlug": {
            "type": "string"
          },
          "subcategoria": {
            "enum": [
              "residencial",
              "comercial",
              "rural",
              "lote",
              "automovel",
              "motocicleta",
              "caminhao",
              "maquinario",
              "viagens",
              "educacao",
              "estetica",
              "outros"
            ],
            "nullable": true,
            "type": "string"
          },
          "taxaAnaliseCents": {
            "type": "number"
          },
          "taxaTransferenciaCents": {
            "type": "number"
          },
          "valorPagoCorrigidoCents": {
            "type": "number"
          }
        },
        "required": [
          "shareSlug",
          "codigo",
          "segmento",
          "cover",
          "grupo",
          "administradoraNome",
          "administradoraId",
          "administradoraHasLogo",
          "administradoraLogoVersion",
          "creditoCents",
          "entradaCents",
          "prazoRestanteMeses",
          "parcelaSemSeguroCents",
          "seguroMensalCents",
          "saldoDevedorCents",
          "valorPagoCorrigidoCents",
          "taxaTransferenciaCents",
          "taxaAnaliseCents",
          "regrasUtilizacao",
          "politicaCancelamento",
          "regrasAdministradora",
          "calculos",
          "id",
          "seoSlug",
          "destaque",
          "aderencia"
        ],
        "type": "object"
      },
      "AnuncioRegrasAdministradoraDto": {
        "properties": {
          "itens": {
            "items": {
              "$ref": "#/components/schemas/AdministradoraRegraItemDto"
            },
            "type": "array"
          },
          "segmento": {
            "enum": [
              "imoveis",
              "moveis",
              "servicos"
            ],
            "type": "string"
          }
        },
        "required": [
          "segmento",
          "itens"
        ],
        "type": "object"
      },
      "CartaImagemCoverDto": {
        "properties": {
          "height": {
            "type": "number"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "larguras": {
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "lqip": {
            "type": "string"
          },
          "versao": {
            "type": "number"
          },
          "width": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "width",
          "height",
          "lqip",
          "larguras",
          "versao"
        ],
        "type": "object"
      },
      "ErrorResponseDto": {
        "properties": {
          "code": {
            "description": "Código estável do erro (BAD_REQUEST, NOT_FOUND, TOO_MANY_REQUESTS, VALIDATION, INTERNAL)",
            "example": "NOT_FOUND",
            "type": "string"
          },
          "details": {
            "additionalProperties": true,
            "description": "Detalhes adicionais do erro, quando houver",
            "type": "object"
          },
          "message": {
            "description": "Mensagem legível; em erros de validação, as violações separadas por vírgula",
            "example": "anuncio não encontrado",
            "type": "string"
          },
          "requestId": {
            "description": "Identificador da requisição (mesmo valor do header X-Request-Id), para suporte",
            "example": "9f1c2a4e-7b3d-4c58-a1e2-0d6f8b9c3e11",
            "type": "string"
          },
          "statusCode": {
            "description": "Status HTTP da resposta",
            "example": 404,
            "type": "number"
          }
        },
        "required": [
          "statusCode",
          "code",
          "message"
        ],
        "type": "object"
      },
      "JuncaoSugeridaDto": {
        "properties": {
          "aderencia": {
            "$ref": "#/components/schemas/AderenciaDto"
          },
          "administradoraId": {
            "type": "string"
          },
          "administradoraNome": {
            "type": "string"
          },
          "anuncioCodigos": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "anuncioIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cetMensal": {
            "type": "number"
          },
          "creditoTotalCents": {
            "type": "number"
          },
          "entradaTotalCents": {
            "type": "number"
          },
          "excedenteCents": {
            "type": "number"
          },
          "parcelaTotalCents": {
            "type": "number"
          },
          "quantidadeCotas": {
            "type": "number"
          },
          "segmento": {
            "enum": [
              "imoveis",
              "moveis",
              "servicos"
            ],
            "type": "string"
          }
        },
        "required": [
          "anuncioIds",
          "anuncioCodigos",
          "administradoraId",
          "administradoraNome",
          "segmento",
          "creditoTotalCents",
          "entradaTotalCents",
          "parcelaTotalCents",
          "cetMensal",
          "excedenteCents",
          "quantidadeCotas",
          "aderencia"
        ],
        "type": "object"
      },
      "MercadoAnuncioResponseDto": {
        "properties": {
          "agioPctMax": {
            "nullable": true,
            "type": "number"
          },
          "agioPctMedia": {
            "nullable": true,
            "type": "number"
          },
          "agioPctMin": {
            "nullable": true,
            "type": "number"
          },
          "amostra": {
            "type": "number"
          },
          "totalUsuarios": {
            "type": "number"
          }
        },
        "required": [
          "amostra",
          "agioPctMin",
          "agioPctMedia",
          "agioPctMax",
          "totalUsuarios"
        ],
        "type": "object"
      },
      "PaginatedResponseMetaDto": {
        "properties": {
          "page": {
            "type": "number"
          },
          "pageSize": {
            "type": "number"
          },
          "success": {
            "type": "boolean"
          },
          "total": {
            "type": "number"
          }
        },
        "required": [
          "success",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object"
      },
      "ResponseMetaDto": {
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object"
      }
    }
  }
}
