6 Appendix A: Full JSON Schema

 {
   "title" : "Proxy Trust",
   "type" : "object",
   "properties" :
   {
     "SerializedTrustCertificate" : {"type" : "string"}
   }
 }
  
 {
   "title" : "Proxy Trust Renewal",
   "type" : "object",
   "properties" :
   {
     "SerializedReplacementCertificate" : {"type" : "string"}
   }
 }
  
 {
   "title" : "Proxy Relying Party Trust",
   "type" : "object",
   "properties" :
   {
     "Identifier" : {"type" : "string"}
   }
 }
  
 {
   "title" : "Configuration",
   "type" : "object",
   "properties" :
   {
     "ServiceConfiguration" :
     {
       "type" : "object",
       "properties" :
       {
         "ServiceHostName" : {"type" : "string"},
         "HttpPort" : {"type" : "integer"},
         "HttpsPort" : {"type" : "integer"},
         "HttpsPortForUserTlsAuth" : {"type" : "integer"},
         "DeviceCertificateIssuers" :
         {
           "type" : "array",
           "items" : {"type" : "string"}
         },
         "ProxyTrustCertificateLifetime" : {"type" : "integer"},
         "DiscoveredUpnSuffixes" :
         {
           "type" : "array",
           "items" : {"type" : "string"}
         },
         "CustomUpnSuffixes" : 
         {
           "type" : "array",
           "items" : {"type" : "string"}
         },
         "ServiceHostNameForUserTlsAuth" : {"type" : "string"}
       }
     },
     "EndpointConfiguration" :
     {
       "type" : "array",
       "items" :
       {
         "type" : "object",
         "properties" :
         {
           "Path" : {"type" : "string"},
           "PortType" :
           {
             "enum" : [0, 1, 2]
           },
           "AuthenticationSchemes" :
           {
             "enum" : [8, 32768]
           },
           "ClientCertificateQueryMode" :
           {
             "enum" : [0, 1, 2]
           },
           "CertificateValidation" :
           {
             "enum" : [0, 1, 2]
           },
           "SupportsNtlm" : {"type" : "boolean"},
           "ServicePath" : {"type" : "string"},
           "ServicePortType" :
           {
             "enum" : [0, 1, 2]
           }
         }
       }
     },
     "FarmBehavior" : {"type" : "string"},
     "IgnoreTokenBinding" : {"type" : "boolean"}
     "UpdatedFarmBehaviorLevel" : {"type" : "integer"},
   } 
 }
  
 {
   "title" : "Relying Party Trust List",
   "type" : "object",
   "properties" :
   {
     "relyingPartyTrustListArray" :
     {
       "type" : "array",
       "items" :
       {
         "type" : "object",
         "properties" :
         {
           "objectIdentifier" : {"type" : "string"},
           "name" : {"type" : "string"},
           "publishedThroughProxy" : {"type" : "boolean"},
           "nonClaimsAware" : {"type" : "boolean"},
           "enabled" : {"type" : "boolean"}
         }
       }
     }
   }
 }
  
 {
   "title" : "Relying Party Trust",
   "type" : "object",
   "properties" :
   {
     "objectIdentifier" : {"type" : "string"},
     "name" : {"type" : "string"},
     "publishedThroughProxy" : {"type" : "boolean"},
     "nonClaimsAware" : {"type" : "boolean"},
     "enabled" : {"type" : "boolean"},
     "identifiers" : 
     {
       "type" : "array",
       "items" : {"type" : "string"}
     },
     "proxyTrustedEndpoints" :
     {
       "type" : "array",
       "items" : {"type" : "string"}
     },
     "proxyEndpointMappings" :
     {
       "type" : "array",
       "items" :
       {
         "type" : "object",
         "properties" :
         {
           "Key" : {"type" : "string"},
           "Value" : {"type" : "string"}
         }
       }
     }
   }
 }
  
  
 {
   "title" : "Relying Party Trust Publishing Settings",
   "type" : "object",
   "properties" :
   {
     "externalUrl" : {"type" : "string"},
     "internalUrl" : {"type" : "string"},
     "proxyTrustedEndpointUrl" : {"type" : "string"}
   }
 }
  
 {
   "title" : "Store Entry List",
   "type" : "object",
   "properties" :
   {
     "storeEntryListArray" :
     {
       "type" : "array",
       "items" : {"type" : "Store Entry"}
     }
   }
 }
  
 {
   "title" : "Store Entry",
   "type" : "object",
   "properties" :
   {
     "key" : {"type" : "string"},
     "version" : {"type" : "integer"},
     "value" : {"type" : "string"}
   }
 }
  
 {
   "title" : "Store Entry Key and Value",
   "type" : "object",
   "properties" :
   {
     "key" : {"type" : "string"},
     "value" : {"type" : "string"}
   }
 }
  
 {
   "title" : "Serialized Request with Certificate",
   "type" : "object",
   "properties" :
   {
     "Request" :
     {
       "type" : "object",
       "properties" :
       {
         "AcceptTypes" : {"type" : "string"},
         "Content" : [ <byte>, * ],
         "ContentEncoding" : {"type" : "string"},
         "ContentLength" : {"type" : "integer"},
         "ContentType" : {"type" : "string"},
         "Cookies" :
         {
           "type" : "object",
           "properties" :
           {
             "Name" : {"type" : "string"},
             "Value" : {"type" : "string"},
             "Path" : {"type" : "string"},
             "Domain" : {"type" : "string"},
             "Expires" : {"type" : "integer"},
             "Version" : {"type" : "integer"}
           }
         },
         "Headers" :
         {
           "type" : "array",
           "items" :
           {
             "type" : "object",
             "properties" :
             {
               "Name" : {"type" : "string"},
               "Value" : {"type" : "string"}
             }
           }
         },
         "HttpMethod" : {"type" : "string"},
         "RequestUri" : {"type" : "string"},
         "QueryString" : {"type" : "string"},
         "UserAgent" : {"type" : "string"},
         "UserHostAddress" : {"type" : "string"},
         "UserHostName" : {"type" : "string"},
         "UserLanguages" : {"type" : "string"}
       }
     },
     "SerializedClientCertificate" : {"type" : "string"},
     "CertificateUsage" :
     {
       "enum" : [1, 2]
     },
     "ErrorType" :
     {
       "enum" : [0, 1]
     },
     "ErrorCode" : {"type" : "integer"}
   }
 }
  
 {
   "title" : "Proxy Token",
   "type" : "object",
   "properties" :
   {
     "ver" : {"type" : "number"},
     "aud" : {"type" : "string"},
     "iat" : {"type" : "integer"},
     "exp" : {"type" : "integer"},
     "iss" : {"type" : "string"},
     "relyingpartytrustid" : {"type" : "string"},
     "deviceregid" : {"type" : "string"},
     "authinstant" : {"type" : "integer"},
     "authmethod" : {"type" : "string"},
     "upn" : {"type" : "string"}
   }
 }
  
  
 {
   "title" : "Combined Token",
   "type" : "object",
   "properties" :
   {
     "proxy_token" : {"type" : "Proxy Token"},
     "access_token" : {"type" : "string"}
   }
 }
 {
   "title" : "Proxy Token Wrapper",
   "type" : "object",
   "properties" :
   {
     "authToken" : {"type" : "Proxy Token"}
   }
 }
  
 {
   "title" : "Authentication Request",
   "type" : "object",
   "properties" :
   {
     "appRealm" : {"type" : " string"},
     "realm" : {"type" : " string"},
     "username" : {"type" : "string"},
     "password" : {"type" : "string"},
     "deviceCertificate" : {"type" : "string"},
     "userCertificate" : {"type" : "string"},
  
     "httpHeaders" :
     {
       "type" : "object",
       "properties" :
       {
         "Key" : {"type" : "string"},
         "Value" : {"type" : "string"}
       }
     }
  
   }
 }
  
 {
   "title" : "Error Response",
   "type" : "object",
   "properties" :
   {
     "id" : {"type" : "integer"},
     "message" : {"type" : "string"},
     "type" : {"type" : "string"}
   }
 }