Skip to content

Visão Geral da REST API v1

URL base: /wp-json/middag-account/v1/

A REST API do middag-account expõe 79 endpoints em 18 grupos. Todos os endpoints utilizam a infraestrutura de REST API do WordPress com permission_callback em toda rota.

Métodos de Autenticação

A API suporta autenticação tripla dependendo do contexto:

MétodoHeader / MecanismoUtilizado Por
JWT RS256Authorization: Bearer {token}Portal, mobile, terceiros
WordPress NonceX-WP-Nonce baseado em cookiewp-admin (Inertia UI)
WC API KeysConsumer key + secret (nativo WooCommerce)Integrações WooCommerce

Detalhes do JWT

  • Algoritmo: RS256 (RSA + SHA-256). Nunca HS256.
  • TTL do access token: 24 horas
  • TTL do refresh token: 7 dias (rotacao obrigatoria)
  • Chave privada armazenada fora do webroot
  • Campos do payload no nivel raiz: sub, org, roles, scopes, company
json
{
    "sub": 42,
    "org": 15,
    "roles": [
        "admin"
    ],
    "scopes": [
        "organization",
        "finances",
        "orders"
    ],
    "company": "middag_br",
    "iat": 1714200000,
    "exp": 1714286400
}

Headers Obrigatórios

HeaderDireçãoObrigatórioValor
AuthorizationRequestSim *Bearer {jwt_token}
X-Middag-OrganizationRequestSim **ID da organização (int)
X-Middag-CompanyRequestNãomiddag_br ou middag_global
Content-TypeRequestSim (POST/PUT)application/json

* Exceto /auth/login, /auth/register e outros endpoints publicos. ** Exceto endpoints que não operam com dados de escopo organizacional.

Envelope de Resposta

Todo endpoint retorna um envelope JSON consistente:

json
{
    "success": true,
    "data": {},
    "meta": {
        "page": 1,
        "per_page": 20,
        "total": 100,
        "pages": 5
    },
    "message": null,
    "errors": null
}
CampoTipoSempre PresenteDescrição
successbooleanSimtrue para 2xx, false para erros
data`objectarray`Sim
meta`objectnull`Sim
message`stringnull`Sim
errors`objectnull`Sim

Paginação

Endpoints de listagem aceitam estes parâmetros de query:

ParâmetroTipoPadrãoDescrição
pageint1Pagina atual
per_pageint20Itens por pagina (max: 100)
orderstringdescDireção de ordenação: asc ou desc
orderbystringcreated_atCampo de ordenação
searchstring--Busca textual (quando suportado)

Códigos de Erro

CódigoHTTPQuando
VALIDATION_ERROR422Campos de entrada invalidos
AUTHENTICATION_ERROR401Token ausente, expirado ou inválido
AUTHORIZATION_ERROR403Permissões insuficientes
NOT_FOUND404Recurso não existe
CONFLICT409Estado conflitante
RATE_LIMIT429Limite de requisicoes excedido
INTERNAL_ERROR500Erro inesperado no servidor

Exemplo de Resposta de Erro

json
{
    "success": false,
    "data": null,
    "meta": null,
    "message": "Validation failed",
    "errors": {
        "code": "VALIDATION_ERROR",
        "fields": {
            "email": [
                "Email is required"
            ],
            "name": [
                "Name must be at least 2 characters"
            ]
        }
    }
}

Rate Limiting

EndpointLimiteJanelaPor
/auth/login51 minutoIP
/auth/register31 minutoIP
/auth/forgot-password35 minutosIP
/auth/resend-verification35 minutosEmail
/auth/refresh101 minutoUser ID
Outros endpoints autenticados601 minutoUser ID

Requisicoes excedidas recebem HTTP 429 com um header Retry-After.

Pipeline de Middleware

Toda requisição autenticada passa por esta cadeia de middleware em ordem:

  1. AuthMiddleware -- Extrair e validar JWT, definir WP_User no contexto da requisição
  2. PermissionsMiddleware -- Validar cargo e escopos contra os requisitos da rota
  3. OrganizationMiddleware -- Validar header X-Middag-Organization e associação
  4. CompanyMiddleware -- Validar header X-Middag-Company (se a rota tem escopo de empresa)

Contrato de Estabilidade

A REST API v1 garante nenhuma quebra de compatibilidade dentro da v1. Novos endpoints são aditivos. Campos existentes nunca são removidos. Deprecação vem com 6 meses de aviso previo.

Grupos de Endpoints

GrupoEndpointsReferência
Auth12/auth/*
Organizations7organizations.md
Collaborators8collaborators.md
Entitlements6entitlements.md
Orders4orders.md
Invoices4invoices.md
Tax Invoices4invoices.md
Quotes5quotes.md
Licenses4licenses.md
Contracts3contracts.md
Environments4environments.md
Services3services.md
Service Requests4services.md
Documents3--
Downloads2--
Affiliates2--
Admin2--
Webhooks2--