Skip to main content

Test

3 operations under /v1/test (POST): parameters, status codes, refusal bodies, and the same request in curl, HTTP, Python and TypeScript.

4 min read
View MarkdownEdit on GitHub

Test

Base URL: https://api.codespar.dev

Every operation below requires a Bearer token. See Authentication.

POST /v1/test/fund

POSThttps://api.codespar.dev/v1/test/fund
Moves money

Credita 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

FieldTypeRequiredDescription
accountstringnoSobrescreve a conta de sandbox; o padrão é a fonte pix-celcoin ativa.
amount_minorintegeryesCentavos de BRL.
consumer_idstringnoObrigató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

StatusBodyDescription
201objectOK
400objectCorpo fora do schema, ou consumer_id ausente no caminho /v1/test/* (onde ele é obrigatório, porque a rota não tem segmento de consumidor).
403objectChave 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.
422objectO consumidor não tem conta Celcoin para creditar, ou o provedor de sandbox recusou.

Response 201

FieldTypeRequiredDescription
accountstringyes
amount_minorintegeryes
attempt_idstringyes
currency"BRL"yes
deposit_idstringyes
money_creditedtrueyes
statusstringyes
Example request
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);
}
Example response 201
application/json
{
  "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

POSThttps://api.codespar.dev/v1/test/pix-in

Mint 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

FieldTypeRequiredDescription
amount_minorintegeryesCentavos de BRL.
consumer_idstringnoObrigatório no caminho /v1/test/*, onde a rota não tem segmento de consumidor. Ignorado no alias /v1/consumers/{consumerId}/..., onde o segmento manda.
descriptionstringno

Responses

StatusBodyDescription
201objectOK
400objectCorpo fora do schema, ou consumer_id ausente no caminho /v1/test/* (onde ele é obrigatório, porque a rota não tem segmento de consumidor).
403objectChave 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.
422objectO provedor de sandbox recusou a cunhagem.

Response 201

FieldTypeRequiredDescription
amount_minorintegeryes
currency"BRL"yes
pix_copia_e_colastringyesO código que se paga, como se paga um Pix de verdade.
pix_keystringyes
rail"pix-celcoin"yes
transaction_idstringyesA chave de idempotência do passo de liquidação.
Example request
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);
}
Example response 201
application/json
{
  "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

POSThttps://api.codespar.dev/v1/test/settle-pix-in
Moves money

Liquida 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

FieldTypeRequiredDescription
amount_minorintegeryes
consumer_idstringnoObrigató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_idstringyesO 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

StatusBodyDescription
201objectOK
400objectCorpo fora do schema, ou consumer_id ausente no caminho /v1/test/* (onde ele é obrigatório, porque a rota não tem segmento de consumidor).
403objectChave 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.
422objectO provedor de sandbox recusou a liquidação.
500objectA conta de sandbox foi creditada e o espelho no livro da carteira falhou — estado dividido, e details.deposit_id é por onde reconciliar.

Response 201

FieldTypeRequiredDescription
amount_minorintegeryes
currency"BRL"yes
deposit_idstringyes
money_creditedtrueyes
settledtrueyes
transaction_idstringyes
Example request
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);
}
Example response 201
application/json
{
  "settled": true,
  "transaction_id": "transaction_0000000000000000",
  "deposit_id": "deposit_0000000000000000",
  "amount_minor": 1000,
  "currency": "BRL",
  "money_credited": true
}
Test | CodeSpar