[API] Search Contracts
The Search Contracts API returns your organization’s contracts one page at a time, optionally filtered by state and country.
¶ Use case
List contracts that are waiting for the borrower’s acceptance, reconcile your active contracts, or find a contract created by a request you retried.
¶ Supported supplier types
Financiers
¶ Scopes
vehicle_suppliers.financing.contracts
¶ Required permissions
The user that the access token represents needs supplier.contracts.read on the organization in filters.lendersIds. See Access.
¶ Resource
/v1/vehicle-supplier/financing/contracts/search
¶ HTTP method
POST
¶ Authorization
¶ Example request
curl -X POST "https://api.uber.com/v1/vehicle-supplier/financing/contracts/search" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{
"filters": {
"lendersIds": [
{
"value": "<lender_org_id>"
}
],
"states": [
"CONTRACT_STATE_PENDING_ACCEPTANCE",
"CONTRACT_STATE_ACTIVE"
],
"countryIso2s": [
"US"
]
},
"orderBy": {
"field": "FIELD_CREATED_AT",
"queryOrder": "QUERY_ORDER_DESC"
},
"pageInfo": {
"pageSize": 20
}
}'
This example returns your pending and active contracts in the United States, newest first, 20 at a time.
¶ Request body parameters
| Name | Type | Required | Description |
|---|---|---|---|
filters |
object | Yes | Search filters object |
orderBy |
object | No | Order by object. By default, results are sorted by startsAt, earliest first. |
pageInfo |
object | No | Page info object |
¶ Search filters
| Name | Type | Required | Description |
|---|---|---|---|
lendersIds |
array | Yes | Array with one UUID object holding your organization’s ID. |
states |
array | No | Array of Contract state enums. Returns only contracts in these states. |
countryIso2s |
array | No | Array of country codes. Returns only contracts in these countries. Use uppercase codes, such as US. |
¶ Order by
| Name | Type | Description |
|---|---|---|
field |
enum | Sort field enum. Defaults to FIELD_STARTS_AT. |
queryOrder |
enum | Sort order enum. Defaults to QUERY_ORDER_ASC. |
¶ Sort field
| Name | Definition |
|---|---|
FIELD_STARTS_AT |
Sort by startsAt. |
FIELD_CREATED_AT |
Sort by createdAt. |
¶ Sort order
| Name | Definition |
|---|---|
QUERY_ORDER_ASC |
Earliest first. |
QUERY_ORDER_DESC |
Latest first. |
¶ Page info
| Name | Type | Description |
|---|---|---|
pageSize |
int | Contracts per page, at most 50. Defaults to 10. |
nextPageToken |
string | Leave it out for the first page. For each later page, send the nextPageToken from the previous response. |
¶ Example response
200 OK
{
"contracts": [
{
"contractId": {
"value": "<contract_id>"
},
"type": "CONTRACT_TYPE_B2B",
"stateInfo": {
"state": "CONTRACT_STATE_PENDING_ACCEPTANCE"
},
"lender": {
"lenderId": {
"value": "<lender_org_id>"
}
},
"borrower": {
"borrowerId": {
"value": "<borrower_org_id>"
}
},
"loanAmount": {
"amountE5": "1500000000",
"currencyCode": "USD"
},
"retentionConfig": {
"cadence": "RETENTION_CADENCE_WEEKLY",
"retentionStrategyType": "RETENTION_STRATEGY_TYPE_STATIC",
"retentionAmount": {
"percentRate": 10,
"maxCadenceCap": {
"amountE5": "50000000",
"currencyCode": "USD"
}
}
},
"metadata": {
"name": "Fleet expansion loan",
"countryIso2": "US",
"interestRate": 8.5,
"acceptanceExpiryAt": {
"value": "1792022400000"
},
"financierName": "Example Capital"
},
"startsAt": {
"value": "1793577600000"
},
"endsAt": {
"value": "1825027200000"
},
"createdAt": {
"value": "1790847000000"
},
"updatedAt": {
"value": "1790847002000"
},
"version": 1
}
],
"pageInfo": {
"nextPageToken": "<next_page_token>"
}
}
¶ Response body parameters
| Name | Type | Description |
|---|---|---|
contracts |
array | Array of Contract objects. Missing when no contracts match. |
pageInfo |
object | Contains nextPageToken when more results are available. If nextPageToken is missing, this is the last page. |
¶ Rate limit
10 requests per second for each developer application.
¶ Endpoint-specific errors
| HTTP status | Code | Cause |
|---|---|---|
400 |
invalid-argument |
lendersIds is missing or has more than one ID, pageSize is more than 50, or nextPageToken was issued for a different orderBy.field. |
401 |
permission-denied |
The token’s user doesn’t have supplier.contracts.read on the organization in lendersIds. A malformed organization ID also returns this error. |
500 |
internal-server-error |
Retry with exponential backoff. |
¶ Notes
- Send the same
filtersandorderByfor every page of a search. - Each contract appears once, with its current terms and state, and has the same fields as in Get Contract.