Portal para desenvolvedores Agile Ecommerce

Seja bem-vindo(a)! Aqui você terá acesso a guias de integração que irão te ajudar no seu processo de desenvolvimento além de toda a referência da API da Agile Ecommerce..

Documentação Swagger »

Introdução

Bem-vindo à documentação da API de E-commerce. Nossa API oferece um conjunto completo de endpoints para gerenciar todos os aspectos de sua plataforma de comércio eletrônico, incluindo:

  • Gerenciamento de produtos e categorias
  • Processamento de pedidos e carrinho de compras
  • Gestão de clientes e endereços
  • Controle de estoque e preços
  • Processamento de pagamentos
  • Gestão de promoções e cupons

A API segue os princípios REST e utiliza JSON para comunicação, permitindo uma integração simples e eficiente com sua plataforma de e-commerce.

Swagger UI

Para facilitar o teste e a integração com nossa API, disponibilizamos uma interface Swagger UI onde você pode:

  • Visualizar todos os endpoints disponíveis
  • Testar as requisições diretamente pelo navegador
  • Verificar os schemas de request e response
  • Autenticar-se e testar endpoints protegidos

Acesse o Swagger UI em:

https://api-integracao.agileecommerce.com.br/swagger

Para utilizar o Swagger UI:

  1. Acesse a URL do Swagger
  2. Clique no botão "Authorize" e insira seu token de acesso
  3. Escolha o endpoint que deseja testar
  4. Preencha os parâmetros necessários
  5. Clique em "Execute" para fazer a requisição

Autenticação

A API utiliza o protocolo OAuth 2.0 para autenticação e autorização. O processo inclui autenticação inicial e refresh token para manter a sessão ativa.

Obtendo Access Token e Refresh Token

Para obter os tokens iniciais, faça uma requisição POST com as credenciais do usuário:


                POST /api/usuario/login
                Content-Type: application/json
                {
                    "client_id": "client_id",
                    "client_secret": "client_secret"
                }
            

Resposta de sucesso:


                {
                    "Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                    "RefreshToken": "def502009a3439...",
                    "Expiration": 3600
                }
            

Usando o Access Token

Inclua o token em todas as requisições no header de autorização:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Renovando o Access Token

Quando o access token expirar, use o endpoint de refresh com o token anterior e o refresh token:


                POST /api/usuario/refresh
                Content-Type: application/json
                {
                    "Token": "token_anterior_expirado",
                    "RefreshToken": "refresh_token_atual"
                }
            

Resposta do refresh:


                {
                    "Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                    "RefreshToken": "def502009a3439...",
                    "Expiration": 3600
                }
            

Erros de Autenticação

{
                    "status": "error",
                    "code": "INVALID_CREDENTIALS",
                    "message": "Credenciais inválidas ou token expirado"
                }

Boas Práticas de Segurança

  • Armazene os tokens de forma segura
  • Renove o access token antes da sua expiração
  • Use HTTPS para todas as comunicações
  • Nunca compartilhe ou exponha os tokens
  • Implemente tratamento de erros para falhas de autenticação

Exemplo de Endpoints

Coleções

Listar Coleções

GET /api/integracao/colecoes?fields=nome,id,ativo&page=2

Parâmetros de Query:

  • page: Número da página (default: 1)
  • limit: Itens por página (default: 50, max: 250)
  • sort: Campo para ordenação (ex: "nome")
  • fields: Campos para consulta (ex: "id,nome,codigo,ean")

Resposta:


    {
        "meta": {
            "page": 2,
            "pages": 2,
            "perPage": 50,
            "total": 53,
            "sort": "ASC",
            "field": ""
        },
        "data": [
            {
                "nome": "Produtos em promoção",
                "id": "col_promo_3",
                "ativo": true
            },
            {
                "nome": "Produtos em promoção",
                "id": "col_promo_4",
                "ativo": true
            },
            {
                "nome": "Produtos em promoção",
                "id": "col_promo_99",
                "ativo": true
            }
        ]
    }

Criar/Atualizar Coleção

