{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/speakeasy-generation-config-file/_shared/latest--java.schema.json",
  "title": "java Configuration Schema",
  "description": "Schema for configuration specific to a java SDK",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/speakeasy-api/sdk-gen-config/main/schemas/languages/java.schema.json",
    "sourceSha256": "3b56c9b19fb7c5af659ba52b2da2b30e3f37074465ba8c762f29eb9c7eb9b862"
  },
  "type": "object",
  "properties": {
    "artifactID": {
      "description": "The artifactID to use for namespacing the package. This is usually the name of your project. If publishing is enabled, it will also be used as the artifactId (e.g. com.your-org.<artifactId>).",
      "pattern": "^[\\w0-9\\/._-]+$",
      "type": "string"
    },
    "clientServerStatusCodesAsErrors": {
      "description": "Whether to treat 4xx and 5xx status codes as errors.",
      "type": "boolean"
    },
    "companyEmail": {
      "description": "A support email address for your company. Sets metadata required by Maven.",
      "type": "string"
    },
    "companyName": {
      "description": "The name of your company. Sets metadata required by Maven.",
      "type": "string"
    },
    "companyURL": {
      "description": "Your company's homepage URL. Sets metadata required by Maven.",
      "type": "string"
    },
    "defaultErrorName": {
      "description": "The name of the default exception that is thrown when an API error occurs.",
      "pattern": "^[A-Z][a-zA-Z0-9]*$",
      "type": "string"
    },
    "flattenGlobalSecurity": {
      "description": "Flatten the global security configuration if there is only a single option in the spec",
      "type": "boolean"
    },
    "githubURL": {
      "description": "The github URL where the artifact is hosted. Sets metadata required by Maven.",
      "pattern": "github\\.com\\/[a-zA-z0-9_-]+?\\/.+",
      "type": "string"
    },
    "groupID": {
      "description": "The groupID to use for namespacing the package. This is usually the reversed domain name of your organization. If publishing is enabled, it will also be used as the artifact's groupId (e.g. <groupId>.my-artifact).",
      "pattern": "^\\w[\\w0-9.\\-_]*$",
      "type": "string"
    },
    "inputModelSuffix": {
      "description": "The suffix to add to models with writeOnly fields that are created as input models",
      "pattern": "^[\\w0-9.\\-_]+$",
      "type": "string"
    },
    "maxMethodParams": {
      "description": "The maximum number of parameters a method can have before the resulting SDK endpoint is no longer 'flattened' and an input object is created instead. 0 will use input objects always. <https://www.speakeasy.com/docs/customize-sdks/methods>",
      "pattern": "^\\d+$",
      "type": "number"
    },
    "ossrhURL": {
      "description": "The URL of the staging repository to publish the SDK artifact to."
    },
    "outputModelSuffix": {
      "description": "The suffix to add to models with writeOnly fields that are created as input models",
      "pattern": "^[\\w0-9.\\-_]+$",
      "type": "string"
    },
    "projectName": {
      "description": "Assigns Gradle rootProject.name, which gives a name to the Gradle build. <https://docs.gradle.org/current/userguide/multi_project_builds.html#naming_recommendations>",
      "pattern": "^[\\w0-9.\\-_]+$",
      "type": "string"
    },
    "templateVersion": {
      "description": "The template version to use",
      "pattern": "v2",
      "type": "string"
    },
    "version": {
      "description": "The current version of the SDK",
      "pattern": "^[\\w0-9.\\-_]+$",
      "type": "string"
    }
  },
  "required": [
    "projectName",
    "groupID",
    "version",
    "artifactID"
  ],
  "additionalProperties": true
}
