    :format ((clojure.set/map-invert doc-format) (.getFormat opts))
    :graph (.getGraph opts)
    :language (.getLanguage opts)
+   :locale (.getLocale opts)
    :namespace (.getNamespace opts)
    :permissions (mapv #(hash-map (.getRole %)
                                  (keyword (.toString (.getCapability %))))

  [options]
  (let [cco (ContentCreateOptions.)]
    (when-not (every? valid-content-creation-options (keys options))
      ;; TODO switch to spec
      (throw (IllegalArgumentException. "Invalid content creation option. Keywords passed in `options` must be a subset of `valid-content-creation-options`.")))
    (let [xs [[:buffer-size #(.setBufferSize cco %)]
              [:collections #(.setCollections cco (into-array String %))]

              [:language    #(.setLanguage cco %)]
              [:locale      #(.setLocale cco %)]
              [:namespace   #(.setNamespace cco %)]
              [:permissions #(.setPermissions cco (make-content-permissions %))]
              [:placement-keys      #(.setPlaceKeys cco %)]
              [:quality             #(.setQuality cco %)]
              [:repair-level        #(.setRepairLevel cco (doc-repair-level %))]
              [:resolve-buffer-size #(.setResolveBufferSize cco %)]
              [:resolve-entities    #(.setResolveEntities cco %)]
              [:temporal-collection #(.setTemporalCollection cco %)]]]
      (doseq [[k fn] xs]
        (when-let [x (k options)]
          (fn x))))
    cco))

(defn describe-content-creation-options
