Test
3 operations under /v1/test (POST): parameters, status codes, refusal bodies, and the same request in curl, HTTP, Python and TypeScript.
Test
Base URL: https://api.codespar.dev
Every operation below requires a Bearer token. See Authentication.
POST /v1/test/fund
https://api.codespar.dev/v1/test/fundCredita a conta de sandbox do consumidor direto, sem passar por um Pix.
Credit a consumer in the sandbox
Credita a conta de sandbox do consumidor direto, sem passar por um Pix. É o atalho para deixar uma carteira de teste com saldo antes de exercitar um fluxo de gasto.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
account | string | no | Sobrescreve a conta de sandbox; o padrão é a fonte pix-celcoin ativa. |
amount_minor | integer | yes | Centavos de BRL. |
consumer_id | string | no | Obrigatório no caminho /v1/test/*, onde a rota não tem segmento de consumidor. Ignorado no alias /v1/consumers/{consumerId}/..., onde o segmento manda. |
Responses
| Status | Body | Description |
|---|---|---|
201 | object | OK |
400 | object | Corpo fora do schema, ou consumer_id ausente no caminho /v1/test/* (onde ele é obrigatório, porque a rota não tem segmento de consumidor). |
403 | object | Chave de ambiente LIVE. Estas rotas creditam dinheiro de mentira e existem só em ambiente de teste — use uma chave csk_test_* num projeto de teste. O ambiente lido vem em details.environment. |
422 | object | O consumidor não tem conta Celcoin para creditar, ou o provedor de sandbox recusou. |
Response 201
| Field | Type | Required | Description |
|---|---|---|---|
account | string | yes | — |
amount_minor | integer | yes | — |
attempt_id | string | yes | — |
currency | "BRL" | yes | — |
deposit_id | string | yes | — |
money_credited | true | yes | — |
status | string | yes | — |
curl -X POST https://api.codespar.dev/v1/test/fund \
-H "Authorization: Bearer $CODESPAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"account": "string"
}'POST /v1/test/fund HTTP/1.1
Host: api.codespar.dev
Authorization: Bearer $CODESPAR_API_KEY
Content-Type: application/json
{
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"account": "string"
}import os
import requests
res = requests.post(
"https://api.codespar.dev/v1/test/fund",
headers={"Authorization": f"Bearer {os.environ['CODESPAR_API_KEY']}"},
json={
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"account": "string"
},
)
res.raise_for_status()
data = res.json()const res = await fetch("https://api.codespar.dev/v1/test/fund", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CODESPAR_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"account": "string"
}),
});
const data = await res.json();const r = await cs.api.response("post", "/v1/test/fund", {
body: {
consumer_id: "csm_0000000000000000",
amount_minor: 1000,
account: "string"
}
});
// r.status is one of the documented statuses (200, 403, 422),
// each with its own body shape in r.data; nothing here throws on 403.
if (r.ok) {
console.log(r.data);
}{
"attempt_id": "attempt_0000000000000000",
"deposit_id": "deposit_0000000000000000",
"status": "string",
"account": "string",
"amount_minor": 1000,
"currency": "BRL",
"money_credited": true
}POST /v1/test/pix-in
https://api.codespar.dev/v1/test/pix-inMint a sandbox Pix charge to fund a consumer
Cunha uma cobrança Pix de sandbox e devolve o copia-e-cola. Nada é creditado aqui: este passo produz o código, e a liquidação é o passo seguinte.\n\nGuarde o transaction_id — é ele que a liquidação usa como chave de idempotência.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
amount_minor | integer | yes | Centavos de BRL. |
consumer_id | string | no | Obrigatório no caminho /v1/test/*, onde a rota não tem segmento de consumidor. Ignorado no alias /v1/consumers/{consumerId}/..., onde o segmento manda. |
description | string | no | — |
Responses
| Status | Body | Description |
|---|---|---|
201 | object | OK |
400 | object | Corpo fora do schema, ou consumer_id ausente no caminho /v1/test/* (onde ele é obrigatório, porque a rota não tem segmento de consumidor). |
403 | object | Chave de ambiente LIVE. Estas rotas creditam dinheiro de mentira e existem só em ambiente de teste — use uma chave csk_test_* num projeto de teste. O ambiente lido vem em details.environment. |
422 | object | O provedor de sandbox recusou a cunhagem. |
Response 201
| Field | Type | Required | Description |
|---|---|---|---|
amount_minor | integer | yes | — |
currency | "BRL" | yes | — |
pix_copia_e_cola | string | yes | O código que se paga, como se paga um Pix de verdade. |
pix_key | string | yes | — |
rail | "pix-celcoin" | yes | — |
transaction_id | string | yes | A chave de idempotência do passo de liquidação. |
curl -X POST https://api.codespar.dev/v1/test/pix-in \
-H "Authorization: Bearer $CODESPAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"description": "string"
}'POST /v1/test/pix-in HTTP/1.1
Host: api.codespar.dev
Authorization: Bearer $CODESPAR_API_KEY
Content-Type: application/json
{
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"description": "string"
}import os
import requests
res = requests.post(
"https://api.codespar.dev/v1/test/pix-in",
headers={"Authorization": f"Bearer {os.environ['CODESPAR_API_KEY']}"},
json={
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"description": "string"
},
)
res.raise_for_status()
data = res.json()const res = await fetch("https://api.codespar.dev/v1/test/pix-in", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CODESPAR_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"description": "string"
}),
});
const data = await res.json();const r = await cs.api.response("post", "/v1/test/pix-in", {
body: {
consumer_id: "csm_0000000000000000",
amount_minor: 1000,
description: "string"
}
});
// r.status is one of the documented statuses (200, 403, 422),
// each with its own body shape in r.data; nothing here throws on 403.
if (r.ok) {
console.log(r.data);
}{
"pix_copia_e_cola": "string",
"transaction_id": "transaction_0000000000000000",
"pix_key": "string",
"amount_minor": 1000,
"currency": "BRL",
"rail": "pix-celcoin"
}POST /v1/test/settle-pix-in
https://api.codespar.dev/v1/test/settle-pix-inLiquida a cobrança que a cunhagem produziu e credita o consumidor.
Settle a sandbox Pix charge and credit the consumer
Liquida a cobrança que a cunhagem produziu e credita o consumidor.\n\nO transaction_id é a chave de idempotência: reenviar a mesma liquidação não credita duas vezes.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
amount_minor | integer | yes | — |
consumer_id | string | no | Obrigatório no caminho /v1/test/*, onde a rota não tem segmento de consumidor. Ignorado no alias /v1/consumers/{consumerId}/..., onde o segmento manda. |
transaction_id | string | yes | O transaction_id que a cunhagem devolveu. É a CHAVE DE IDEMPOTÊNCIA do crédito e do espelho na carteira: reenviar a mesma liquidação não credita duas vezes. |
Responses
| Status | Body | Description |
|---|---|---|
201 | object | OK |
400 | object | Corpo fora do schema, ou consumer_id ausente no caminho /v1/test/* (onde ele é obrigatório, porque a rota não tem segmento de consumidor). |
403 | object | Chave de ambiente LIVE. Estas rotas creditam dinheiro de mentira e existem só em ambiente de teste — use uma chave csk_test_* num projeto de teste. O ambiente lido vem em details.environment. |
422 | object | O provedor de sandbox recusou a liquidação. |
500 | object | A conta de sandbox foi creditada e o espelho no livro da carteira falhou — estado dividido, e details.deposit_id é por onde reconciliar. |
Response 201
| Field | Type | Required | Description |
|---|---|---|---|
amount_minor | integer | yes | — |
currency | "BRL" | yes | — |
deposit_id | string | yes | — |
money_credited | true | yes | — |
settled | true | yes | — |
transaction_id | string | yes | — |
curl -X POST https://api.codespar.dev/v1/test/settle-pix-in \
-H "Authorization: Bearer $CODESPAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"transaction_id": "transaction_0000000000000000"
}'POST /v1/test/settle-pix-in HTTP/1.1
Host: api.codespar.dev
Authorization: Bearer $CODESPAR_API_KEY
Content-Type: application/json
{
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"transaction_id": "transaction_0000000000000000"
}import os
import requests
res = requests.post(
"https://api.codespar.dev/v1/test/settle-pix-in",
headers={"Authorization": f"Bearer {os.environ['CODESPAR_API_KEY']}"},
json={
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"transaction_id": "transaction_0000000000000000"
},
)
res.raise_for_status()
data = res.json()const res = await fetch("https://api.codespar.dev/v1/test/settle-pix-in", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CODESPAR_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"consumer_id": "csm_0000000000000000",
"amount_minor": 1000,
"transaction_id": "transaction_0000000000000000"
}),
});
const data = await res.json();const r = await cs.api.response("post", "/v1/test/settle-pix-in", {
body: {
consumer_id: "csm_0000000000000000",
amount_minor: 1000,
transaction_id: "transaction_0000000000000000"
}
});
// r.status is one of the documented statuses (200, 403, 422),
// each with its own body shape in r.data; nothing here throws on 403.
if (r.ok) {
console.log(r.data);
}{
"settled": true,
"transaction_id": "transaction_0000000000000000",
"deposit_id": "deposit_0000000000000000",
"amount_minor": 1000,
"currency": "BRL",
"money_credited": true
}Funding
4 operations under /v1/consumers/{consumerId}/fund (POST GET): parameters, status codes, refusal bodies, and the same request in curl, HTTP, Python and TypeScript.
Funding Sources
2 operations under /v1/funding-sources (GET): parameters, status codes, refusal bodies, and the same request in curl, HTTP, Python and TypeScript.