curl --request GET \
--url https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio \
--header 'Authorization: Bearer <token>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"asOfDate": "2026-06-14T12:00:00Z",
"delinquencyDistribution": [
{
"bucketCode": "1_30",
"bucketLabel": "<string>",
"exposureAmount": "75000.00",
"loanCount": 42
}
],
"drillDown": [
{
"assignedOfficerId": "officer-xyz",
"assignedOfficerName": "<string>",
"borrowerId": "550e8400-e29b-41d4-a716-446655440011",
"bucketCode": "31_60",
"daysOverdue": 45,
"earliestUnpaidDueDate": "2026-06-14T12:00:00Z",
"exposureAmount": "12500.00",
"loanId": "550e8400-e29b-41d4-a716-446655440010",
"productId": "550e8400-e29b-41d4-a716-446655440013",
"productVersionId": "550e8400-e29b-41d4-a716-446655440014"
}
],
"freshness": {
"generatedAt": "2026-06-14T12:00:00Z",
"isStale": true,
"policyCode": "<string>",
"policyPersistedAt": "2026-06-14T12:00:00Z",
"snapshotAsOfDate": "2026-06-14T12:00:00Z",
"snapshotId": "550e8400-e29b-41d4-a716-446655440020",
"source": "<string>",
"stalenessReason": "<string>"
},
"summary": {
"activeLoanCount": 1240,
"currentExposure": "1100000.00",
"delinquentExposure": "134567.89",
"delinquentLoanCount": 86,
"disbursementVolume": "250000.00",
"outstandingExposure": "1234567.89",
"par30": "0.05",
"par60": "0.03",
"par90": "0.02",
"repaymentVolume": "180000.00"
},
"trend": [
{
"asOfDate": "2026-06-14T12:00:00Z",
"delinquentExposure": "134567.89",
"delinquentLoanCount": 86,
"disbursementVolume": "250000.00",
"month": "2026-06",
"outstandingExposure": "1234567.89",
"par30": "0.05",
"par60": "0.03",
"par90": "0.02",
"repaymentVolume": "180000.00"
}
]
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}Get portfolio dashboard
Returns portfolio-level risk, delinquency, and freshness metrics for the requested business date. A business date the snapshot producer has not measured is refused with 503, never answered with a zeroed page: the caller should retry, not conclude the book is empty.
curl --request GET \
--url https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio \
--header 'Authorization: Bearer <token>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://lender.sandbox.lerian.net/api/v1/dashboard/portfolio"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"asOfDate": "2026-06-14T12:00:00Z",
"delinquencyDistribution": [
{
"bucketCode": "1_30",
"bucketLabel": "<string>",
"exposureAmount": "75000.00",
"loanCount": 42
}
],
"drillDown": [
{
"assignedOfficerId": "officer-xyz",
"assignedOfficerName": "<string>",
"borrowerId": "550e8400-e29b-41d4-a716-446655440011",
"bucketCode": "31_60",
"daysOverdue": 45,
"earliestUnpaidDueDate": "2026-06-14T12:00:00Z",
"exposureAmount": "12500.00",
"loanId": "550e8400-e29b-41d4-a716-446655440010",
"productId": "550e8400-e29b-41d4-a716-446655440013",
"productVersionId": "550e8400-e29b-41d4-a716-446655440014"
}
],
"freshness": {
"generatedAt": "2026-06-14T12:00:00Z",
"isStale": true,
"policyCode": "<string>",
"policyPersistedAt": "2026-06-14T12:00:00Z",
"snapshotAsOfDate": "2026-06-14T12:00:00Z",
"snapshotId": "550e8400-e29b-41d4-a716-446655440020",
"source": "<string>",
"stalenessReason": "<string>"
},
"summary": {
"activeLoanCount": 1240,
"currentExposure": "1100000.00",
"delinquentExposure": "134567.89",
"delinquentLoanCount": 86,
"disbursementVolume": "250000.00",
"outstandingExposure": "1234567.89",
"par30": "0.05",
"par60": "0.03",
"par90": "0.02",
"repaymentVolume": "180000.00"
},
"trend": [
{
"asOfDate": "2026-06-14T12:00:00Z",
"delinquentExposure": "134567.89",
"delinquentLoanCount": 86,
"disbursementVolume": "250000.00",
"month": "2026-06",
"outstandingExposure": "1234567.89",
"par30": "0.05",
"par60": "0.03",
"par90": "0.02",
"repaymentVolume": "180000.00"
}
]
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}Autorizações
JWT bearer token issued by the identity provider.
Parâmetros de consulta
Business date (YYYY-MM-DD); defaults to the current business day in Brazil (UTC-3).
"2026-06-14"
Filter by loan product identifiers (repeat to pass multiple).
100["550e8400-e29b-41d4-a716-446655440001"]
Filter by loan product version identifiers (repeat to pass multiple).
100["550e8400-e29b-41d4-a716-446655440002"]
Delinquency bucket code.
current, 1_30, 31_60, 61_90, 91_plus, par30, par60, par90 "par30"
Resposta
OK
Business date the metrics were computed for (RFC3339, UTC midnight).
"2026-06-14T12:00:00Z"
Loan count and exposure broken down by delinquency bucket.
Show child attributes
Show child attributes
Per-loan delinquency rows for the requested bucket (empty when none).
Show child attributes
Show child attributes
Provenance of the metrics: snapshot identity, staleness, and freshness policy.
Show child attributes
Show child attributes
Portfolio-level exposure, volume, and PAR roll-up for the business date.
Show child attributes
Show child attributes
Month-by-month historical series leading up to the business date.
Show child attributes
Show child attributes
Esta página foi útil?

