func()

in client/project.go [113:141]


func (c *Client) SetVersionedSettings(projectId string, settings models.VersionedSettingsJson) (*models.VersionedSettingsJson, error) {
	rb, err := json.Marshal(settings)
	if err != nil {
		return nil, err
	}

	var actual models.VersionedSettingsJson
	endpoint := fmt.Sprintf("/projects/id:%s/versionedSettings/config", projectId)
	err = c.PutRequest(endpoint, bytes.NewReader(rb), &actual)
	if err != nil {
		return nil, err
	}

	//TODO TeamCIty rest api bug TW-90967, remove when fixed
	if settings.ShowSettingsChanges != nil && actual.ShowSettingsChanges != settings.ShowSettingsChanges {
		corrected, err := c.SetVersionedSettingsProperty(projectId, "showSettingsChanges", strconv.FormatBool(*settings.ShowSettingsChanges))
		if err != nil {
			return nil, fmt.Errorf("could not correct showSettingsChanges property, potentially not enough time for VersionedSettings to be applied: %w", err)
		}
		var correctedShowSettingsChanges bool
		err = json.Unmarshal(corrected, &correctedShowSettingsChanges)
		if err != nil {
			return nil, fmt.Errorf("malformed showSettingsChanges property, more info: %w", err)
		}
		actual.ShowSettingsChanges = &correctedShowSettingsChanges
	}

	return &actual, nil
}