POST /api/integracao/colecoes


    {
        "nome": "nome da coleção",
        "metadata": null,
        "imagem": "",
        "id_filial": "2",
        "id": "1",
        "ativo": false,
        "link": "",
        "codigo": "1",
        "imagem_mobile": "",
        "id_empresa": "1698203521854804",
        "descricao": "",
        "restrito": true,
        "target": "_self",
        "selo": ""
    }

Resposta:


    {
    "success":{
    "controller":"Integracao",
    "code":"800",
    "message":"sucesso"
    },
    "data":[
        {
            "nome": "nome da coleção",
            "metadata": null,
            "imagem": "",
            "id_filial": "2",
            "id": "1",
            "ativo": false,
            "link": "",
            "codigo": "1",
            "imagem_mobile": "",
            "id_empresa": "1698203521854804",
            "descricao": "",
            "restrito": true,
            "target": "_self",
            "selo": ""
        }
    ]
    }

Deletar Coleção

DELETE /api/integracao/colecoes


    [
        {
            "id": "1"
        }
    ]

Resposta:


    {
        "success": {
            "controller": "Integracao",
            "code": "800",
            "message": null
        },
        "data": null
    }

Clientes

Listar Clientes

GET api/integracao/clientes?nome_fantasia:like=Ricardo&fields=nome_fantasia,id&limit=5

Resposta:


    {
    "meta": {
        "page": 1,
        "pages": 6,
        "perPage": 5,
        "total": 30,
        "sort": "ASC",
        "field": ""
    },
    "data": [
        {
            "nome_fantasia": "AÇOUGUE DO RICARDO",
            "id": "12635609000116"
        },
        {
            "nome_fantasia": "BAR DO RICARDO",
            "id": "07797348000109"
        },
        {
            "nome_fantasia": "BAR DO RICARDO",
            "id": "09787970784"
        },
        {
            "nome_fantasia": "BAR DO RICARDO ",
            "id": "17530196000129"
        },
        {
            "nome_fantasia": "BAR DO RICARDO",
            "id": "27767544000130"
        }
    ]
    }

Pedidos

Listar Pedidos

GET api/integracao/pedidos?data:between=2023-10-08,2024-10-08&page=1&campos=id,valor,canal,aprovado&limit=5

Resposta:


    {
    "meta": {
        "page": 1,
        "pages": 5924,
        "perPage": 5,
        "total": 29619,
        "sort": "ASC",
        "field": ""
    },
    "data": [
        {
            "id": "1000065449",
            "canal": "app",
            "aprovado": true
        },
        {
            "id": "1000064707",
            "canal": "app",
            "aprovado": false
        },
        {
            "id": "1000065589",
            "canal": "mobile",
            "aprovado": false
        },
        {
            "id": "1000065577",
            "canal": "app",
            "aprovado": false
        },
        {
            "id": "1000065592",
            "canal": "app",
            "aprovado": false
        }
    ]
    }

Códigos de Status HTTP

A API utiliza os seguintes códigos de status HTTP:

  • 200: Sucesso
  • 201: Criado com sucesso
  • 400: Requisição inválida
  • 401: Não autorizado
  • 403: Acesso proibido
  • 404: Recurso não encontrado
  • 429: Muitas requisições
  • 500: Erro interno do servidor

Mensagens de Erro

Em caso de erro, a API retornará uma resposta no seguinte formato:


    {
    "error": {
    "controller": "Integracao",
    "code": "800",
    "message": "Tabela não foi encontrada"
    },
    "data": null
    }

Limites e Paginação

  • Taxa limite: 100 requisições por minuto por IP
  • Paginação máxima: 100 itens por página
  • Header de taxa limite:
    X-RateLimit-Limit: 100
    X-RateLimit-Remaining: 95
    X-RateLimit-Reset: 1705146000

Para paginar resultados, use os parâmetros page e limit nas requisições GET. A resposta incluirá metadata de paginação no objeto pagination.

Boas Práticas

  1. Sempre inclua o header Content-Type: application/json
  2. Armazene o token de forma segura
  3. Implemente retry com backoff exponencial para erros 429
  4. Utilize os parâmetros de paginação para grandes conjuntos de dados
  5. Use o Swagger UI para testar e validar suas integrações antes de ir para produção