SlideShare a Scribd company logo
1 of 32
Download to read offline
Target.Mail.Ru API v2 
Александр Покатилов
API v1 
неконсистентность 
недостаточная документация 
легаси-код 
проблемы с производительностью
REST
Ресурс 
Получение, обновление и удаление ресурса: 
GET /api/v2/campaigns/123.json HTTP/1.1 
POST /api/v2/campaigns/123.json HTTP/1.1 
DELETE /api/v2/campaigns/123.json HTTP/1.1
Коллекция ресурсов 
Получение списка ресурсов, создание ресурса: 
GET /api/v2/campaigns.json HTTP/1.1 
POST /api/v2/campaigns.json HTTP/1.1
Указание полей ресурса 
GET /api/v2/campaigns/123.json?fields=id,name HTTP/1.1 
{ 
"id": 123, 
"name": "test" 
}
Связанные ресурсы 
По умолчанию не отдаются.
Запрос связанного ресурса package: 
GET /api/v2/campaigns/123.json?fields=id,package HTTP/1.1 
{ 
"id": 123, 
"package": { 
"id": 83, 
"name": "multiple_external_90_75_ppc", 
"description": "Внешние ссылки, клики" 
} 
}
Указание полей для связанных ресурсов: 
GET /api/v2/campaigns/123.json?fields=id,name,package__name HTTP/1.1 
{ 
"id": 123, 
"name": "test", 
"package": { 
"name": "multiple_external_90_75_ppc" 
} 
}
Last-Modified 
Запрос: 
GET /api/v2/campaigns/123.json?fields=id,name HTTP/1.1 
Ответ: 
HTTP/1.1 200 OK 
Last-Modified: Tue, 20 Nov 2014 04:58:08 GMT 
{ 
"id": 123, 
"name": "test", 
}
If-Modified-Since 
Запрос: 
GET /api/v2/campaigns/123.json?fields=id,name HTTP/1.1 
If-Modified-Since: Tue, 20 Nov 2014 04:58:08 GMT 
Ответ: 
HTTP/1.1 304 Not Modified
Ошибки 
Запрос: 
GET /api/v2/campaigns/123.json?fields=id,name HTTP/1.1 
Accept-Language: ru 
Ответ: 
HTTP/1.1 404 Not Found 
{ 
"code": "not_found", 
"message": "Запрашиваемый ресурс не найден" 
}
Получение коллекции 
Указание полей ресурса + пагинация и фильтры: 
GET /api/v2/campaigns.json?fields=id,name&offset=60&status=active HTTP/1.1 
{ 
"items": [ 
{ 
"id": 123, 
"name": "test" 
}, 
{ 
"id": 456, 
"name": "test #2" 
} 
], 
"count": 100, 
"offset": 60, 
"limit": 20 
}
Указание конкретных ресурсов: 
GET /api/v2/campaigns/123,456.json?fields=id,name HTTP/1.1 
{ 
"items": [ 
{ 
"id": 123, 
"name": "test" 
}, 
{ 
"id": 456, 
"name": "test #2" 
} 
], 
"count": 100, 
"offset": 60, 
"limit": 20 
}
Создание ресурса 
Запрос: 
POST /api/v2/campaigns.json HTTP/1.1 
{ 
"name": "Test campaign", 
"package": {"id": 18}, 
"targetings": { 
"regions": [188], 
"sex": "MF", 
"age": [20, 21], 
"pads": [{"id": 5206}] 
} 
}
Ответ: 
HTTP/1.1 201 Created 
Location: http://target.mail.ru/api/v2/campaigns/123.json 
Last-Modified: Tue, 20 Nov 2014 04:58:08 GMT 
{ 
"id": 123 
}
Создание ресурса #2 
С указанием полей: 
POST /api/v2/campaigns.json?fields=id,name HTTP/1.1 
{ 
"name": "Test campaign", 
"package": {"id": 18}, 
"targetings": { 
"regions": [188], 
"sex": "MF", 
"age": [20, 21], 
"pads": [{"id": 5206}] 
} 
}
Ответ: 
HTTP/1.1 200 OK 
Last-Modified: Tue, 20 Nov 2014 04:58:08 GMT 
{ 
"id": 123, 
"name": "Test campaign" 
}
Создание ресурсов 
Запрос: 
POST /api/v2/campaigns.json HTTP/1.1 
[ 
{ 
"name": "Test campaign", 
"package": {"id": 18}, 
"targetings": { 
"regions": [188], 
"sex": "MF", 
"age": [20, 21], 
"pads": [{"id": 5206}] 
} 
}, 
... 
]
Ответ: 
HTTP/1.1 201 Created 
Location: https://target.mail.ru/api/v2/campaigns/123,456.json 
[ 
{"id": 123}, 
{"id": 456} 
]
Ошибки 
HTTP/1.1 400 Bad Request 
{ 
"package": { 
"id": { 
"code": "unknown_resource", 
"message": "Несуществующий пакет" 
} 
}, 
"name": { 
"code": "required", 
"message": "Поле обязательно для заполнения" 
} 
}
HTTP/1.1 400 Bad Request 
{ 
"banners": [ 
{}, 
{ 
"title": { 
"code": "invalid_chars", 
"message": "Использованы запрещённые символы", 
"allowed": "abcdef" 
} 
} 
] 
}
Обновление ресурса 
Запрос: 
POST /api/v2/campaigns/123.json HTTP/1.1 
{ 
"name": "Test campaign" 
} 
Ответ: 
HTTP/1.1 204 No Content 
Last-Modified: Tue, 20 Nov 2014 04:58:08 GMT
Обновление ресурса #2 
Запрос с указанием полей: 
POST /api/v2/campaigns/123.json?fieds=id,name HTTP/1.1 
{ 
"name": "Test campaign #2" 
} 
Ответ: 
HTTP/1.1 200 OK 
Last-Modified: Tue, 20 Nov 2014 04:58:08 GMT 
{ 
"id": 123, 
"name": "Test campaign #2" 
}
Обновление ресурсов 
Запрос: 
POST /api/v2/campaigns/123,456.json HTTP/1.1 
[ 
{ 
"id": 123, 
"status": "blocked", 
}, 
{ 
"id": 456, 
"status": "blocked", 
} 
] 
Ответ: 
HTTP/1.1 204 No Content
X-Target-Sudo 
GET /api/v2/campaigns.json HTTP/1.1 
X-Target-Sudo: super.agency@mail.ru, d679a84537@agency_client
Сжатие 
Сжатие показало, что чукча умер от сжатия: 
GET /api/v2/campaigns.json HTTP/1.1 
Accept-Encoding: gzip, deflate
Продолжают работать 
OAuth2 
Троттлинг 
Пуш-нотификации
Начинает работать 
Асинхронный API
Больше не работает 
Старая аутентификация с подписью запросов
Текущий статус 
Закрытая альфа 
Документация появится после бета-релиза.
Спасибо за внимание 
Вопросы и предложения?

