18F/Paid-Leave-Prototype

View on GitHub
javascripts/schema.json

Summary

Maintainability
Test Coverage
{
    "title":"leave",
    "type":"object",
    "$schema": "http://json-schema.org/draft-04/schema",
    "properties": {
        "information": {
            "title": "Claim information",
            "type": "object",
            "properties": {
                "reason": {
                    "title": "Reason for claim",
                    "type":"string",
                    "enum":[
                        "Bond with a newborn or newly adopted child.",
                        "Care for someone with a temporary disability or illness.",
                        "Manage a recently diagnosed medical condition."
                    ]
                },
                "benefits_start": {
                    "title": "Benefit start date",
                    "type":"string",
                    "format":"date"
                }
            },
            "required": [
                "reason",
                "benefits_start"
            ]
        },
        "claimant": {
            "title": "Person claiming benefits (claimant)",
            "type": "object",
            "properties": {
                "name": {
                    "title": "Name",
                    "type": "object",
                    "properties": {
                        "first": {
                            "title":"First",
                            "type":"string"
                        },
                        "middle": {
                            "title":"Middle",
                            "type":"string"
                        },
                        "last": {
                            "title":"Last",
                            "type":"string"
                        }
                    },
                    "required": [
                        "first",
                        "last"
                    ]
                },
                "address": {
                    "title": "Mailing address",
                    "type": "object",
                    "properties": {
                        "street": {
                            "title":"Street address",
                            "type":"string"
                        },
                        "city": {
                            "title":"City",
                            "type":"string"
                        },
                        "state": {
                            "title":"State",
                            "type":"string",
                            "minLength": 2,
                            "maxLength": 2,
                            "pattern": "([A-Z]{2})"
                        },
                        "zip": {
                            "title":"Zip",
                            "type":"string",
                            "minLength": 5,
                            "pattern": "[0-9]{5}(-([0-9]{4}))?"
                        },
                        "country": {
                            "title":"Country",
                            "type":"string",
                            "enum": ["United States", "Afghanistan", "Aland Islands", "Albania", "Algeria", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia, Plurinational State of", "Bonaire, Sint Eustatius and Saba", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Chinese Taipei", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo", "Congo, the Democratic Republic of the", "Cook Islands", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Curaçao", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands (Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City State)", "Honduras", "Hungary", "Iceland", "India", "Indonesia", "Iran, Islamic Republic of", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic People's Republic of", "Korea, Republic of", "Kuwait", "Kyrgyzstan", "Lao People's Democratic Republic", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya", "Liechtenstein", "Lithuania", "Luxembourg", "Macao", "Macedonia, the former Yugoslav Republic of", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Moldova, Republic of", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "Norway", "Oman", "Pakistan", "Palestinian Territory, Occupied", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Qatar", "Reunion", "Romania", "Russian Federation", "Rwanda", "Saint Barthélemy", "Saint Helena, Ascension and Tristan da Cunha", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin (French part)", "Saint Pierre and Miquelon", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Sint Maarten (Dutch part)", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic", "Tajikistan", "Tanzania, United Republic of", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela, Bolivarian Republic of", "Viet Nam", "Virgin Islands, British", "Wallis and Futuna", "Western Sahara", "Yemen", "Zambia", "Zimbabwe"]
                        }
                    },
                    "required": [
                        "street",
                        "city",
                        "state",
                        "country"
                    ]
                },
                "email": {
                    "title": "Email address",
                    "type": "string",
                    "format": "email"
                },
                "ssn": {
                    "title": "Social Security Number",
                    "type":"string",
                    "pattern":"(?!666|000|9\\d{2})([0-9]{3})([\\s-]?)(?!00)([0-9]{2})\\2(?!0{4})([0-9]{4})"
                },
                "birthdate": {
                    "title":"Date of birth",
                    "type":"string",
                    "format":"date-time"
                },
                "language": {
                    "title":"Preferred language",
                    "type":"string",
                    "enum": [
                        "English",
                        "Spanish",
                        "other"
                    ],
                    "default": "English"
                },
                "telephone": {
                    "title":"Telephone number",
                    "type":"string"
                },
                "alternative_caretaker": {
                    "title": "Is any other family member ready, willing, and able to provide care for the same period you are claiming benefits?",
                    "type":"string",
                    "enum":[
                        "yes",
                        "no"
                    ]
                },
                "required": [
                    "email",
                    "ssn",
                    "birthdate",
                    "language",
                    "telephone",
                    "alternative_caretaker"
                ]
            }
        },
        "employment": {
            "title": "Employment information",
            "type": "object",
            "properties": {
                "employer": {
                    "title": "Employer",
                    "type": "object",
                    "properties": {
                        "name": {
                            "title": "Name",
                            "type": "string"
                        },
                        "address": {
                            "title": "Mailing address",
                            "type": "object",
                            "properties": {
                                "street": {
                                    "title":"Street address",
                                    "type":"string"
                                },
                                "city": {
                                    "title":"City",
                                    "type":"string"
                                },
                                "state": {
                                    "title":"State",
                                    "type":"string",
                                    "minLength": 2,
                                    "maxLength": 2,
                                    "pattern": "([A-Z]{2})"
                                },
                                "zip": {
                                    "title":"Zip",
                                    "type":"string",
                                    "minLength": 5,
                                    "pattern": "[0-9]{5}(-([0-9]{4}))?"
                                }
                            },
                            "required": [
                                "street",
                                "city",
                                "state",
                                "zip"
                            ]
                        }
                    }
                },
                "benefits_end": {
                    "title": "On what date will the claimant return to work?",
                    "type":"string",
                    "format":"date"
                },
                "continue_work": {
                    "title": "Does the claimant plan on returning to work during the family leave period?",
                    "type":"string",
                    "enum": [
                        "yes",
                        "no"
                    ]
                },
                "workers_comp": {
                    "title": "Will the claimant also claim workers’ compensation benefits for any portion during the period covered by this claim?",
                    "type":"string",
                    "enum":[
                        "yes",
                        "no"
                    ]
                },
                "disclose": {
                    "title": "May we disclose benefit information to the claimant’s employer?",
                    "type":"string",
                    "enum":[
                        "Yes",
                        "No"
                    ]
                }
            },
            "required": [
                "benefits_end",
                "continue_work",
                "workers_comp",
                "disclose"
            ]
        },
        "dependent": {
            "title": "Dependent",
            "type": "object",
            "properties": {
                "name": {
                    "title": "Dependent’s name",
                    "type": "object",
                    "properties": {
                        "first": {
                            "type":"string",
                            "title":"First"
                        },
                        "middle": {
                            "type":"string",
                            "title":"Middle"
                        },
                        "last": {
                            "type":"string",
                            "title":"Last"
                        }
                    },
                    "required": [
                        "first",
                        "last"
                    ]
                },
                "address": {
                    "title": "Dependent’s residence (if different from claimant)",
                    "type": "object",
                    "properties": {
                        "street": {
                            "title": "Street address",
                            "type":"string"
                        },
                        "city": {
                            "title":"City",
                            "type":"string"
                        },
                        "state": {
                            "title":"State",
                            "type":"string",
                            "minLength": 2,
                            "maxLength": 2,
                            "pattern": "([A-Z]{2})"
                        },
                        "zip": {
                            "title":"Zip",
                            "type":"string",
                            "minLength": 5,
                            "pattern": "[0-9]{5}(-([0-9]{4}))?"
                        },
                        "country": {
                            "title":"Country",
                            "type":"string",
                            "enum": ["United States", "Afghanistan", "Aland Islands", "Albania", "Algeria", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia, Plurinational State of", "Bonaire, Sint Eustatius and Saba", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Chinese Taipei", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo", "Congo, the Democratic Republic of the", "Cook Islands", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Curaçao", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands (Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City State)", "Honduras", "Hungary", "Iceland", "India", "Indonesia", "Iran, Islamic Republic of", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic People's Republic of", "Korea, Republic of", "Kuwait", "Kyrgyzstan", "Lao People's Democratic Republic", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya", "Liechtenstein", "Lithuania", "Luxembourg", "Macao", "Macedonia, the former Yugoslav Republic of", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Moldova, Republic of", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "Norway", "Oman", "Pakistan", "Palestinian Territory, Occupied", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Qatar", "Reunion", "Romania", "Russian Federation", "Rwanda", "Saint Barthélemy", "Saint Helena, Ascension and Tristan da Cunha", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin (French part)", "Saint Pierre and Miquelon", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Sint Maarten (Dutch part)", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic", "Tajikistan", "Tanzania, United Republic of", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela, Bolivarian Republic of", "Viet Nam", "Virgin Islands, British", "Wallis and Futuna", "Western Sahara", "Yemen", "Zambia", "Zimbabwe"]
                        }
                    },
                    "required": [
                        "street",
                        "city",
                        "state",
                        "country"
                    ]
                },
                "relationship": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "title": "Relationship",
                            "type":"string",
                            "enum": [
                                "Family member (not child)",
                                "Friend",
                                "Child",
                                "Foster child",
                                "Other"
                            ]
                        },
                        "documentation": {
                            "title": "Documentation of Relationship",
                            "description": "Birth certificate, certificate of adoption, marriage license, or other documentary material.<br><br>Alternately, take a photo of the document with your phone and text it from [[claimant.telephone]] to 55512.",
                            "type": "string"
                        }
                    }
                }
            }
        },
        "payment": {
            "title": "Payment",
            "type": "object",
            "properties": {
                "method": {
                    "type": "string",
                    "enum": [
                        "direct deposit",
                        "prepaid debit card"
                    ]
                },
                "direct_deposit": {
                    "type": "object",
                    "properties": {
                        "bank_name":
                        {
                            "title": "Bank name",
                            "type": "string"
                        },
                        "account_number": {
                            "title": "Account number",
                            "type": "string",
                            "maxLength": 10,
                            "minLength": 10
                        },
                        "routing_number": {
                            "title": "Bank routing number",
                            "type": "string",
                            "maxLength": 9,
                            "minLength": 10
                        },
                        "routing_number_2": {
                            "title": "Bank routing number (re-enter)",
                            "type": "string",
                            "maxLength": 9,
                            "minLength": 9
                        }
                    },
                    "required": [
                        "bank_name",
                        "account_number",
                        "routing_number",
                        "routing_number_2"
                    ]
                }
            }
        }
    }
}