(def IntOrStr (s/conditional str? s/Str :else s/Int))
There are a few examples of conditional https://github.com/plumatic/schema. There are some things like both and either that are deprecated in favor of conditional.
both
either