Skip to content

Contatos

bling_erp_api.resources.contacts.ContactsResource

ContactsResource(transport: Transport)

Bases: BaseResource

Operações de contatos do Bling.

Este recurso mapeia os endpoints /contatos. Os métodos canônicos usam português para acompanhar a documentação oficial; os métodos em inglês continuam disponíveis como aliases de compatibilidade.

Source code in src/bling_erp_api/resources/base.py
def __init__(self, transport: Transport) -> None:
    """Create a resource bound to a transport."""
    self._transport = transport

listar

listar(
    *,
    pagina: int = 1,
    limite: int = 100,
    pesquisa: str | None = None,
    criterio: ContactListCriterion | None = None,
    data_inclusao_inicial: DateFilter | None = None,
    data_inclusao_final: DateFilter | None = None,
    data_alteracao_inicial: DateFilter | None = None,
    data_alteracao_final: DateFilter | None = None,
    id_tipo_contato: int | None = None,
    id_vendedor: int | None = None,
    uf: str | None = None,
    telefone: str | None = None,
    ids_contatos: Sequence[int] | None = None,
    numero_documento: str | None = None,
    tipo_pessoa: ContactPersonKind | None = None,
) -> ContatosGetResponse200

Lista contatos.

Endpoint: GET /contatos

Obtém lista paginada de contatos.

Parameters:

Name Type Description Default
pagina int

N° da página da listagem (Bling: pagina, integer, opcional)

1
limite int

Quantidade de registros por página (Bling: limite, integer, opcional)

100
pesquisa str | None

Termo de pesquisa (Bling: pesquisa, string, opcional)

None
criterio ContactListCriterion | None

Critério de listagem: 1=Todos, 2=Ativos, 3=Inativos, 4=Excluídos (Bling: criterio, integer, opcional)

None
data_inclusao_inicial DateFilter | None

Data de inclusão inicial (Bling: dataInclusaoInicial, string, opcional)

None
data_inclusao_final DateFilter | None

Data de inclusão final (Bling: dataInclusaoFinal, string, opcional)

None
data_alteracao_inicial DateFilter | None

Data de alteração inicial (Bling: dataAlteracaoInicial, string, opcional)

None
data_alteracao_final DateFilter | None

Data de alteração final (Bling: dataAlteracaoFinal, string, opcional)

None
id_tipo_contato int | None

ID do tipo de contato (Bling: idTipoContato, integer, opcional)

None
id_vendedor int | None

ID do vendedor (Bling: idVendedor, integer, opcional)

None
uf str | None

Sigla da UF (Bling: uf, string, opcional)

None
telefone str | None

Telefone do contato (Bling: telefone, string, opcional)

None
ids_contatos Sequence[int] | None

IDs dos contatos (Bling: idsContatos[], array, opcional)

None
numero_documento str | None

N° do documento (Bling: numeroDocumento, string, opcional)

None
tipo_pessoa ContactPersonKind | None

Tipo de pessoa: 1=Pessoa Física, 2=Pessoa Jurídica, 3=Outros (Bling: tipoPessoa, integer, opcional)

None

Returns:

Type Description
ContatosGetResponse200

