This document discusses the JSON domain objects as returned by the REST API. Domains specify the set of valid values for a field.
The following domain objects are discussed here:
Range domain specifies a range of valid values for a field. 
The type property for range domains is range.
{
"type" : "range",
"name" : "<domainName>",
"range" : [ <minValue>, <maxValue> ]
}
{
  "type": "range",
  "name": "Measured Length", 
  "range": [1,10000]
}
Coded value domain specifies an explicit set of valid values for a field. 
Each valid value is assigned a unique name. 
The type property for coded value domains is codedValue.
{
"type" : "codedValue",
"name" : "<domainName>",
"codedValues" : 
[
  { "name" : "<codeName1>", "code" : <code1> },
  { "name" : "<codeName2>", "code" : <code2> }
]
}
{
 "type": "codedValue",
 "name": "Material",
 "codedValues": 
 [
     {
      "name": "Aluminum",
      "code": "AL"
     },
     {
      "name": "Copper",
      "code": "CU"
     },
     {
      "name": "Steel",
      "code": "STEL"
     },
     {
      "name": "Not Applicable",
      "code": "NA"
     }
  ]
}
Inherited domains apply to domains on sub-types. It implies that the domain for a field at the subtype level is the same as the domain for the field at the layer level.
{
"type" : "inherited"
}
{
"type" : "inherited"
}