Pular para o conteúdo principal

Campos solicitados

Para proporcionar maior flexibilidade na obtenção de dados, a API oferece uma funcionalidade de "campos solicitados", que permite selecionar campos específicos de retorno. Esta característica é especialmente útil ao trabalhar com campos expandidos, permitindo solicitar apenas os subcampos relevantes.

Pontos importantes

  • Na ausência do parâmetro fields, a saída padrão é fornecida.
  • Não há limite de profundidade dos campos solicitados.

Como funciona?

Selecionando campos

Adicione o parâmetro fields à sua solicitação para especificar os campos desejados no retorno. Se estiver trabalhando com campos expandidos usando o parâmetro expand, também é possível aplicar a resposta seletiva.

Por exemplo, em uma requisição para buscar informações de um Loan, onde a resposta padrão seria:

curl --request GET \
--url https://api.dev.base39.io/v1/loans/loan_63ff94f928a4fb05d70b7a17 \
--header 'accept: application/json' \
--header 'authorization: Bearer ${api-key}'
{
"id": "loan_63ff94f928a4fb05d70b7a17",
"customer": "cust_63ff98c128a4fb05d70b7a22",
"employment": "empl_63ff98cf28a4fb05d70b7a25",
"company": "comp_63ff55cf28a4fb05d70b7a55",
"status": "open",
"offer": {
"disbursementAmount": 1000,
"fund": "fund_63ff55cf28a4fb05d70b7aa1",
"rebates": [
{
"feeType": "tac",
"amountType": "absolute",
"amount": 200
},
{
"feeType": "registration",
"amountType": "absolute",
"amount": 150
},
{
"feeType": "spread",
"amountType": "absolute",
"amount": 100
},
]
...
}
...
}

Por algum motivo, pode ser que o usuário queira somente utilizar os campos id, customer e status. Nesse caso, ao adicionar o queryParameters fields=id,customer,status, teremos:

curl --request GET \
--url 'https://api.dev.base39.io/v1/loans/loan_63ff94f928a4fb05d70b7a17?fields=id,customer,status' \
--header 'accept: application/json' \
--header 'authorization: Bearer ${api-key}'
{
"id": "loan_63ff94f928a4fb05d70b7a17",
"customer": "cust_63ff98c128a4fb05d70b7a22"
"status": "open",
}

Campos aninhados

Você pode solicitar subcampos de campos expandidos. Utilize o ponto . para navegar entre subdocumentos.

Por exemplo, se quisermos somente os campos id, offer.disbursementAmount e offer.fund, adicionamos ao queryParameters a propriedade fields=id,offer.disbursementAmount,offer.fund. Note que foi utilizado o . para navegar entre subdocumentos.

curl --request GET \
--url 'https://api.dev.base39.io/v1/loans/loan_63ff94f928a4fb05d70b7a17?fields=id,offer.disbursementAmount,offer.fund' \
--header 'accept: application/json' \
--header 'authorization: Bearer ${api-key}'
{
"id": "loan_63ff94f928a4fb05d70b7a17",
"offer": {
"disbursementAmount": 1000,
"fund": "fund_63ff55cf28a4fb05d70b7aa1"
}
}

Campos em lista

É possível selecionar uma propriedade comum entre os subdocumentos de uma lista. Por exemplo, para selecionar somente os campos id do loan, e os campos amount e feeType contidos em offer.rebates, basta adicionar ao queryParameters a propriedade fields=id,offer.rebates.feeType,offer.rebates.amount.

curl --request GET \
--url 'https://api.dev.base39.io/v1/loans/loan_63ff94f928a4fb05d70b7a17?fields=id,offer.rebates.feeType,offer.rebates.amount' \
--header 'accept: application/json' \
--header 'authorization: Bearer ${api-key}'
{
"id": "loan_63ff94f928a4fb05d70b7a17",
"offer": {
"rebates": [
{
"feeType": "tac",
"amount": 200
},
{
"feeType": "registration",
"amount": 150
},
{
"feeType": "spread",
"amount": 100
}
]
}
}

Note que, como rebates é uma lista de rebate, então o recurso (campos solicitados) faz uma busca do campo em todos os subdocumentos dessa lista.

Campos expandidos

A funcionalidade "campos solicitados" também possibilita a seleção de campos específicos após a realização de uma expansão de dados.

Por exemplo, suponhamos que haja uma solicitação que expanda o atributo customer dentro de um Loan:

curl --request GET \
--url 'https://api.dev.base39.io/v1/loans/loan_63ff94f928a4fb05d70b7a17?expand=customer' \
--header 'accept: application/json' \
--header 'authorization: Bearer ${api-key}'
{
"id": "loan_63ff94f928a4fb05d70b7a17",
"customer": {
"id": "cust_63ff98c128a4fb05d70b7a22",
"name": "João",
"username": "joao",
...
}
"employment": "empl_63ff98cf28a4fb05d70b7a25",
"company": "comp_63ff55cf28a4fb05d70b7a55",
"status": "open",
"offer": {
"disbursementAmount": 1000,
"fund": "fund_63ff55cf28a4fb05d70b7aa1",
"rebates": [
{
"feeType": "tac",
"amountType": "absolute",
"amount": 200
},
{
"feeType": "registration",
"amountType": "absolute",
"amount": 150
},
{
"feeType": "spread",
"amountType": "absolute",
"amount": 100
},
]
...
}
...
}

Esta é a resposta padrão para um campo expandido. No entanto, caso deseje obter somente os campos id e name do customer, você pode incluir ao queryParameters a instrução fields=id,customer.id,customer.nome.

curl --request GET \
--url 'https://api.dev.base39.io/v1/loans/loan_63ff94f928a4fb05d70b7a17?expand=customer,employment&fields=id,customer.id,customer.nome' \
--header 'accept: application/json' \
--header 'authorization: Bearer ${api-key}'
{
"id": "loan_63ff94f928a4fb05d70b7a17",
"customer": {
"id": "cust_63ff98c128a4fb05d70b7a22",
"name": "João"
}
}