Bling API response. Response schemas: 200: ContatosDadosBaseDTO; 404: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def listar(  # noqa: PLR0913
    self,
    *,
    pagina: int = 1,
    limite: int = 100,
    pesquisa: str | None = None,
    criterio: ContactListCriterion | None = None,
    data_inclusao_inicial: DateFilter | None = None,
    data_inclusao_final: DateFilter | None = None,
    data_alteracao_inicial: DateFilter | None = None,
    data_alteracao_final: DateFilter | None = None,
    id_tipo_contato: int | None = None,
    id_vendedor: int | None = None,
    uf: str | None = None,
    telefone: str | None = None,
    ids_contatos: Sequence[int] | None = None,
    numero_documento: str | None = None,
    tipo_pessoa: ContactPersonKind | None = None,
) -> ContatosGetResponse200:
    """Lista contatos.

    Endpoint: GET /contatos

    Obtém lista paginada de contatos.

    Args:
        pagina: N° da página da listagem (Bling: ``pagina``, integer, opcional)
        limite: Quantidade de registros por página (Bling: ``limite``, integer, opcional)
        pesquisa: Termo de pesquisa (Bling: ``pesquisa``, string, opcional)
        criterio: Critério de listagem: 1=Todos, 2=Ativos, 3=Inativos, 4=Excluídos (Bling: ``criterio``, integer, opcional)
        data_inclusao_inicial: Data de inclusão inicial (Bling: ``dataInclusaoInicial``, string, opcional)
        data_inclusao_final: Data de inclusão final (Bling: ``dataInclusaoFinal``, string, opcional)
        data_alteracao_inicial: Data de alteração inicial (Bling: ``dataAlteracaoInicial``, string, opcional)
        data_alteracao_final: Data de alteração final (Bling: ``dataAlteracaoFinal``, string, opcional)
        id_tipo_contato: ID do tipo de contato (Bling: ``idTipoContato``, integer, opcional)
        id_vendedor: ID do vendedor (Bling: ``idVendedor``, integer, opcional)
        uf: Sigla da UF (Bling: ``uf``, string, opcional)
        telefone: Telefone do contato (Bling: ``telefone``, string, opcional)
        ids_contatos: IDs dos contatos (Bling: ``idsContatos[]``, array, opcional)
        numero_documento: N° do documento (Bling: ``numeroDocumento``, string, opcional)
        tipo_pessoa: Tipo de pessoa: 1=Pessoa Física, 2=Pessoa Jurídica, 3=Outros (Bling: ``tipoPessoa``, integer, opcional)

    Returns:
        Bling API response. Response schemas: 200: ContatosDadosBaseDTO; 404: ErrorResponse
    """
    raw = self._get(
        "/contatos",
        params=_contact_list_params(
            pagina=pagina,
            limite=limite,
            pesquisa=pesquisa,
            criterio=criterio,
            data_inclusao_inicial=data_inclusao_inicial,
            data_inclusao_final=data_inclusao_final,
            data_alteracao_inicial=data_alteracao_inicial,
            data_alteracao_final=data_alteracao_final,
            id_tipo_contato=id_tipo_contato,
            id_vendedor=id_vendedor,
            uf=uf,
            telefone=telefone,
            ids_contatos=ids_contatos,
            numero_documento=numero_documento,
            tipo_pessoa=tipo_pessoa,
        ),
    )
    return self._validate_response(ContatosGetResponse200, raw)

iterar

iterar(
    *,
    pagina: int = 1,
    limite: int = 100,
    pesquisa: str | None = None,
    criterio: ContactListCriterion | None = None,
    data_inclusao_inicial: DateFilter | None = None,
    data_inclusao_final: DateFilter | None = None,
    data_alteracao_inicial: DateFilter | None = None,
    data_alteracao_final: DateFilter | None = None,
    id_tipo_contato: int | None = None,
    id_vendedor: int | None = None,
    uf: str | None = None,
    telefone: str | None = None,
    ids_contatos: Sequence[int] | None = None,
    numero_documento: str | None = None,
    tipo_pessoa: ContactPersonKind | None = None,
) -> Iterator[JsonObject]

Itera pelos contatos página a página.

Endpoint: GET /contatos (via paginação automática)

Aceita os mesmos filtros de listar() e busca novas páginas enquanto o Bling retornar registros no envelope data.

Parameters:

Name Type Description Default
pagina int

N° da página da listagem (Bling: pagina, integer, opcional)

1
limite int

Quantidade de registros por página (Bling: limite, integer, opcional)

100
pesquisa str | None

Termo de pesquisa (Bling: pesquisa, string, opcional)

None
criterio ContactListCriterion | None

Critério de listagem: 1=Todos, 2=Ativos, 3=Inativos, 4=Excluídos (Bling: criterio, integer, opcional)

None
data_inclusao_inicial DateFilter | None

