{
  "$schema": "http://json-schema.org/draft/2020-12/schema",
  "$id": "https://slip-api.slacal.com/batch-submission/2.0/schema",
  "title": "SLIP AMS JSON Schema - Version 2-0. Last updated January 2024",
  "description": "This schema defines the data format for submitting batches to the SLIP system",
  "type": "object",
  "properties": {
    "Version": {
      "type": "string",
      "enum": [
        "2.0"
      ]
    },
    "BatchDataSet": {
      "description": "Batch Filing DataSet",
      "$ref": "#/definitions/BatchDataSet"
    }
  },
  "required": [
    "Version",
    "BatchDataSet"
  ],
  "additionalProperties": false,
  "definitions": {
    "BatchDataSet": {
      "type": "object",
      "properties": {
        "Batch": {
          "description": "Root element for the Batch",
          "$ref": "#/definitions/Batch"
        },
        "ReportingState": {
          "type": "string",
          "maxLength": 2
        }
      },
      "required": [
        "Batch"
      ],
      "additionalProperties": false,
      "description": "Container for the Batch"
    },
    "Batch": {
      "type": "object",
      "properties": {
        "Broker": {
          "description": "SLA broker number, License number, and Broker name",
          "$ref": "#/definitions/Broker"
        },
        "BrokerBatchNumber": {
          "description": "Broker Batch Number",
          "type": "string",
          "maxLength": 50
        },
        "BrokerBatchDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Broker Batch Date"
        },
        "BatchNotes": {
          "description": "Batch Notes is an option that allows a Broker to provide information to the SLA Analyst processing this batch",
          "type": "string",
          "maxLength": 4000
        },
        "LateFilingExplanation": {
          "description": "LateFilingExplanation is an option that allows to explain the reason why the this batch was not filed on time",
          "type": "string",
          "maxLength": 4000
        },
        "BatchDocuments": {
          "description": "List of attached documents or a folder name for the batch",
          "$ref": "#/definitions/DocumentCollection"
        },
        "Policies": {
          "description": "List of policies",
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/Policy"
          },
          "additionalProperties": false
        }
      },
      "required": [
        "Broker",
        "Policies"
      ],
      "additionalProperties": false,
      "description": "Root element for the Batch"
    },
    "Policy": {
      "type": "object",
      "properties": {
        "Broker": {
          "description": "SLA broker number, License number, and Broker name",
          "$ref": "#/definitions/Broker"
        },
        "CustomPolicyId": {
          "description": "Custom Policy ID stored in the AMS system",
          "type": "string",
          "maxLength": 50
        },
        "PolicyNumber": {
          "description": "Policy number",
          "type": "string",
          "minLength": 1,
          "maxLength": 30
        },
        "PreviousPolicyNumber": {
          "description": "For Renewals: previous policy number",
          "type": "string",
          "maxLength": 30
        },
        "BinderNumber": {
          "description": "Binder number",
          "type": "string",
          "maxLength": 50
        },
        "Insured": {
          "description": "The insured person or entity covered by the policy",
          "$ref": "#/definitions/PolicyInsured"
        },
        "SecondaryInsuredName": {
          "description": "Secondary insured name",
          "type": "string",
          "maxLength": 200
        },
        "InsuredDbaName": {
          "description": "Insured DBA name",
          "type": "string",
          "maxLength": 200
        },
        "IsMultipleStatePolicy": {
          "type": "boolean",
          "description": "For New and Renewal: Is this a multi-state policy?"
        },
        "IsMultipleInsurerPolicy": {
          "type": "boolean",
          "description": "True if the policy with a risk that is covered by more than one insurer"
        },
        "IsMasterPolicy": {
          "type": "boolean",
          "description": "For New and Renewal: Is this a master policy?"
        },
        "ExemptCommercialPurchaser": {
          "type": "boolean",
          "description": "NRRA Exempt Commercial Purchaser also known as AB315 California Commercial Insured. This field is required for policies with an effective date after 7/21/2011 and should contain a boolean indicator."
        },
        "Transactions": {
          "description": "List of transactions for the policy",
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/Transaction"
          },
          "additionalProperties": false
        },
        "SubmissionPolicyId": {
          "type": "integer",
          "minimum": 0,
          "description": "Used to identify the policy when troubleshooting issues with processing the batch. Must be unique within the submission"
        }
      },
      "required": [
        "Broker",
        "PolicyNumber",
        "Insured",
        "IsMultipleStatePolicy",
        "IsMasterPolicy",
        "Transactions",
        "SubmissionPolicyId"
      ],
      "additionalProperties": false,
      "description": "A policy that contains the transactions for the batch"
    },
    "Transaction": {
      "type": "object",
      "properties": {
        "CustomTransactionId": {
          "description": "Custom Transaction ID stored in the AMS system",
          "type": "string",
          "maxLength": 50
        },
        "ConfirmationNumber": {
          "description": "Optional Confirmation Number for tracking an individual transaction",
          "type": "string",
          "maxLength": 50
        },
        "TransactionType": {
          "type": "string",
          "description": "A: Audit Endorsement; C: Cancellation; E: Endorsement; N: New Business/Policy; O: Offset/Adjustment; R: Renewal; S: Security Update; X: Extension Endorsement",
          "enum": [
            "A",
            "C",
            "E",
            "N",
            "O",
            "R",
            "S",
            "X"
          ]
        },
        "EndorsementNumber": {
          "description": "For Endorsements: Endorsement number",
          "type": "string",
          "maxLength": 50
        },
        "EffectiveDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "For New, Renewal and Extension endorsements: effective date; For Binders: Binder effective date"
        },
        "ExpirationDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "For New, Renewal and Extension endorsements: expiration date; For Binders: Binder expiration date"
        },
        "GoodUntilCancelled": {
          "type": "boolean",
          "description": "Is this policy good until cancelled?"
        },
        "Notes": {
          "type": "string",
          "description": "Notes for the transaction"
        },
        "LateFilingExplanation": {
          "type": "string",
          "description": "Late filing explanation for policies filed 60 days after the policy effective date"
        },
        "Premium": {
          "description": "Amount of premium for the transaction",
          "$ref": "#/definitions/money"
        },
        "InvoiceDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Invoice date"
        },
        "Coverages": {
          "description": "List of coverages",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/SingleInsurerCoverage"
              },
              {
                "$ref": "#/definitions/LayeredCoverage"
              }
            ]
          }
        },
        "Fees": {
          "description": "List of fees",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Fee"
          },
          "additionalProperties": false
        },
        "StateAllocations": {
          "description": "List of multi-state allocation",
          "$ref": "#/definitions/ArrayOfStateAllocation"
        },
        "CaliforniaPercentAllocable": {
          "description": "For Multistate Policies with a policy effective date after the effective date of NRRA/AB315 specify the percent of the risk that is allocable to California",
          "$ref": "#/definitions/percentage"
        },
        "Certificates": {
          "description": "List of certificates",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Certificate"
          },
          "additionalProperties": false
        },
        "SL1": {
          "description": "SL-1 form data",
          "$ref": "#/definitions/SL1Form"
        },
        "GAP": {
          "description": "GAP form data",
          "$ref": "#/definitions/GAPForm"
        },
        "SL2": {
          "description": "SL-2 form data",
          "$ref": "#/definitions/SL2Form"
        },
        "TransactionDocuments": {
          "description": "List of attached documents or a folder name for the transaction",
          "$ref": "#/definitions/DocumentCollection"
        },
        "SubmissionTransactionId": {
          "type": "integer",
          "minimum": 0,
          "description": "Used to identify the transaction when troubleshooting issues with processing the batch. Must be unique within the submission"
        }
      },
      "required": [
        "TransactionType",
        "SubmissionTransactionId"
      ],
      "additionalProperties": false,
      "description": "A transaction for a policy"
    },
    "Coverage": {
      "type": "object",
      "description": "Coverage?",
      "properties": {
        "CoverageCode": {
          "type": "integer",
          "minimum": 50,
          "maximum": 9999,
          "description": "Coverage code"
        },
        "CoveragePremium": {
          "description": "Amount of the coverage premium",
          "$ref": "#/definitions/money"
        }
      },
      "required": [
        "CoverageCode",
        "CoveragePremium"
      ]
    },
    "SingleInsurerCoverage": {
      "allOf": [
        {
          "$ref": "#/definitions/Coverage"
        },
        {
          "properties": {
            "Insurer": {
              "description": "Insurer name, SLA insurer number, and NAIC number",
              "$ref": "#/definitions/Insurer"
            }
          },
          "required": [
            "Insurer"
          ]
        }
      ]
    },
    "LayeredCoverage": {
      "allOf": [
        {
          "$ref": "#/definitions/Coverage"
        },
        {
          "properties": {
            "LayerGroup": {
              "description": "Layer group containing layering and layer percentage",
              "$ref": "#/definitions/LayerGroup"
            }
          },
          "required": [
            "LayerGroup"
          ]
        }
      ]
    },
    "Fee": {
      "type": "object",
      "properties": {
        "FeeType": {
          "type": "string",
          "enum": [
            "PolicyFee",
            "InspectionFee",
            "BrokerFee",
            "Other"
          ]
        },
        "FeeDescription": {
          "description": "Fee description",
          "type": "string"
        },
        "IncludeInPremium": {
          "type": "boolean",
          "description": "Indicates whether or not the fee is included in the total item premium amount"
        },
        "FeeAmount": {
          "description": "Fee amount",
          "$ref": "#/definitions/money"
        }
      },
      "required": [
        "FeeType",
        "IncludeInPremium",
        "FeeAmount"
      ],
      "additionalProperties": false,
      "description": "A fee"
    },
    "Broker": {
      "type": "object",
      "properties": {
        "SLABrokerNumber": {
          "type": "integer",
          "maximum": 2147483647,
          "minimum": 1,
          "description": "A unique number assigned by SLA for each broker"
        }
      },
      "required": [
        "SLABrokerNumber"
      ],
      "additionalProperties": false,
      "description": "Broker details"
    },
    "Licensee": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of Broker (Individual) or Brokerage (Organization)",
          "type": "string",
          "maxLength": 150
        },
        "LicenseNumber": {
          "description": "License number of Broker (Individual) or Brokerage (Organization)",
          "type": "string",
          "maxLength": 50
        }
      },
      "additionalProperties": false,
      "description": "A licensee for a brokerage"
    },
    "SLFormInsured": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of insured",
          "type": "string",
          "maxLength": 200
        },
        "Address": {
          "description": "Address of insured",
          "$ref": "#/definitions/SLFormInsuredAddress"
        }
      },
      "additionalProperties": false,
      "description": "An insured contact"
    },
    "SL2FormInsured": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of insured",
          "type": "string",
          "maxLength": 200
        }
      },
      "additionalProperties": false,
      "description": "An insured contact"
    },
    "PolicyInsured": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of insured",
          "type": "string",
          "maxLength": 200
        },
        "Address": {
          "description": "Address of insured",
          "$ref": "#/definitions/InsuredAddress"
        },
        "NAICSCode": {
          "description": "NAICS code",
          "type": "string",
          "maxLength": 6
        }
      },
      "additionalProperties": false
    },
    "Insurer": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of insurer",
          "type": "string",
          "maxLength": 150
        },
        "NAICNumber": {
          "description": "NAIC number assigned to the insurer",
          "$ref": "#/definitions/naicNumber"
        }
      },
      "additionalProperties": false,
      "description": "An insurer"
    },
    "PremiumStateAllocation": {
      "type": "object",
      "properties": {
        "StateName": {
          "description": "Name of the state allocated",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "StatePremium": {
          "description": "Amount of premium allocated to the state",
          "$ref": "#/definitions/money"
        }
      },
      "required": [
        "StateName",
        "StatePremium"
      ],
      "additionalProperties": false,
      "description": "State allocation dollar amount for a premium"
    },
    "PercentageStateAllocation": {
      "type": "object",
      "properties": {
        "StateName": {
          "description": "Name of the state allocated",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "StatePercentage": {
          "description": "Percentage of premium allocated to the state",
          "$ref": "#/definitions/percentage"
        }
      },
      "required": [
        "StateName",
        "StatePercentage"
      ],
      "additionalProperties": false,
      "description": "State allocation percentage amount for a premium"
    },
    "ArrayOfStateAllocation": {
      "type": "object",
      "properties": {
        "StateAllocationMethod": {
          "type": "string",
          "enum": [
            "Premium",
            "Percentage"
          ]
        },
        "StateAllocation": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/PremiumStateAllocation"
              }
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/PercentageStateAllocation"
              }
            }
          ]
        },
        "TotalPremiumAllStates": {
          "description": "Total Premium Amount for all states",
          "$ref": "#/definitions/money"
        }
      },
      "required": [
        "StateAllocationMethod"
      ],
      "additionalProperties": false,
      "description": "A list of state allocations"
    },
    "Certificate": {
      "type": "object",
      "properties": {
        "CertificateNumber": {
          "description": "Certificate number for Master Policy",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "Insured": {
          "description": "Certificate Insured name and address",
          "$ref": "#/definitions/PolicyInsured"
        },
        "CertificateEffectiveDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Certificate effective date"
        },
        "CertificateExpirationDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Certificate expiration date"
        },
        "CertificatePremium": {
          "description": "Certificate premium amount",
          "$ref": "#/definitions/money"
        },
        "CertificateStateTax": {
          "description": "Certificate state tax",
          "$ref": "#/definitions/money"
        },
        "CertificateStampingFee": {
          "description": "Certificate stamping fee",
          "$ref": "#/definitions/money"
        },
        "CertificateInvoiceDate": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Certificate invoice date"
        },
        "CertificateTaxableFees": {
          "description": "Certificate Taxable Fees",
          "$ref": "#/definitions/money"
        }
      },
      "required": [
        "CertificateNumber"
      ],
      "additionalProperties": false,
      "description": "A certificate"
    },
    "LayerGroup": {
      "type": "object",
      "properties": {
        "LayerDescription": {
          "description": "Layer description",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "LayerData": {
          "type": "array",
          "minItems": 1,
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/SingleInsurerLayerDetail"
              },
              {
                "$ref": "#/definitions/LayeredLayerDetail"
              }
            ]
          }
        }
      },
      "required": [
        "LayerDescription",
        "LayerData"
      ],
      "additionalProperties": false,
      "description": "A layer group"
    },
    "SingleInsurerLayerDetail": {
      "type": "object",
      "properties": {
        "LayerPercentage": {
          "description": "Percentage allocated to the insurance company or layering of insurance companies",
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "Insurer": {
          "description": "Insurer name, SLA insurer number, and NAIC number",
          "$ref": "#/definitions/Insurer"
        }
      },
      "required": [
        "LayerPercentage",
        "Insurer"
      ],
      "additionalProperties": false,
      "description": "Layer details"
    },
    "LayeredLayerDetail": {
      "type": "object",
      "properties": {
        "LayerPercentage": {
          "description": "Percentage allocated to the insurance company or layering of insurance companies",
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "LayerGroup": {
          "description": "Layer group containing layering and layer percentage",
          "$ref": "#/definitions/LayerGroup"
        }
      },
      "required": [
        "LayerPercentage",
        "LayerGroup"
      ],
      "additionalProperties": false,
      "description": "Layer details"
    },
    "SL1Form": {
      "type": "object",
      "properties": {
        "ExportOrDiligentSearch": {
          "type": "string",
          "enum": [
            "CoverageOnExportList",
            "DiligentSearchReport"
          ],
          "description": "Coverage or risk listed on the current California Department of Insurance Export List or a fully executed copy of the diligent search report (SL-2 Form) is submitted."
        },
        "CaliforniaPremium": {
          "description": "California Premium",
          "$ref": "#/definitions/money"
        },
        "BrokerName": {
          "description": "Broker name",
          "type": "string",
          "maxLength": 150
        },
        "BrokerLicenseNumber": {
          "type": "string",
          "maxLength": 50,
          "description": "Broker license number"
        },
        "Organization": {
          "description": "Organization name and license number",
          "$ref": "#/definitions/Licensee"
        },
        "Insured": {
          "description": "Insured name and address",
          "$ref": "#/definitions/SLFormInsured"
        },
        "RiskDescription": {
          "description": "Description of risk",
          "type": "string",
          "maxLength": 150
        },
        "RiskLocation": {
          "description": "Address of risk",
          "$ref": "#/definitions/RiskLocationAddress"
        },
        "VariousLocations": {
          "type": "boolean",
          "description": "Are there various locations for Risk?"
        },
        "ExportOrCoverageCodes": {
          "description": "List of Export list Or Coverage codes",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExportOrCoverageCode"
          },
          "additionalProperties": false
        },
        "NonAdmittedInsurers": {
          "description": "List of Non-admitted insurers",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SL1NonAdmittedInsurer"
          },
          "additionalProperties": false
        },
        "DateSigned": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Date signed"
        }
      },
      "required": [
        "ExportOrDiligentSearch"
      ],
      "additionalProperties": false,
      "description": "A SL-1 form"
    },
    "SL1NonAdmittedInsurer": {
      "type": "object",
      "properties": {
        "NonAdmittedInsurerName": {
          "description": "Name of non-admitted insurer",
          "type": "string",
          "maxLength": 150
        },
        "NAICNumber": {
          "description": "NAIC number assigned to the insurer",
          "$ref": "#/definitions/naicNumber"
        },
        "PremiumPercentage": {
          "description": "Non-admitted insurer's premium percentage",
          "$ref": "#/definitions/percentage"
        }
      },
      "additionalProperties": false,
      "description": "A SL-1 non-admitted insurer"
    },
    "GAPForm": {
      "type": "object",
      "properties": {
        "Layers": {
          "description": "List of GAP layer",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GAPLayer"
          },
          "additionalProperties": false
        },
        "TotalNumberOfLayers": {
          "type": "integer",
          "minimum": 1,
          "description": "Section A(a) Total number of Layers"
        },
        "TotalLimitsOfLiability": {
          "description": "Section A(b) Total limits of Liability for all layers combined",
          "$ref": "#/definitions/money"
        },
        "TotalPercentageOfGapInsurers": {
          "description": "Section A(c) Total percentage of GAP Insurers for all layers combined",
          "$ref": "#/definitions/percentage"
        },
        "AssociatedLayerNumber": {
          "type": "integer",
          "minimum": 1,
          "description": "Section A(d) This submission is for layer number (Layer number associated to the submission)"
        },
        "GapInsurers": {
          "description": "List of GAP insurers",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GapInsurer"
          },
          "additionalProperties": false
        },
        "DateSigned": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Date signed"
        }
      },
      "additionalProperties": false,
      "description": "A GAP form"
    },
    "GAPLayer": {
      "type": "object",
      "properties": {
        "LayerNumber": {
          "type": "integer",
          "minimum": 1,
          "description": "Layer number (Primary policy is layer number 1)"
        },
        "LimitOfLiability": {
          "description": "Limit of liability",
          "$ref": "#/definitions/money"
        },
        "ExcessOfUnderlyingLimits": {
          "description": "Excess of underlying limits",
          "$ref": "#/definitions/money"
        },
        "GapInsurersPercentage": {
          "description": "Percentage of layer with GAP Insurers",
          "$ref": "#/definitions/percentage"
        }
      },
      "required": [
        "LayerNumber"
      ],
      "additionalProperties": false,
      "description": "A GAP layer"
    },
    "GapInsurer": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of insurer",
          "type": "string",
          "maxLength": 150
        },
        "NAICNumber": {
          "description": "NAIC number assigned to the insurer",
          "$ref": "#/definitions/naicNumber"
        },
        "ParticipationPercentage": {
          "description": "GAP Insurer participating percentage for this layer or policy",
          "$ref": "#/definitions/percentage"
        }
      },
      "additionalProperties": false,
      "description": "A GAP insurer"
    },
    "SL2Form": {
      "type": "object",
      "properties": {
        "BrokerName": {
          "description": "Broker name",
          "type": "string",
          "maxLength": 150
        },
        "BrokerLicenseNumber": {
          "description": "Broker license number",
          "type": "string",
          "maxLength": 50
        },
        "Organization": {
          "description": "Organization name and license number",
          "$ref": "#/definitions/Licensee"
        },
        "Insured": {
          "description": "Section 2(A) Insured name",
          "$ref": "#/definitions/SL2FormInsured"
        },
        "RiskDescription": {
          "description": "Section 2(B) Description of risk",
          "type": "string",
          "maxLength": 200
        },
        "ExportOrCoverageCodes": {
          "description": "List of Type of Insurance coverage",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExportOrCoverageCode"
          },
          "additionalProperties": false
        },
        "AdmittedInsurers": {
          "description": "Section 3(A) List of admitted companies",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SL2AdmittedInsurer"
          },
          "additionalProperties": false
        },
        "DeterminationDescription": {
          "type": "string",
          "maxLength": 4000,
          "description": "Section 3(B) Description of how the determination made"
        },
        "DateSigned": {
          "type": "string",
          "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
          "description": "Date signed"
        },
        "IsGoodDriver": {
          "type": "boolean",
          "description": "Addendum 1(A) Indicates whether or not the insured is a good driver"
        },
        "IncludedCAARP": {
          "type": "boolean",
          "description": "Addendum 1(B) Indicates whether or not CAARP coverage is included"
        },
        "CAARPIneligible": {
          "type": "boolean",
          "description": "Addendum 1(B)(1) Indicates whether or not the risk is CAARP ineligible"
        },
        "IsSmallEmployer": {
          "type": "boolean",
          "description": "Addendum 2 Indicates whether or not the insured is a small employer"
        },
        "AddendumRequired": {
          "type": "boolean",
          "description": "Section 4 indicates whether or not an SL2 Addendum is required with this filing"
        }
      },
      "additionalProperties": false,
      "description": "A SL-2 form"
    },
    "SL2AdmittedInsurer": {
      "type": "object",
      "properties": {
        "CompanyName": {
          "description": "Name of admitted insurance company",
          "type": "string",
          "maxLength": 150
        },
        "NAICNumber": {
          "description": "NAIC number assigned to the admitted insurance company",
          "$ref": "#/definitions/naicNumber"
        },
        "RepresentativeName": {
          "description": "First and last name of the admitted insurance company representative",
          "type": "string",
          "maxLength": 200
        },
        "RepresentativePhoneOrEmail": {
          "description": "Phone number or email address of the admitted insurance company representative",
          "type": "string",
          "maxLength": 200
        },
        "DeclinationWebsite": {
          "description": "Online Declination Web Site",
          "type": "string",
          "maxLength": 200
        },
        "DeclinationMonth": {
          "type": "integer",
          "maximum": 12,
          "description": "Month of Declination"
        },
        "DeclinationYear": {
          "type": "integer",
          "minimum": 1900,
          "maximum": 9999,
          "description": "Year of Declination"
        }
      },
      "additionalProperties": false,
      "description": "A SL-2 admitted insurer"
    },
    "DocumentCollection": {
      "type": "object",
      "properties": {
        "FolderName": {
          "description": "Name of a folder containing all the documents to submit",
          "type": "string",
          "maxLength": 200
        },
        "Documents": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DocumentDetail"
          }
        }
      },
      "oneOf": [
        {
          "required": [
            "FolderName"
          ]
        },
        {
          "required": [
            "Documents"
          ]
        }
      ],
      "additionalProperties": false,
      "description": "A collection of documents specified by either the folder they exists in or a list of filenames."
    },
    "DocumentDetail": {
      "type": "object",
      "properties": {
        "CustomDocumentId": {
          "description": "Custom Document ID stored in the AMS system",
          "type": "string",
          "maxLength": 50
        },
        "DocumentType": {
          "type": "string",
          "enum": [
            "DECLARATIONS PAGE",
            "BINDER",
            "ENDORSEMENT",
            "CERTIFICATE",
            "COVERSHEET",
            "SL1",
            "SL2",
            "GAP",
            "SYNDICATE LIST",
            "MULTIPLE",
            "BORDEREAU",
            "INVOICE",
            "PREMIUM BY STATE",
            "SL2ADDENDUM",
            "OTHER"
          ]
        },
        "DocumentName": {
          "description": "Name of document",
          "type": "string",
          "maxLength": 200
        },
        "SubmissionDocumentId": {
          "type": "integer",
          "minimum": 0,
          "description": "Used to identify the document when troubleshooting issues with processing the batch. Must be unique within the submission"
        }
      },
      "required": [
        "DocumentName",
        "SubmissionDocumentId"
      ],
      "additionalProperties": false,
      "description": "Document details"
    },
    "InsuredAddress": {
      "type": "object",
      "properties": {
        "AddressLine1": {
          "description": "Street Address line 1",
          "type": "string",
          "maxLength": 60
        },
        "AddressLine2": {
          "description": "Street Address line 2",
          "type": "string",
          "maxLength": 60
        },
        "City": {
          "description": "City name - mapped to policy (40), certs (40), SL1 (30), SL2 (30)",
          "type": "string",
          "maxLength": 40
        },
        "StateOrProvince": {
          "description": "State or province name",
          "type": "string",
          "maxLength": 100
        },
        "PostalCode": {
          "description": "Postal zip code",
          "$ref": "#/definitions/postalzipcode"
        },
        "Country": {
          "description": "Country name",
          "type": "string",
          "maxLength": 30
        }
      },
      "additionalProperties": false,
      "description": "A policy insured address"
    },
    "SLFormInsuredAddress": {
      "type": "object",
      "properties": {
        "AddressLine1": {
          "description": "Street Address line 1",
          "type": "string",
          "maxLength": 60
        },
        "AddressLine2": {
          "description": "Street Address line 2",
          "type": "string",
          "maxLength": 60
        },
        "City": {
          "description": "City name - mapped to policy (40), certs (40), SL1 (30), SL2 (30)",
          "type": "string",
          "maxLength": 30
        },
        "StateOrProvince": {
          "description": "State or province name",
          "type": "string",
          "maxLength": 100
        },
        "PostalCode": {
          "description": "Postal zip code",
          "$ref": "#/definitions/postalzipcode"
        },
        "Country": {
          "description": "Country name",
          "type": "string",
          "maxLength": 30
        }
      },
      "additionalProperties": false,
      "description": "A policy insured address for the SL forms"
    },
    "RiskLocationAddress": {
      "type": "object",
      "properties": {
        "AddressLine1": {
          "description": "Street Address line 1",
          "type": "string",
          "maxLength": 60
        },
        "AddressLine2": {
          "description": "Street Address line 2",
          "type": "string",
          "maxLength": 60
        },
        "City": {
          "description": "City name",
          "type": "string",
          "maxLength": 30
        },
        "StateOrProvince": {
          "description": "State or province name",
          "type": "string",
          "maxLength": 100
        },
        "PostalCode": {
          "description": "Postal zip code",
          "$ref": "#/definitions/postalzipcode"
        },
        "Country": {
          "description": "Country name",
          "type": "string",
          "maxLength": 50
        }
      },
      "additionalProperties": false,
      "description": "A risk location address"
    },
    "ExportOrCoverageCode": {
      "type": "object",
      "properties": {
        "CoverageCode": {
          "type": "integer",
          "minimum": 50,
          "maximum": 9999,
          "description": "Export list code or Coverage code"
        }
      },
      "required": [
        "CoverageCode"
      ],
      "additionalProperties": false,
      "description": "An export list or coverage code"
    },
    "money": {
      "type": "number"
    },
    "moneyRequired": {
      "type": "number",
      "minimum": 0.01
    },
    "percentage": {
      "type": "number"
    },
    "naicNumber": {
      "type": "string",
      "maxLength": 15
    },
    "postalzipcode": {
      "type": "string",
      "maxLength": 10
    }
  }
}