TeamCity REST API Reference 2025.11 Help

ApprovalInfo

If a build cannot start without a manual approval from specific reviewers, it stores related information in a related ApprovalInfo object.

Properties

timeoutTimestamp

The timestamp when the build is (or was) canceled due to reviewers failing to approve it on time. This value is calculated at the moment a build is queued.

configurationValid

Returns true if the configuration of users and user groups that should approve this build is valid; otherwise, false.

userApprovals

The list of indvidual users whose approval is required to start a build.

groupApprovals

The list of user groups whose users need to approve a build before it can start.

compositeApprovals

approvalReasons

Returns the reasons why TeamCity is waiting for build approval.

buildChainBuilds

The list of other builds (both upstream and downstream) that belong to the same build chain and require an approval.

canBeApprovedByCurrentUser

Returns true if the currently authorized user is among TeamCity users who can approve this build; otherwise, false.

status

The current build status. Supported values:

  • waitingForApproval — the build is waiting in a build queue;

  • approved — the build received a required number of approvals from reviewers;

  • timedOut — the build was automatically canceled as the reviewer(s) failed to approve it within the given time;

  • canceled — reviewer(s) explicitly canceled the build.

Schema

Below, you can find a full schema of this object, in XML and JSON formats. You can choose what fields to submit depending on your current needs. Different methods might expect different fields: the best approach is to request this entity via GET and use the response as a base for the following POST request.

A link to another object implies that you can substitute it with the schema of the linked object, if it is required for your call.

<approvalInfo canBeApprovedByCurrentUser="true" configurationValid="true" status="waitingForApproval" timeoutTimestamp="20250401T172235+0200"> <userApprovals count="4"> <userApproval>[[[userApprovalRule...|userapprovalrule.html]]]</userApproval> </userApprovals> <groupApprovals count="2"> <groupApproval>[[[groupApprovalRule...|groupapprovalrule.html]]]</groupApproval> </groupApprovals> <compositeApprovals count="2"> <compositeApproval>[[[compositeApprovalRule...|compositeapprovalrule.html]]]</compositeApproval> </compositeApprovals> <approvalReasons>[[[approvableBuild...|approvablebuild.html]]]</approvalReasons> <buildChainBuilds>[[[buildsWithReason...|buildswithreason.html]]]</buildChainBuilds> </approvalInfo>
{ "configurationValid" : true, "userApprovals" : { "userApproval" : [ { "approved" : true, "user" : "[[[user...|user.html]]]" } ], "count" : 4 }, "timeoutTimestamp" : "20250401T172235+0200", "approvalReasons" : [ { "buildTypeId" : "Deployments_Deploy_to_global", "buildTypeName" : "Deploy to global", "buildId" : "124" } ], "buildChainBuilds" : [ { "builds" : [ { "buildTypeId" : "Deployments_Deploy_to_global", "buildTypeName" : "Deploy to global", "buildId" : "124" } ], "approvalReason" : { "buildTypeId" : "Deployments_Deploy_to_global", "buildTypeName" : "Deploy to global", "buildId" : "124" } } ], "canBeApprovedByCurrentUser" : true, "compositeApprovals" : { "count" : 2, "compositeApproval" : [ { "requiredApprovalsCount" : 4, "groups" : [ "[[[group...|group.html]]]" ], "currentlyApprovedBy" : "[[[users...|users.html]]]", "users" : [ "[[[user...|user.html]]]" ] } ] }, "groupApprovals" : { "count" : 2, "groupApproval" : [ { "requiredApprovalsCount" : 3, "currentlyApprovedBy" : "[[[users...|users.html]]]", "group" : "[[[group...|group.html]]]" } ] }, "status" : "waitingForApproval" }
Last modified: 02 December 2025