{
    "title": "RPS",
    "type": "object",
    "properties": {
        "version": {
            "required": true,
            "type": "string"
        },
        "identificacaorps": {
            "required": true,
            "type": "object",
            "properties": {
                "numero": {
                    "required": true,
                    "type": "integer",
                    "pattern": "^[0-9]{1,15}$"
                },
                "serie": {
                    "required": true,
                    "type": "string",
                    "maxLength": 5,
                    "pattern": "^[0-9A-Za-z]{1,5}$"
                },
                "tipo": {
                    "required": true,
                    "type": "integer",
                    "pattern": "^[1-3]{1}"
                }
            }
        },
        "dataemissao": {
            "required": true,
            "type": "string",
            "pattern": "^([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T(2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9])$"
        },
        "naturezaoperacao": {
            "required": true,
            "type": "integer",
            "pattern": "^[1-6]{1}$"
        },
        "regimeespecialtributacao": {
            "required": true,
            "type": "integer",
            "pattern": "^[1-6]{1}$"
        },
        "optantesimplesnacional": {
            "required": true,
            "type": "integer",
            "pattern": "^[1-2]{1}$"
        },
        "incentivadorcultural": {
            "required": true,
            "type": "integer",
            "pattern": "^[1-2]{1}$"
        },
        "status": {
            "required": true,
            "type": "integer",
            "pattern": "^[1-2]{1}$"
        },
        "tomador": {
            "required": true,
            "type": "object",
            "properties": {
                "cnpj": {
                    "required": false,
                    "type": ["string","null"],
                    "pattern": "^[0-9]{14}$"
                },
                "cpf": {
                    "required": false,
                    "type": ["string","null"],
                    "pattern": "^[0-9]{11}$"
                },
                "inscricaomunicipal": {
                    "required": false,
                    "type": ["string","null"],
                    "minLength": 1,
                    "maxLength": 15
                },
                "razaosocial": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 115
                },
                "endereco": {
                    "required": false,
                    "type": ["object","null"],
                    "properties": {
                        "endereco": {
                            "required": true,
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 125
                        },
                        "numero": {
                            "required": true,
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 10
                        },
                        "complemento": {
                            "required": false,
                            "type": ["string","null"],
                            "minLength": 1,
                            "maxLength": 60
                        },
                        "bairro": {
                            "required": true,
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 60
                        },
                        "codigomunicipio": {
                            "required": true,
                            "type": "integer",
                            "pattern": "^[0-9]{7}$"
                        },
                        "uf": {
                            "required": true,
                            "type": "string",
                            "maxLength": 2
                        },
                        "cep": {
                            "required": true,
                            "type": "integer",
                            "pattern": "^[0-9]{8}$"
                        }
                    }
                }
            }
        },
        "servico": {
            "required": true,
            "type": "object",
            "properties": {
                "itemlistaservico": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 5
                },
                "codigotributacaomunicipio": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 20
                },
                "discriminacao": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                },
                "codigomunicipio": {
                    "required": true,
                    "type": "integer",
                    "pattern": "^[0-9]{7}$"
                },
                "valores": {
                    "required": true,
                    "type": "object",
                    "properties": {
                        "valorservicos": {
                            "required": true,
                            "type": "number"
                        },
                        "valordeducoes": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorpis": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorcofins": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorinss": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorir": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorcsll": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "issretido": {
                            "required": true,
                            "type": "integer",
                            "pattern": "^[1-2]{1}$"
                        },
                        "valoriss": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorissretido": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "outrasretencoes": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "basecalculo": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "aliquota": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "valorliquidonfse": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "descontoincondicionado": {
                            "required": false,
                            "type": ["number", "null"]
                        },
                        "descontocondicionado": {
                            "required": false,
                            "type": ["number", "null"]
                        }
                    }
                }
            }
        },
        "intermediarioservico": {
            "required": false,
            "type": ["object","null"],
            "properties": {
                "razaosocial": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 115
                },
                "cnpj": {
                    "required": false,
                    "type": ["string","null"],
                    "pattern": "^[0-9]{14}$"
                },
                "cpf": {
                    "required": false,
                    "type": ["string","null"],
                    "pattern": "^[0-9]{11}$"
                },
                "inscricaomunicipal": {
                    "required": false,
                    "type": ["string","null"],
                    "minLength": 1,
                    "maxLength": 15
                }
            }
        },
        "construcaocivil": {
            "required": false,
            "type": ["object","null"],
            "properties": {
                "codigoobra": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 15
                },
                "art": {
                    "required": true,
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 15
                }
            }
        },
        "orgaogerador": {
            "required": false,
            "type": ["object","null"],
            "properties": {
                "codigomunicipio": {
                    "required": true,
                    "type": "integer",
                    "pattern": "^[0-9]{7}$"
                },
                "uf": {
                    "required": true,
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2
                }
            }
        }
    }
}