Policy Search
Search for policies using text and date filters. Text filters support case-insensitive partial matching; date filters use inclusive boundaries. Results are paginated.
Endpoint#
POST https://api.{ENV}.dais.com/ioi/v3/policy/search
Headers#
| Header | Value | Required |
|---|---|---|
Content-Type | application/json | Yes |
Authorization | Bearer <Access token> or Basic <Base64-encoded API key and secret> | Yes |
x-jwt-assertion | <ID token> | With token authentication |
See Authentication for the headers to use with each authentication method.
Request Body#
curl --location --request POST 'https://api.{ENV}.dais.com/ioi/v3/policy/search' \
--header 'Authorization: Basic <Base64-encoded API key and secret>' \
--header 'Content-Type: application/json' \
--data-raw '{
"page": 0,
"size": 20,
"policyNumber": "<Policy number>",
"insuredName": "<Insured name>",
"effectiveDateFrom": "2026-01-01",
"effectiveDateTo": "2026-12-31"
}'
{
"page": 0,
"size": 20,
"effectiveDateFrom": "2026-01-01",
"effectiveDateTo": "2026-12-31",
"expirationDateFrom": "2027-01-01",
"expirationDateTo": "2027-12-31",
"policyNumber": "<Policy number>",
"insuredName": "<Insured name>",
"insuredDbaName": "<Insured DBA name>",
"insuredContactFirstName": "<Insured contact first name>",
"insuredContactLastName": "<Insured contact last name>",
"insuredContactEmail": "<Insured contact email address>",
"insuredContactPhone": "<Insured contact phone number>",
"agencyId": "<Agency identifier>",
"agencyName": "<Agency name>",
"producerId": "<Producer identifier>",
"producerFirstName": "<Producer first name>",
"producerLastName": "<Producer last name>",
"producerEmail": "<Producer email address>",
"producerPhone": "<Producer phone number>",
"carrierId": "<Carrier identifier>",
"carrierName": "<Carrier name>"
}
Request Fields#
| Property | Required | Description |
|---|---|---|
page | No | Zero-based page number. Default 0; minimum 0. |
size | No | Number of results per page. Default 20; minimum 1. |
effectiveDateFrom | No | Filter policies with effective date on or after this date (YYYY-MM-DD). |
effectiveDateTo | No | Filter policies with effective date on or before this date (YYYY-MM-DD). |
expirationDateFrom | No | Filter policies with expiration date on or after this date (YYYY-MM-DD). |
expirationDateTo | No | Filter policies with expiration date on or before this date (YYYY-MM-DD). |
policyNumber | No | Partial policy number to search for. Supports case-insensitive partial matching. |
insuredName | No | Partial insured business name. |
insuredDbaName | No | Partial insured DBA name. |
insuredContactFirstName | No | Partial first name of the insured contact. |
insuredContactLastName | No | Partial last name of the insured contact. |
insuredContactEmail | No | Partial email of the insured contact. |
insuredContactPhone | No | Partial phone number of the insured contact. |
agencyId | No | Agency identifier string; supports partial matching. |
agencyName | No | Partial agency name. |
producerId | No | Producer identifier string; supports partial matching. |
producerFirstName | No | Partial first name of the producer. |
producerLastName | No | Partial last name of the producer. |
producerEmail | No | Partial producer email. |
producerPhone | No | Partial producer phone number. |
carrierId | No | Carrier identifier string; supports partial matching. |
carrierName | No | Partial carrier name. |
anyMatch | No | Search text across policyMeta and policyNumber. When nonblank, overrides the other text filters. |
Note: A policy-number search matches any policy number containing the supplied text. Date and pagination fields do not support wildcard matching.
Use anyMatch for a broad text search. A nonblank anyMatch causes the named text filters, such as policyNumber, insuredName, and carrierId, to be ignored. Date filters and organization scoping still apply. For example:
{
"anyMatch": "<Search text>",
"effectiveDateFrom": "2026-01-01",
"effectiveDateTo": "2026-12-31"
}
This request uses the default page 0 and page size 20.
Response#
{
"content": [
{
"id": "<UUID of the policy ID>",
"policyNumber": "<Policy number>",
"clientId": "<UUID of the client ID>",
"effectiveDate": "2026-01-01",
"expirationDate": "2027-01-01",
"premium": 5250.0,
"policyMeta": {
"insuredName": "<Insured name>"
}
}
],
"number": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1,
"first": true,
"last": true,
"numberOfElements": 1,
"empty": false
}
Response Fields#
| Field | Type | Description |
|---|---|---|
content | array | Array of policy summary objects matching the search. |
number | number | Current page number (zero-based). |
size | number | Requested page size. |
totalElements | number | Total number of matching policies across all pages. |
totalPages | number | Total number of pages. |
first | boolean | Whether this is the first page. |
last | boolean | Whether this is the last page. |
numberOfElements | number | Number of policies returned on the current page. |
empty | boolean | Whether the result set is empty. |
Policy Summary Fields#
The response example shows selected fields of each summary. A summary has the following fields:
| Field | Type | Description |
|---|---|---|
id | UUID | Policy identifier. |
policyNumber | string | Policy number. |
clientId | UUID | Client identifier. |
premium | number | Premium amount. |
premiumTerm | string | Premium term. |
effectiveDate | string (date) | Coverage start, YYYY-MM-DD. |
expirationDate | string (date) | Coverage expiration, YYYY-MM-DD. |
createdTimestamp | string (date-time) | Creation timestamp. |
policyMeta | object | Insured, agency, producer, and carrier details, including insuredName. |
policyIntegrationData | object | Policy integration data. |
To retrieve payment status or policy state, use Policy Retrieval.