Update existing or create a new Project

👍

More information

📘

To update a Project you have to know its ID.
To add a new Project you have to know ID of its Process.
If you'd like to connect a Project to some resources (EntityState, Team, Owner, etc.) you have to know their IDs.

Here are some popular queries:
  • change state for Project ID#13
    GET to /api/v1/projects/13?include=[EntityState[NextStates]] (to know ID of the state)
    POST to /api/v1/projects/13 payload {EntityState:{Id:124}}

  • set value 125000 for custom field "Budget" for Project ID#2
    POST TO /api/v1/projects/2 payload {CustomFields:[{Name:"Budget",Value:125000}]}

  • add a new comment for Project ID#2
    POST to /api/v1/comments payload {Description:"New comment",General:{Id:2}}

  • create a User Story in Project ID#2
    POST to /api/v1/userstories payload {Name:"New Story",Project:{Id:2}}

  • create a new Project with Process ID#2 and assign User ID#6 as Developer
    POST to /api/v1/projects payload {Name:"Kanban Project",Process:{Id:2},ProjectMembers:[{User:{Id:6},Role:{Id:1}}]}

  • set planned dates for several Projects (ID#2 and ID#13)
    POST to /api/v1/projects/bulk payload [{Id:2,PlannedStartDate:'2017-03-19',PlannedEndDate:'2017-08-29'},{Id:13,PlannedStartDate:'2017-03-19',PlannedEndDate:'2017-08-29'}]

  • create several Projects with Processes #2 and #3
    POST to /api/v1/projects/bulk payload [{Process:{Id:2},Name:"First Project"},{Process:{Id:3},Name:"Second Project"}]

using System;
using System.Net;
using System.Net.Http;
using System.Text;

namespace REST.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://restapi.tpondemand.com/api/v1/");
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

            //assign User ID#6 to Project ID#229
            string query = "projects";
            HttpContent payload = new StringContent("{Id:229,ProjectMembers:[{User:{Id:6}}]}", Encoding.UTF8, "application/json");

            //using access token generated at Personal Details page (Access Tokens tab)
            query += "?access_token=MTpoUmx4WW1LTzF6dlkvbUN1dTZIclVBUFQyQ1Z0MkN6YnF6OHBETmRZN2kwPQ==";
            Console.WriteLine("Posting to " + query);

            HttpResponseMessage response = client.PostAsync(query, payload).Result;
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
            }
        }
    }
}
using System;
using System.Net;
using System.Net.Http;
using System.Text;

namespace REST.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://restapi.tpondemand.com/api/v1/");
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

            //assign User ID#6 to Project ID#229
            string query = "projects";
            HttpContent payload = new StringContent("{Id:229,ProjectMembers:[{User:{Id:6}}]}", Encoding.UTF8, "application/json");

            //using a token generated at /api/v1/Authentication
            query += "?token=MTpGMjRERDMxODUzNDk1NjdFOTQ0NEY4NkFFOEJCMjkzMw==";
            Console.WriteLine("Posting to " + query);

            HttpResponseMessage response = client.PostAsync(query, payload).Result;
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
            }
        }
    }
}
using System;
using System.Net;
using System.Net.Http;
using System.Text;

namespace REST.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://restapi.tpondemand.com/api/v1/");
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

            //assign User ID#6 to Project ID#229
            string query = "projects";
            HttpContent payload = new StringContent("{Id:229,ProjectMembers:[{User:{Id:6}}]}", Encoding.UTF8, "application/json");

            //using basic authentication (here 'admin' is login and 'admin' is password)
            string authentication = Convert.ToBase64String(Encoding.ASCII.GetBytes("admin:admin"));
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authentication);
            Console.WriteLine("Posting to " + query);

            HttpResponseMessage response = client.PostAsync(query, payload).Result;
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
            }
        }
    }
}
using System;
using System.Net;
using System.Net.Http;
using System.Text;

namespace REST.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://restapi.tpondemand.com/api/v1/");
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

            //assign User ID#6 to Project ID#229
            string query = "projects";
            HttpContent payload = new StringContent("{Id:229,ProjectMembers:[{User:{Id:6}}]}", Encoding.UTF8, "application/json");

            //using no authentication will result in 401 Unauthorized response
            Console.WriteLine("Posting to " + query);

            HttpResponseMessage response = client.PostAsync(query, payload).Result;
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
            }
        }
    }
}

📘

Adding or updating several Projects at once

You can operate with several Features at once by using /api/v1/projects/bulk endpoint.

Language
Click Try It! to start a request and see the response here!