Schema

You can obtain the schema for a resource in the request parameter: ?format=json&schema=true. This way of requesting the schema is only available when requesting an Add form or when viewing a resource.

A specific URI is also available for obtaining the schema of a resource:

GET /api/(str:model_type)/(str:model_name)/schema/?format=json&hierarchy=pkid

The JSON schema uses the IETF draft-zyp-json-schema-03 (http://tools.ietf.org/html/draft-zyp-json-schema-03 and https://github.com/json-schema/json-schema)

The schema provides:

  • the properties of a field for each object in the schema describing the data of a resource:
    • $schema: The schema URI, currently http://json-schema.org/draft-03/schema.
    • title: This is the default field name.
    • required: The property and value true value is a property if the field is mandatory
    • type: The data type of the field. See the definitions and conventions in use. If the data type is:
      • object, then the object itself has a schema
      • array, then it has the property items
    • format: if the type is string, a further format of the string can be selected.
    • choices: In the case that the data element takes a value from a specified list of values.
    • target: where a resource is linked to another resource, this resource is indicated as the target.
    • target_attr: the specific attribute of the target.
    • attr_props: an object containing the list of properties of each attribute.
    • minItems: minimum number if the data type is an array.
    • maxItems: maximum number if the data type is an array.
    • items: the specified items if the data type is an array.
    • documentation and description: text content to document and describe the object.
    • name: name of the resource. [a-zA-Z_] characters are allowed
    • default: default value, if specified.
    • valid_re: the regular expression that a string data type should adhere to.

Example

Refer to the example data as in Data. The schema for the example data provides properties of each element:

schema: {
 $schema: "http://json-schema.org/draft-03/schema"
 type: "object"
 properties: {
 host: {
         required: true
         type: "string"
         title: "Host Name"
 }
 username: {
          required: true
          type: "string"
          title: "Admin Username"
 }
 password: {
          required: true
          type: "string"
          title: "Admin Password"
 }
 version: {
          target: "/api/data/CallManagerVersion/choices/
            ?hierarchy={hierarchy}&field=version&format=json"
          format: "uri"
          title: "Version"
          choices: [ ]
          target_attr: "version"
          type: "string"
 }
 port: {
          type: "string"
          title: "Port"
 }
 import: {
          type: "boolean"
          title: "Immediate Import"
 }
 data_sync: {
          target: "/api/data/DataSync/choices/
            ?hierarchy={hierarchy}&field=name&format=json"
          title: "Data Sync"
          format: "uri"
          choices: [ ]
          target_attr: "name"
          type: "string"
 }
 }
}