ERP · Gestão Escolar Estoque somente leitura Fornecedores: leitura e escrita

Estoque, Merenda e Fornecedores

Produtos, depósitos, lotes com validade e o livro de movimentações do almoxarifado; os cardápios da merenda; e o cadastro de fornecedores, compartilhado com as contas a pagar.

Entradas, saídas e ajustes de estoque são sempre lançados por um funcionário identificado na escola (rastreabilidade de lotes e do consumo da merenda), por isso o estoque é somente leitura na API.

O modelo produto

id uuid

Identificador do produto.

name / sku / barcode string

Nome, código interno e código de barras.

category / unit object

Categoria e unidade de medida.

minimum_stock / ideal_stock number

Estoque mínimo e ideal.

available_quantity number

Soma do disponível em todos os lotes abertos.

below_minimum boolean

Disponível abaixo do mínimo.

is_food / is_medication / for_sale boolean

Alimento (merenda), medicamento (Saúde) ou à venda (Cantina).

O modelo produto
{
  "id": "019fb171-202f-701b-a7ce-418705bf01ce",
  "name": "Arroz tipo 1 (5kg)",
  "description": null,
  "sku": "ALM-0001",
  "barcode": "7896006716112",
  "brand": "Tio João",
  "manufacturer": "Josapar",
  "category": {
    "id": "019ee8bd-937d-717c-bb0e-b4a2e706e220",
    "name": "Alimentos"
  },
  "unit": {
    "id": "019f586a-1e8e-72ab-9e61-8a87a3b34643",
    "name": "Unidade",
    "symbol": "un"
  },
  "minimum_stock": 20,
  "ideal_stock": 40,
  "available_quantity": 12,
  "below_minimum": true,
  "is_food": true,
  "is_medication": false,
  "for_sale": false,
  "active": true
}

O modelo fornecedor

id uuid

Identificador do fornecedor.

company_name / trade_name string

Razão social e nome fantasia.

document_number string

CNPJ ou CPF.

contact_name / phone / email / address string|null

Contato.

active boolean

Fornecedor ativo.

O modelo fornecedor
{
  "id": "01a0a9a0-52f8-73d2-9003-85196c24ae97",
  "company_name": "Distribuidora de Alimentos Demonstração LTDA",
  "trade_name": "Distribuidora Demonstração",
  "document_number": "11222333000199",
  "contact_name": "Roberta Lima",
  "phone": "(21) 3333-4444",
  "email": "vendas@distribuidora.com.br",
  "address": "Av. Brasil, 1000 — Rio de Janeiro/RJ",
  "active": true,
  "created_at": "2026-09-16T06:50:51-03:00",
  "updated_at": "2026-09-16T06:50:51-03:00"
}
GET /v1/partners/school/{cnpj}/stock/products/all

Listar produtos

Catálogo de produtos da escola com a quantidade disponível somada de todos os lotes abertos. Paginado (25 por página).

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Filtros (query string)

search string opcional

Parte do nome, ou o SKU / código de barras exato.

active boolean opcional

1 ativos, 0 inativos.

category_id uuid opcional

Somente uma categoria.

below_minimum boolean opcional

1 para os produtos abaixo do estoque mínimo.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição GET
GET /v1/partners/school/{cnpj}/stock/products/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/stock/products/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "019fb171-202f-701b-a7ce-418705bf01ce",
      "name": "Arroz tipo 1 (5kg)",
      "description": null,
      "sku": "ALM-0001",
      "barcode": "7896006716112",
      "brand": "Tio João",
      "manufacturer": "Josapar",
      "category": {
        "id": "019ee8bd-937d-717c-bb0e-b4a2e706e220",
        "name": "Alimentos"
      },
      "unit": {
        "id": "019f586a-1e8e-72ab-9e61-8a87a3b34643",
        "name": "Unidade",
        "symbol": "un"
      },
      "minimum_stock": 20,
      "ideal_stock": 40,
      "available_quantity": 12,
      "below_minimum": true,
      "is_food": true,
      "is_medication": false,
      "for_sale": false,
      "active": true
    }
  ],
  "links": { /* first, prev, next */ },
  "meta": { "current_page": 1, "per_page": 25 }
}
GET /v1/partners/school/{cnpj}/stock/product/{id}

