{"command":{"effect":"write","timeoutSeconds":30,"inputSchema":{"type":"object","description":"An existing budget can be updated by making a PUT request on the URL for\nthat budget. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged.","properties":{"path":{"type":"object","properties":{"budget_gid":{"type":"string","examples":["12345"],"description":"Globally unique identifier for the budget."}},"required":["budget_gid"],"additionalProperties":false},"query":{"type":"object","properties":{"opt_pretty":{"type":"boolean","examples":[true],"description":"Provides “pretty” output.\nProvides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."},"opt_fields":{"type":"array","items":{"type":"string","enum":["actual","actual.billable_status_filter","actual.units","actual.value","budget_type","estimate","estimate.billable_status_filter","estimate.enabled","estimate.source","estimate.units","estimate.value","parent","parent.name","parent.resource_subtype","total","total.enabled","total.units","total.value"]},"examples":[["actual","actual.billable_status_filter","actual.units","actual.value","budget_type","estimate","estimate.billable_status_filter","estimate.enabled","estimate.source","estimate.units","estimate.value","parent","parent.name","parent.resource_subtype","total","total.enabled","total.units","total.value"]],"description":"This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include. Properties can include nested fields. To learn more, see the [input/output options guide](/docs/inputoutput-options#selecting-nested-fields)."}},"required":[],"additionalProperties":false},"body":{"type":"object","properties":{"data":{"$ref":"#/definitions/BudgetRequest"}}}},"required":["path","body"],"additionalProperties":false,"definitions":{"BudgetRequest":{"allOf":[{"$ref":"#/definitions/BudgetCompact"},{"type":"object","properties":{"estimate":{"allOf":[{"$ref":"#/definitions/BudgetEstimateRequest"}]},"actual":{"allOf":[{"$ref":"#/definitions/BudgetActualRequest"}]},"total":{"allOf":[{"$ref":"#/definitions/BudgetTotalRequest"}]},"parent":{"description":"Globally unique ID of the parent object: project. Can only be set on create, immutable thereafter.","type":"string","examples":["181636"]}}}]},"BudgetCompact":{"description":"A *budget* object represents a budget for a given parent.","type":"object","properties":{"budget_type":{"type":"string","description":"The type of the budget, in \"cost\" or \"time\". The value of this property will dictate how the corresponding values for actual, estimate, and total are interpreted.","enum":["cost","time"]}}},"BudgetEstimateRequest":{"description":"Defines how the estimate portion of a budget is configured. This object controls whether the estimate is enabled, what data source it uses, and which tasks (by billable status) are included in calculating the estimate value. When disabled (enabled: false and source: none), the estimate is hidden and the API response will return `value: null` and `units: null` for this field.","type":"object","properties":{"billable_status_filter":{"description":"Billable status filter applied to the estimate when `source` is `tasks`. Ignored when `source` is `capacity_plans` or `none`. When not provided, defaults to `billable`.","type":"string","enum":["billable","non_billable","any"]},"source":{"description":"The data source for the estimate. `tasks`: use task-level estimated time attributed to the parent. `capacity_plans`: use capacity plan estimates attributed to the parent. `none`: disables the estimate; only valid when `enabled` is `false`. When `enabled` is `true`, `source` must not be `none`.","type":"string","enum":["none","tasks","capacity_plans"],"examples":["tasks"]},"enabled":{"description":"Controls whether the estimate is displayed in the budget. This flag primarily affects UI presentation and the response payload. When `false` (and `source` is `none`), the estimate is hidden and the API response will return `value: null` and `units: null` for this field.","type":"boolean","examples":[true]}}},"BudgetActualRequest":{"type":"object","description":"Defines the configuration of the actual portion of a budget. The actual value represents aggregated time tracking data attributed to the budget’s parent. This object controls which time entries are included based on their billable status. When no entries match the selected filter, the value will be 0.","properties":{"billable_status_filter":{"type":"string","description":"Billable status filter applied to time tracking entries contributing to the actual value. Determines which entries are included in aggregation. When not provided, defaults to `billable`.","enum":["billable","non_billable","any"],"examples":["billable"]}}},"BudgetTotalRequest":{"type":"object","description":"Defines how the total portion of a budget is configured. The total represents a user-defined target value, not an aggregated one. This object specifies whether the total is displayed and the current value for the selected budget_type.","properties":{"enabled":{"description":"Indicates whether the total value is active and should be displayed in the budget. This flag primarily affects UI presentation and the response payload.","type":"boolean","examples":[true]},"value":{"description":"The user-set value for the total budget. When `budget_type` is `time`, represents minutes. When `budget_type` is `cost`, represents the monetary amount in the domain's currency. This value is stored separately for each `budget_type`, so switching between types preserves each value.","type":"number","examples":[100]}}}}},"name":"Update a budget","id":"asana.updatebudget","example":{"path":{"budget_gid":"12345"},"body":{}},"maxRequests":1,"summary":false}}