{
   "type":"object",
   "$schema":"http://json-schema.org/draft-03/schema",
   "id":"http://forgerock.org/schema/openidm/managed/user",
   "required":false,
   "properties":{
      "_id":{
         "type":"string",
         "required":false
      },
      "_rev":{
         "type":"string",
         "required":false
      },
      "accountStatus":{
         "type":"string",
         "required":true,
         "enum":[
            "active",
            "inactive",
            "deleted"
         ]
      },
      "accounts":{
         "type":"array",
         "required":false,
         "items":{
            "type":"string",
            "required":false
         }
      },
      "active":{
         "type":"boolean",
         "required":false
      },
      "address1":{
         "type":"string",
         "required":false
      },
      "address2":{
         "type":"string",
         "required":false
      },
      "city":{
         "type":"string",
         "required":false
      },
      "country":{
         "type":"string",
         "required":false
      },
      "delegates":{
         "type":"array",
         "id":"http://jsonschema.net/delegates",
         "required":false,
         "items":{
            "type":"object",
            "id":"http://jsonschema.net/delegates/0",
            "required":false,
            "properties":{
               "endDate":{
                  "type":"string",
                  "required":true,
                  "pattern":"^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)T(\\d\\d):(\\d\\d):(\\d\\d).(\\d\\d\\d)Z$"
               },
               "startDate":{
                  "type":"string",
                  "required":true,
                  "pattern":"^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)T(\\d\\d):(\\d\\d):(\\d\\d).(\\d\\d\\d)Z$"
               },
               "to":{
                  "type":"string",
                  "required":true
               },
               "type":{
                  "type":"string",
                  "required":false
               }
            }
         }
      },
      "department":{
         "type":"string",
         "required":false
      },
      "email":{
         "type":"string",
         "required":true
      },
      "employeeNumber":{
         "type":"string",
         "required":true
      },
      "familyName":{
         "type":"string",
         "required":true
      }, 
	"displayName":{
         "type":"string",
         "required":true
      },
      "givenName":{
         "type":"string",
         "required":false
      },
      "lastPasswordAttempt":{
         "type":"string",
         "required":false
      },
      "lastPasswordSet":{
         "type":"string",
         "required":false
      },
      "manager":{
         "type":"object",
         "required":false,
         "properties":{
            "$ref":{
               "type":"string",
               "required":false
            },
            "displayName":{
               "type":"string",
               "required":true
            },
            "managerId":{
               "type":"string",
               "required":true
            }
         }
      },
      "passwordAttempts":{
         "type":"string",
         "required":false
      },
      "passwordReminder":{
         "type":"object",
         "required":false,
         "properties":{
            "task-completed":{
               "type":"string",
               "required":false
            },
            "task-started":{
               "type":"string",
               "required":false
            }
         }
      },
      "password":{
         "type":"object",
         "required":false,
         "properties":{
            "$crypto":{
               "type":"object",
               "required":true,
               "properties":{
                  "type":{
                     "type":"string",
                     "required":true
                  },
                  "value":{
                     "type":"object",
                     "required":true,
                     "properties":{
                        "cipher":{
                           "type":"string",
                           "required":true
                        },
                        "data":{
                           "type":"string",
                           "required":true
                        },
                        "iv":{
                           "type":"string",
                           "required":true
                        },
                        "key":{
                           "type":"string",
                           "required":true
                        }
                     }
                  }
               }
            }
         }
      },
      "phoneNumber":{
         "type":"string",
         "required":false
      },
      "postalCode":{
         "type":"string",
         "required":false
      },
      "roles":{
         "type":"string",
         "required":false,
         "description":"This must be change to array"
      },
      "stateProvince":{
         "type":"string",
         "required":false
      },
      "sunrise":{
         "type":"object",
         "required":false,
         "properties":{
            "date":{
               "type":"string",
               "required":true,
               "pattern":"^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)T(\\d\\d):(\\d\\d):(\\d\\d).(\\d\\d\\d)Z$"
            },
            "task-completed":{
               "type":"string",
               "required":false
            },
            "task-started":{
               "type":"string",
               "required":false
            }
         }
      },
      "sunset":{
         "type":"object",
         "required":false,
         "properties":{
            "date":{
               "type":"string",
               "required":true,
               "pattern":"^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)T(\\d\\d):(\\d\\d):(\\d\\d).(\\d\\d\\d)Z$",
               "description":"See iplanet-am-user-account-life : 9999/12/31 12:59:00 "
            },
            "task-completed":{
               "type":"string",
               "required":false
            },
            "task-started":{
               "type":"string",
               "required":false
            }
         }
      },
      "title":{
         "type":"string",
         "required":false
      },
      "userName":{
         "type":"string",
         "required":true,
         "minLength":1
      },
      "userType":{
         "type":"string",
         "required":true,
         "enum":[
            "employee",
            "contractor"
         ]
      }
   }
}



//// Sample to validate at http://jsonschemalint.com 


{
   "_id":"user.0",
   "_rev":"0",
   "userName":"user.0",
   "email":"user.0@maildomain.net",
   "givenName":"Aaccf",
   "familyName":"Amar",
  "displayName" : "Aaccf Amar",
   "phoneNumber":"+16856226202",
   "roles":"openidm-admin,openidm-authorized,tasks-manager",
   "password":{
      "$crypto":{
         "value":{
            "data":"wfoQJ1XQnTa551pKTMjZ/Q==",
            "cipher":"AES/CBC/PKCS5Padding",
            "iv":"OXHdtVBURv6fAuRa88CDnA==",
            "key":"openidm-sym-default"
         },
         "type":"x-simple-encryption"
      }
   },
   "accountStatus":"active",
   "active":true,
   "lastPasswordSet":"2013-05-07T06:49:42.489Z",
   "passwordReminder":{
      "task-started":"????",
      "task-completed":"??????"
   },
   "postalCode":"50369",
   "stateProvince":"delaware",
   "passwordAttempts":"0",
   "lastPasswordAttempt":"Thu May 16 2013 13:20:06 GMT+0200 (CEST)",
   "address1":"01251 Chestnut Street",
   "address2":"Chestnut Street",
   "country":"us",
   "city":"Panama City",
   "sunset":{
      "date":"2013-05-07T06:49:42.489Z",
      "iplanet-am-user-account-life":"9999/12/31 23:59:00",
      "task-started":"????",
      "task-completed":"??????"
   },
   "sunrise":{
      "date":"2013-05-07T06:49:42.489Z",
      "task-started":"????",
      "task-completed":"??????"
   },
   "department":"Human Resources",
   "userType":"employee",
   "manager":"managed/user/ddoe",
   "title":"manager",
   "employeeNumber":"1",
   "accounts":[
      "Business",
      "Project"
   ],
   "delegates":[
      {
         "type":"organization",
         "to":"ddoe",
         "startDate":"2013-05-07T06:49:42.489Z",
         "endDate":"2013-05-07T06:49:42.489Z"
      }
   ]
}


