fix: default to json contentType in new hooks