<commit_before>{
  "name": "apidoc generator",
  "description": "Documentation for an apidoc code generator API",
  "base_url": "http://www.apidoc.me",

  "info": {
    "contact": {
      "name": "<NAME>",
      "email": "<EMAIL>",
      "url": "http://twitter.com/mbryzek"
    },
    "license": {
      "name": "MIT",
      "url": "http://opensource.org/licenses/MIT"
    }
  },


  "imports": [
    { "uri": "http://www.apidoc.me/bryzek/apidoc-common/0.11.8/service.json" },
    { "uri": "http://www.apidoc.me/bryzek/apidoc-spec/0.11.8/service.json" }
  ],

  "info": {
    "contact": {
      "name": "<NAME>",
      "email": "<EMAIL>",
      "url": "http://twitter.com/mbryzek"
    },
    "license": {
      "name": "MIT",
      "url": "http://opensource.org/licenses/MIT"
    }
  },

  "models": {
    "generator": {
      "description": "The generator metadata.",
      "fields": [
        { "name": "key", "type": "string" },
        { "name": "name", "type": "string" },
        { "name": "language", "type": "string", "required": false, "description": "A comma separate list of the programming language(s) that this generator produces", "example": "scala" },
        { "name": "description", "type": "string", "required": false }
      ]
    },

    "file": {
      "description": "Represents a source file",
      "fields": [
        { "name": "name", "type": "string", "description": "The recommended name for the file.", "example": "BryzekApidocApiClient.scala" },
	{ "name": "dir", "type": "string", "description": "The recommended directory path for the file where appropriate.", "example": "com/bryzek/apidoc", "required": false },
        { "name": "contents", "type": "string", "description": "The actual source code." }
      ]
    },

    "invocation": {
      "description": "The result of invoking a generator.",
      "fields": [
        { "name": "source", "type": "string", "description": "The actual source code.", "deprecation": { "description": "Use files instead" } },
        { "name": "files", "type": "[file]", "description": "A collection of source files" }
      ]
    },

    "invocation_form": {
      "description": "The invocation form is the payload send to the code generators when requesting generation of client code.",
      "fields": [
        { "name": "service", "type": "com.bryzek.apidoc.spec.v0.models.service" },
        { "name": "user_agent", "type": "string", "required": "false" },
        { "name": "attributes", "type": "[attribute]", "required": false }
      ]
    },

    "attribute": {
      "description": "An attribute represents a key/value pair that is optionally used to provide additional instructions / data to the code generator. An example could be an attribute to specify the root import path for a go client..",
      "fields": [
        { "name": "name", "type": "string" },
        { "name": "value", "type": "string" }
      ]
    },

    "healthcheck": {
      "fields": [
        { "name": "status", "type": "string", "example": "healthy" }
      ]
    },

    "error": {
      "fields": [
        { "name": "code", "type": "string", "description": "Machine readable code for this specific error message" },
        { "name": "message", "type": "string", "description": "Description of the error" }<commit_msg>Add attributes to generator spec<commit_after>{
  "name": "apidoc generator",
  "description": "Documentation for an apidoc code generator API",
  "base_url": "http://www.apidoc.me",

  "info": {
    "contact": {
      "name": "<NAME>",
      "email": "<EMAIL>",
      "url": "http://twitter.com/mbryzek"
    },
    "license": {
      "name": "MIT",
      "url": "http://opensource.org/licenses/MIT"
    }
  },


  "imports": [
    { "uri": "http://www.apidoc.me/bryzek/apidoc-common/0.11.8/service.json" },
    { "uri": "http://www.apidoc.me/bryzek/apidoc-spec/0.11.8/service.json" }
  ],

  "info": {
    "contact": {
      "name": "<NAME>",
      "email": "<EMAIL>",
      "url": "http://twitter.com/mbryzek"
    },
    "license": {
      "name": "MIT",
      "url": "http://opensource.org/licenses/MIT"
    }
  },

  "models": {
    "generator": {
      "description": "The generator metadata.",
      "fields": [
        { "name": "key", "type": "string" },
        { "name": "name", "type": "string" },
        { "name": "language", "type": "string", "required": false, "description": "A comma separate list of the programming language(s) that this generator produces", "example": "scala" },
        { "name": "description", "type": "string", "required": false },
        { "name": "attributes", "type": "[string]", "required": "false", "description": "The list of attributes that this code generator can use. You can find the full list of available attributes and their descriptions at http://apidoc.me/doc/attributes" }
      ]
    },

    "file": {
      "description": "Represents a source file",
      "fields": [
        { "name": "name", "type": "string", "description": "The recommended name for the file.", "example": "BryzekApidocApiClient.scala" },
	{ "name": "dir", "type": "string", "description": "The recommended directory path for the file where appropriate.", "example": "com/bryzek/apidoc", "required": false },
        { "name": "contents", "type": "string", "description": "The actual source code." }
      ]
    },

    "invocation": {
      "description": "The result of invoking a generator.",
      "fields": [
        { "name": "source", "type": "string", "description": "The actual source code.", "deprecation": { "description": "Use files instead" } },
        { "name": "files", "type": "[file]", "description": "A collection of source files" }
      ]
    },

    "invocation_form": {
      "description": "The invocation form is the payload send to the code generators when requesting generation of client code.",
      "fields": [
        { "name": "service", "type": "com.bryzek.apidoc.spec.v0.models.service" },
        { "name": "user_agent", "type": "string", "required": false },
        { "name": "attributes", "type": "[attribute]", "required": false }
      ]
    },

    "attribute": {
      "description": "An attribute represents a key/value pair that is optionally used to provide additional instructions / data to the code generator. An example could be an attribute to specify the root import path for a go client..",
      "fields": [
        { "name": "name", "type": "string" },
        { "name": "value", "type": "string" }
      ]
    },

    "healthcheck": {
      "fields": [
        { "name": "status", "type": "string", "example": "healthy" }
      ]
    },

    "error": {
      "fields": [
        { "name": "code", "type": "string", "description": "Machine readable code for this specific error message" },
        { "name": "message", "type": "string", "description": "Description of the error" }
{'fraction_non_alphanumeric': 0.19915254237288135, 'fraction_numerical': 0.002630040911747516, 'mean_word_length': 2.9114285714285715, 'pattern_counts': {'":': 194, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6784654', 'n_tokens_mistral': 2135, 'n_tokens_neox': 2071, 'n_words': 597}