Sobre a Adm360
A Adm360 é a API administrativa da Fastcommerce. Ela permite que aplicações autorizadas consultem recursos administrativos e executem operações de acordo com as permissões do usuário da loja.
Este manual descreve os comandos atualmente disponíveis na Adm360. A disponibilidade efetiva de cada recurso depende da permissão do usuário, da configuração da loja e dos objetos liberados para a sessão.
Integre ERPs, CRMs, sistemas de BI e gateways de pagamento para consultar dados, gerenciar pedidos e executar os recursos administrativos disponíveis à sua aplicação.
1 - Acessando a API
O acesso ocorre por HTTPS (porta 443). Os comandos usam FORM POST e as respostas documentadas são JSON. A execução é síncrona; o tempo de resposta depende do comando e da quantidade de registros processados.
Endpoint geral:
https://www.rumo.com.br/adm/Adm360.ehc
O comando UPL possui endpoint separado para upload multipart: https://www.rumo.com.br/adm/Adm360UploadExec.asp.
A resposta pode ser quase imediata ou demorar alguns minutos, conforme o volume processado. Consulte os limites em Melhores práticas. Os exemplos usam FORM POST; UPL utiliza multipart/form-data.
2 - Histórico de versões
A versão da API permanece 1.0. Esta revisão amplia a documentação dos comandos já existentes e não altera, por si só, o contrato do servidor.
| Versão | Data | Detalhes |
|---|---|---|
| 1.0 | 06/01/2025 | Criação do manual público. |
| 1.0 | 14/10/2026 | Documentação ampliada de comandos, permissões, tabelas e operações. |
3 - Loja para testes
O Fastcommerce não tem um ambiente de sandbox para realizar testes. Sugerimos portanto que crie uma loja para testes para desenvolver com a API.
Acesse o endereço http://novaloja.fastcommerce.com.br para criar sua loja de testes. Após cadastrá-la, avise-nos qual é o nome e o ID desta nova loja através do e-mail comercial@fastcommerce.com.br para que possamos deixar a loja em implantação e a mesma não seja cancelada após o prazo de avaliação.
4 - Usuário para testes
O usuário que vai consumir a API precisa basicamente de acesso aos relatórios e utilitários da loja, pois é através dele que as consultas e alterações são feitas.
Essa etapa deve ser realizada por um usuário da loja com permissão para criar novos usuários.
Acesse a administração da loja e no menu "Usuários" clique na opção "Incluir usuário".
O cadastro pode ser preenchido como no exemplo abaixo. A imagem ilustra a tela; conceda apenas as permissões necessárias à integração.
Crie um usuário exclusivo para cada integração, com senha forte e somente as permissões necessárias. Não reutilize usuários pessoais e não grave senha ou token em código, log, evidência ou documentação.
A permissão é verificada pelo servidor em cada comando. A existência de um comando neste manual não concede acesso a ele.
5 - Melhores Práticas
Seguem algumas dicas para melhor utilização da API:
5.1) Para maximizar a performance na alteração de pedidos, inclua no JSON somente os campos obrigatórios e os campos que serão alterados. Não inclua no JSON campos que não serão alterados.
5.2) Existe um limite de até 100 chamadas à API de pedidos por hora. Para maximizar o uso de cada chamada ao comando OrderManagement (OMN), é possível incluir mais de um registro que será afetado em cada chamada. Por exemplo, é possível incluir e alterar vários pedidos em uma mesma chamada. Se este limite for excedido, novas requisições serão bloqueadas até a próxima virada da hora. Por exemplo, se forem feitas mais de 100 requisições entre 13h e 14h, somente após as 14h será possível fazer novos acessos à API, e assim por diante. Quando o limite for excedido, o erro "ErrOrdersAccessLimit" será retornado pela API, com a seguinte mensagem: Reached limit of access per hour.
- Encerre a sessão com LOU quando concluir o uso.
- Verifique o resultado de cada item nos lotes REG e OMN.
- Após timeout em uma escrita, confira o estado antes de reenviar: a operação pode ter sido aplicada.
- Proteja senha, token e dados pessoais nos registros da integração.
6 - Comandos da API
Os comandos abaixo estão apresentados em ordem de uso. Salvo quando indicado, a chamada usa FORM POST para o endpoint geral e deve conter cmd, StoreID e, após o login, token.
| Comando | Finalidade | Efeito |
|---|---|---|
| LIN | Login e obtenção do token da sessão. | Cria sessão. |
| LOU | Encerramento da sessão. | Invalida sessão. |
| HLP | Consulta de tabelas, campos e ações liberadas. | Leitura. |
| REL | Execução de relatórios e consultas autorizadas. | Leitura. |
| UTL | Execução de utilitários autorizados. | Varia por utilitário. |
| REG | Leitura e manipulação de cadastros administrativos. | Pode gravar ou excluir registros. |
| FMG | Gestão de arquivos e pastas da loja. | Pode criar, editar, renomear, compactar ou excluir arquivos. |
| UPL | Upload multipart de arquivos autorizados. | Grava arquivos. |
| OMN | Inclusão e alteração de pedidos. | Pode alterar pedidos, clientes, estoque e integrações, conforme payload. |
7 - Permissões de acesso
Para o acesso a API, é necessário que o usuário tenha permissões de acordo com cada método:
As permissões são configuradas na ficha do usuário da loja e verificadas pelo servidor. Os níveis abaixo são mínimos: Leitura (1), Inclusão (2), Alteração (3) e Exclusão (4). Um nível superior atende ao mínimo indicado, mas não cria operações que a tabela não oferece.
| Comando | Permissão necessária | Escopo e observações |
|---|---|---|
LIN | Usuário habilitado, credenciais válidas e acesso à loja. | Valida os bloqueios de autenticação, inclusive IP e OTP quando aplicáveis. Não exige uma permissão única de módulo para efetuar o login. |
LOU | Sessão autenticada válida. | Encerra a própria sessão, sem exigir permissão adicional de cadastro. |
HLP | Sessão válida; permissões das tabelas consultadas. | Mostra campos e ações REG permitidos ao usuário. Não concede permissões nem substitui o catálogo REL/UTL. |
REL | Acesso à categoria de relatórios correspondente, nas permissões de relatórios/utilitários do usuário. | O objeto escolhido deve estar disponível para a loja e para o perfil. Ter acesso a um relatório não libera todos os demais. |
UTL | Acesso à categoria de utilitários correspondente, nas permissões de relatórios/utilitários do usuário. | Depende do utilitário escolhido e de suas validações específicas. Pode alterar dados. |
REG | Permissão do módulo e nível exigido por tabela/ação, conforme a matriz abaixo. | Consulte HLP para os campos e ações disponíveis na sessão. |
FMG | Design: Alteração (3), ou Produtos: Alteração (3). | Design permite acessar a raiz de arquivos da loja e suas áreas. Somente Produtos restringe a base à pasta prod. A exigência também vale para listar arquivos. |
UPL — HTML/imagens | Design: Alteração (3). | FileType=1 (HTML) e FileType=2 (imagens). |
UPL — produtos | Produtos: Inclusão (2). | FileType=3. A permissão de Design, isoladamente, não substitui esta exigência para o tipo 3. |
OMN | Clientes: pelo menos Leitura (1) e acesso a Pedidos, com algum status de pedido liberado. | São as condições de entrada verificadas pelo comando. Os dados e as operações também passam pelas validações de negócio de pedidos. |
7.1 - Permissões por tabela REG
Cada célula indica o nível mínimo no módulo da linha. O traço significa que a operação não é oferecida por REG, mesmo para um usuário com nível superior.
| Tabela | Módulo | Ler (r) | Incluir (i) | Alterar (u) | Excluir (d) |
|---|---|---|---|---|---|
banners | Finanças | Leitura (1) | Inclusão (2) | Alteração (3) | Alteração (3) |
coupons | Finanças | Leitura (1) | Inclusão (2) | Alteração (3) | Alteração (3) |
partners | Finanças | Leitura (1) | Inclusão (2) | Alteração (3) | Alteração (3) |
freightLocations | Finanças | Leitura (1) | Inclusão (2) | Alteração (3) | Alteração (3) |
freightPrices | Finanças | Leitura (1) | Inclusão (2) | Alteração (3) | Alteração (3) |
loginProperties | Própria sessão | Sessão válida | — | — | — |
messages | Mensagens | Leitura (1) | Inclusão (2) | Alteração (3) | Exclusão (4) |
news | Mensagens | Leitura (1) | Inclusão (2) | Alteração (3) | Exclusão (4) |
paymentsDeposit | Finanças | Leitura (1) | — | Alteração (3) | — |
paymentsLimits | Finanças | Leitura (1) | — | Alteração (3) | — |
reportUtilities | Relatórios/utilitários | Categoria autorizada; utilities=false para relatórios ou true para utilitários | — | — | — |
users | Usuários | Leitura (1) | Inclusão (2) | Alteração (3) | — |
A exclusão de banners, cupons, parceiros, localidades e tarifas exige Alteração (3); notícias e modelos de mensagens exigem Exclusão (4). As proteções de negócio continuam valendo, por exemplo para cupons utilizados e origens protegidas. Em reportUtilities, a permissão é por categoria, não uma comparação numérica com os níveis 1 a 4.
Atenção:
Acessos à API não devem estar diretamente relacionados aos acessos a qualquer página da loja virtual, ou seja, cada acesso de cliente da loja não deve corresponder a um acesso à API. Para evitar que isto ocorra, existe uma limitação no volume de acessos por hora aos métodos da API.
Obs: É extremamente recomendado criar um usuário específico para cada aplicação que for utilizar a API. Este usuário deve ter nome de usuário e senha fortes e únicas. Insira as permissões de acordo com que a aplicação irá utilizar. Por exemplo, se a aplicação irá apenas acessar os dados de pedidos, basta inserir acesso a relatórios de pedidos e em todos os demais campos deixar sem acesso.
8 - LIN, LOU e HLP
8.1 - LIN - Login
Use LIN para iniciar uma sessão e obter o token utilizado nos demais comandos.
| Campo | Descrição |
|---|---|
| cmd | Valor LIN. |
| StoreName | Nome da loja. |
| StoreID | Identificador da loja. |
| Username | Usuário autorizado. |
| Password | Senha do usuário. |
<form action="https://www.rumo.com.br/adm/Adm360.ehc" method="POST">
<input name="StoreName" value="STORE_NAME">
<input name="StoreID" value="STORE_ID">
<input name="Username" value="API_USERNAME">
<input name="Password" value="API_PASSWORD">
<input name="cmd" value="LIN">
</form>
A resposta pode conter cmd, id, st, usr, tk, err, errDescr, begin, end e et. O campo tk é segredo. Envie seu valor no campo token das chamadas seguintes.
8.2 - LOU - Logout
Use LOU ao encerrar o uso da API. Envie cmd=LOU, StoreID e token. Uma resposta ErrOK confirma o encerramento; a integração também deve descartar localmente o token após a tentativa.
8.3 - HLP - Ajuda de recursos
Use HLP após o login para descobrir tabelas, campos, tipos e ações liberadas ao usuário. Envie cmd=HLP, StoreID e token. O parâmetro opcional table permite consultar uma tabela específica. A ajuda das tabelas REG não substitui o catálogo de relatórios e utilitários.
Atenção: o resultado de HLP descreve os campos e as ações REG disponíveis; o servidor valida as permissões em cada operação. Não presuma que uma tabela ou operação desta documentação estará liberada para todo usuário.
9 - REL e UTL
9.1 - REL - Relatórios
REL executa relatórios autorizados pelo catálogo da loja. Os campos mais usados são ObjectID ou ObjectName, Page, QtRecords, TipoPesquisa, Fields e Par1 até Par8.
Consulte primeiro a tabela reportUtilities com REG para obter o catálogo permitido, os parâmetros e os limites. A estrutura de retorno pode conter metadados como fields, fieldsTypes, dbTypes e dados tabulares. Uma página sem registros e um resultado válido.
9.2 - UTL - Utilitários
UTL executa utilitários cadastrados no catálogo autorizado. Alguns utilitários podem gerar CSV, ZIP, redirecionamentos ou efeitos de escrita. Antes de automatizar, confirme objeto, parâmetros, efeito esperado e retorno na loja de testes autorizada.
REL e UTL não aceitam ordenação arbitrária do cliente; a consulta disponível é definida pelo objeto autorizado. Não repita automaticamente uma chamada cujo resultado tenha ficado incerto.
10 - REG - Cadastros
REG recebe o campo actions com um array JSON. Cada ação usa a para a operação, t para a tabela e, quando aplicável, id, f para pares campo/valor, out, order, page e pageSize.
| Ação | Significado |
|---|---|
| r | Leitura. |
| i | inclusão. |
| u | alteração. |
| d | exclusão. |
[
{
"a": "r",
"t": "news",
"out": ["id", "title", "date", "enable"],
"order": ["id"],
"page": 1,
"pageSize": 20
}
]
Limites conhecidos: até 11 ações por chamada, sendo até 10 leituras e 5 escritas; o JSON de actions possui limite de 4096 caracteres, incluindo a serialização e os escapes. Confira o resultado individual de cada ação, inclusive quando o erro geral for ErrOK.
10.1 - Tabelas disponíveis
As tabelas abaixo são as atualmente catalogadas. A permissão efetiva e os campos aceitos devem sempre ser conferidos pelo HLP.
| Tabela | Ações | Permissão/uso | Observação |
|---|---|---|---|
| banners | r/i/u/d | Finanças; banners. | Use weight para peso do banner. |
| coupons | r/i/u/d | Finanças; cupons. | Exclusão de cupom utilizado é bloqueada. |
| partners | r/i/u/d | Finanças; origens/parceiros. | Origens padrão do sistema possuem proteção. |
| freightLocations | r/i/u/d | Finanças; localidades de frete. | Não cobre frete por faixa de CEP. |
| freightPrices | r/i/u/d | Finanças; tarifas de frete. | Vinculada a freightLocations. |
| loginProperties | r | Usuário da sessão. | Leitura 1:1 de identidade e permissões. |
| messages | r/i/u/d | Mensagens; modelos. | Não envia e-mail, SMS ou notificação. |
| news | r/i/u/d | Mensagens; notícias. | CRUD requer homologação atualizada antes de uso por terceiros. |
| paymentsDeposit | r/u | Finanças; depósito. | Registro único da loja. |
| paymentsLimits | r/u | Finanças; limites de pagamento. | Registro único da loja. |
| reportUtilities | r | Pesquisas; catálogo. | Use para descobrir REL e UTL disponíveis. |
| users | r/i/u | Usuários administrativos. | Não há exclusão por REG. |
Não há tabelas REG genéricas para produtos, clientes, categorias ou pedidos. Consultas de produtos, clientes e pedidos devem usar REL quando o objeto estiver autorizado; pedidos também podem ser incluídos ou alterados com OMN.
11 - FMG e UPL - Arquivos
11.1 - FMG - Gestão de arquivos
FMG administra arquivos e pastas da loja. As operações conhecidas são list, create, edit, rename, delete e zip. Os campos variam por operação e incluem operation, path, filter, page, pageSize, items, folderName, fileName e fileContent.
Comece por list. Valide o caminho retornado antes de criar, editar, renomear, excluir ou compactar. Não há contrato dedicado de mover, baixar ou ler conteúdo por FMG; preview e download dependem da URL pública configurada pela loja.
11.2 - UPL - Upload multipart
UPL usa multipart/form-data no endpoint de upload. Envie token, StoreID ou IDLoja, Path, MaxFiles, FileType, SaveAs0 até SaveAs3, Overwrite0 até Overwrite3 e os arquivos.
| FileType | Área |
|---|---|
| 1 | HTML. |
| 2 | Imagens. |
| 3 | Arquivos de produto. |
O backend suporta até quatro arquivos por chamada. O limite total documentado é 4 MiB; arquivos comuns possuem limite padrão de 400 KiB. ZIP possui limites específicos por área. A sobrescrita deve ser escolha explícita: omita o campo quando não desejar sobrescrever. Não envie a string false: o campo preenchido pode habilitar a sobrescrita.
12 - OMN - Pedidos
OMN recebe o JSON OrdersData. O cmd do formulário deve ser OMN; o campo orders[].cmd define insert ou update para cada pedido.
| Campo | Descrição |
|---|---|
| cmd | Valor OMN. |
| StoreID | Identificador da loja. |
| token | Token válido obtido por LIN. |
| OrdersData | JSON com um ou mais pedidos. |
<form action="https://www.rumo.com.br/adm/Adm360.ehc" method="POST">
<input name="StoreID" value="STORE_ID">
<input name="token" value="API_TOKEN">
<input name="cmd" value="OMN">
<input name="OrdersData" value="{...JSON...}">
</form>
{
"send-webhook-notifications": false,
"sync-marketplaces": false,
"sync-stores": false,
"manage-stock": false,
"accept-only-store-products": true,
"orders": [
{
"cmd": "update",
"order": { "number": "ORDER_NUMBER", "status": "Approved" }
}
]
}
As opções globais podem disparar webhook, sincronização de marketplaces, sincronização entre lojas ou atualização de estoque. Escolha cada uma conscientemente. Em update, envie somente os campos obrigatórios e os campos que serão alterados; a alteração de itens não é contrato confirmado.
A resposta pode conter order_1, order_2, received, valid, invalid, inserted, updated, err e errDescr. ErrProcessingOrders indica processamento parcial: confira cada pedido retornado.
12.1 - Estrutura completa e retornos de pedidos
Estrutura do JSON:
Para inclusão o comando (cmd) dentro de cada registro do array "orders" deve ser insert e para atualização update. Para alteração devem ser enviados somente os campos que tiverem alterações, não é necessário enviar todos os campos.
{
"send-webhook-notifications": false,
"sync-marketplaces": false,
"sync-stores": false,
"manage-stock": false,
"accept-only-store-products": true,
"orders": [
{
"cmd": "insert/update",
"order": {
"number": "165240550",
"ref_number": "MYNUMBER00001",
"transaction_status": "WAITING PAYMENT",
"payment_status": "PENDING",
"custom_data": "Informações personalizadas",
"invoice": "111111111111111111111",
"amount_without_shipping": 31.5,
"coupon_discount": 0,
"discount_without_shipping": 10,
"short_obs": "OBS CURTA",
"status": "New"
},
"customer": {
"name": "Nome da pessoa",
"gender": "male",
"birth_date": "1978-01-01T03:00:00Z",
"email": "cliente@example.test",
"phone": "(21) 5555-1234",
"cellphone": "11988886666",
"custom_1": "info 1",
"custom_2": "info 2",
"custom_3": "info 3",
"document": {
"type": "CPF",
"number": "01234567890"
},
"additional_document": {
"type": "RG",
"number": "1111111111"
},
"address": {
"country": "Brasil",
"street": "Rua Sete de Setembro",
"street_number": "123",
"complement": "Comp1",
"neighborhood": "Centro Casa",
"city": "Rio de Janeiro",
"state": "RJ",
"zipcode": "20050-001"
}
},
"payment": {
"method": "Cartão de Crédito",
"processed_by": "Pagar.me",
"brand": "VISA",
"installments": 3,
"interest": 0
},
"shipping": {
"name": "Nome destinatário",
"email": "destino@example.test",
"amount": 10.5,
"amount_packaging": 0,
"custom_1": "info 1",
"custom_2": "info 2",
"custom_3": "info 3",
"discount": 0,
"message": "Mensagem do cliente",
"gift": false,
"phone": "(21) 2222-2222",
"info": "CEP 04516-001 (SEDEX 10)",
"obs": "3 dias",
"tracking_code": "SDX00011",
"delivery_date": "",
"address": {
"country": "Brasil",
"street": "Rua Sete de Setembro",
"street_number": "123",
"complement": "comple",
"neighborhood": "Centro Casa",
"city": "Rio de Janeiro",
"state": "RJ",
"zipcode": "20050-001"
}
},
"items": [
{
"id": 170070,
"sku_code": "111",
"name": "Camiseta",
"category_name": "Moda",
"bar_code": null,
"descriptor_1": null,
"descriptor_2": "P",
"descriptor_3": null,
"simple_descriptor_1": null,
"simple_descriptor_2": null,
"simple_descriptor_3": null,
"color": "Branco",
"filters": null,
"unit_price": 11,
"quantity": 1,
"weight": 12000
},
{
"id": 170071,
"sku_code": "222",
"name": "Camiseta",
"category_name": "Moda",
"bar_code": null,
"descriptor_1": null,
"descriptor_2": "M",
"descriptor_3": null,
"simple_descriptor_1": null,
"simple_descriptor_2": null,
"simple_descriptor_3": null,
"color": "Branco",
"filters": null,
"unit_price": 12,
"quantity": 2,
"weight": 0
}
]
}
]
}
É possível incluir/alterar múltiplos pedidos por vez.
O resultado desta operação será retornado em JSON. Segue o modelo:
{
"begin": "2025-01-16T20:08:02-03:00",
"srv": "serverName",
"cmd": "OMN",
"send-webhook-notifications": false,
"sync-marketplaces": false,
"sync-stores": false,
"manage-stock": false,
"accept-only-store-products": true,
"order_1": {
"cmd": "insert",
"ref_number": "MYNUMBER00001",
"shipping_amount": 10.5,
"order_totalItems": 35,
"order_amount_without_shipping": 31.5,
"order_totalAmount": 42,
"customer_id": 2449,
"customer_updated": true,
"customer_inserted": false,
"order_updated": false,
"order_inserted": true,
"order_id": 6240,
"order_number": 165240724,
"items_1": "OK: inserted [170070]",
"items_2": "OK: inserted [170071]",
"err": "OK"
},
"received": 1,
"valid": 1,
"invalid": 0,
"inserted": 1,
"updated": 0,
"sess": "173403027",
"end": "2025-01-16T20:08:02-03:00",
"et": 200
}
Obs: Note que o order_number gerado automaticamente pelo sistema é retornado neste JSON.
Veja a lista com os possíveis códigos de erros (<err>) e suas descrições (<errDescr>):
| err | errDescr |
|---|---|
| ErrOK | OK |
| ErrOrderManagementNoAccess | Access denied to handle orders |
| ErrOrderManagementNoData | OrderData not sent |
| ErrOrderManagementInvData | Invalid OrderData |
| ErrOrdersInvalid | Invalid Orders |
| ErrOrdersRecordsLimit | Records limit exceeded |
| ErrOrdersAccessLimit | Reached limit of access per hour |
| ErrOrderInvCmd | Invalid command |
| ErrProcessingOrders | An error occurred in one or more records |
Se houver erros, o resultado desta operação será retornado em JSON da seguinte forma:
{
"begin": "2025-01-16T20:10:45-03:00",
"srv": "dom0web7",
"cmd": "OMN",
"err": "ErrOrderManagementInvData",
"errDescr": "Invalid OrderData",
"sess": "173403027",
"end": "2025-01-16T20:10:45-03:00",
"et": 32
}
{
"begin": "2025-01-16T20:12:36-03:00",
"srv": "dom0web7",
"cmd": "OMN",
"send-webhook-notifications": false,
"sync-marketplaces": false,
"sync-stores": false,
"manage-stock": false,
"accept-only-store-products": true,
"order_1": {
"cmd": "update",
"order_number": 1652405501,
"ref_number": "MYNUMBER00001",
"shipping_amount": 10.5,
"order_amount_without_shipping": 31.5,
"order_totalAmount": 42,
"err": "order.number not found"
},
"order_2": {
"cmd": "update",
"order_number": 165240551,
"ref_number": "MYNUMBER00001",
"shipping_amount": 10.5,
"order_amount_without_shipping": 31.5,
"order_totalAmount": 42,
"customer_id": 2433,
"customer_updated": true,
"customer_inserted": false,
"order_updated": true,
"order_inserted": false,
"order_id": 6060,
"err": "OK"
},
"received": 2,
"valid": 1,
"invalid": 1,
"inserted": 0,
"updated": 1,
"err": "ErrProcessingOrders",
"errDescr": "An error occurred in one or more records",
"sess": "173403027",
"end": "2025-01-16T20:12:36-03:00",
"et": 104
}
Sempre serão retornados os registros e indicado em cada registro se ocorreu ou não erro ao processar aquele registro.
Outras informações do retorno:
| Atributo | Descrição |
|---|---|
| received | Número de registros recebidos |
| valid | Número de registros válidos |
| invalid | Número de registros inválidos |
| inserted | Número de registros inseridos |
| updated | Número de registros atualizados |
| err | Erro |
| errDescr | Descrição do erro |
13 - Realizando Testes
Disponibilizamos uma página para facilitar a realização de testes de integração via navegador e assim conhecer melhor o funcionamento da API. Segue o endereço:
13.1 - Comando LIN
Neste teste, será possível ver o processo para fazer login e obter token para as requisições da API.
No campo Cmd selecione a opção Login (LIN). Preencha os campos e clique em Entrar.
Campos retornados pela API:
| Campo | Descrição |
|---|---|
| cmd | Comando utilizado |
| id | ID da loja |
| st | Nome da loja |
| usr | Usuário |
| err | Erro |
| errDescr | Descrição do erro |
| tk | Token para chamadas à API dos demais comandos |
Como resultado, teremos a seguinte estrutura:
{
"begin": "2025-01-17T18:09:43-03:00",
"srv": "dom0web7",
"cmd": "LIN",
"id": 184,
"st": "STORE_NAME",
"usr": "API_USERNAME",
"err": "ErrOK",
"errDescr": "OK",
"sess": "179662158",
"tk": "API_TOKEN",
"end": "2025-01-17T18:09:43-03:00",
"et": 16
}
13.2 - Comando OMN
Neste teste, serão alterados dois pedidos da loja de testes. Substitua os números ilustrativos por pedidos dessa loja. As opções de webhook, sincronização e estoque estão desativadas nos exemplos; habilite cada uma somente quando fizer parte do teste planejado.
No campo Cmd selecione a opção OMN. Preencha os campos IDLoja, Token e no campo OrdersData informe o JSON com os registros que deseja alterar e clique em Entrar.
Exemplo
{
"send-webhook-notifications": false,
"sync-marketplaces": false,
"sync-stores": false,
"manage-stock": false,
"accept-only-store-products": true,
"orders": [
{
"cmd": "update",
"order": {
"number": "165240550",
"status": "New"
}
},
{
"cmd": "update",
"order": {
"number": "165240551",
"status": "Approved"
}
}
]
}
Como resultado, teremos a seguinte estrutura:
{
"begin": "2025-01-17T18:25:22-03:00",
"srv": "dom0web7",
"cmd": "OMN",
"send-webhook-notifications": false,
"sync-marketplaces": false,
"sync-stores": false,
"manage-stock": false,
"accept-only-store-products": true,
"order_1": {
"cmd": "update",
"order_number": 165240550,
"customer_inserted": false,
"customer_updated": false,
"customer_id": 2433,
"order_updated": true,
"order_inserted": false,
"order_id": 6059,
"err": "OK"
},
"order_2": {
"cmd": "update",
"order_number": 165240551,
"customer_inserted": false,
"customer_updated": false,
"customer_id": 2433,
"order_updated": true,
"order_inserted": false,
"order_id": 6060,
"err": "OK"
},
"received": 2,
"valid": 2,
"invalid": 0,
"inserted": 0,
"updated": 2,
"err": "ErrOK",
"errDescr": "OK",
"sess": "179662158",
"end": "2025-01-17T18:25:22-03:00",
"et": 124
}
STORE_ID e API_TOKEN pelos valores da sessão. Os blocos abaixo mostram campos de formulário, um por linha; envie-os por POST com application/x-www-form-urlencoded, deixando o cliente HTTP codificar os valores. O upload tem formato multipart próprio. Os exemplos descrevem o que testar; não executam chamadas ao abrir este manual.13.3 - HLP: descobrir campos e ações
Envie ao endpoint https://www.rumo.com.br/adm/Adm360.ehc:
cmd=HLP
StoreID=STORE_ID
token=API_TOKEN
table=news
Conferir: o retorno tableHelp, os campos de leitura e as ações liberadas para news. Se houver permissão de exclusão, confira deleteByID. Repita omitindo table para consultar a ajuda disponível. Ausência de uma ação pode decorrer da permissão ou de a tabela não oferecer a operação.
13.4 - REG: leitura e ciclo de cadastro
Comece com uma leitura de notícias:
cmd=REG
StoreID=STORE_ID
token=API_TOKEN
actions=[{"a":"r","t":"news","out":["id","title","date","enable"],"page":1,"pageSize":20}]
Conferir: resultado individual da ação e registros retornados. Uma lista vazia não representa falha. Para exercitar escrita, use uma loja de testes e um registro criado exclusivamente para esse teste, com as permissões da matriz REG.
Mantenha cmd=REG, StoreID e token. Em chamadas separadas, substitua o campo actions pelos exemplos a seguir.
Incluir uma notícia desativada:
[{"a":"i","t":"news","f":[["title","Teste de integracao ADM360"],["body","Conteudo ficticio para teste."],["enable",false]]}]
Anote o id devolvido pela ação de inclusão. Nos próximos exemplos, 123 é apenas um número ilustrativo: substitua-o pelo ID realmente criado neste teste.
Alterar e ler para conferir:
[{"a":"u","t":"news","id":123,"f":[["title","Teste de integracao revisado"]]}]
[{"a":"r","t":"news","id":123,"out":["id","title","enable"]}]
Excluir somente o registro criado para teste:
[{"a":"d","t":"news","id":123}]
Conferir: sucesso de cada ação e ausência do registro após a exclusão. Não reutilize um ID preexistente da loja. O erro geral ErrOK não dispensa a leitura dos resultados individuais.
13.5 - REL: descobrir e executar um relatório
Primeiro consulte o catálogo de relatórios por REG:
cmd=REG
StoreID=STORE_ID
token=API_TOKEN
actions=[{"a":"r","t":"reportUtilities","f":[["utilities",false]],"out":["id","name","type","description","parName1","parType1","parSize1"]}]
Escolha um objeto retornado para o usuário e consulte seus parâmetros parName1..8, parType1..8 e parSize1..8, acrescentando os campos necessários a out. Substitua REPORT_ID pelo ID escolhido:
cmd=REL
StoreID=STORE_ID
token=API_TOKEN
ObjectID=REPORT_ID
Page=1
QtRecords=20
Se o objeto exigir parâmetros, acrescente Par1 até Par8 conforme o catálogo. Não envie parâmetros fictícios nem assuma que todos os relatórios aceitam os mesmos valores.
Conferir: erro geral, identificação do relatório, dados e metadados retornados. Teste Page=2 mantendo o restante dos campos. Em resultado vazio, alguns metadados podem não aparecer.
13.6 - UTL: selecionar e testar um utilitário
Consulte o catálogo de utilitários autorizados:
cmd=REG
StoreID=STORE_ID
token=API_TOKEN
actions=[{"a":"r","t":"reportUtilities","f":[["utilities",true]],"out":["id","name","type","description","parName1","parType1","parSize1"]}]
Leia a descrição e todos os parâmetros do objeto escolhido. Este próximo passo pode alterar dados: escolha um utilitário apropriado à loja de testes e confirme seu efeito antes de enviar.
cmd=UTL
StoreID=STORE_ID
token=API_TOKEN
ObjectID=UTILITY_ID
Substitua UTILITY_ID e acrescente apenas os parâmetros Par1..8 exigidos pelo objeto. Não há um utilitário universal nem um modo de simulação implícito neste exemplo.
Conferir: retorno e efeito específicos do utilitário. Alguns geram arquivo ou redirecionamento. Em timeout ou resposta inesperada, confira o resultado na loja antes de repetir a operação.
13.7 - FMG: listar e criar uma pasta de teste
Com permissão de Alteração em Design, liste a área HTML:
cmd=FMG
StoreID=STORE_ID
token=API_TOKEN
Operation=list
path=htm
page=1
pageSize=20
Conferir: path, folderList, fileList e informações de paginação. Com acesso somente a Produtos, envie path vazio para listar a base prod; o caminho é relativo à área liberada.
Para testar criação, confirme antes que a pasta testeapi não existe. Use outro nome exclusivo se necessário:
cmd=FMG
StoreID=STORE_ID
token=API_TOKEN
Operation=create
path=htm
folderName=testeapi
Conferir: retorno sem erro e presença da pasta em uma nova listagem de htm. O teste de upload abaixo pode utilizar essa pasta. Não remova pastas que já existiam antes do teste.
13.8 - UPL: enviar um arquivo de teste
Crie localmente um pequeno arquivo testeapi.htm contendo apenas um parágrafo de teste. Para este exemplo, use Alteração em Design e a pasta htm/testeapi criada no item anterior. Configure uma chamada POST multipart para https://www.rumo.com.br/adm/Adm360UploadExec.asp.
| Campo multipart | Tipo | Valor |
|---|---|---|
| StoreID | Texto | STORE_ID |
| token | Texto | API_TOKEN |
| Path | Texto | htm/testeapi |
| FileType | Texto | 1 |
| MaxFiles | Texto | 1 |
| SaveAs0 | Texto | testeapi.htm |
| File0 | Arquivo | Selecionar o arquivo local testeapi.htm |
Omita Overwrite0 para não sobrescrever. Não envie a string false, pois um valor preenchido pode ativar a sobrescrita. Deixe o cliente HTTP gerar o cabeçalho multipart com seu delimitador (boundary); não envie o arquivo como texto de formulário comum.
Conferir: resultado do upload e presença de testeapi.htm em uma listagem FMG de htm/testeapi. Para limpar somente o arquivo criado neste teste:
cmd=FMG
StoreID=STORE_ID
token=API_TOKEN
Operation=delete
path=htm/testeapi
items=["testeapi.htm"]
Depois de confirmar que a pasta está vazia e foi criada por você neste teste, remova-a com Operation=delete, path=htm e items=["testeapi"]. Confira o retorno individual da operação.
13.9 - LOU: encerrar a sessão
Execute por último, após concluir os demais testes:
cmd=LOU
StoreID=STORE_ID
token=API_TOKEN
Conferir: retorno ErrOK. Uma chamada autenticada posterior com o token encerrado deve ser recusada; descarte o token e faça um novo LIN para continuar. Não grave seu valor nos registros de teste.
14 - Dicionário de Dados
14.1 - Order Management [Comando OMN]
JSON de API de pedidos [Inclusão/Alteração]
| Campo | Tipo/Opções | Descrição |
|---|---|---|
| send-webhook-notifications | Boolean (true/false) | Indica se notificações via webhook devem ser enviadas. |
| sync-marketplaces | Boolean (true/false) | Indica se os marketplaces devem ser sincronizados. |
| sync-stores | Boolean (true/false) | Indica se as lojas devem ser sincronizadas. |
| manage-stock | Boolean (true/false) | Indica se o gerenciamento de estoque está ativo. |
| accept-only-store-products | Boolean (true/false) | Indica se apenas produtos da loja são aceitos. |
| orders[].cmd | String ("insert/update") | Indica o comando a ser executado para o pedido. |
| orders[].order.number | String | Número do pedido. (OBRIGATÓRIO quando for alteração) |
| orders[].order.ref_number | String | Número de referência personalizado do pedido. |
| orders[].order.transaction_status | String ("WAITING PAYMENT", "PAID", etc.) | Status da transação do pedido. |
| orders[].order.payment_status | String ("PENDING", "PAID", etc.) | Status do pagamento do pedido. |
| orders[].order.custom_data | String | Dados personalizados do pedido. |
| orders[].order.invoice | String | Número da nota fiscal do pedido. |
| orders[].order.amount_without_shipping | Float | Valor total do pedido, sem incluir o frete. |
| orders[].order.coupon_discount | Float | Desconto aplicado via cupom. |
| orders[].order.discount_without_shipping | Float | Desconto aplicado, excluindo o valor do frete. |
| orders[].order.short_obs | String | Observação curta sobre o pedido. |
| orders[].order.status | String ("New", "Processed", etc.) | Status geral do pedido. |
| orders[].customer.name | String | Nome completo do cliente. |
| orders[].customer.gender | String ("male", "female") | Gênero do cliente. |
| orders[].customer.birth_date | String (ISO 8601) | Data de nascimento do cliente no formato ISO 8601 (ex.: 1978-01-01T03:00:00Z). |
| orders[].customer.email | String | Email do cliente. (OBRIGATÓRIO) |
| orders[].customer.phone | String | Telefone fixo do cliente. |
| orders[].customer.cellphone | String | Celular do cliente. |
| orders[].customer.custom_1 | String | Informação personalizada 1 do cliente. |
| orders[].customer.custom_2 | String | Informação personalizada 2 do cliente. |
| orders[].customer.custom_3 | String | Informação personalizada 3 do cliente. |
| orders[].customer.document.type | String ("CPF", "CNPJ") | Tipo do documento principal do cliente. |
| orders[].customer.document.number | String | Número do documento principal do cliente. |
| orders[].customer.additional_document.type | String ("RG", etc.) | Tipo de documento adicional do cliente. |
| orders[].customer.additional_document.number | String | Número do documento adicional do cliente. |
| orders[].customer.address.country | String | País do endereço do cliente. |
| orders[].customer.address.street | String | Logradouro do endereço do cliente. |
| orders[].customer.address.street_number | String | Número do endereço do cliente. |
| orders[].customer.address.complement | String | Complemento do endereço do cliente. |
| orders[].customer.address.neighborhood | String | Bairro do endereço do cliente. |
| orders[].customer.address.city | String | Cidade do endereço do cliente. |
| orders[].customer.address.state | String | Estado do endereço do cliente. |
| orders[].customer.address.zipcode | String | CEP do endereço do cliente. |
| orders[].payment.method | String | Método de pagamento utilizado no pedido (ex.: "Cartão de Crédito", "Boleto", etc.). |
| orders[].payment.processed_by | String | Nome do processador de pagamento (ex.: "Pagar.me", "PayPal", etc.). |
| orders[].payment.brand | String | Bandeira do cartão de crédito (ex.: "VISA", "MasterCard", etc.). |
| orders[].payment.installments | Integer | Número de parcelas escolhidas pelo cliente. |
| orders[].payment.interest | Decimal | Valor dos juros aplicados ao pagamento parcelado. |
| orders[].shipping.name | String | Nome do destinatário do pedido. |
| orders[].shipping.email | String | Email do destinatário. |
| orders[].shipping.amount | Decimal | Valor do frete do pedido. |
| orders[].shipping.amount_packaging | Decimal | Valor adicional para embalagem no pedido. |
| orders[].shipping.custom_1 | String | Campo customizável 1 relacionado ao frete. |
| orders[].shipping.custom_2 | String | Campo customizável 2 relacionado ao frete. |
| orders[].shipping.custom_3 | String | Campo customizável 3 relacionado ao frete. |
| orders[].shipping.discount | Decimal | Valor de desconto aplicado no frete. |
| orders[].shipping.message | String | Mensagem personalizada do cliente sobre o frete. |
| orders[].shipping.gift | Boolean | Indica se o pedido é um presente (true ou false). |
| orders[].shipping.phone | String | Telefone do destinatário do pedido. |
| orders[].shipping.info | String | Informações detalhadas sobre o envio (ex.: tipo de entrega, CEP). |
| orders[].shipping.obs | String | Observações adicionais sobre o frete. |
| orders[].shipping.tracking_code | String | Código de rastreamento do pedido. |
| orders[].shipping.delivery_date | String (ISO 8601) | Data prevista para entrega do pedido (formato ISO 8601). |
| orders[].shipping.address.country | String | País do destinatário. |
| orders[].shipping.address.street | String | Rua do endereço de entrega. |
| orders[].shipping.address.street_number | String | Número do endereço de entrega. |
| orders[].shipping.address.complement | String | Complemento do endereço. |
| orders[].shipping.address.neighborhood | String | Bairro do endereço de entrega. |
| orders[].shipping.address.city | String | Cidade do endereço de entrega. |
| orders[].shipping.address.state | String | Estado do endereço de entrega (ex.: "RJ", "SP"). |
| orders[].shipping.address.zipcode | String | CEP do endereço de entrega. |
| orders[].items[].id | Integer | ID único do item no pedido. |
| orders[].items[].sku_code | String | Código SKU (Stock Keeping Unit) do produto. |
| orders[].items[].name | String | Nome do item no pedido. |
| orders[].items[].category_name | String | Nome da categoria à qual o item pertence. |
| orders[].items[].bar_code | String | Código de barras do item (pode ser null). |
| orders[].items[].descriptor_1 | String | Descritor adicional 1 do item (pode ser null). |
| orders[].items[].descriptor_2 | String | Descritor adicional 2 do item (pode ser null). |
| orders[].items[].descriptor_3 | String | Descritor adicional 3 do item (pode ser null). |
| orders[].items[].simple_descriptor_1 | String | Descritor simplificado 1 do item (pode ser null). |
| orders[].items[].simple_descriptor_2 | String | Descritor simplificado 2 do item (pode ser null). |
| orders[].items[].simple_descriptor_3 | String | Descritor simplificado 3 do item (pode ser null). |
| orders[].items[].color | String | Cor do item no pedido. |
| orders[].items[].filters | String | Filtros aplicáveis ao item (pode ser null). |
| orders[].items[].unit_price | Decimal | Preço unitário do item. |
| orders[].items[].quantity | Integer | Quantidade do item no pedido. |
| orders[].items[].weight | Decimal | Peso do item em gramas. |
15 - Tratamento de Erros
As respostas usam err e errDescr para informar o resultado geral. O envelope pode incluir begin, srv, cmd, sess, end e et.
{
"err": "ErrOK",
"errDescr": "OK"
}
- Não grave senha, token, OTP ou dados pessoais em logs.
- Use somente HTTPS e um usuário exclusivo para cada aplicação.
- Em operações de escrita, implemente timeout, retentativa limitada e conciliação antes de reenviar.
- Teste em loja autorizada e mantenha trilha de auditoria de alterações.
Os erros são retornados em "err" e "errDescr" respectivamente.
No exemplo o retorno aponta que não ocorreram erros:
"err": "ErrOK",
"errDescr": "OK",
Exemplo de retorno da API quando ocorre erro:
"err": "ErrOrderManagementInvData",
"errDescr": "Invalid OrderData",