How can we find all fields available for WSAPI for a given object, for example Defect?
In order to find the full collection of fields , including custom fields, that are available to WSAPI per any given object , you first need to refer to the WSAPI object model. In our example, we shall do a walk-through for Defect , but this can and should be applied to any other given object available in Agile Central's object model:
Navigate to: https://rally1.rallydev.com/slm/doc/webservice/
Locate the object you're looking for under the Object Model:
(Note: User Story is called: "Hierarchical Requirement")
Click on the object (in this case: Defect).
The center display pane will take you to the definition of that object. There, you will see the REST endpoints available to WSAPI for operations such as Get, Post, Put, Delete, etc...
There you will notice the "Child Elements" section.
This section lists all of the fields of this object, in this case all the Defect's fields (including custom fields). You can scroll down and learn of all the fields, their names, the operations available to query and other restrictions if any.
But these aren't necessarily all of the Object's fields!
Agile Central's Object Model is a hierarchical model, similar in concept to an Object Oriented class-model where objects 'inherit' other objects in order to create better specification of their parent objects.
So, in our case, you can see a Parent Type field under the Defect name which states: SchedulableArtifact. This indicates that the Defect is a direct child of the SchedulableArtifact object. This means that all of SchdulableArtifact's fields (including custom fields) are part of the Defect object as well. You can learn of SchedulableArtifact's fields in the same way, click on it and scroll down it's own "Child Elements" section.
Then, you can see that SchedulableArtifact also has a Parent Type called: RankableArtifact. In that same manner you can click on that, learn of its fields under its own 'Child Elements' section. These fields are part of both SchedulableArtifact and Defect - both who inherit from RankableArtifact.
In this fashion you can continue to locate more parent types of your object's parents , where in each stage more fields are available to all inheriting objects.
If you complete this exercise for a Defect then you will find the following ancestry chain:
Defect -> SchedulableArtifact -> RankableArtifact -> Artifact -> WorkspaceDomainObject -> DomainObject -> PersistableObject
The entire set of fields available to the Defect object are the entire field collection as listed under 'Child Elements' of all of the objects mentioned up the ancestry chain for Defect. Similarly, you can apply this method to any other object listed in the Object Model.
For your reference, here is a screen-shot walk-through of locating these fields for Defect per this mentioned process:
Child Elements section for Defect:
Child Elements section for SchedulableArtifact:
Child Elements section for RankableArtifact:
Child Elements section for Artifact:
Child Elements section for WorkspaceDomainObject:
Child Elements section for DomainObject:
Child Elements section for PersistableObject: