В соответствии с описанием API версии 4.1, которое можно найти здесь правильная команда POST:
POST https://{instance}/{collection}/{project}/_apis/wit/workitems/${type}?api-version=4.1
Так что по сравнению с вашим образцом, я думаю, вы пропустили название проекта послеколлекция.
Таким образом, это должно быть что-то вроде этого:
using (HttpResponseMessage response = await client.PostAsJsonAsync(
"https://my_tfs_server/tfs/DefaultCollection/PROJECTNAME/_apis/wit/workitems/$task?api-version=4.1",
createStoryRequest))
{
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
System.Console.WriteLine(responseBody);
}
Редактировать :
Таким образом, URL должен быть скорректирован, чтобы включить имя проекта:"https://my_tfs_server/tfs/DefaultCollection/PROJECTNAME/_apis/wit/workitems/$task?api-version=4.1" где" PROJECTNAME "должно быть именем вашего командного проекта.
Если вы используете без имени проекта, вы получите 404, если вы укажете несуществующий проект, вы получите ошибку, что этот проектне существует.
Edit2:
Согласно этой записи ваша версия TFS относится к TFS 2018 RTM, которая поддерживает REST API в версии 4.0в соответствии с comment на github.
Используемые до сих пор примеры используют API-версию 4.1, которая, очевидно, не поддерживается.
Документы для REST API до 4.1 немного скрыты, однако это ссылка должна предоставитьправильная спецификация.Создается впечатление, что вы должны предоставить запрос PATCH:
PATCH https://{instance}/DefaultCollection/{project}/_apis/wit/workitems/${workItemTypeName}?api-version={version}
Тело запроса должно содержать значения полей в формате JSON:
[
{
"op": "add",
"path": { string }
"value": { string or int, depending on the field }
},
{
"op": "add",
"path": "/relations/-",
"value":
{
"rel": { string },
"url": { string },
"attributes":
{
{ name/value pairs }
}
}
}
]
Поэтому api-версия должна быть 4.0.
РЕДАКТИРОВАТЬ3: (постером вопроса) также мой медиатип был неверным.«application / json» приведет к ответу «неверный запрос».Правильный тип носителя: «application / json-patch + json».