Obter produto

Um produto com a quantidade disponível em cada depósito.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do produto.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/stock/product/{id}
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/stock/product/{id} \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": {
    "id": "019fb171-202f-701b-a7ce-418705bf01ce",
    "name": "Arroz tipo 1 (5kg)",
    "description": null,
    "sku": "ALM-0001",
    "barcode": "7896006716112",
    "brand": "Tio João",
    "manufacturer": "Josapar",
    "category": {
      "id": "019ee8bd-937d-717c-bb0e-b4a2e706e220",
      "name": "Alimentos"
    },
    "unit": {
      "id": "019f586a-1e8e-72ab-9e61-8a87a3b34643",
      "name": "Unidade",
      "symbol": "un"
    },
    "minimum_stock": 20,
    "ideal_stock": 40,
    "available_quantity": 12,
    "below_minimum": true,
    "is_food": true,
    "is_medication": false,
    "for_sale": false,
    "active": true,
    "warehouses": [
      {
        "warehouse_id": "019ed313-52cc-70b0-bc48-c0f06a4d19ca",
        "warehouse_name": "Depósito Central",
        "quantity": 12
      }
    ]
  }
}
GET /v1/partners/school/{cnpj}/stock/warehouses/all

Listar depósitos

Depósitos da escola (central, cozinha, despensa…). Não paginado.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/stock/warehouses/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/stock/warehouses/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "019ed313-52cc-70b0-bc48-c0f06a4d19ca",
      "name": "Depósito Central",
      "type": "CENTRAL",
      "active": true
    }
  ]
}
GET /v1/partners/school/{cnpj}/stock/entries/all

Listar lotes (entradas)

Lotes recebidos, do mais recente para o mais antigo, com a quantidade que ainda resta em cada um. Paginado.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Filtros (query string)

product_id uuid opcional

Somente um produto.

warehouse_id uuid opcional

Somente um depósito.

open boolean opcional

1 para os lotes ainda abertos.

expiring_until date opcional

Lotes com validade até a data (AAAA-MM-DD) — útil para alertas de vencimento.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição GET
GET /v1/partners/school/{cnpj}/stock/entries/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/stock/entries/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "019ff09a-2a62-73dc-9283-ae9112928a7a",
      "product": {
        "id": "019fb171-202f-701b-a7ce-418705bf01ce",
        "name": "Arroz tipo 1 (5kg)"
      },
      "warehouse": {
        "id": "019ed313-52cc-70b0-bc48-c0f06a4d19ca",
        "name": "Depósito Central"
      },
      "supplier": {
        "id": "01a0a9a0-52f8-73d2-9003-85196c24ae97",
        "name": "Distribuidora Demonstração"
      },
      "internal_lot_number": "LOTE-050",
      "supplier_lot_number": "F-88231",
      "invoice_number": "000123",
      "expiration_date": "2027-02-11",
      "manufacturing_date": null,
      "quantity_received": 40,
      "quantity_available": 12,
      "unit_cost": 24.9,
      "sale_price": null,
      "is_closed": false,
      "received_at": "2026-08-14T09:30:00-03:00"
    }
  ],
  "links": { /* first, prev, next */ },
  "meta": { "current_page": 1, "per_page": 25 }
}
GET /v1/partners/school/{cnpj}/stock/movements/all

Listar movimentações

Livro de movimentações de estoque (entradas, saídas, consumo, transferências, ajustes, perdas, devoluções), da mais recente para a mais antiga. Paginado.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Filtros (query string)

type string opcional

ENTRY, EXIT, CONSUMPTION, TRANSFER_OUT, TRANSFER_IN, ADJUSTMENT_IN, ADJUSTMENT_OUT, LOSS ou RETURN.

