{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/axle/json-schema/axle-policy-schema.json",
  "title": "Policy",
  "description": "A Policy represents a specific policy associated with an Account and includes high-level policy information (e.g. policy number) and any children objects (e.g., coverages) associated with the policy.",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/axle-api-openapi.yml#/components/schemas/Policy",
  "type": "object",
  "x-tags": [
    "Accounts"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the Policy object."
    },
    "account": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/Account"
        }
      ],
      "description": "Unique identifier for the Account object associated with the Policy, or if `expand=true`, the Account object."
    },
    "type": {
      "type": [
        "string",
        "null"
      ],
      "description": "Type of insurance policy that the Policy object represents.",
      "enum": [
        "auto",
        "motorcycle",
        "home",
        "condo",
        "flood",
        "renters"
      ]
    },
    "carrier": {
      "type": "string",
      "description": "Insurance carrier that is the source for the Policy data."
    },
    "policyNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Identifier of the policy, as specified by the insurance carrier."
    },
    "isActive": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Active status of the policy, as specified by the insurance carrier. If an Ignition session is completed with result `manual`, this field will be undefined."
    },
    "effectiveDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601 timestamp of current term effective date of the policy, as specified by the insurance carrier."
    },
    "expirationDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601 timestamp of current term expiration date of the policy, as specified by the insurance carrier."
    },
    "policyStatus": {
      "description": "Additional status details about the policy, as specified by the insurance carrier. Always present, and empty when the carrier doesn't provide any status details.",
      "$ref": "#/$defs/PolicyStatus"
    },
    "premium": {
      "type": [
        "number",
        "null"
      ],
      "description": "Total policy premium, as specified by the insurance carrier. *Note: only available for `type=home,condo` policies*"
    },
    "amountDue": {
      "type": [
        "number",
        "null"
      ],
      "description": "The balance that must be paid by the stated due date to keep the policy current, as specified by the insurance carrier. This may reflect an amount due from the insured, a third party (e.g., mortgagee or escrow), or both. If an amount due is present from multiple parties, the returned amount is the sum of all amounts due."
    },
    "underwriter": {
      "description": "Underwriter associated with the policy.",
      "$ref": "#/$defs/Underwriter"
    },
    "address": {
      "description": "Primary address associated with the policy.",
      "$ref": "#/$defs/Address"
    },
    "coverages": {
      "type": "array",
      "description": "List of coverage types and levels offered by the policy.",
      "items": {
        "$ref": "#/$defs/Coverage"
      }
    },
    "exclusions": {
      "type": "array",
      "description": "List of policy exclusions (i.e., explicit removal of coverage afforded by the policy).",
      "items": {
        "$ref": "#/$defs/Exclusion"
      }
    },
    "properties": {
      "type": "array",
      "description": "List of properties (such as a vehicle or dwelling) afforded coverage by the policy.",
      "items": {
        "$ref": "#/$defs/Property"
      }
    },
    "insureds": {
      "type": "array",
      "description": "List of entities (such as an individuals or businesses) afforded direct coverage by the policy.",
      "items": {
        "$ref": "#/$defs/Insured"
      }
    },
    "thirdParties": {
      "type": "array",
      "description": "List of external parties with interest in the policy.",
      "items": {
        "$ref": "#/$defs/ThirdParty"
      }
    },
    "documents": {
      "type": "array",
      "description": "List of documents (such as declaration pages and policy agreements) associated with the policy.",
      "items": {
        "$ref": "#/$defs/Document"
      }
    },
    "result": {
      "$ref": "#/$defs/Result"
    },
    "resultDetail": {
      "$ref": "#/$defs/ResultDetail"
    },
    "createdAt": {
      "type": "string",
      "description": "ISO 8601 timestamp at which the Policy object was generated via Axle."
    },
    "modifiedAt": {
      "type": "string",
      "description": "ISO 8601 timestamp at which the Policy object was modified via Axle. The Policy object is modified only when there are differences between the current Policy and new Policy data requested from the carrier."
    },
    "refreshedAt": {
      "type": "string",
      "description": "ISO 8601 timestamp at which the Policy object was refreshed via Axle. The Policy object is refreshed only when Axle successfully requests new Policy data from the carrier."
    }
  },
  "required": [
    "id",
    "account",
    "type",
    "carrier",
    "policyNumber",
    "effectiveDate",
    "expirationDate",
    "policyStatus",
    "premium",
    "amountDue",
    "underwriter",
    "address",
    "coverages",
    "exclusions",
    "properties",
    "insureds",
    "thirdParties",
    "documents",
    "createdAt",
    "modifiedAt",
    "refreshedAt"
  ],
  "$defs": {
    "Account": {
      "title": "Account",
      "type": "object",
      "description": "An Account represents an account with an insurance carrier and includes high-level account information (e.g. name) and any Policy objects associated with the Account.",
      "x-tags": [
        "Accounts"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for the Account object."
        },
        "carrier": {
          "type": "string",
          "description": "Insurance carrier that is the source for the Account data."
        },
        "firstName": {
          "type": [
            "string",
            "null"
          ],
          "description": "First name of insurance account owner."
        },
        "lastName": {
          "type": [
            "string",
            "null"
          ],
          "description": "Last name of insurance account owner."
        },
        "phone": {
          "type": [
            "string",
            "null"
          ],
          "description": "Primary phone number of insurance account owner."
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "description": "Primary email address of insurance account owner."
        },
        "policies": {
          "type": "array",
          "description": "List of unique identifiers of Policy objects associated with the Account, or if `expand=true`, list of Policy objects.",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/Policy"
              }
            ]
          }
        },
        "connection": {
          "$ref": "#/$defs/Connection"
        },
        "resultDetail": {
          "$ref": "#/$defs/ResultDetail"
        },
        "createdAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Account object was generated via Axle."
        },
        "modifiedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Account object was modified via Axle. The Account object is modified only when there are differences between the current Account and new Account data requested from the carrier."
        },
        "refreshedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Account object was refreshed via Axle. The Account object is refreshed only when Axle successfully requests new Account data from the insurance carrier."
        }
      },
      "required": [
        "id",
        "carrier",
        "firstName",
        "lastName",
        "email",
        "phone",
        "policies",
        "connection",
        "createdAt",
        "modifiedAt",
        "refreshedAt"
      ]
    },
    "Address": {
      "title": "Address",
      "type": "object",
      "x-internal": false,
      "properties": {
        "addressLine1": {
          "type": [
            "string",
            "null"
          ]
        },
        "addressLine2": {
          "type": [
            "string",
            "null"
          ]
        },
        "state": {
          "type": [
            "string",
            "null"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "postalCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "country": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Connection": {
      "title": "Connection",
      "type": "object",
      "x-internal": false,
      "properties": {
        "status": {
          "type": "string",
          "description": "The Account connection status represents if Axle can actively request new Account and Policy data from the insurance carrier.",
          "enum": [
            "active",
            "credentials-expired",
            "mfa-expired",
            "account-disabled",
            "account-inaccessible",
            "lienholder-required",
            "comp-coll-required",
            "policy-summary-only"
          ]
        },
        "updatedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Account connection status was updated."
        }
      }
    },
    "Coverage": {
      "title": "Coverage",
      "type": "object",
      "x-internal": false,
      "properties": {
        "code": {
          "oneOf": [
            {
              "type": "string",
              "title": "Auto Coverages",
              "enum": [
                "BI",
                "PD",
                "UMBI",
                "UMPD",
                "UIMBI",
                "UIMPD",
                "UUIMBI",
                "UUIMPD",
                "COLL",
                "COMP"
              ]
            },
            {
              "type": "string",
              "title": "Home Coverages",
              "enum": [
                "DW",
                "OS",
                "PP",
                "LOU",
                "PL",
                "MED",
                "WIND",
                "STORM"
              ]
            }
          ]
        },
        "label": {
          "type": "string"
        },
        "limitPerPerson": {
          "type": [
            "number",
            "null"
          ]
        },
        "limitPerAccident": {
          "type": [
            "number",
            "null"
          ]
        },
        "deductible": {
          "type": [
            "number",
            "null"
          ]
        },
        "property": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique identifier of Property afforded coverage. If specified coverage is afforded to all properties on the policy, property will be undefined."
        },
        "settlementBasis": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "replacement-cost",
            "actual-cash-value",
            "functional-replacement-cost"
          ],
          "description": "Beta. Always present when `code` is `DW`. `replacement-cost` pays to repair or replace the dwelling with new materials of like kind and quality, with no deduction for depreciation. `actual-cash-value` pays replacement cost minus depreciation for age, wear, and obsolescence. `functional-replacement-cost` pays to rebuild with modern, functionally equivalent materials rather than exact like-kind replacement. `null` when the carrier did not supply a basis."
        }
      },
      "required": [
        "code",
        "label"
      ]
    },
    "Document": {
      "title": "Document",
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "The source of the document. Note, user documents are unverified by Axle.",
          "enum": [
            "carrier",
            "user"
          ]
        },
        "name": {
          "type": "string",
          "description": "Name of the document, as specified by carrier or user."
        },
        "type": {
          "type": "array",
          "description": "The type of information contained in the document, as specified by carrier or user. A document may have multiple types.",
          "items": {
            "type": "string",
            "enum": [
              "declaration-page",
              "id-card",
              "policy-agreement"
            ]
          }
        },
        "url": {
          "type": "string",
          "description": "URL for document access. Note, the URL is signed and has an expiry of 60 minutes."
        },
        "issuedDate": {
          "type": "string",
          "description": "If available, ISO 8601 timestamp at which the document was generated or issued by the carrier."
        },
        "effectiveDate": {
          "type": "string",
          "description": "If available, ISO 8601 timestamp at which the document becomes active or goes into effect."
        },
        "createdAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the document was fetched or shared via Axle."
        },
        "id": {
          "type": "string",
          "description": "Unique identifier (formatted as filename) for the document."
        }
      },
      "required": [
        "source",
        "name",
        "url",
        "createdAt"
      ]
    },
    "Dwelling": {
      "title": "Dwelling",
      "type": "object",
      "x-internal": false,
      "properties": {
        "addressLine1": {
          "type": [
            "string",
            "null"
          ]
        },
        "addressLine2": {
          "type": [
            "string",
            "null"
          ]
        },
        "state": {
          "type": [
            "string",
            "null"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "postalCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "country": {
          "type": [
            "string",
            "null"
          ]
        },
        "ratedFloodZone": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "A",
            "AE",
            "A1-A30",
            "AH",
            "AO",
            "AR",
            "AR/AE",
            "AR/AO",
            "AR/A",
            "AR/A1-A30",
            "A99",
            "V",
            "VE",
            "V1-V30",
            "B",
            "C",
            "X",
            "D"
          ],
          "description": "The FEMA designated flood zone that the dwelling resides in. This field is currently only available for flood policies."
        },
        "replacementCost": {
          "type": [
            "number",
            "null"
          ],
          "description": "Beta. The estimated cost of replacing or repairing the dwelling, as specified by the insurance carrier. For flood policies, this is the RCV as specified by FEMA. If the FEMA RCV is not available, this field will return the RCV as specified by the carrier."
        }
      },
      "required": [
        "addressLine1",
        "addressLine2",
        "city",
        "state",
        "postalCode",
        "country",
        "ratedFloodZone",
        "replacementCost"
      ]
    },
    "Exclusion": {
      "title": "Exclusion",
      "type": "object",
      "x-internal": false,
      "properties": {
        "code": {
          "oneOf": [
            {
              "type": "string",
              "title": "Home Exclusions",
              "enum": [
                "WIND"
              ]
            }
          ]
        },
        "label": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "label"
      ]
    },
    "Insured": {
      "title": "Insured",
      "type": "object",
      "x-internal": false,
      "properties": {
        "type": {
          "type": [
            "string",
            "null"
          ],
          "description": "Should be used for display purposes only. All listed insureds are afforded coverage by the policy.",
          "enum": [
            "primary",
            "secondary"
          ]
        },
        "firstName": {
          "type": [
            "string",
            "null"
          ]
        },
        "lastName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dateOfBirthYear": {
          "type": [
            "string",
            "null"
          ]
        },
        "licenseNo": {
          "type": [
            "string",
            "null"
          ]
        },
        "licenseState": {
          "type": [
            "string",
            "null"
          ]
        },
        "dateOfBirth": {
          "type": [
            "string",
            "null"
          ]
        },
        "property": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique identifier of Property afforded coverage for specified Insured. If Insured is afforded coverage across all properties on the policy, property will be undefined."
        }
      },
      "required": [
        "firstName",
        "lastName",
        "type",
        "dateOfBirth",
        "dateOfBirthYear",
        "licenseNo",
        "licenseState"
      ]
    },
    "Policy": {
      "title": "Policy",
      "type": "object",
      "description": "A Policy represents a specific policy associated with an Account and includes high-level policy information (e.g. policy number) and any children objects (e.g., coverages) associated with the policy.",
      "x-tags": [
        "Accounts"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for the Policy object."
        },
        "account": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/Account"
            }
          ],
          "description": "Unique identifier for the Account object associated with the Policy, or if `expand=true`, the Account object."
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "description": "Type of insurance policy that the Policy object represents.",
          "enum": [
            "auto",
            "motorcycle",
            "home",
            "condo",
            "flood",
            "renters"
          ]
        },
        "carrier": {
          "type": "string",
          "description": "Insurance carrier that is the source for the Policy data."
        },
        "policyNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "Identifier of the policy, as specified by the insurance carrier."
        },
        "isActive": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Active status of the policy, as specified by the insurance carrier. If an Ignition session is completed with result `manual`, this field will be undefined."
        },
        "effectiveDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 8601 timestamp of current term effective date of the policy, as specified by the insurance carrier."
        },
        "expirationDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 8601 timestamp of current term expiration date of the policy, as specified by the insurance carrier."
        },
        "policyStatus": {
          "description": "Additional status details about the policy, as specified by the insurance carrier. Always present, and empty when the carrier doesn't provide any status details.",
          "$ref": "#/$defs/PolicyStatus"
        },
        "premium": {
          "type": [
            "number",
            "null"
          ],
          "description": "Total policy premium, as specified by the insurance carrier. *Note: only available for `type=home,condo` policies*"
        },
        "amountDue": {
          "type": [
            "number",
            "null"
          ],
          "description": "The balance that must be paid by the stated due date to keep the policy current, as specified by the insurance carrier. This may reflect an amount due from the insured, a third party (e.g., mortgagee or escrow), or both. If an amount due is present from multiple parties, the returned amount is the sum of all amounts due."
        },
        "underwriter": {
          "description": "Underwriter associated with the policy.",
          "$ref": "#/$defs/Underwriter"
        },
        "address": {
          "description": "Primary address associated with the policy.",
          "$ref": "#/$defs/Address"
        },
        "coverages": {
          "type": "array",
          "description": "List of coverage types and levels offered by the policy.",
          "items": {
            "$ref": "#/$defs/Coverage"
          }
        },
        "exclusions": {
          "type": "array",
          "description": "List of policy exclusions (i.e., explicit removal of coverage afforded by the policy).",
          "items": {
            "$ref": "#/$defs/Exclusion"
          }
        },
        "properties": {
          "type": "array",
          "description": "List of properties (such as a vehicle or dwelling) afforded coverage by the policy.",
          "items": {
            "$ref": "#/$defs/Property"
          }
        },
        "insureds": {
          "type": "array",
          "description": "List of entities (such as an individuals or businesses) afforded direct coverage by the policy.",
          "items": {
            "$ref": "#/$defs/Insured"
          }
        },
        "thirdParties": {
          "type": "array",
          "description": "List of external parties with interest in the policy.",
          "items": {
            "$ref": "#/$defs/ThirdParty"
          }
        },
        "documents": {
          "type": "array",
          "description": "List of documents (such as declaration pages and policy agreements) associated with the policy.",
          "items": {
            "$ref": "#/$defs/Document"
          }
        },
        "result": {
          "$ref": "#/$defs/Result"
        },
        "resultDetail": {
          "$ref": "#/$defs/ResultDetail"
        },
        "createdAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Policy object was generated via Axle."
        },
        "modifiedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Policy object was modified via Axle. The Policy object is modified only when there are differences between the current Policy and new Policy data requested from the carrier."
        },
        "refreshedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp at which the Policy object was refreshed via Axle. The Policy object is refreshed only when Axle successfully requests new Policy data from the carrier."
        }
      },
      "required": [
        "id",
        "account",
        "type",
        "carrier",
        "policyNumber",
        "effectiveDate",
        "expirationDate",
        "policyStatus",
        "premium",
        "amountDue",
        "underwriter",
        "address",
        "coverages",
        "exclusions",
        "properties",
        "insureds",
        "thirdParties",
        "documents",
        "createdAt",
        "modifiedAt",
        "refreshedAt"
      ]
    },
    "PolicyStatus": {
      "title": "PolicyStatus",
      "type": "object",
      "description": "Additional status details about the policy, as specified by the insurance carrier. This object is always present, and its fields default to `null` when the carrier doesn't provide status details.",
      "x-internal": false,
      "properties": {
        "cancellationDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 8601 timestamp of the date the policy was or will be cancelled, as specified by the insurance carrier. Defaults to `null` if the policy isn't cancelled or the carrier doesn't specify."
        },
        "cancellationReason": {
          "type": [
            "string",
            "null"
          ],
          "description": "The reason the policy was or will be cancelled, as specified by the insurance carrier. Defaults to `null` if the policy isn't cancelled or the carrier doesn't specify.\n\n- `non-payment` - The carrier cancelled because premium wasn't paid. This includes a pending cancellation for a missed payment.\n- `rewritten` - The policy was cancelled and replaced by a new one, for example a re-issue, a new term or product, or a change of carrier entity. The customer keeps coverage under the new policy.\n- `insured-request` - The policyholder asked to cancel, for example a customer-requested or future-dated cancellation.\n- `underwriting` - The carrier chose to end the policy for risk reasons, such as a claims history, a failed inspection, or a material misrepresentation. It is different from `non-payment`.\n- `sold` - The insured item was sold or transferred, such as a vehicle or a home.\n- `not-taken` - The policy was cancelled back to its effective date because the customer never took it, for example a quote that was bound but not paid for.\n",
          "enum": [
            "non-payment",
            "rewritten",
            "insured-request",
            "underwriting",
            "sold",
            "not-taken",
            null
          ]
        }
      },
      "required": [
        "cancellationDate",
        "cancellationReason"
      ]
    },
    "Property": {
      "title": "Property",
      "type": "object",
      "x-internal": false,
      "properties": {
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "vehicle",
            "dwelling"
          ]
        },
        "data": {
          "oneOf": [
            {
              "$ref": "#/$defs/Dwelling"
            },
            {
              "$ref": "#/$defs/Vehicle"
            }
          ]
        }
      },
      "required": [
        "id",
        "type",
        "data"
      ]
    },
    "Result": {
      "type": "string",
      "description": "Appears on Policy only and is an Ignition completion type that describes the high-level Policy outcome. See <a href=\"/guides/completion-types#result\" className=\"no-underline\">result</a> for more details.",
      "enum": [
        "basic",
        "link",
        "manual",
        "proxy"
      ]
    },
    "ResultDetail": {
      "type": "string",
      "description": "Identifies the process that describes how each Ignition was completed in detail. See <a href=\"/guides/completion-types#resultdetail\" className=\"no-underline\">resultDetail</a> for more details.",
      "enum": [
        "basic",
        "credit-card-form",
        "document-ai-declarations-page",
        "document-ai-id-card",
        "document-ai-push-through",
        "manual-form",
        "policy-lookup",
        "policy-lookup-no-comp-coll",
        "policy-lookup-no-lienholder",
        "policy-lookup-summary",
        "user-portal-login"
      ]
    },
    "ThirdParty": {
      "title": "Third Party",
      "type": "object",
      "x-internal": false,
      "properties": {
        "property": {
          "type": [
            "string",
            "null"
          ],
          "default": "Unique identifier of Property afforded coverage for specified Third Party."
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "lienholder",
            "lessor",
            "interest"
          ],
          "description": "Should be used for display purposes only. All listed thirdParties have established financial interest in the associated property."
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "address": {
          "$ref": "#/$defs/Address"
        }
      },
      "required": [
        "type",
        "name",
        "address"
      ]
    },
    "Underwriter": {
      "title": "Underwriter",
      "type": "object",
      "x-internal": false,
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "naicCode": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Vehicle": {
      "title": "Vehicle",
      "type": "object",
      "x-internal": false,
      "properties": {
        "bodyStyle": {
          "type": [
            "string",
            "null"
          ]
        },
        "vin": {
          "type": [
            "string",
            "null"
          ]
        },
        "model": {
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "type": [
            "string",
            "null"
          ]
        },
        "make": {
          "type": [
            "string",
            "null"
          ]
        },
        "use": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "pleasure",
            "commute",
            "business",
            "farm"
          ]
        }
      },
      "required": [
        "vin",
        "model",
        "year",
        "make"
      ]
    }
  }
}