code: def _get_resources_to_iterate(self, sam_template, macro_resolver):
          
  
          functions = []
          apis = []
          others = []
          resources = sam_template["Resources"]
  
          for logicalId, resource in resources.items():
  
              data = (logicalId, resource)
  
              # Skip over the resource if it is not a SAM defined Resource
              if not macro_resolver.can_resolve(resource):
                  continue
              elif resource["Type"] == "AWS::Serverless::Function":
                  functions.append(data)
              elif resource["Type"] == "AWS::Serverless::Api":
                  apis.append(data)
              else:
                  others.append(data)
  
          return functions + apis + others
docs: Returns a list of resources to iterate, order them based on the following order:
  
              1. AWS::Serverless::Function - because API Events need to modify the corresponding Serverless::Api resource.
              2. AWS::Serverless::Api
              3. Anything else
  
          This is necessary because a Function resource with API Events will modify the API resource's Swagger JSON.
          Therefore API resource needs to be parsed only after all the Swagger modifications are complete.
  
          :param dict sam_template: SAM template
          :param macro_resolver: Resolver that knows if a resource can be processed or not
          :return list: List containing tuple of (logicalId, resource_dict) in the order of processing