More Related Content

Similar to Target.Mail.Ru API v2

Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвОрганизация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвMail.ru Group
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIEatDog
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28MoscowJS
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис ГлазковMail.ru Group
 
Как повысить эффективность управления рекламой при помощи API
Как повысить эффективность управления рекламой при помощи APIКак повысить эффективность управления рекламой при помощи API
Как повысить эффективность управления рекламой при помощи APIMail.ru Group
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИСit-people
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRAMBLER&Co
 
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
 
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...SQALab
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
«Автоматизация функционального тестирования REST API: секреты, тонкости и под...
«Автоматизация функционального тестирования REST API: секреты, тонкости и под...«Автоматизация функционального тестирования REST API: секреты, тонкости и под...
«Автоматизация функционального тестирования REST API: секреты, тонкости и под...2ГИС Технологии
 
Обработка сложных POST/PATCH запросов в RESTful API
Обработка сложных POST/PATCH запросов в RESTful APIОбработка сложных POST/PATCH запросов в RESTful API
Обработка сложных POST/PATCH запросов в RESTful APIfightmaster
 

Similar to Target.Mail.Ru API v2 (14)

Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвОрганизация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
 
Nginx.pm
Nginx.pmNginx.pm
Nginx.pm
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
 
Как повысить эффективность управления рекламой при помощи API
Как повысить эффективность управления рекламой при помощи APIКак повысить эффективность управления рекламой при помощи API
Как повысить эффективность управления рекламой при помощи API
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеров
 
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
 
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
«Автоматизация функционального тестирования REST API: секреты, тонкости и под...
«Автоматизация функционального тестирования REST API: секреты, тонкости и под...«Автоматизация функционального тестирования REST API: секреты, тонкости и под...
«Автоматизация функционального тестирования REST API: секреты, тонкости и под...
 
Обработка сложных POST/PATCH запросов в RESTful API
Обработка сложных POST/PATCH запросов в RESTful APIОбработка сложных POST/PATCH запросов в RESTful API
Обработка сложных POST/PATCH запросов в RESTful API
 

Target.Mail.Ru API v2