Поскольку ряд товарищей спрашивает про сабж, попытаюсь поддерживать более менее актуальный список того что есть.
Общие моменты: все сервисы на данный момент на вход принимают параметры в виде form data (url для Get, тело запроса для Post), на выходе отдают JSON. Если результат с ошибками, возвращается HTTP код ошибки и JSON вида { field: "error_field", message: "error_message"}. Поле field, если оно есть, указывает на ошибку в конкретном входном параметре, либо содержит all, если ошибка к конкретному параметру не относится.
Аутентификация и сессия — общая с остальным сайтом, т.е. форма //Users/Login.aspx для логина, затем куки .RSDNAUTH и ASP.NET_SessionId.
Часть сервисов поддерживает ETag/If-None-Match и умеет возвращать 304, так что крайне желательно чтобы клиенты, отличные от браузеров, это использовали.
Для некоторых сервисов есть демки — http://rsdn.ru/rs/demo
Сервис | Состояние | url | Метод | Параметры | Результат | Пример | Дерево навигации | Beta | //frames/navtreenodes | GET | string node — имя родительского узла. Для корня node=. |
Все дочерние узлы, с учетом вложенности, до тех узлов, которые являются либо листьями, либо требуют загрузки по требованию.
|
GET http://rsdn.ru/frames/navtreenodes?node=./rsdnproject/forauthors
[
{
"id": "./rsdnproject/forauthors/requirements",
"label": "Требования к оформлению материалов",
"image": "/Images/article18.png",
"url": "/article/authors/requirements.xml",
"children": []
},
{
"id": "./rsdnproject/forauthors/template",
"label": "Шаблон для верстки статей",
"image": "/Images/article18.png",
"url": "/article/authors/template.xml",
"children": []
},
{
"id": "./rsdnproject/forauthors/codestyle",
"label": "Соглашение по оформлению кода",
"image": "/Images/article18.png",
"url": "/article/mag/200401/codestyle.XML",
"children": []
},
{
"id": "./rsdnproject/forauthors/noway",
"label": "Как не надо писать статьи",
"image": "/Images/article18.png",
"url": "/article/authors/HowNotTowrite.xml",
"children": []
}
]
| Сообщение RSDN Team | Production | //about/askteam | POST | string name, string email, string subj, string message |
пустой респонс с 204 кодом, если все хорошо, либо информацию об ошибке
| | Регистрация пользователя | Production | //account/doregister | POST |
string login,
string nick,
string email,
string pwd1,
string pwd2,
string recaptcha_challenge_field,
string recaptcha_response_field
|
пустой респонс с 204 кодом, если все хорошо, либо информацию об ошибке
| | Изменение емейла и пароля | Production | //account/dochangereg | POST |
int? uid,
string email,
string oldPwd,
string pwd1,
string pwd2
|
пустой респонс с 204 кодом, если все хорошо, либо информацию об ошибке
| | Отправка нового сообщения | Alpha | //forum/<forum_name> | POST |
string postingID,
string forum,
int msgID,
string subject,
string posterName,
string password,
string text,
bool noSmile,
string name,
string tags,
bool notifyAboutReplies
|
пустой респонс с 204 кодом, если все хорошо, либо информацию об ошибке
| | Оценка сообщения | Production | //rs/message/<messageId>/rate/<rateType> | POST |
string rateType, — Тип оценки: rate, smile или agree
int messageID,
int? value — Значение оценки. Для типа rate: 1-3, для типа agree: -4 согласен, 0 не согласен
|
пустой респонс с 204 кодом, если все хорошо, либо информацию об ошибке
| | Удаление оценок | Production | //rs/message/<messageId>/rate | DELETE |
int messageID,
|
пустой респонс с 204 кодом, если все хорошо, либо информацию об ошибке
| | Поиск профиля по подстроке | Production | //rsdnsearch/findauthor | GET | string name | Список идентификаторов и имен пользователей |
GET http://rsdn.ru/rsdnsearch/findauthor/?name=vladd
[
{
"id":73,
"displayName":"VladD2"
},
{
"id":39067,
"displayName":"VladD"
},
{
"id":93688,
"displayName":"VladdT"
},
{
"id":95381,
"displayName":"vladdou"
},
{
"id":108143,
"displayName":"VladD2_PNH"
},
{
"id":110977,
"displayName":"VladDebil"
}
]
| Получение списка топиков форума | Alpha | //rs/forum/<forum_name>/topics | GET |
string forum,
int? from, // По умолчанию 0
int? len // По умолчанию размер страницы из профиля
| Список топиков в порядке убывания даты |
GET http://rsdn.ru/rs/forum/rsdn/topics?len=2
{
"total":5637,
"topics":[
{
"accountID":187,
"answersCount":9,
"createdOn":"\/Date(1407336643590)\/",
"id":5728461,
"isAlwayOnTop":false,
"isClosed":null,
"lastAnswerBy":"Ops",
"name":null,
"lastAnswerId":80747,
"topicRate":0,
"topicRateCount":0,
"topicAgrees":0,
"topicDisagrees":0,
"topicSmiles":0,
"rowVersion":"0000A37F01369035",
"subject":"сбилась разметка",
"lastUpdatedOn":"\/Date(1407342168280)\/",
"authorNick":"Pavel Dvorkin"
},
{
"accountID":100952,
"answersCount":1,
"createdOn":"\/Date(1407328363343)\/",
"id":5728286,
"isAlwayOnTop":false,
"isClosed":null,
"lastAnswerBy":"AndrewVK",
"name":null,
"lastAnswerId":80744,
"topicRate":20,
"topicRateCount":2,
"topicAgrees":0,
"topicDisagrees":0,
"topicSmiles":0,
"rowVersion":"0000A37F0110A8CB",
"subject":"Новый embedded youtube",
"lastUpdatedOn":"\/Date(1407332030580)\/",
"authorNick":"Evgeny.Panasyuk"
}
]
}
| Получение списка ответов топика | Alpha | //rs/topic/<topicId>/replies | GET | int topicId | Список ответов в порядке возрастания даты |
GET http://rsdn.ru/rs/topic/5727307/replies
[
{
"accountID":5161,
"createdOn":"\/Date(1407332097413)\/",
"id":5728370,
"isClosed":null,
"name":null,
"rate":0,
"rateCount":0,
"agrees":0,
"disagrees":0,
"smiles":0,
"rowVersion":"0000A37F0121C0A8",
"subject":"Re: Некоторые недочеты",
"authorNick":"AndrewVK",
"parentId":5727307
},
{
"accountID":99637,
"createdOn":"\/Date(1407345231857)\/",
"id":5728657,
"isClosed":null,
"name":null,
"rate":0,
"rateCount":0,
"agrees":0,
"disagrees":0,
"smiles":0,
"rowVersion":"0000A37F015DE095",
"subject":"Re[2]: Некоторые недочеты",
"authorNick":"BrainSlug",
"parentId":5728370
},
{
"accountID":5161,
"createdOn":"\/Date(1407346966247)\/",
"id":5728717,
"isClosed":null,
"name":null,
"rate":0,
"rateCount":0,
"agrees":0,
"disagrees":0,
"smiles":0,
"rowVersion":"0000A37F0165D112",
"subject":"Re[3]: Некоторые недочеты",
"authorNick":"AndrewVK",
"parentId":5728657
}
]
| Получение сообщения | Alpha | //rs/message/<messageId> | GET |
int messageId,
bool? formatted | Сообщение, включая его текст. В зависимости от значения formatted в качестве текста будет либо исходный код, либо готовый html для отображения |
GET http://rsdn.ru/rs/message/5728645?formatted=true
{
"accountID":78670,
"createdOn":"\/Date(1407344805630)\/",
"id":5728645,"isClosed":null,
"name":null,
"rate":20,
"rateCount":10,
"agrees":0,
"disagrees":0,
"smiles":0,
"rowVersion":"0000A37F015BED19",
"subject":"Теперь вы все мои гости",
"authorNick":"Берсерк",
"text":"\u003ctable\u003e\u003ctr\u003e\u003ctd class=
\u0027m\u0027\u003e\u003cfont size=2\u003eВ
догонку к истории с Лабиринтом:\u003cbr
/\u003e\n\u003cbr /\u003e\n\u003cblockquote
class=\u0027q\u0027\u003e\u003cp\u003eРоссийские
туристы ..."
}
| Получение сообщений топика | Alpha | //rs/topic/<topicId>/messages | GET |
int topicId,
bool? formatted,
int? from,
int? len
| Сообщения указанного топика, включая текст. В зависимости от значения formatted в качестве текста будет либо исходный код, либо готовый html для отображения |
GET http://rsdn.ru/rs/topic/5727307/messages/?len=2&from=2
[
{
"accountId":99637,
"createdOn":"2014-08-05T23:03:52.2700000",
"id":5727307,
"isClosed":null,
"name":null,
"rate":5,
"rateCount":1,
"agrees":0,
"disagrees":0,
"smiles":0,
"rowVersion":"0000A37E017C1771",
"subject":"Некоторые недочеты",
"authorNick":"BrainSlug",
"text":"В принципе ничего серьезного. Но у меня при голосовании (rsdn.ru/poll/5136) под анонимом ...",
"gravatarHash":"35d4bb2787c66a855fdcf912d8f04ad6",
"forum":"rsdn",
"versions":[]
},
{
"accountId":99637,
"createdOn":"2014-08-06T21:13:51.8570000",
"id":5728657,
"isClosed":null,
"name":null,
"rate":0,
"rateCount":0,
"agrees":0,
"disagrees":0,
"smiles":0,
"rowVersion":"0000A37F015DE095",
"subject":"Re[2]: Некоторые недочеты",
"authorNick":"BrainSlug",
"text":"\r\nAVK\u003eНе воспроизвелось. У тебя воспроизводится?\r\nуже нет :)...",
"gravatarHash":"35d4bb2787c66a855fdcf912d8f04ad6",
"forum":"rsdn",
"versions":[]
}
]
|
|