Data de inclusão inicial (Bling: dataInclusaoInicial, string, opcional)

None
data_inclusao_final DateFilter | None

Data de inclusão final (Bling: dataInclusaoFinal, string, opcional)

None
data_alteracao_inicial DateFilter | None

Data de alteração inicial (Bling: dataAlteracaoInicial, string, opcional)

None
data_alteracao_final DateFilter | None

Data de alteração final (Bling: dataAlteracaoFinal, string, opcional)

None
id_tipo_contato int | None

ID do tipo de contato (Bling: idTipoContato, integer, opcional)

None
id_vendedor int | None

ID do vendedor (Bling: idVendedor, integer, opcional)

None
uf str | None

Sigla da UF (Bling: uf, string, opcional)

None
telefone str | None

Telefone do contato (Bling: telefone, string, opcional)

None
ids_contatos Sequence[int] | None

IDs dos contatos (Bling: idsContatos[], array, opcional)

None
numero_documento str | None

N° do documento (Bling: numeroDocumento, string, opcional)

None
tipo_pessoa ContactPersonKind | None

Tipo de pessoa: 1=Pessoa Física, 2=Pessoa Jurídica, 3=Outros (Bling: tipoPessoa, integer, opcional)

None

Returns:

Type Description
Iterator[JsonObject]

Iterator sobre os itens da resposta.

Source code in src/bling_erp_api/resources/contacts.py
def iterar(  # noqa: PLR0913
    self,
    *,
    pagina: int = 1,
    limite: int = 100,
    pesquisa: str | None = None,
    criterio: ContactListCriterion | None = None,
    data_inclusao_inicial: DateFilter | None = None,
    data_inclusao_final: DateFilter | None = None,
    data_alteracao_inicial: DateFilter | None = None,
    data_alteracao_final: DateFilter | None = None,
    id_tipo_contato: int | None = None,
    id_vendedor: int | None = None,
    uf: str | None = None,
    telefone: str | None = None,
    ids_contatos: Sequence[int] | None = None,
    numero_documento: str | None = None,
    tipo_pessoa: ContactPersonKind | None = None,
) -> Iterator[JsonObject]:
    """Itera pelos contatos página a página.

    Endpoint: GET /contatos (via paginação automática)

    Aceita os mesmos filtros de ``listar()`` e busca novas páginas enquanto
    o Bling retornar registros no envelope ``data``.

    Args:
        pagina: N° da página da listagem (Bling: ``pagina``, integer, opcional)
        limite: Quantidade de registros por página (Bling: ``limite``, integer, opcional)
        pesquisa: Termo de pesquisa (Bling: ``pesquisa``, string, opcional)
        criterio: Critério de listagem: 1=Todos, 2=Ativos, 3=Inativos, 4=Excluídos (Bling: ``criterio``, integer, opcional)
        data_inclusao_inicial: Data de inclusão inicial (Bling: ``dataInclusaoInicial``, string, opcional)
        data_inclusao_final: Data de inclusão final (Bling: ``dataInclusaoFinal``, string, opcional)
        data_alteracao_inicial: Data de alteração inicial (Bling: ``dataAlteracaoInicial``, string, opcional)
        data_alteracao_final: Data de alteração final (Bling: ``dataAlteracaoFinal``, string, opcional)
        id_tipo_contato: ID do tipo de contato (Bling: ``idTipoContato``, integer, opcional)
        id_vendedor: ID do vendedor (Bling: ``idVendedor``, integer, opcional)
        uf: Sigla da UF (Bling: ``uf``, string, opcional)
        telefone: Telefone do contato (Bling: ``telefone``, string, opcional)
        ids_contatos: IDs dos contatos (Bling: ``idsContatos[]``, array, opcional)
        numero_documento: N° do documento (Bling: ``numeroDocumento``, string, opcional)
        tipo_pessoa: Tipo de pessoa: 1=Pessoa Física, 2=Pessoa Jurídica, 3=Outros (Bling: ``tipoPessoa``, integer, opcional)

    Returns:
        Iterator sobre os itens da resposta.
    """
    params: QueryParams = _contact_list_params(
        pagina=pagina,
        limite=limite,
        pesquisa=pesquisa,
        criterio=criterio,
        data_inclusao_inicial=data_inclusao_inicial,
        data_inclusao_final=data_inclusao_final,
        data_alteracao_inicial=data_alteracao_inicial,
        data_alteracao_final=data_alteracao_final,
        id_tipo_contato=id_tipo_contato,
        id_vendedor=id_vendedor,
        uf=uf,
        telefone=telefone,
        ids_contatos=ids_contatos,
        numero_documento=numero_documento,
        tipo_pessoa=tipo_pessoa,
    )
    return self._iterate("/contatos", page=pagina, limit=limite, params=params)

