All Downloads are FREE. Search and download functionalities are using the official Maven repository.

schema.codegen-config.schema.json Maven / Gradle / Ivy

There is a newer version: 0.113
Show newest version
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/pwall567/json-kotlin-schema-codegen/main/src/main/resources/schema/codegen-config.schema.json",
  "title": "CodegenConfig",
  "description": "Code Generation Configuration File",
  "$defs": {
    "ClassName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    },
    "QualifiedClassName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    }
  },
  "type": "object",
  "properties": {
    "title": {
      "$comment": "For documentation purposes only",
      "type": "string"
    },
    "version": {
      "$comment": "For documentation purposes only",
      "type": "string"
    },
    "description": {
      "$comment": "For documentation purposes only",
      "type": "string"
    },
    "packageName": {
      "type": [ "string", "null" ],
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^[a-z][a-z0-9]*(\\.[a-z][a-z0-9]*)*$"
    },
    "markerInterface": {
      "type": [ "string", "null" ],
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^([a-z][a-z0-9]*\\.)*[A-Za-z][A-Za-z0-9]*$"
    },
    "generatorComment": {
      "type": [ "string", "null" ],
      "minLength": 1
    },
    "targetLanguage": {
      "type": "string",
      "enum": [ "kotlin", "java", "typescript" ]
    },
    "nestedClassNameOption": {
      "type": "string",
      "enum": [ "property", "refSchema" ]
    },
    "additionalPropertiesOption": {
      "type": "string",
      "enum": [ "ignore", "strict" ]
    },
    "examplesValidationOption": {
      "type": "string",
      "enum": [ "none", "warn", "block" ]
    },
    "defaultValidationOption": {
      "type": "string",
      "enum": [ "none", "warn", "block" ]
    },
    "derivePackageFromStructure": {
      "type": "boolean"
    },
    "extensibleEnumKeyword": {
      "type": "string",
      "pattern": "^x(-[A-Za-z0-9]+)+$"
    },
    "extensionValidations": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": {
          "$ref": "https://json-schema.org/draft/2019-09/meta/applicator"
        }
      }
    },
    "nonStandardFormat": {
      "type": "object",
      "additionalProperties": {
        "$ref": "https://json-schema.org/draft/2019-09/meta/applicator"
      }
    },
    "decimalClassName": {
      "$ref": "#/$defs/QualifiedClassName"
    },
    "classNames": {
      "type": "object",
      "patternProperties": {
        "^[a-zA-Z0-9%:./_~-]+:$": {
          "$ref": "#/$defs/QualifiedClassName"
        }
      }
    },
    "customClasses": {
      "type": "object",
      "properties": {
        "format": {
          "type": "object",
          "patternProperties": {
            "^[A-Za-z][A-Za-z0-9]*(-[A-Za-z0-9]+)*$": {
              "$ref": "#/$defs/ClassName"
            }
          },
          "additionalProperties": false
        },
        "uri": {
          "type": "object",
          "patternProperties": {
            "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?": {
              "$comment": "The URI pattern above is taken from https://www.rfc-editor.org/rfc/rfc3986#appendix-B",
              "$ref": "#/$defs/ClassName"
            }
          },
          "additionalProperties": false
        },
        "extension": {
          "type": "object",
          "patternProperties": {
            "^[A-Za-z][A-Za-z0-9]*(-[A-Za-z0-9]+)*$": {
              "type": "object",
              "patternProperties": {
                "^[A-Za-z][A-Za-z0-9]*(-[A-Za-z0-9]+)*$": {
                  "$ref": "#/$defs/ClassName"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      }
    },
    "annotations": {
      "type": "object",
      "properties": {
        "classes": {
          "type": "object",
          "patternProperties": {
            "^([a-z][a-z0-9]*\\.)*[A-Za-z][A-Za-z0-9]*$": {
              "type": [ "string", "null" ]
            }
          },
          "additionalProperties": false
        },
        "fields": {
          "type": "object",
          "patternProperties": {
            "^([a-z][a-z0-9]*\\.)*[A-Za-z][A-Za-z0-9]*$": {
              "type": [ "string", "null" ]
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "companionObject": {
      "type": [ "boolean", "array" ],
      "items": {
        "type": "string"
      }
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy