 
 (declare Organization Bill Vote Person Event Post Jurisdiction)
 
+(def Image (s/either sc/URI (s/enum "") sc/URI-Reference s/Str))
+
 (def Organization
   {(s/required-key "name") s/Str
    (s/required-key "id") (Id "organization")
 
-   (s/optional-key "image") s/Str
-   (s/optional-key "classification") s/Str
+   (s/optional-key "image") Image
+   (s/optional-key "classification")
+   (s/enum "party" "committee" "lower" "upper" "legislature" "executive")
    (s/optional-key "jurisdiction") (s/maybe (s/recursive #'Jurisdiction))
    (s/optional-key "parent") (s/maybe (s/recursive #'Organization))})
 

   (s/optional-key "classification")
   [(s/enum "bill" "resolution" "concurrent resolution" "joint resolution"
            "memorial" "proposed bill" "contract" "appropriation"
            "constitutional amendment" "nomination" "appointment" "commemoration")]})

(def Vote
  {(s/required-key "id") (Id "vote")


(def Event
  {(s/required-key "description") s/Str
   (s/required-key "timezone") s/Str ;;todo check for timezones?
   (s/required-key "name") s/Str
   (s/required-key "start_time") Date

   (s/required-key "classification")
   (s/enum "committee-meeting" "hearings" "floor_time" "redistricting" "special"
