separate content source API spec from internal mappings