def __get_merged_api_info(self, services):
base_paths = sorted(set(s.api_info.base_path for s in services))<EOL>if len(base_paths) != <NUM_LIT:1>:<EOL><INDENT>raise api_exceptions.ApiConfigurationError(<EOL>'<STR_LIT>'.format(base_paths))<EOL><DEDENT>names_versions = sorted(set(<EOL>(s.api_info.name, s.api_info.api_version) for s in services))<EOL>if len(names_versions) != <NUM_LIT:1>:<EOL><INDENT>raise api_exceptions.ApiConfigurationError(<EOL>'<STR_LIT>'.format(names_versions))<EOL><DEDENT>return services[<NUM_LIT:0>].api_info<EOL>
Builds a description of an API.

        Args:
          services: List of protorpc.remote.Service instances implementing an
            api/version.

        Returns:
          The _ApiInfo object to use for the API that the given services implement.