Skip to content

Produtos

bling_erp_api.resources.products.ProductsResource

ProductsResource(transport: Transport)

Bases: BaseResource

Resource for Bling product endpoints.

Maps the main /produtos endpoints, including listing, retrieval, creation, full and partial updates, removal, and status changes. Canonical methods use pt-BR names aligned with the official Bling documentation; English methods are thin compatibility aliases.

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,
    criterio: ProductListCriterion | None = None,
    tipo: ProductListType | None = None,
    id_componente: int | 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_categoria: int | None = None,
    id_loja: int | None = None,
    nome: str | None = None,
    ids_produtos: Sequence[int] | None = None,
    codigos: Sequence[str] | None = None,
    gtins: Sequence[str] | None = None,
    filtro_saldo_estoque: ProductStockBalanceFilter | None = None,
    filtro_saldo_estoque_deposito: int | None = None,
) -> ProdutosGetResponse200

Lista produtos.

Endpoint: GET /produtos

Obtém produtos paginados.

Parameters:

Name Type Description Default
pagina int

Parâmetro pagina do Bling.

1
limite int

Parâmetro limite do Bling.

100
criterio ProductListCriterion | None

Critério de listagem, enviado como criterio.

None
tipo ProductListType | None

Tipo de produto, enviado como tipo.

None
id_componente int | None

Componente para composições, enviado como idComponente.

None
data_inclusao_inicial DateFilter | None

Data/hora inicial de inclusão.

None
data_inclusao_final DateFilter | None

Data/hora final de inclusão.

None
data_alteracao_inicial DateFilter | None

Data/hora inicial de alteração.

None
data_alteracao_final DateFilter | None

Data/hora final de alteração.

None
id_categoria int | None

Categoria, enviada como idCategoria.

None
id_loja int | None

Loja, enviada como idLoja.

None
nome str | None

Nome do produto, enviado como nome.

None
ids_produtos Sequence[int] | None

IDs, enviados como idsProdutos[].

None
codigos Sequence[str] | None

SKUs, enviados como codigos[].

None
gtins Sequence[str] | None

GTINs/EANs, enviados como gtins[].

None
filtro_saldo_estoque ProductStockBalanceFilter | None

Filtro de saldo, enviado como filtroSaldoEstoque.

None
filtro_saldo_estoque_deposito int | None

Depósito para filtro de saldo.

None

Returns:

Type Description
ProdutosGetResponse200

Bling API response. Response schemas: 200: ProdutosDadosBaseDTO

Source code in src/bling_erp_api/resources/products.py
def listar(  # noqa: PLR0913
    self,
    *,
    pagina: int = 1,
    limite: int = 100,
    criterio: ProductListCriterion | None = None,
    tipo: ProductListType | None = None,
    id_componente: int | 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_categoria: int | None = None,
    id_loja: int | None = None,
    nome: str | None = None,
    ids_produtos: Sequence[int] | None = None,
    codigos: Sequence[str] | None = None,
    gtins: Sequence[str] | None = None,
    filtro_saldo_estoque: ProductStockBalanceFilter | None = None,
    filtro_saldo_estoque_deposito: int | None = None,
) -> ProdutosGetResponse200:
    """Lista produtos.

    Endpoint: GET /produtos

    Obtém produtos paginados.

    Args:
        pagina: Parâmetro ``pagina`` do Bling.
        limite: Parâmetro ``limite`` do Bling.
        criterio: Critério de listagem, enviado como ``criterio``.
        tipo: Tipo de produto, enviado como ``tipo``.
        id_componente: Componente para composições, enviado como ``idComponente``.
        data_inclusao_inicial: Data/hora inicial de inclusão.
        data_inclusao_final: Data/hora final de inclusão.
        data_alteracao_inicial: Data/hora inicial de alteração.
        data_alteracao_final: Data/hora final de alteração.
        id_categoria: Categoria, enviada como ``idCategoria``.
        id_loja: Loja, enviada como ``idLoja``.
        nome: Nome do produto, enviado como ``nome``.
        ids_produtos: IDs, enviados como ``idsProdutos[]``.
        codigos: SKUs, enviados como ``codigos[]``.
        gtins: GTINs/EANs, enviados como ``gtins[]``.
        filtro_saldo_estoque: Filtro de saldo, enviado como ``filtroSaldoEstoque``.
        filtro_saldo_estoque_deposito: Depósito para filtro de saldo.

    Returns:
        Bling API response. Response schemas: 200: ProdutosDadosBaseDTO
    """
    raw = self._get(
        "/produtos",
        params=_product_list_params(
            pagina=pagina,
            limite=limite,
            criterio=criterio,
            tipo=tipo,
            id_componente=id_componente,
            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_categoria=id_categoria,
            id_loja=id_loja,
            nome=nome,
            ids_produtos=ids_produtos,
            codigos=codigos,
            gtins=gtins,
            filtro_saldo_estoque=filtro_saldo_estoque,
            filtro_saldo_estoque_deposito=filtro_saldo_estoque_deposito,
        ),
    )
    return self._validate_response(ProdutosGetResponse200, raw)

