def METHOD_NAME(
    self, organization_ids: List[str] = None, media_entries_columns=None
) -> pd.DataFrame:
    """
    Run method. Data for different endpoints are retrieved and combined.
    Finally, a final data frame is created containing data for all organizations from the list.
    Args:
        organization_ids (List[str], optional): List of organization IDs. Defaults to None.
        media_entries_columns (List[str], optional): Columns to get from media entries. Defaults to None.
    Raises:
        ValueError: Value is raised if organization_id is not recognized.
    Returns:
        pd.DataFrame: Data frame containing all of the information for organization or list of organizations.
    """
    mediatool = Mediatool(credentials=self.mediatool_credentials)
    df_orgs = mediatool.get_organizations(self.mediatool_credentials["USER_ID"])
    list_of_dfs = []
    for organization_id in organization_ids:
        if organization_id in df_orgs["_id_organizations"].unique():
            logger.info(f"Downloading data for: {organization_id} ...")
            # extract data
            df_media_entries = mediatool.get_media_entries(
                organization_id=organization_id,
                columns=media_entries_columns,
            )
            df_camp = mediatool.get_campaigns(organization_id=organization_id)
            unique_vehicle_ids = df_media_entries["vehicleId"].unique()
            df_veh = mediatool.get_vehicles(vehicle_ids=unique_vehicle_ids)
            unique_media_type_ids = df_media_entries["mediaTypeId"].unique()
            df_m_types = mediatool.get_media_types(unique_media_type_ids)
            # join DFs
            df_merged_entries_orgs = self.join_dfs(
                df_left=df_media_entries,
                df_right=df_orgs,
                left_on="organizationId",
                right_on="_id_organizations",
                columns_from_right_df=[
                    "_id_organizations",
                    "name_organizations",
                    "abbreviation_organizations",
                ],
                how="left",
            )
            df_merged_campaigns = self.join_dfs(
                df_left=df_merged_entries_orgs,
                df_right=df_camp,
                left_on="campaignId",
                right_on="_id_campaigns",
                columns_from_right_df=[
                    "_id_campaigns",
                    "name_campaigns",
                    "conventionalName_campaigns",
                ],
                how="left",
            )
            df_merged_vehicles = self.join_dfs(
                df_left=df_merged_campaigns,
                df_right=df_veh,
                left_on="vehicleId",
                right_on="_id_vehicles",
                columns_from_right_df=["_id_vehicles", "name_vehicles"],
                how="left",
            )
            df_merged_media_types = self.join_dfs(
                df_left=df_merged_vehicles,
                df_right=df_m_types,
                left_on="mediaTypeId",
                right_on="_id_media_types",
                columns_from_right_df=["_id_media_types", "name_media_types"],
                how="left",
            )
            list_of_dfs.append(df_merged_media_types)
        else:
            raise ValueError(
                f"Organization - {organization_id} not found in organizations list."
            )
        df_final = pd.concat(list_of_dfs)
    return df_final