WLB Assets Data API — Functional Documentation
This document describes the functional behavior of the WLB Assets Data API from the perspective
of a consumer integrating with it (WLB frontend, whitelabel partners). It explains what the API does,
the data it returns, the business rules that govern each operation and how errors are reported.
Table of contents
- Overview
- Actors and context
- Operations
- Payment terminal field catalog
- Business rules and constraints
- Resilience and limits
- Traceability
- Error meanings
Overview
The WLB Assets Data API exposes WLB assets data in a shape tailored to the WLB frontend. The
current use case is PaymentTerminals: listing the active payment terminals (POS, mobile, etc.)
of a merchant. The data is sourced from the SAP Equipment API, reached through the Getnet API gateway.
Using this API, a consumer can:
- List the payment terminals currently active for a merchant, with capture/communication method, brand, model and commercial mode.
- Know whether a terminal sold under the
VENDAcommercial mode is still under warranty.
The API is read-only: every business operation is an idempotent
GET. Responses use JSON in
snake_case, and the content type is application/json.Actors and context
| Field | Where | Description |
|---|---|---|
merchant_id | Path | Unique code of the commercial establishment (alphanumeric, up to 20 chars). |
Authorization | Header (required) | Bearer <token> — OAuth2 access token (JWT) issued by the corporate API gateway. |
X-Correlation-Id | Header (optional) | Correlation identifier for end-to-end traceability (see Traceability). |
The merchant identifier appears in the path of the business endpoint:
{base_url}/merchant/{merchant_id}/payment-terminals
1
{base_url}/merchant/{merchant_id}/payment-terminals
| Environment | Base URL |
|---|---|
| Development (DEV) | https://apigee-gtw-hg.getnet.com.br/wlb/assets-data/v1 |
| Homologation (HTI) | https://apigee-gtw-hti.getnet.com.br/wlb/assets-data/v1 |
| Production (PRD) | https://apigee-gtw-prd.getnet.com.br/wlb/assets-data/v1 |
All base URLs already include
/v1. The routes below are relative to the selected base URL.Authentication is enforced by the API gateway; requests without a valid token are rejected before reaching the service.
Operations
Interactive docs (Swagger UI) are available at
/v1/docs and the OpenAPI spec at
/v1/openapi.json, except in production, where both are disabled.| Method | Route | Success |
|---|---|---|
GET | /merchant/{merchant_id}/payment-terminals | 200 |
1. List the active payment terminals of a merchant
GET /merchant/{merchant_id}/payment-terminalsReturns the payment terminals currently active for the merchant. The response mirrors the SAP Equipment API record field by field (same names and values); only the documented fields are forwarded.
| Parameter | In | Required | Description |
|---|---|---|---|
merchant_id | path | yes | Merchant code. Must match ^[A-Za-z0-9]{1,20}$ (example: 51578987). |
curl --location 'https://apigee-gtw-hti.getnet.com.br/wlb/assets-data/v1/merchant/51578987/payment-terminals' \
--header 'Authorization: Bearer <TOKEN>' \
--header 'X-Correlation-Id: 3f1a7c0e-2b6e-4d2a-9c1b-9b2f1e7a8d34'
1
2
3
curl --location 'https://apigee-gtw-hti.getnet.com.br/wlb/assets-data/v1/merchant/51578987/payment-terminals' \
--header 'Authorization: Bearer <TOKEN>' \
--header 'X-Correlation-Id: 3f1a7c0e-2b6e-4d2a-9c1b-9b2f1e7a8d34'
{
"merchant_id": "51578987",
"equipments": [
{
"payment_terminal_sku": "302890",
"payment_terminal_serial_number": "903191104705597687",
"capture_method_code": "10",
"capture_method_des": "POS",
"communication_method_code": "000000004",
"communication_method_des": "WI FI",
"activation_datetime": "2025-05-13 10:50:32",
"payment_terminal_brand": "INGENICO",
"payment_terminal_model": "MOVE 5000 ESSENTIAL",
"commercial_mode": "ALUGUEL",
"warranty_available": false
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"merchant_id": "51578987",
"equipments": [
{
"payment_terminal_sku": "302890",
"payment_terminal_serial_number": "903191104705597687",
"capture_method_code": "10",
"capture_method_des": "POS",
"communication_method_code": "000000004",
"communication_method_des": "WI FI",
"activation_datetime": "2025-05-13 10:50:32",
"payment_terminal_brand": "INGENICO",
"payment_terminal_model": "MOVE 5000 ESSENTIAL",
"commercial_mode": "ALUGUEL",
"warranty_available": false
}
]
}
Response fields:
| Field | Description |
|---|---|
merchant_id | Merchant code. |
equipments[] | Active payment terminals; empty list when the merchant has none. |
Notes:
- Merchant without active terminals →
200withequipments: []. - Unknown merchant →
404. - The success body is returned as is (no
success/data/metaenvelope).
Success:
200Payment terminal field catalog
Every item of
equipments[] has the fields below. All of them are optional: a field is omitted when
the upstream does not provide it.| Field | Type | Max length | Description | Example |
|---|---|---|---|---|
payment_terminal_sku | string | 18 | Equipment SKU. | 302890 |
payment_terminal_serial_number | string | 18 | Equipment serial number. | 903191104705597687 |
capture_method_code | string | 18 | Capture method code. | 10 |
capture_method_des | string | 20 | Capture method description (e.g. POS, SUPERGET MOBILE). | POS |
communication_method_code | string | 9 | Communication method code. | 000000004 |
communication_method_des | string | 50 | Communication method description (e.g. WI FI, POS DIGITAL). | WI FI |
activation_datetime | string | — | Activation date and time, YYYY-MM-DD HH:mm:ss, Brasilia time (America/Sao_Paulo), as provided by SAP. | 2025-05-13 10:50:32 |
payment_terminal_brand | string | 50 | Equipment brand. | INGENICO |
payment_terminal_model | string | 50 | Equipment model. | MOVE 5000 ESSENTIAL |
commercial_mode | string | 10 | Commercial mode (e.g. ALUGUEL, VENDA, TAXA_AD). | ALUGUEL |
warranty_available | boolean | — | Whether a terminal under the VENDA commercial mode is still under warranty. | false |
Business rules and constraints
- Read-only. The API never changes data; every business operation is an idempotent
GET. - Active terminals only. Only the payment terminals currently active for the merchant are listed.
- Merchant validation.
merchant_idmust be alphanumeric with 1 to 20 characters; otherwise400is returned before any downstream call. - Unknown merchant. The upstream signals an unknown merchant with an empty
merchant_id(200) or with404/422; the API always maps these to404. - Merchant without terminals returns
200with an emptyequipmentslist. - Selective exposure. Only the documented fields are forwarded; any undocumented attribute added by the acquirer is never leaked to consumers.
- Neutral error messages. Downstream service names, hosts and response bodies are never relayed to
the consumer; the full detail is kept only in the service logs, correlated by
X-Correlation-Id. - CORS is controlled by the
CORS_ALLOWED_ORIGINSsetting of each environment. - Sensitive data must be transmitted over HTTPS, and all requests require authentication at the gateway.
Resilience and limits
| Aspect | Behavior |
|---|---|
| Rate limit | 300 requests per 60 s window per client; above it the API returns 429 (TOO_MANY_REQUESTS). |
| Downstream timeout | 5 s for the SAP Equipment API and 5 s for the token endpoint. |
| Retry | Up to 2 retries with exponential backoff (100 ms base, 1 s max) on network failures and 502/503/504 from the downstream. |
| Circuit breaker | Opens after 5 consecutive failures and rejects calls for 10 s with 503, then probes again. |
| Route timeout (gateway) | 20 s. |
| Token cache | The OAuth2 token used against the downstream is cached and refreshed ~30 s before it expires. |
A
503 or 429 response may carry a Retry-After header (seconds) indicating when to retry.Traceability
X-Correlation-Id— optional request header. If the value is a safe identifier (letters, digits,.,_,:,-, up to 128 chars) it is reused; otherwise a UUID is generated. The final value is echoed in every response and propagated to the downstream.X-Request-Idis accepted as a fallback whenX-Correlation-Idis absent.- W3C
traceparentis accepted and propagated; a new span is created for each request and returned in the responsetraceparentheader.
When reporting an issue, always provide the
X-Correlation-Id of the failing request.Error meanings
| HTTP | Code | Meaning |
|---|---|---|
200 | — | Success |
400 | BAD_REQUEST | Invalid request (e.g. malformed merchant_id) |
401 | — | Missing or invalid authentication (returned by the gateway) |
404 | NOT_FOUND | Merchant unknown to the equipment registry, or route not found |
429 | TOO_MANY_REQUESTS | Request rate limit exceeded |
500 | INTERNAL_ERROR | Unexpected internal error |
502 | UPSTREAM_ERROR | The downstream service responded with an unexpected error or payload |
503 | SERVICE_UNAVAILABLE | The downstream service is unavailable, timed out or the circuit breaker is open; may be retried |
Error responses share a common shape:
{ "code": "NOT_FOUND", "message": "Merchant not found" }
1
{ "code": "NOT_FOUND", "message": "Merchant not found" }
Validation errors (
400) add one entry per invalid field, where the key is the field name:{
"code": "BAD_REQUEST",
"message": "Request validation failed",
"merchant_id": "must be an alphanumeric merchant code with up to 20 characters"
}
1
2
3
4
5
{
"code": "BAD_REQUEST",
"message": "Request validation failed",
"merchant_id": "must be an alphanumeric merchant code with up to 20 characters"
}
Messages returned to the consumer are always sanitized: internal identifiers, downstream names, hosts and response bodies are never relayed.
Nesta página
WLB Assets Data API — Functional Documentation