obter

obter(id_produto: int) -> ProdutosIdProdutoGetResponse200

Obtém um produto.

Endpoint: GET /produtos/{idProduto}

Obtém um produto pelo ID.

Parameters:

Name Type Description Default
id_produto int

ID do produto (Bling: idProduto, integer, obrigatório)

required

Returns:

Type Description
ProdutosIdProdutoGetResponse200

Bling API response. Response schemas: 200: ProdutosDadosDTO; 403: ErrorResponse; 404: ErrorResponse

Source code in src/bling_erp_api/resources/products.py
def obter(self, id_produto: int) -> ProdutosIdProdutoGetResponse200:
    """Obtém um produto.

    Endpoint: GET /produtos/{idProduto}

    Obtém um produto pelo ID.

    Args:
        id_produto: ID do produto (Bling: ``idProduto``, integer, obrigatório)

    Returns:
        Bling API response. Response schemas: 200: ProdutosDadosDTO; 403: ErrorResponse; 404: ErrorResponse
    """
    raw = self._get(f"/produtos/{id_produto}")
    return self._validate_response(ProdutosIdProdutoGetResponse200, raw)

criar

criar(dados: ProdutosDadosDTO) -> ProdutosResponsePOSTPUT

Cria um produto.

Endpoint: POST /produtos

Cria um produto.

Parameters:

Name Type Description Default
dados ProdutosDadosDTO

Dados do produto (Bling: request body, ProdutosDadosDTO, obrigatório)

required

Request body schema: ProdutosDadosDTO

Returns:

Type Description
ProdutosResponsePOSTPUT

Bling API response. Response schemas: 201: ProdutosResponse_POST_PUT; 400: ErrorResponse; 403: ErrorResponse

Source code in src/bling_erp_api/resources/products.py
def criar(self, dados: ProdutosDadosDTO) -> ProdutosResponsePOSTPUT:
    """Cria um produto.

    Endpoint: POST /produtos

    Cria um produto.

    Args:
        dados: Dados do produto (Bling: request body, ``ProdutosDadosDTO``, obrigatório)

    Request body schema: ProdutosDadosDTO

    Returns:
        Bling API response. Response schemas: 201: ProdutosResponse_POST_PUT; 400: ErrorResponse; 403: ErrorResponse
    """
    raw = self._post("/produtos", json=to_json_object(dados))
    return self._validate_response(ProdutosResponsePOSTPUT, raw)

alterar

alterar(id_produto: int, dados: ProdutosDadosDTO) -> ProdutosResponsePOSTPUT

Altera um produto.

Endpoint: PUT /produtos/{idProduto}

Altera um produto pelo ID.

Parameters:

Name Type Description Default
id_produto int

ID do produto (Bling: idProduto, integer, obrigatório)

required
dados ProdutosDadosDTO

Dados do produto para atualização.

required

Request body schema: ProdutosDadosDTO

Returns:

Type Description
ProdutosResponsePOSTPUT

Bling API response. Response schemas: 200: ProdutosResponse_POST_PUT; 400: ErrorResponse; 403: ErrorResponse

