7
votes

I'm using TFS 2015.2 RTM and I just found out that the Release Management vNext REST API is in 2.2-preview.1 on-premises. I want to create a release, but I don't know the exact JSON to put in the body of the POST request since the documentation only works for VSTS.

When I send the request, I get the error message:

VS402881: No artifact version is specified corresponding to artifact source 'MyBuild.' Specify a valid value and try again. 

Here's the JSON:

$body = @"
     {
          definitionId": 1,
    "description": "test",
    "artifacts": [ 
      {
         "alias": "Tailspin Toys", 
         "version": {
               "id": 147,
         },
         "instanceReference": {
            "id": 5
        }
       }
     ]
} 
"@

And here's the Invoke-RestMethod command:

$releaseResponse = Invoke-RestMethod -Method Post -Credential $credential -ContentType application/json -Uri $postUri -Body $body

What JSON items am I missing? How do I find what to put in the JSON body if the docs don't have what is missing?

4
The RM REST API is not officially launched for on-premise TFS. You can use Fiddler to see exactly what JSON body is used.ds19
Interesting! I downloaded Fiddler4 earlier but could only find the JSON error message and not what body to use. Do you know how I can see the JSON body used? Sorry, have only used the tool a couple of times. :)m00nbeam360.0

4 Answers

6
votes

Yes there are some disparities between the current version of VSTS APIs and the TFS 2015.2 APIs. But most of the APIs should work except a very few. Here is the documentation link.

Following is the required JSON for creating a release. The required JSON needs to have the name in instanceReference although its optional for the current version of VSTS API.

{
  "definitionId": 1,
  "description": "test",
  "artifacts": [
    {
      "alias": "Tailspin Toys",
      "instanceReference": {
        "id": "5",
        "name": "<build_name>"
      }
    }
  ]
}
0
votes

Based on my Fiddler capture:

{
  "id": 0,
  "name": "xxx",
  "createdOn": "2016-04-15T06:48:14.173Z",
  "createdBy": null,
  "modifiedBy": null,
  "modifiedOn": null,
  "environments": [
    {
      "id": 0,
      "name": "Default Environment",
      "rank": 1,
      "deployStep": {
        "id": 0,
        "tasks": [ ]
      },
      "owner": {
        "displayName": "foobar",
        "id": "c236ac37-97ee-4ed0-b731-36ebb4a9ed3f",
        "isContainer": false,
        "uniqueName": "ad\foobar",
        "imageUrl": "http://tfs:8080/tfs/collection/_api/_common/IdentityImage?id=c236ac37-97ee-4ed0-b731-36ebb4a9ed3f&t=1460698957392&__v=5",
        "url": "http://tfs:8080/tfs/collection/"
      },
      "queueId": 1,
      "demands": [ ],
      "conditions": [ ],
      "variables": { },
      "runOptions": { "EnvironmentOwnerEmailNotificationType": "Always" },
      "executionPolicy": {
        "concurrencyCount": 0,
        "queueDepthCount": 0
      },
      "preDeployApprovals": {
        "approvals": [
          {
            "rank": 1,
            "isAutomated": true,
            "isNotificationOn": false,
            "id": 0
          }
        ],
        "approvalOptions": null
      },
      "postDeployApprovals": {
        "approvals": [
          {
            "rank": 1,
            "isAutomated": true,
            "isNotificationOn": false,
            "id": 0
          }
        ],
        "approvalOptions": null
      }
    }
  ],
  "artifacts": [ ],
  "variables": { },
  "triggers": [ ],
  "releaseNameFormat": "Release-$(rev:r)",
  "retentionPolicy": { "daysToKeep": 60 }
}
0
votes

For a similar error VS402962: No artifact version ID is specified corresponding to artifact source 'My build name'. Specify a valid value and try again.

I did what this article suggested...

refresh the page and try again