Referencia del API · tag sandbox
Sandbox
Simulación determinista para llaves de sandbox: relojes de prueba y avance de ciclos de vida. Las llaves de producción reciben 403.
Esta página se genera desde el contrato (data/gateway-v1.json): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva Idempotency-Key y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la guía de implementación.
Operaciones del tag sandbox #
Descripción en el contrato: Deterministic simulation surface for sandbox API keys (E6/E7): test clocks, time advance and wallet/credit simulations. Production keys are refused with 403.
| Método | Ruta | Operación | Scope | Idem. |
|---|---|---|---|---|
| POST | /v1/gateway/sandbox/credits/{app_id}/advance/ | Advance a credit lifecycle (sandbox only) | — | — |
| POST | /v1/gateway/sandbox/test-clocks/ | Create a test clock (sandbox only) | — | — |
| GET | /v1/gateway/sandbox/test-clocks/{clock_id}/ | Read a test clock (sandbox only) | — | — |
| POST | /v1/gateway/sandbox/test-clocks/{clock_id}/advance/ | Advance a test clock (sandbox only) | — | — |
| POST | /v1/gateway/sandbox/wallet/simulate/ | Simulate a wallet movement (sandbox only) | — | — |
Advance a credit lifecycle (sandbox only) #
POST/v1/gateway/sandbox/credits/{app_id}/advance/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
app_id obligatorio | ruta | string | Credit application id. Ej.: CRED-2026-000123 |
Cuerpo de la petición
Tipo de contenido: application/json · obligatorio
Objeto libre.
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Advanced lifecycle state. | object application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.sandbox.simulate.credit_disbursement()client.sandbox.simulate.creditDisbursement()$client->sandbox->simulate->creditDisbursement()await client.Sandbox.Simulate.CreditDisbursementAsync()client.Sandbox.Simulate.CreditDisbursement(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/sandbox/credits/CRED-2026-000123/advance/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Create a test clock (sandbox only) #
POST/v1/gateway/sandbox/test-clocks/
tcl-…, tamper-evident).Cuerpo de la petición
Tipo de contenido: application/json
Objeto libre.
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Test clock created; state encoded in clock_id. | object application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.sandbox.test_clocks.create()client.sandbox.testClocks.create()$client->sandbox->testClocks->create()await client.Sandbox.TestClocks.CreateAsync()client.Sandbox.TestClocks.Create(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/sandbox/test-clocks/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Read a test clock (sandbox only) #
GET/v1/gateway/sandbox/test-clocks/{clock_id}/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
clock_id obligatorio | ruta | string | Test clock id (state-carrying). Ej.: tcl-eyJmcm96ZW4i-a1b2c3d4e5f6a7b8 |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Current clock state. | object application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.sandbox.test_clocks.get()client.sandbox.testClocks.get()$client->sandbox->testClocks->get()await client.Sandbox.TestClocks.GetAsync()client.Sandbox.TestClocks.Get(ctx, …)curl "https://sandbox.dev.compense.co/gw/v1/gateway/sandbox/test-clocks/tcl-eyJmcm96ZW4i-a1b2c3d4e5f6a7b8/" \
-H "X-API-Key: $COMPENSE_API_KEY"Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Advance a test clock (sandbox only) #
POST/v1/gateway/sandbox/test-clocks/{clock_id}/advance/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
clock_id obligatorio | ruta | string | Test clock id (state-carrying). Ej.: tcl-eyJmcm96ZW4i-a1b2c3d4e5f6a7b8 |
Cuerpo de la petición
Tipo de contenido: application/json · obligatorio
Objeto libre.
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Clock advanced; use the returned id from now on. | object application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.sandbox.test_clocks.advance()client.sandbox.testClocks.advance()$client->sandbox->testClocks->advance()await client.Sandbox.TestClocks.AdvanceAsync()client.Sandbox.TestClocks.Advance(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/sandbox/test-clocks/tcl-eyJmcm96ZW4i-a1b2c3d4e5f6a7b8/advance/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Simulate a wallet movement (sandbox only) #
POST/v1/gateway/sandbox/wallet/simulate/
Cuerpo de la petición
Tipo de contenido: application/json · obligatorio
Objeto libre.
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Simulated result. | object application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.sandbox.simulate.wallet_transfer()client.sandbox.simulate.walletTransfer()$client->sandbox->simulate->walletTransfer()await client.Sandbox.Simulate.WalletTransferAsync()client.Sandbox.Simulate.WalletTransfer(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/sandbox/wallet/simulate/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.