code: def _extract_apis(self, resources):
          
  
          # Some properties like BinaryMediaTypes, Cors are set once on the resource but need to be applied to each API.
          # For Implicit APIs, which are defined on the Function resource, these properties
          # are defined on a AWS::Serverless::Api resource with logical ID "ServerlessRestApi". Therefore, no matter
          # if it is an implicit API or an explicit API, there is a corresponding resource of type AWS::Serverless::Api
          # that contains these additional configurations.
          #
          # We use this assumption in the following loop to collect information from resources of type
          # AWS::Serverless::Api. We also extract API from Serverless::Function resource and add them to the
          # corresponding Serverless::Api resource. This is all done using the ``collector``.
  
          collector = ApiCollector()
  
          for logical_id, resource in resources.items():
  
              resource_type = resource.get(SamApiProvider._TYPE)
  
              if resource_type == SamApiProvider._SERVERLESS_FUNCTION:
                  self._extract_apis_from_function(logical_id, resource, collector)
  
              if resource_type == SamApiProvider._SERVERLESS_API:
                  self._extract_from_serverless_api(logical_id, resource, collector)
  
          apis = SamApiProvider._merge_apis(collector)
          return self._normalize_apis(apis)
docs: Extract all Implicit Apis (Apis defined through Serverless Function with an Api Event
  
          :param dict resources: Dictionary of SAM/CloudFormation resources
          :return: List of nametuple Api