Download OpenAPI specification:Download
API implementada pelo PDV Parceiro e consumida pela Levfone.
Esta especificação define os endpoints que o PDV Parceiro implementa e que a Levfone consome durante a jornada de financiamento de smartphones no varejo.
O fluxo inverso — a autorização de venda que o PDV Parceiro consome da Levfone —
está especificado em levfone-authorization-api.v1.yaml.
Money).X-Request-Id e X-Correlation-Id.Autenticação máquina-a-máquina entre Levfone e PDV Parceiro,
via OAuth 2.0 client_credentials (RFC 6749 §4.4).
Este token identifica a Levfone como aplicação, não o vendedor.
A identificação do vendedor é feita em POST /sellers/session.
| grant_type required | string Value: "client_credentials" |
| client_id required | string |
| client_secret required | string <password> |
| scope | string |
| access_token required | string |
| token_type required | string Value: "Bearer" |
| expires_in required | integer |
| scope | string |
{- "access_token": "string",
- "token_type": "Bearer",
- "expires_in": 3600,
- "scope": "string"
}Cria uma sessão de vendedor no PDV Parceiro.
O storeId retornado é obrigatório em todas as chamadas subsequentes de
catálogo, estoque e vendas.
Nota de segurança. Nesta versão a credencial do vendedor trafega pela Levfone (credential passthrough). A Levfone não persiste a senha em nenhuma hipótese — o campo é
writeOnly, nunca é logado e é descartado imediatamente após o encaminhamento. O caminho recomendado para a v2 é OIDC Authorization Code + PKCE hospedado pelo PDV Parceiro, eliminando o trânsito da senha. Ver ADR-001.
| X-Request-Id required | string <uuid> UUID v4 único por requisição. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| username required | string <= 120 characters |
| password required | string <password> |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "username": "vendedor.1234",
- "password": "pa$$word"
}{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "sellerId": "string",
- "sellerName": "string",
- "taxId": "string",
- "storeId": "string",
- "storeName": "string",
- "storeCnpj": "string",
- "storeAddress": {
- "street": "Av. Paulista, 1000, Sala 12",
- "city": "São Paulo",
- "state": "SP",
- "zipCode": "01310100"
}, - "role": "SELLER",
- "accessToken": "string",
- "expiresAt": "2019-08-24T14:15:22Z"
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}| storeId required | string <= 64 characters Identificador da loja, obtido em |
| X-Request-Id required | string <uuid> UUID v4 único por requisição. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "plans": [
- {
- "planId": "string",
- "name": "Controle 25GB",
- "monthlyPrice": {
- "amount": 129900,
- "currency": "BRL"
}
}
]
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}Retorna os smartphones disponíveis na loja para o plano informado.
A cor não é retornada: a Levfone financia o SKU, e a variação de cor é resolvida no ato da venda pela leitura do IMEI. Ver ADR-006.
| storeId required | string <= 64 characters Identificador da loja, obtido em |
| planId required | string <= 64 characters |
| page | integer >= 1 Default: 1 |
| pageSize | integer [ 1 .. 200 ] Default: 50 |
| X-Request-Id required | string <uuid> UUID v4 único por requisi ção. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "products": [
- {
- "sku": "string",
- "productType": "SMARTPHONE",
- "name": "string",
- "brand": "string",
- "model": "string",
- "description": "string",
- "storage": "128GB",
- "price": {
- "amount": 129900,
- "currency": "BRL"
}, - "stock": 0
}
], - "pagination": {
- "page": 0,
- "pageSize": 0,
- "totalItems": 0,
- "totalPages": 0
}
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}Endpoint universal de leitura de código de barras. Atende smartphones e qualquer acessório (capinha, película, cabo, carregador, fone).
Garantias e seguros não são retornados aqui — use GET /services.
| storeId required | string <= 64 characters Identificador da loja, obtido em |
| barcode required | string [ 6 .. 32 ] characters Examples:
|
| X-Request-Id required | string <uuid> UUID v4 único por requisição. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "sku": "string",
- "productType": "SMARTPHONE",
- "name": "string",
- "brand": "string",
- "model": "string",
- "description": "string",
- "storage": "128GB",
- "price": {
- "amount": 129900,
- "currency": "BRL"
}, - "stock": 0
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}| storeId required | string <= 64 characters Identificador da loja, obtido em |
| sku required | string <= 64 characters SKU do smartphone ao qual o serviço será vinculado. |
| X-Request-Id required | string <uuid> UUID v4 único por requisição. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "services": [
- {
- "serviceId": "string",
- "name": "Garantia Estendida 12 meses",
- "description": "string",
- "type": "EXTENDED_WARRANTY",
- "price": {
- "amount": 129900,
- "currency": "BRL"
}
}
]
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}Resolve um IMEI lido pelo vendedor no aparelho SKU, marca, modelo, descrição e memória, e informa se está disponível na loja.
O campo message é destinado à exibição direta ao vendedor e deve
explicar o motivo da indisponibilidade em linguagem operacional.
Este endpoint não é vinculante. Ele não reserva o aparelho, não garante disponibilidade e não decide nada. Serve à jornada da Levfone, antes do carrinho existir, para saber qual produto está sendo financiado.
A única decisão sobre a venda é
POST /sales/authorize, na Sales Authorization API — uma chamada única e autocontida. Ver ADR-007.
| storeId required | string <= 64 characters Identificador da loja, obtido em |
| imei required | string^[0-9]{15}$ Examples:
|
| X-Request-Id required | string <uuid> UUID v4 único por requisição. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "imeiValid": true,
- "inStock": true,
- "sku": "string",
- "name": "string",
- "brand": "string",
- "model": "string",
- "description": "string",
- "storage": "string",
- "message": "IMEI pertence a outra loja."
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}Busca a venda por CPF ou IMEI. Exatamente um dos dois deve ser informado.
Este endpoint é POST — e não GET — porque o CPF é dado pessoal e não
pode trafegar em query string, onde seria persistido em logs de acesso,
CDN e proxies. Ver ADR-004.
A nfeAccessKey (chave de 44 dígitos) permite localizar e baixar a NF-e
no portal da Receita Federal.
| X-Request-Id required | string <uuid> UUID v4 único por requisição. |
| X-Correlation-Id required | string <uuid> UUID v4 que agrupa todas as chamadas de uma mesma jornada de venda. |
| taxId required | string^[0-9]{11}$ CPF sem máscara. |
| imei | string^[0-9]{15}$ |
| success required | boolean |
| message required | string Mensagem apta a ser exibida ao vendedor. Vazia em sucesso silencioso. |
| timestamp required | string <date-time> |
| requestId | string <uuid> |
object | |
Error (object) or null |
{- "taxId": "string",
- "imei": "string"
}{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",
- "data": {
- "sales": [
- {
- "status": "PENDING",
- "saleNumber": "string",
- "orderNumber": "string",
- "invoiceNumber": "string",
- "nfeAccessKey": "string",
- "saleDate": "2019-08-24T14:15:22Z",
- "cancellationDate": "2019-08-24T14:15:22Z",
- "message": "string"
}
]
}, - "error": {
- "code": "store_not_found",
- "legacyCode": "LF0042",
- "message": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
],
}
}