Vales-presente do seller
Emite e gerencia vales-presente cujo saldo vale apenas nos produtos do seller.
Mesmo modelo dos cupons, mas com saldo: o cliente pode usar parte do valor numa compra e o resto em outra. O vale emitido pelo seller só abate itens do próprio seller.
Listar vales-presente
Um vale-presente é um crédito pré-pago em um código. O cliente usa o saldo em compras e o desconto recai só nos itens deste seller. Lista todos os vales do seller, sem paginação.
/api/v1/vendor/gift-certificatesSellerVales-presente do seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/gift-certificates" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"certificates": [
{
"id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"code": "GC-2U7B-PA9Z-KTAD",
"amount": 20000,
"balance": 17000,
"status": "A",
"recipient_email": "ana.lima@example.com",
"recipient_name": "Ana Lima",
"from_name": "Loja Exemplo",
"message": "Parabéns!",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"used_at": "2026-10-12T20:02:59Z",
"expires_at": "2027-10-01T00:00:00Z",
"created_at": "2026-10-11T23:59:23Z",
"updated_at": "2026-10-12T20:02:59Z",
"gift_cert_id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"gift_cert_code": "GC-2U7B-PA9Z-KTAD",
"amount_str": "200.00",
"balance_str": "170.00",
"timestamp": 1783814363
}
],
"total": 1
}Campos da resposta
certificatesobject[]Vales.
iduuidvendor_iduuidcodestringGC-XXXX-XXXX-XXXX se não enviado.amountintegerbalanceintegerstatusstringADEFA ativo, D desativado, E expirado, F esgotado (usado).recipient_emailstringrecipient_namestringfrom_namestringmessagestringcreated_byuuidused_atstringexpires_atstringcreated_atstringupdated_atstringgift_cert_id, gift_cert_code, amount_str, balance_str, timestampmixed"200.00" e um carimbo Unix). Não use em integrações novas.totalintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | Sub-conta do seller sem nenhum dos privilégios de configurações (a lista completa vem em privilege_required_any; o exemplo está cortado). O dono da loja passa sempre. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings"]} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
Criar vale-presente
Emite um vale com saldo igual ao valor. Nasce A (ativo). Esta rota não cobra nada de ninguém: é o seller que emite o crédito. Não há envio de e-mail pela API.
/api/v1/vendor/gift-certificatesSellerEmitir um vale-presente
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
amountintegerobrigatóriocodestringrecipient_emailstringrecipient_namestringfrom_namestringmessagestringexpires_atstringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/gift-certificates" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"amount": 20000,
"recipient_email": "ana.lima@example.com",
"recipient_name": "Ana Lima",
"from_name": "Loja Exemplo",
"message": "Parabéns!",
"expires_at": "2027-10-01T00:00:00Z"
}'Resposta
{
"id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"code": "GC-2U7B-PA9Z-KTAD",
"amount": 20000,
"balance": 17000,
"status": "A",
"recipient_email": "ana.lima@example.com",
"recipient_name": "Ana Lima",
"from_name": "Loja Exemplo",
"message": "Parabéns!",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"used_at": "2026-10-12T20:02:59Z",
"expires_at": "2027-10-01T00:00:00Z",
"created_at": "2026-10-11T23:59:23Z",
"updated_at": "2026-10-12T20:02:59Z",
"gift_cert_id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"gift_cert_code": "GC-2U7B-PA9Z-KTAD",
"amount_str": "200.00",
"balance_str": "170.00",
"timestamp": 1783814363
}Campos da resposta
iduuidvendor_iduuidcodestringGC-XXXX-XXXX-XXXX se não enviado.amountintegerbalanceintegerstatusstringADEFA ativo, D desativado, E expirado, F esgotado (usado).recipient_emailstringrecipient_namestringfrom_namestringmessagestringcreated_byuuidused_atstringexpires_atstringcreated_atstringupdated_atstringgift_cert_id, gift_cert_code, amount_str, balance_str, timestampmixed"200.00" e um carimbo Unix). Não use em integrações novas.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | JSON inválido ou amount menor ou igual a zero. | {"error":"amount must be positive"} |
| 500 | Falha ao gravar, inclusive quando o code já existe (hoje não vira 400). | {"error":"failed to create gift certificate","detail":"..."} |
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | Sub-conta do seller sem nenhum dos privilégios de configurações (a lista completa vem em privilege_required_any; o exemplo está cortado). O dono da loja passa sempre. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings"]} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
Ver vale-presente
Devolve um vale do seller.
/api/v1/vendor/gift-certificates/{id}SellerDetalhe de um vale-presente
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/vendor/gift-certificates/f3c86a45-22ea-45b4-b246-0c2e90607c56" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"code": "GC-2U7B-PA9Z-KTAD",
"amount": 20000,
"balance": 17000,
"status": "A",
"recipient_email": "ana.lima@example.com",
"recipient_name": "Ana Lima",
"from_name": "Loja Exemplo",
"message": "Parabéns!",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"used_at": "2026-10-12T20:02:59Z",
"expires_at": "2027-10-01T00:00:00Z",
"created_at": "2026-10-11T23:59:23Z",
"updated_at": "2026-10-12T20:02:59Z",
"gift_cert_id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"gift_cert_code": "GC-2U7B-PA9Z-KTAD",
"amount_str": "200.00",
"balance_str": "170.00",
"timestamp": 1783814363
}Campos da resposta
iduuidvendor_iduuidcodestringGC-XXXX-XXXX-XXXX se não enviado.amountintegerbalanceintegerstatusstringADEFA ativo, D desativado, E expirado, F esgotado (usado).recipient_emailstringrecipient_namestringfrom_namestringmessagestringcreated_byuuidused_atstringexpires_atstringcreated_atstringupdated_atstringgift_cert_id, gift_cert_code, amount_str, balance_str, timestampmixed"200.00" e um carimbo Unix). Não use em integrações novas.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | O vale não existe ou não é do seller. | {"error":"gift certificate not found"} |
| 500 | id não é um UUID válido (hoje 500, a mensagem está em detail). | {"error":"failed to get gift certificate","detail":"o valor \"xyz\" não é um uuid válido..."} |
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | Sub-conta do seller sem nenhum dos privilégios de configurações (a lista completa vem em privilege_required_any; o exemplo está cortado). O dono da loja passa sempre. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings"]} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
Atualizar vale-presente
Altera só os campos enviados: situação, dados do presente e validade. Não dá para mudar o valor nem o saldo. Para cancelar um vale, mande status: "disabled". Corpo sem nenhum campo conhecido é recusado.
/api/v1/vendor/gift-certificates/{id}SellerAlterar dados ou situação do vale
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
statusstringactivedisabledexpiredusedADEFused vira F.recipient_emailstringrecipient_namestringfrom_namestringmessagestringexpires_atstringExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/gift-certificates/f3c86a45-22ea-45b4-b246-0c2e90607c56" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "disabled"
}'Resposta
{
"id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"code": "GC-2U7B-PA9Z-KTAD",
"amount": 20000,
"balance": 17000,
"status": "D",
"recipient_email": "ana.lima@example.com",
"recipient_name": "Ana Lima",
"from_name": "Loja Exemplo",
"message": "Parabéns!",
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"used_at": "2026-10-12T20:02:59Z",
"expires_at": "2027-10-01T00:00:00Z",
"created_at": "2026-10-11T23:59:23Z",
"updated_at": "2026-10-12T20:02:59Z",
"gift_cert_id": "f3c86a45-22ea-45b4-b246-0c2e90607c56",
"gift_cert_code": "GC-2U7B-PA9Z-KTAD",
"amount_str": "200.00",
"balance_str": "170.00",
"timestamp": 1783814363
}Campos da resposta
iduuidvendor_iduuidcodestringGC-XXXX-XXXX-XXXX se não enviado.amountintegerbalanceintegerstatusstringADEFA ativo, D desativado, E expirado, F esgotado (usado).recipient_emailstringrecipient_namestringfrom_namestringmessagestringcreated_byuuidused_atstringexpires_atstringcreated_atstringupdated_atstringgift_cert_id, gift_cert_code, amount_str, balance_str, timestampmixed"200.00" e um carimbo Unix). Não use em integrações novas.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | O vale não existe ou não é do seller. | {"error":"gift certificate not found"} |
| 500 | Nenhum campo reconhecido para atualizar, ou id malformado. A mensagem fica em detail. | {"error":"failed to update gift certificate","detail":"no fields to update"} |
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | Sub-conta do seller sem nenhum dos privilégios de configurações (a lista completa vem em privilege_required_any; o exemplo está cortado). O dono da loja passa sempre. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings"]} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
Excluir vale-presente
Apaga o vale de vez, mesmo com saldo. Para só invalidar, use PUT com status: "disabled".
/api/v1/vendor/gift-certificates/{id}SellerExcluir um vale-presente
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/gift-certificates/f3c86a45-22ea-45b4-b246-0c2e90607c56" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"message": "gift certificate deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 404 | O vale não existe ou não é do seller. | {"error":"gift certificate not found"} |
| 500 | id não é um UUID válido (hoje 500, a mensagem está em detail). | {"error":"failed to delete gift certificate","detail":"o valor \"xyz\" não é um uuid válido..."} |
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | Sub-conta do seller sem nenhum dos privilégios de configurações (a lista completa vem em privilege_required_any; o exemplo está cortado). O dono da loja passa sempre. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings"]} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |