                      prefix=path_regex
                  )
                  api_endpoints.extend(nested_endpoints)
  
          return api_endpoints
  
      def get_path(self, path_regex):
          """
          Given a URL conf regex, return a URI template string.
          """
 
</s> remove         category = None
        for item in path.strip('/').split('/'):
            if '{' in item:
                break
            category = item

 </s> add  </s> remove         Return a tuple of strings, indicating the identity to use for a
        given endpoint. eg. ('users', 'list').
 </s> add         Return a description action string for the endpoint, eg. 'list'. </s> remove     def get_key(self, path, method, callback):
 </s> add     def get_action(self, path, method, callback): </s> remove         action = actions[method.lower()]

        if category:
            return (category, action)
        return (action,)
 </s> add         return actions[method.lower()]

    def get_categories(self, paths):
        categories = set()
        split_paths = set([
            tuple(path.split("{")[0].strip('/').split('/'))
            for path in paths
        ])

        while split_paths:
            for split_path in list(split_paths):
                if len(split_path) == 0:
                    split_paths.remove(split_path)
                elif len(split_path) == 1:
                    categories.add(split_path[0])
                    split_paths.remove(split_path)
                elif split_path[0] in categories:
                    split_paths.remove(split_path)

        return categories

    def get_category(self, categories, path):
        path_components = path.split("{")[0].strip('/').split('/')
        for path_component in path_components:
            if path_component in categories:
                return path_component
        return None
        return self.add_categories(api_endpoints)

    def add_categories(self, api_endpoints):
        """
        (path, method, action, callback) -> (path, method, category, action, callback)
        """
        # Determine the top level categories for the schema content,
        # based on the URLs of the endpoints. Eg `set(['users', 'organisations'])`
        paths = [endpoint[0] for endpoint in api_endpoints]
        categories = self.get_categories(paths)

        return [
            (path, method, self.get_category(categories, path), action, callback)
            for (path, method, action, callback) in api_endpoints
        ]
                      prefix=path_regex
                  )
                  api_endpoints.extend(nested_endpoints)
  
        return self.add_categories(api_endpoints)

    def add_categories(self, api_endpoints):
        """
        (path, method, action, callback) -> (path, method, category, action, callback)
        """
        # Determine the top level categories for the schema content,
        # based on the URLs of the endpoints. Eg `set(['users', 'organisations'])`
        paths = [endpoint[0] for endpoint in api_endpoints]
        categories = self.get_categories(paths)

        return [
            (path, method, self.get_category(categories, path), action, callback)
            for (path, method, action, callback) in api_endpoints
        ]
  
      def get_path(self, path_regex):
          """
          Given a URL conf regex, return a URI template string.
          """
keep keep keep keep replace keep keep keep keep keep
 Fix schema categories for custom list actions (#4386) 
rest_framework/schemas.py