/*
* Copyright (C) 2011 Artur Suilin
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ru.metrika4j;
import ru.metrika4j.entity.Counter;
import ru.metrika4j.entity.CounterDetails;
/**
* API Яндекс.Метрики.<br>
* Непосредственно в этом интерфейсе есть методы для работы со счетчиками (создание, удаление,
* etc) и отчетами. Для работы с
* другими сущностями (фильтры, цели, etc), надо получить интерфейс для работы с этим видом сущностей, с помощью метода
* getXxxApi, например для целей - метод {@link #getGoalApi()} .
* <p>Экземпляр API для использования в приложении создаётся с помощью {@link ApiFactory}</p>
*
* @author Artur Suilin
*/
public interface MetrikaApi {
/**
* Возвращает список всех счетчиков, доступных в текущем аккаунте Я.Метрики
*
* @param details Требуемая детализация данных каждого счетчика
* @see <a href="http://api.yandex.ru/metrika/doc/ref/reference/get-counter-list.xml">Справочник API</a>
*/
Counter[] getCounters(CounterDetails... details);
/**
* Возвращает счетчик по его идентификатору
*
* @param details Требуемая детализация данных счетчика
* @see <a href="http://api.yandex.ru/metrika/doc/ref/reference/get-counter.xml">Справочник API</a>
*/
Counter getCounter(int id, CounterDetails... details);
/**
* Возвращает построитель для заданного отчёта
*
* @param report Отчёт
* @param counterId идентификатор счетчика
*/
ReportBuilder makeReportBuilder(Reports report, int counterId);
/**
* Создаёт новый счетчик в аккаунте текущего пользователя
*
* @param newCounter Объект с заполненными полями, представляющий новый счетчик
* @return Созданный счетчик. Это объект с теми же полями, что у входного newCounter,
* плюс поля, автоматически выставленные Метрикой
* (например id).
* @see <a href="http://api.yandex.ru/metrika/doc/ref/reference/add-counter.xml">Справочник API</a>
*/
Counter createCounter(Counter newCounter);
/**
* Изменяет счетчик в аккаунте текущего пользователя
*
* @param counter Объект с заполненными полями, представляющий счетчик, который должен быть изменён
* @return Измененный счетчик. Это объект с теми же полями, что у входного счетчика,
* плюс Метрика может сама выставить
* значения некоторых полей по умолчанию.
* @see <a href="http://api.yandex.ru/metrika/doc/ref/reference/edit-counter.xml">Справочник API</a>
*/
Counter updateCounter(Counter counter);
/**
* Удаляет счетчик с заданным идентификатором
*
* @see <a href="http://api.yandex.ru/metrika/doc/ref/reference/delete-counter.xml">Справочник API</a>
*/
void deleteCounter(int counterId);
GoalApi getGoalApi();
FilterApi getFilterApi();
OperationApi getOperationApi();
GrantApi getGrantApi();
DelegateApi getDelegateApi();
AccountApi getAccountApi();
}