obter

obter(id_contato: int) -> ContatosIdContatoGetResponse200

Obtém um contato.

Endpoint: GET /contatos/{idContato}

Obtém um contato pelo ID.

Parameters:

Name Type Description Default
id_contato int

ID do contato (Bling: idContato, integer, obrigatório)

required

Returns:

Type Description
ContatosIdContatoGetResponse200

Bling API response. Response schemas: 200: ContatosDadosBaseDTO; 404: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def obter(self, id_contato: int) -> ContatosIdContatoGetResponse200:
    """Obtém um contato.

    Endpoint: GET /contatos/{idContato}

    Obtém um contato pelo ID.

    Args:
        id_contato: ID do contato (Bling: ``idContato``, integer, obrigatório)

    Returns:
        Bling API response. Response schemas: 200: ContatosDadosBaseDTO; 404: ErrorResponse
    """
    raw = self._get(f"/contatos/{id_contato}")
    return self._validate_response(ContatosIdContatoGetResponse200, raw)

obter_consumidor_final

obter_consumidor_final() -> ContatosConsumidorFinalGetResponse200

Obtém o contato Consumidor Final.

Endpoint: GET /contatos/consumidor-final

Obtém os dados do contato Consumidor Final pré-definido.

Returns:

Type Description
ContatosConsumidorFinalGetResponse200

Bling API response. Response schemas: 200: ContatosDadosBaseDTO

Source code in src/bling_erp_api/resources/contacts.py
def obter_consumidor_final(self) -> ContatosConsumidorFinalGetResponse200:
    """Obtém o contato Consumidor Final.

    Endpoint: GET /contatos/consumidor-final

    Obtém os dados do contato Consumidor Final pré-definido.

    Returns:
        Bling API response. Response schemas: 200: ContatosDadosBaseDTO
    """
    raw = self._get("/contatos/consumidor-final")
    return self._validate_response(ContatosConsumidorFinalGetResponse200, raw)

criar

criar(dados: ContatosPostRequest) -> ContatosPostResponse201

Cria um contato.

Endpoint: POST /contatos

Cria um novo contato.

Parameters:

Name Type Description Default
dados ContatosPostRequest

Dados do contato. Request body schema: ContatosDadosDTO

required

Returns:

Type Description
ContatosPostResponse201

Bling API response. Response schemas: 201: BasePostResponse; 400: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def criar(self, dados: ContatosPostRequest) -> ContatosPostResponse201:
    """Cria um contato.

    Endpoint: POST /contatos

    Cria um novo contato.

    Args:
        dados: Dados do contato. Request body schema: ContatosDadosDTO

    Returns:
        Bling API response. Response schemas: 201: BasePostResponse; 400: ErrorResponse
    """
    raw = self._post("/contatos", json=to_json_object(dados))
    return self._validate_response(ContatosPostResponse201, raw)

alterar

alterar(id_contato: int, dados: ContatosIdContatoPutRequest) -> JsonObject

Altera um contato.

Endpoint: PUT /contatos/{idContato}

Altera um contato pelo ID.

Parameters:

Name Type Description Default
id_contato int

ID do contato (Bling: idContato, integer, obrigatório)

required
dados ContatosIdContatoPutRequest

