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"
}
}