Skip to content

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#

HTTPPOST
POST https://api.{ENV}.dais.com/ioi/v3/policy/search

Headers#

HeaderValueRequired
Content-Typeapplication/jsonYes
AuthorizationBearer <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
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"
}'
JSON
{
  "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#

PropertyRequiredDescription
pageNoZero-based page number. Default 0; minimum 0.
sizeNoNumber of results per page. Default 20; minimum 1.
effectiveDateFromNoFilter policies with effective date on or after this date (YYYY-MM-DD).
effectiveDateToNoFilter policies with effective date on or before this date (YYYY-MM-DD).
expirationDateFromNoFilter policies with expiration date on or after this date (YYYY-MM-DD).
expirationDateToNoFilter policies with expiration date on or before this date (YYYY-MM-DD).
policyNumberNoPartial policy number to search for. Supports case-insensitive partial matching.
insuredNameNoPartial insured business name.
insuredDbaNameNoPartial insured DBA name.
insuredContactFirstNameNoPartial first name of the insured contact.
insuredContactLastNameNoPartial last name of the insured contact.
insuredContactEmailNoPartial email of the insured contact.
insuredContactPhoneNoPartial phone number of the insured contact.
agencyIdNoAgency identifier string; supports partial matching.
agencyNameNoPartial agency name.
producerIdNoProducer identifier string; supports partial matching.
producerFirstNameNoPartial first name of the producer.
producerLastNameNoPartial last name of the producer.
producerEmailNoPartial producer email.
producerPhoneNoPartial producer phone number.
carrierIdNoCarrier identifier string; supports partial matching.
carrierNameNoPartial carrier name.
anyMatchNoSearch 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:

JSON
{
  "anyMatch": "<Search text>",
  "effectiveDateFrom": "2026-01-01",
  "effectiveDateTo": "2026-12-31"
}

This request uses the default page 0 and page size 20.


Response#

JSON
{
  "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#

FieldTypeDescription
contentarrayArray of policy summary objects matching the search.
numbernumberCurrent page number (zero-based).
sizenumberRequested page size.
totalElementsnumberTotal number of matching policies across all pages.
totalPagesnumberTotal number of pages.
firstbooleanWhether this is the first page.
lastbooleanWhether this is the last page.
numberOfElementsnumberNumber of policies returned on the current page.
emptybooleanWhether the result set is empty.

Policy Summary Fields#

The response example shows selected fields of each summary. A summary has the following fields:

FieldTypeDescription
idUUIDPolicy identifier.
policyNumberstringPolicy number.
clientIdUUIDClient identifier.
premiumnumberPremium amount.
premiumTermstringPremium term.
effectiveDatestring (date)Coverage start, YYYY-MM-DD.
expirationDatestring (date)Coverage expiration, YYYY-MM-DD.
createdTimestampstring (date-time)Creation timestamp.
policyMetaobjectInsured, agency, producer, and carrier details, including insuredName.
policyIntegrationDataobjectPolicy integration data.

To retrieve payment status or policy state, use Policy Retrieval.