chromium/tools/json_schema_compiler/test/simple_api.json

[
  {
    "namespace": "simple_api",
    "description": "This is a simple API.",
    "types": [
      {
        "id": "TestEnum",
        "type": "string",
        "enum": ["one", "two", "three"]
      },
      {
        "id": "3D",
        "type": "string",
        "enum": ["yes", "no"]
      },
      {
        "id": "TestType",
        "type": "object",
        "properties": {
          "string": {
            "type": "string",
            "description": "Some string."
          },
          "boolean": {
            "type": "boolean",
            "description": "Some boolean."
          },
          "number": {
            "type": "number",
            "description": "Some double."
          },
          "integer": {
            "type": "integer",
            "description": "Some integer."
          },
          "object": {
            "type": "object",
            "optional": true,
            "properties": {
              "foo": {
                "type": "integer"
              }
            }
          },
          "array": {
            "type": "array",
            "optional": true,
            "items": {
              "type": "string"
            }
          },
          "opt_external_enum": {
            "optional": true,
            "$ref": "enums.Enumeration"
          }
        }
      }
    ],
    "manifest_keys": {
      "key_string": {
        "type": "string",
        "description": "String key."
      },
      "key_ref": {
        "$ref": "TestType",
        "description": "Reference key"
      },
      "key_obj": {
        "type": "object",
        "optional": true,
        "properties": {
          "obj_string": {
            "type": "string"
          },
          "obj_bool": {
            "type": "boolean"
          },
          "obj_optional_enum_array": {
            "optional": true,
            "type": "array",
            "items": {
              "$ref": "enums.Enumeration"
            }
          }
        }
      },
      "key_enum": {
        "$ref": "TestEnum"
      },
      "key_enum_array": {
        "type": "array",
        "items": {
          "$ref": "TestEnum"
        }
      },
      "3d_key": {
        "optional": true,
        "$ref": "3D"
      }
    },
    "functions": [
      {
        "name": "incrementInteger",
        "type": "function",
        "description": "Increments the given integer.",
        "parameters": [
          {
            "name": "num",
            "type": "integer"
          }
        ],
        "returns_async": {
          "name": "callback",
          "parameters": [
            {
              "name": "result",
              "type": "integer",
              "description": "The incremented value."
            }
          ]
        }
      },
      {
        "name": "optionalString",
        "type": "function",
        "description": "Takes a string. Or not.",
        "parameters": [
          {
            "name": "str",
            "type": "string",
            "optional": true
          }
        ],
        "returns_async": {
          "name": "callback",
          "parameters": []
        }
      },
      {
        "name": "optionalBeforeRequired",
        "type": "function",
        "description": "Takes an optional parameter followed by a required one.",
        "parameters": [
          {
            "name": "first",
            "type": "string",
            "optional": true
          },
          {
            "name": "second",
            "type": "string"
          }
        ],
        "returns_async": {
          "name": "callback",
          "parameters": []
        }
      },
      {
        "name": "requiredFunctionParameter",
        "type": "function",
        "description": "Takes a required function parameter which is not a trailing callback.",
        "parameters": [
          {
            "name": "functionParameter",
            "type": "function",
            "parameters": []
          },
          {
            "name": "second",
            "type": "string"
          }
        ]
      },
      {
        "name": "optionalCallbackParams",
        "type": "function",
        "description": "Gives back a string. Or not.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "parameters": [
            {
              "name": "result",
              "$ref": "TestType",
              "description": "True if the extension has the specified permissions."
            }
          ]
        }
      },
      {
        "name": "getTestType",
        "type": "function",
        "description": "Return a TestType.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "parameters": [
            {
              "name": "result",
              "$ref": "TestType",
              "description": "A TestType."
            }
          ]
        }
      }
    ],
    "events": [
      {
        "name": "onIntegerFired",
        "type": "function",
        "description": "Fired when an integer is ready.",
        "parameters": [
          {
            "name": "someInteger",
            "type": "integer"
          }
        ]
      },
      {
        "name": "onStringFired",
        "type": "function",
        "description": "Fired when a string is ready.",
        "parameters": [
          {
            "name": "someString",
            "type": "string"
          }
        ]
      },
      {
        "name": "onTestTypeFired",
        "type": "function",
        "description": "Fired when a TestType is ready.",
        "parameters": [
          {
            "name": "someTestType",
            "$ref": "TestType"
          }
        ]
      }
    ]
  }
]