product_id uuid opcional

Somente um produto.

from date opcional

A partir de (AAAA-MM-DD).

to date opcional

Até (AAAA-MM-DD).

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição GET
GET /v1/partners/school/{cnpj}/stock/movements/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/stock/movements/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "01a001dd-2524-703e-848f-c4289ff13c8b",
      "type": "CONSUMPTION",
      "type_label": "Consumo",
      "stock_entry_id": "019ff09a-2a62-73dc-9283-ae9112928a7a",
      "product": {
        "id": "019fb171-202f-701b-a7ce-418705bf01ce",
        "name": "Arroz tipo 1 (5kg)"
      },
      "warehouse": {
        "id": "019ed313-52cc-70b0-bc48-c0f06a4d19ca",
        "name": "Depósito Central"
      },
      "lot_number": "LOTE-050",
      "quantity": 2,
      "previous_quantity": 14,
      "resulting_quantity": 12,
      "notes": "Preparo do almoço",
      "created_at": "2026-10-01T11:02:05-03:00"
    }
  ],
  "links": { /* first, prev, next */ },
  "meta": { "current_page": 1, "per_page": 25 }
}
GET /v1/partners/school/{cnpj}/meal-menus/all

Listar cardápios

Cardápios da merenda escolar com a quantidade de itens. Não paginado.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Filtros (query string)

active boolean opcional

1 ativos, 0 inativos.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição GET
GET /v1/partners/school/{cnpj}/meal-menus/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/meal-menus/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "01a1c2d3-0000-7000-8000-000000000001",
      "name": "Cardápio Ensino Fundamental",
      "segment": {
        "id": "9a8b7c6d-0000-7000-8000-000000000002",
        "name": "Ensino Fundamental"
      },
      "notes": null,
      "active": true,
      "items_count": 5
    }
  ]
}
GET /v1/partners/school/{cnpj}/meal-menu/{id}

Obter cardápio

Um cardápio com as preparações de cada dia da semana e refeição (cafe_da_manha, almoco, lanche_tarde, jantar).

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do cardápio.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/meal-menu/{id}
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/meal-menu/{id} \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": {
    "id": "01a1c2d3-0000-7000-8000-000000000001",
    "name": "Cardápio Ensino Fundamental",
    "segment": {
      "id": "9a8b7c6d-0000-7000-8000-000000000002",
      "name": "Ensino Fundamental"
    },
    "notes": null,
    "active": true,
    "items": [
      {
        "day_of_week": "monday",
        "meal_type": "almoco",
        "meal_type_label": "Almoço",
        "recipe": {
          "id": "01a1c2d3-0000-7000-8000-000000000003",
          "name": "Arroz, feijão e frango grelhado",
          "servings": 50
        },
        "notes": null
      }
    ]
  }
}
GET /v1/partners/school/{cnpj}/suppliers/all

Listar fornecedores

Fornecedores da escola, compartilhados por Estoque e Financeiro (contas a pagar). Paginado.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Filtros (query string)

search string opcional

Parte da razão social ou do nome fantasia, ou o CNPJ/CPF.

active boolean opcional

1 ativos, 0 inativos.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição GET
GET /v1/partners/school/{cnpj}/suppliers/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/suppliers/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "01a0a9a0-52f8-73d2-9003-85196c24ae97",
      "company_name": "Distribuidora de Alimentos Demonstração LTDA",
      "trade_name": "Distribuidora Demonstração",
      "document_number": "11222333000199",
      "contact_name": "Roberta Lima",
      "phone": "(21) 3333-4444",
      "email": "vendas@distribuidora.com.br",
      "address": "Av. Brasil, 1000 — Rio de Janeiro/RJ",
      "active": true,
      "created_at": "2026-09-16T06:50:51-03:00",
      "updated_at": "2026-09-16T06:50:51-03:00"
    }
  ],
  "links": { /* first, prev, next */ },
  "meta": { "current_page": 1, "per_page": 25 }
}
GET /v1/partners/school/{cnpj}/supplier/{id}