Dados do contato para atualização. Request body schema: ContatosDadosDTO

required

Returns:

Type Description
JsonObject

Bling API response. Response schemas: 204: NoContent; 400: ErrorResponse; 404: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def alterar(self, id_contato: int, dados: ContatosIdContatoPutRequest) -> JsonObject:
    """Altera um contato.

    Endpoint: PUT /contatos/{idContato}

    Altera um contato pelo ID.

    Args:
        id_contato: ID do contato (Bling: ``idContato``, integer, obrigatório)
        dados: Dados do contato para atualização. Request body schema: ContatosDadosDTO

    Returns:
        Bling API response. Response schemas: 204: NoContent; 400: ErrorResponse; 404: ErrorResponse
    """
    return self._put(f"/contatos/{id_contato}", json=to_json_object(dados))

remover

remover(id_contato: int) -> JsonObject

Remove um contato.

Endpoint: DELETE /contatos/{idContato}

Remove um contato pelo ID.

Parameters:

Name Type Description Default
id_contato int

ID do contato (Bling: idContato, integer, obrigatório)

required

Returns:

Type Description
JsonObject

Bling API response. Response schemas: 204: NoContent; 400: ErrorResponse; 404: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def remover(self, id_contato: int) -> JsonObject:
    """Remove um contato.

    Endpoint: DELETE /contatos/{idContato}

    Remove um contato pelo ID.

    Args:
        id_contato: ID do contato (Bling: ``idContato``, integer, obrigatório)

    Returns:
        Bling API response. Response schemas: 204: NoContent; 400: ErrorResponse; 404: ErrorResponse
    """
    return self._delete(f"/contatos/{id_contato}")

remover_varios

remover_varios(ids_contatos: Sequence[int]) -> ContatosDeleteResponse200

Remove múltiplos contatos.

Endpoint: DELETE /contatos

Remove múltiplos contatos pelos IDs.

Parameters:

Name Type Description Default
ids_contatos Sequence[int]

IDs dos contatos (Bling: idsContatos[], array, obrigatório)

required

Returns:

Type Description
ContatosDeleteResponse200

Bling API response. Response schemas: 200: ContatosAlertasResponse; 204: NoContent; 400: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def remover_varios(self, ids_contatos: Sequence[int]) -> ContatosDeleteResponse200:
    """Remove múltiplos contatos.

    Endpoint: DELETE /contatos

    Remove múltiplos contatos pelos IDs.

    Args:
        ids_contatos: IDs dos contatos (Bling: ``idsContatos[]``, array, obrigatório)

    Returns:
        Bling API response. Response schemas: 200: ContatosAlertasResponse; 204: NoContent; 400: ErrorResponse
    """
    raw = self._delete("/contatos", params={"idsContatos[]": list(ids_contatos)})
    return self._validate_response(ContatosDeleteResponse200, raw)

obter_tipo_contato

obter_tipo_contato(id_contato: int) -> ContatosIdContatoTiposGetResponse200

Obtém os tipos de contato de um contato.

Endpoint: GET /contatos/{idContato}/tipos

Obtém os tipos de contato associados a um contato.

Parameters:

Name Type Description Default
id_contato int

ID do contato (Bling: idContato, integer, obrigatório)

required

Returns:

Type Description
ContatosIdContatoTiposGetResponse200

Bling API response. Response schemas: 200: ContatosTipoContatoDTO; 404: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def obter_tipo_contato(self, id_contato: int) -> ContatosIdContatoTiposGetResponse200:
    """Obtém os tipos de contato de um contato.

    Endpoint: GET /contatos/{idContato}/tipos

    Obtém os tipos de contato associados a um contato.

    Args:
        id_contato: ID do contato (Bling: ``idContato``, integer, obrigatório)

    Returns:
        Bling API response. Response schemas: 200: ContatosTipoContatoDTO; 404: ErrorResponse
    """
    raw = self._get(f"/contatos/{id_contato}/tipos")
    return self._validate_response(ContatosIdContatoTiposGetResponse200, raw)

