Skip to content

Endpoints de Quote

Os quotes representam propostas enviadas a organizações. Eles seguem um ciclo de vida desde rascunho até o cumprimento, com provisionamento automático de entitlements após o pagamento.

Caminho base: /wp-json/middag-account/v1/quotes

Endpoints

MétodoEndpointAuthEscopoDescrição
GET/quotesJWT + OrgquotesListar quotes
GET/quotes/{id}JWT + OrgquotesDetalhes do quote
POST/quotes/{id}/acceptJWT + OrgquotesAceitar quote
POST/quotes/{id}/rejectJWT + OrgquotesRejeitar quote
GET/quotes/{id}/paymentJWT + Orgquotes + financesStatus do pagamento

GET /quotes

Listar quotes da organização atual.

Headers: X-Middag-Organization: {org_id}

Filtros de query:

ParâmetroTipoValores
statusstringdraft, sent, viewed, accepted, paid, fulfilled, expired, rejected, cancelled

Resposta (200):

json
{
    "success": true,
    "data": [
        {
            "id": 201,
            "status": "sent",
            "total": "5400.00",
            "currency": "BRL",
            "valid_until": "2026-05-15",
            "organization_id": 42,
            "line_items": [
                {
                    "product_name": "Campus EAD - Annual",
                    "quantity": 1,
                    "unit_price": "5400.00",
                    "entitlement_class": "PLG"
                }
            ],
            "created_at": "2026-04-01T10:00:00Z"
        }
    ],
    "meta": {
        "page": 1,
        "per_page": 20,
        "total": 1,
        "pages": 1
    }
}

GET /quotes/:id

Detalhes completos do quote incluindo itens, observacoes e dados de pedido/entitlement vinculados.

Campos de resposta: id, status, total, subtotal, currency, valid_until, organization_id, company, line_items[], order_id, entitlement_ids[], notes, rejection_reason, created_at, updated_at.

POST /quotes/:id/accept

Aceitar um quote. Isso aciona a criação do pedido WooCommerce. O quote deve estar no status sent ou viewed.

Resposta (200):

json
{
    "success": true,
    "data": {
        "quote_id": 201,
        "status": "accepted",
        "order_id": 502
    },
    "message": "Quote accepted"
}

Retorna 409 CONFLICT se o quote esta expirado, rejeitado ou já aceito.

POST /quotes/:id/reject

Rejeitar um quote com motivo opcional. O quote deve estar no status sent ou viewed.

Request:

json
{
    "reason": "Budget constraints for this quarter"
}

Resposta (200):

json
{
    "success": true,
    "message": "Quote rejected"
}

GET /quotes/:id/payment

Verificar o status de pagamento de um quote aceito. Requer os escopos quotes e finances.

Ciclo de Vida do Quote

draft -> sent -> viewed -> accepted -> paid -> fulfilled
                   |           |
                   +-> expired  +-> cancelled
                   |
                   +-> rejected

Quando um quote atinge o status paid, o hook middag/quote/paid e disparado e provisiona automaticamente entitlements com base nos itens.

Status

StatusDescrição
draftCriado pelo admin, ainda não enviado ao cliente
sentEntregue ao cliente
viewedCliente abriu o quote
acceptedCliente aceitou, pedido WC criado
paidPagamento confirmado
fulfilledEntitlements provisionados (terminal)
expiredApós data de validade sem aceite (terminal)
rejectedCliente rejeitou o quote (terminal)
cancelledCancelado pelo admin (terminal)

Relacionados