Obter fornecedor

Um fornecedor.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do fornecedor.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/supplier/{id}
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/supplier/{id} \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": {
    "id": "01a0a9a0-52f8-73d2-9003-85196c24ae97",
    "company_name": "Distribuidora de Alimentos Demonstração LTDA",
    "trade_name": "Distribuidora Demonstração",
    "document_number": "11222333000199",
    "contact_name": "Roberta Lima",
    "phone": "(21) 3333-4444",
    "email": "vendas@distribuidora.com.br",
    "address": "Av. Brasil, 1000 — Rio de Janeiro/RJ",
    "active": true,
    "created_at": "2026-09-16T06:50:51-03:00",
    "updated_at": "2026-09-16T06:50:51-03:00"
  }
}
POST /v1/partners/school/{cnpj}/supplier

Criar fornecedor

Cadastra um fornecedor na escola. Dispara o webhook supplier.created.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Parâmetros do corpo

company_name string obrigatório

Razão social (até 255 caracteres).

document_number string obrigatório

CNPJ ou CPF.

trade_name string opcional

Nome fantasia.

contact_name string opcional

Pessoa de contato.

phone string opcional

Telefone.

email string opcional

E-mail.

address string opcional

Endereço em texto livre.

active boolean opcional

Fornecedor ativo (padrão true).

Dados de pagamento do fornecedor (banco, agência, conta, chave PIX) não podem ser enviados pela API — são ignorados se presentes e só podem ser cadastrados pela equipe da escola. Assim, nenhuma integração consegue redirecionar um pagamento.

Códigos de resposta

201

Recurso criado.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição POST
POST /v1/partners/school/{cnpj}/supplier
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/supplier \
  -X POST \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"company_name":"Papelaria Central LTDA","document_number":"12345678000199","contact_name":"Rita","email":"contato@papelaria.com.br"}'
Resposta
{
  "data": {
    "id": "01a0a9a0-52f8-73d2-9003-85196c24ae97",
    "company_name": "Papelaria Central LTDA",
    "trade_name": null,
    "document_number": "12345678000199",
    "contact_name": "Rita",
    "phone": null,
    "email": "contato@papelaria.com.br",
    "address": null,
    "active": true,
    "created_at": "2026-09-16T06:50:51-03:00",
    "updated_at": "2026-09-16T06:50:51-03:00"
  }
}
PUT /v1/partners/school/{cnpj}/supplier/{id}

Editar fornecedor

Atualiza um fornecedor. Somente os campos enviados são alterados. Dispara o webhook supplier.updated.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do fornecedor.

Parâmetros do corpo

company_name string opcional

Razão social (até 255 caracteres).

document_number string opcional

CNPJ ou CPF.

trade_name string opcional

Nome fantasia.

contact_name string opcional

Pessoa de contato.

phone string opcional

Telefone.

email string opcional

E-mail.

address string opcional

Endereço em texto livre.

active boolean opcional

Fornecedor ativo (padrão true).

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição PUT
PUT /v1/partners/school/{cnpj}/supplier/{id}
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/supplier/{id} \
  -X PUT \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"contact_name":"Rita Souza","phone":"(21) 98888-7777"}'
Resposta
{
  "data": {
    "id": "01a0a9a0-52f8-73d2-9003-85196c24ae97",
    "company_name": "Distribuidora de Alimentos Demonstração LTDA",
    "trade_name": "Distribuidora Demonstração",
    "document_number": "11222333000199",
    "contact_name": "Roberta Lima",
    "phone": "(21) 3333-4444",
    "email": "vendas@distribuidora.com.br",
    "address": "Av. Brasil, 1000 — Rio de Janeiro/RJ",
    "active": true,
    "created_at": "2026-09-16T06:50:51-03:00",
    "updated_at": "2026-09-16T06:50:51-03:00"
  }
}