Para uso das promoções de cashback, temos endpoints para consulta de saldos de clientes e lançamentos, onde é possível visualizar os valores, datas de expiração/liberação, etc.
Paginação
Parâmetro | Descrição | Tipo | Valores | Exemplos |
page | Define a página de busca | number | ?page=2 | |
limit | Define o número de registros por página | number | ?limit=150 | |
sort | Define a ordenação da busca | string | ?sort=-id ?sort=id |
Com isso, já é possível realizar toda a paginação e ordenação de resultados, segue o mesmo padrão da nossa api principal.
O retorno segue essa interface:
export interface Pagination<T = any
data: T[]
meta: {
from: number
to: number
total: number
per_page: number
current_page: number
last_page: number
}
}
Saldos
Para busca dos saldos, temos os seguintes endpoints:
/cashbacks/customers/balances
/cashbacks/customers/balances/:customer_id
A interface de retorno para os saldos é essa:
export interface CashbackCustomerBalance
customer_id: number
balance: number
next_expiration: string
next_release: string
}
Lançamentos
Para dados de lançamentos, temos também dois endpoints:
POST /cashbacks/entries
GET /cashbacks/entries
GET /cashbacks/entries/:id
A interface é essa:
export interface CashbackEntry {
id: string
user_id: number
calculation_id: number
customer_id: number
customer_name: string
user_name: string
type: CashbackEntryAction
value: number
used: number
status: CashbackEntryStatus
expires_at: string
release_at: string
is_expired?: boolean
created_at: string
updated_at: string
}
Atualização de saldos
Para atualizar o salvo pode ser utilizado a rota POST
POST /cashbacks/entries
Exemplo de payload:
{
"customer_id": 321,
"customer_name": "joão testador",
"type": "credit", // "credit" ou "debit"
"value": 123.99,
"status": "approved", //pending, approved, canceled, expired
"expires_at": null, // data de expiração, opcional, sem expiração sem não enviado
"release_at": null //data de liberação, opcional, imediato se não enviado
}
Os filtros disponíveis para esse endpoint, são esses:
Parâmetro | Descrição | Tipo | Valores | Exemplos |
id | ID do registro | String | ?id=5aeb5179-0545-471a-ba27-bb8f30eda2c1 | |
customer_id | ID do cliente | number | ?customer_id=2 | |
user_id | ID do usuário que fez a criação do lançamento | number | ?user_id=2 | |
calculation_id | ID do cálculo que gerou o lançamento | string | ?calculation_id=5aeb5179-0545-471a-ba27-bb8f30eda2c1 | |
type | Tipo do lançamento | string | ‘credit’ | ‘debit’ | ?type=credit |
status | Status do lançamento | string | ‘pending’ | ‘approved’ | ‘canceled’ | ‘expired’ | ?status=approved |
released | Apenas lançamentos liberados | boolean | 1 | 0 | ?released=1 |
expired | Apenas lançamentos expirados | boolean | 1 | 0 | ?expired=1 |
remaining_usage | Apenas lançamentos que ainda tem saldo restante | boolean | 1 | 0 | remaining_usage=1 |
already_used | Apenas lançamentos que já utilizaram pelo menos um pouco do valor | boolean | 1 | 0 | already_used=1 |
Webhooks
Está em desenvolvimento novos webhooks para as alterações de saldo de cashback, funcionarão da seguinte maneira:
Toda e qualquer alteração de saldo, será enviado um webhook de update de cashback balance, com esse payload:
export interface Webhook
id: string
event: cashback_balance
data: CashbackBalance
}
Quando for criado/atualizado um lançamento, será enviado um webhook de criação ou atualização de lançamento, com esse payload:
export interface Webhook {
id: ID
event: cashback_entry.updated | cashback_entry.created
data: CashbackEntry
}
Quando uma entry já existente tiver mudança de status, for aprovada, cancelada, etc, será enviado esse Webhook:
export interface Webhook> {
id: ID
event: cashback_entry_status.updated
data: CashbackEntry
}
E durante a noite, teremos duas rotinas, para monitoramento das datas de cashback.
À meia noite, uma rotina será disparada para procurar todos os lançamentos que expiram nos próximos dois dias, e será disparado um webhook para cada uma delas, com essas informações:
export interface Webhook>
id: ID
event: cashback_entry.expiring
data: CashbackEntry
}
E também à meia noite, vamos buscar todos os lançamentos que liberam no dia atual, e agendar para efetuar um disparo de webhook, exatamente no momento da liberação, com esse payload:
export interface Webhook>
id: ID
event: cashback_entry.released
data: CashbackEntry
Comentários
0 comentário
Por favor, entre para comentar.