listar_tipos

listar_tipos() -> ContatosTiposGetResponse200

Lista tipos de contato.

Endpoint: GET /contatos/tipos

Obtém todos os tipos de contato disponíveis.

Returns:

Type Description
ContatosTiposGetResponse200

Bling API response. Response schemas: 200: ContatosTipoContatoDTO

Source code in src/bling_erp_api/resources/contacts.py
def listar_tipos(self) -> ContatosTiposGetResponse200:
    """Lista tipos de contato.

    Endpoint: GET /contatos/tipos

    Obtém todos os tipos de contato disponíveis.

    Returns:
        Bling API response. Response schemas: 200: ContatosTipoContatoDTO
    """
    raw = self._get("/contatos/tipos")
    return self._validate_response(ContatosTiposGetResponse200, raw)

alterar_situacao

alterar_situacao(id_contato: int, situacao: ContactStatus) -> JsonObject

Altera a situação de um contato.

Endpoint: PATCH /contatos/{idContato}/situacoes

Altera a situação de um contato pelo ID.

Parameters:

Name Type Description Default
id_contato int

ID do contato (Bling: idContato, integer, obrigatório)

required
situacao ContactStatus

Situação do contato: A=Ativo, I=Inativo, E=Excluído, S=Sem cobrança (Bling: situacao, string, obrigatório)

required

Returns:

Type Description
JsonObject

Bling API response. Response schemas: 204: NoContent; 400: ErrorResponse; 404: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def alterar_situacao(self, id_contato: int, situacao: ContactStatus) -> JsonObject:
    """Altera a situação de um contato.

    Endpoint: PATCH /contatos/{idContato}/situacoes

    Altera a situação de um contato pelo ID.

    Args:
        id_contato: ID do contato (Bling: ``idContato``, integer, obrigatório)
        situacao: Situação do contato: A=Ativo, I=Inativo, E=Excluído, S=Sem cobrança (Bling: ``situacao``, string, obrigatório)

    Returns:
        Bling API response. Response schemas: 204: NoContent; 400: ErrorResponse; 404: ErrorResponse
    """
    return self._patch(f"/contatos/{id_contato}/situacoes", json={"situacao": situacao})

alterar_situacao_varios

alterar_situacao_varios(
    ids_contatos: Sequence[int], situacao: ContactStatus
) -> ContatosSituacoesPostResponse200

Altera a situação de múltiplos contatos.

Endpoint: POST /contatos/situacoes

Altera a situação de múltiplos contatos pelos IDs.

Parameters:

Name Type Description Default
ids_contatos Sequence[int]

IDs dos contatos (Bling: idsContatos, array, obrigatório)

required
situacao ContactStatus

Situação: A=Ativo, I=Inativo, E=Excluído, S=Sem cobrança (Bling: situacao, string, obrigatório)

required

Returns:

Type Description
ContatosSituacoesPostResponse200

Bling API response. Response schemas: 200: ContatosAlertasResponse; 204: NoContent; 400: ErrorResponse

Source code in src/bling_erp_api/resources/contacts.py
def alterar_situacao_varios(
    self, ids_contatos: Sequence[int], situacao: ContactStatus
) -> ContatosSituacoesPostResponse200:
    """Altera a situação de múltiplos contatos.

    Endpoint: POST /contatos/situacoes

    Altera a situação de múltiplos contatos pelos IDs.

    Args:
        ids_contatos: IDs dos contatos (Bling: ``idsContatos``, array, obrigatório)
        situacao: Situação: A=Ativo, I=Inativo, E=Excluído, S=Sem cobrança (Bling: ``situacao``, string, obrigatório)

    Returns:
        Bling API response. Response schemas: 200: ContatosAlertasResponse; 204: NoContent; 400: ErrorResponse
    """
    raw = self._post(
        "/contatos/situacoes",
        json={"idsContatos": list(ids_contatos), "situacao": situacao},
    )
    return self._validate_response(ContatosSituacoesPostResponse200, raw)