Permissions error creating rally milestone when using API Key

半世苍凉 提交于 2019-12-11 10:55:05

问题


I'm trying to create rally milestones from an external app using an API Key for credential authorization, but I get the warning "Not authorized to create: Milestone" whenever I run the following code:

DynamicJsonObject toCreate = new DynamicJsonObject();
toCreate["Name"] = "test";
CreateResult createResult = restApi.Create("milestone", toCreate);

I ran the same code with defects and other rally objects without any issues, and I am able to update existing milestones. However, I still can't figure out how to create new milestones.


回答1:


Assuming that ApiKey belongs to a user that has write access to the intended workspace, this code using v3.0.1 of .NET toolkit creates a Milestone in a default project of that workspace:

 class Program
    {
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc123";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
            String workspaceRef = "/workspace/1234";
            try
            {
                DynamicJsonObject m = new DynamicJsonObject();
                m["Name"] = "some milestone";
                CreateResult result = restApi.Create(workspaceRef, "Milestone",m);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

        }
    }

UPDATE:

The issue can be related to the request's scope. See how this error is replicated and resolved using a browser rest client here.

An equivalent C# code:

class Program
    {
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc123";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
            String projectRef = "/project/2222"; 
            String workspaceRef = "/workspace/1111"; 
            try
            {
                DynamicJsonObject m = new DynamicJsonObject();
                m["Name"] = "some milestone xxxt";
                m["TargetProject"] = projectRef;
                CreateResult result = restApi.Create(workspaceRef, "Milestone",m);
                m = restApi.GetByReference(result.Reference, "FormattedID");
                Console.WriteLine(m["FormattedID"]);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

        }
    }


来源:https://stackoverflow.com/questions/30855474/permissions-error-creating-rally-milestone-when-using-api-key

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!