Source code in src/bling_erp_api/resources/products.py
def alterar(self, id_produto: int, dados: ProdutosDadosDTO) -> ProdutosResponsePOSTPUT:
    """Altera um produto.

    Endpoint: PUT /produtos/{idProduto}

    Altera um produto pelo ID.

    Args:
        id_produto: ID do produto (Bling: ``idProduto``, integer, obrigatório)
        dados: Dados do produto para atualização.

    Request body schema: ProdutosDadosDTO

    Returns:
        Bling API response. Response schemas: 200: ProdutosResponse_POST_PUT; 400: ErrorResponse; 403: ErrorResponse
    """
    raw = self._put(f"/produtos/{id_produto}", json=to_json_object(dados))
    return self._validate_response(ProdutosResponsePOSTPUT, raw)

alterar_parcialmente

alterar_parcialmente(
    id_produto: int, dados: ProdutosDadosPatchDTO
) -> ProdutosResponsePOSTPUT

Altera parcialmente um produto.

Endpoint: PATCH /produtos/{idProduto}

Altera parcialmente um produto pelo ID. Somente os campos informados terão o valor alterado.

Parameters:

Name Type Description Default
id_produto int

ID do produto (Bling: idProduto, integer, obrigatório)

required
dados ProdutosDadosPatchDTO

Dados parciais do produto para atualização.

required

Request body schema: ProdutosDadosPatchDTO

Returns:

Type Description
ProdutosResponsePOSTPUT

Bling API response. Response schemas: 200: ProdutosResponse_POST_PUT; 400: ErrorResponse; 403: ErrorResponse

Source code in src/bling_erp_api/resources/products.py
def alterar_parcialmente(
    self, id_produto: int, dados: ProdutosDadosPatchDTO
) -> ProdutosResponsePOSTPUT:
    """Altera parcialmente um produto.

    Endpoint: PATCH /produtos/{idProduto}

    Altera parcialmente um produto pelo ID. Somente os campos informados terão o valor alterado.

    Args:
        id_produto: ID do produto (Bling: ``idProduto``, integer, obrigatório)
        dados: Dados parciais do produto para atualização.

    Request body schema: ProdutosDadosPatchDTO

    Returns:
        Bling API response. Response schemas: 200: ProdutosResponse_POST_PUT; 400: ErrorResponse; 403: ErrorResponse
    """
    raw = self._patch(f"/produtos/{id_produto}", json=to_json_object(dados))
    return self._validate_response(ProdutosResponsePOSTPUT, raw)

remover

remover(id_produto: int) -> JsonObject

Remove um produto.

Endpoint: DELETE /produtos/{idProduto}

Remove um produto pelo ID.

Parameters:

Name Type Description Default
id_produto int

ID do produto (Bling: idProduto, integer, obrigatório)

required

Returns:

Type Description
JsonObject

Bling API response. Response schemas: 404: ErrorResponse

Source code in src/bling_erp_api/resources/products.py
def remover(self, id_produto: int) -> JsonObject:
    """Remove um produto.

    Endpoint: DELETE /produtos/{idProduto}

    Remove um produto pelo ID.

    Args:
        id_produto: ID do produto (Bling: ``idProduto``, integer, obrigatório)

    Returns:
        Bling API response. Response schemas: 404: ErrorResponse
    """
    return self._delete(f"/produtos/{id_produto}")

remover_varios

remover_varios(ids_produtos: Sequence[int]) -> ProdutosDeleteResponse200

Remove múltiplos produtos.

Endpoint: DELETE /produtos

Remove múltiplos produtos pelos IDs.

Parameters:

Name Type Description Default
ids_produtos Sequence[int]

IDs dos produtos (Bling: idsProdutos[], array, obrigatório)

required

Returns:

Type Description
ProdutosDeleteResponse200

Bling API response. Response schemas: 200: ProdutosAlertasResponse; 400: ErrorResponse

Source code in src/bling_erp_api/resources/products.py
def remover_varios(self, ids_produtos: Sequence[int]) -> ProdutosDeleteResponse200:
    """Remove múltiplos produtos.

    Endpoint: DELETE /produtos

    Remove múltiplos produtos pelos IDs.

    Args:
        ids_produtos: IDs dos produtos (Bling: ``idsProdutos[]``, array, obrigatório)

    Returns:
        Bling API response. Response schemas: 200: ProdutosAlertasResponse; 400: ErrorResponse
    """
    raw = self._delete("/produtos", params={"idsProdutos[]": list(ids_produtos)})
    return self._validate_response(ProdutosDeleteResponse200, raw)