             (throw (ex-info "The token should be provided only as a query parameter or in the json payload"
                             {:status 400
                              :token {:json-payload token
-                                     :query-parameter token-param}})))
+                                     :query-parameter token-param}
+                             :log-level :warn})))
         token (or token token-param)
         new-token-metadata (select-keys new-token-data sd/token-metadata-keys)
         new-user-metadata (select-keys new-token-metadata sd/user-metadata-keys)

                  authenticated-user)
        version-hash (get headers "if-match")]
    (when (str/blank? token)
      (throw (ex-info "Must provide the token" {:status 400})))
    (when (some #(= token %) waiter-hostnames)
      (throw (ex-info "Token name is reserved" {:status 403 :token token})))
    (when (empty? (select-keys new-token-data sd/token-user-editable-keys))
      (throw (ex-info (str "No parameters provided for " token) {:status 400})))
    (sd/validate-token token)
    (validate-service-description-fn new-service-parameter-template)
    (when-let [user-metadata-check (s/check sd/user-metadata-schema new-user-metadata)]
      (throw (ex-info "User metadata validation failed"
                      {:failed-check user-metadata-check :status 400 :token token})))
    (let [unknown-keys (-> new-token-data
                           keys
                           set

      (throw (ex-info (str "Couldn't find token " token)
                      {:headers {"etag" token-hash}
                       :status 404
                       :token token
                       :log-level :warn})))))

(defn- handle-post-token-request
  "Validates that the user is the creator of the token if it already exists.
