client/project_param.go (50 lines of code) (raw):

package client import ( "errors" "fmt" "terraform-provider-teamcity/models" ) // SetParam sets/updates a regular (text) project parameter value using text/plain PUT. func (c *Client) SetParam(project, name, value string) error { _, err := c.SetField("projects", project, fmt.Sprintf("parameters/%s", name), &value) if err != nil { return err } return nil } // SecureSetParam sets/updates a secure (password) project parameter using JSON payload // with type.rawValue set to "password display='normal'" as required by TeamCity REST API. func (c *Client) SecureSetParam(project, name, value string) error { payload := struct { Name string `json:"name"` Value string `json:"value"` Inherited bool `json:"inherited"` Type *struct { RawValue string `json:"rawValue"` } `json:"type,omitempty"` }{ Name: name, Value: value, Inherited: false, Type: &struct { RawValue string `json:"rawValue"` }{RawValue: models.SecureParamRawType}, } // Use JSON PUT to the parameters endpoint _, err := c.SetFieldJson("projects", project, fmt.Sprintf("parameters/%s", name), payload) if err != nil { return err } return nil } func (c *Client) GetParam(project, name string) (*string, error) { endpoint := fmt.Sprintf("/projects/id:%s/parameters/%s", project, name) body, err := c.GetTextRequest(endpoint, "") if err != nil { if errors.Is(err, ErrNotFound) { return nil, nil } return nil, err } return &body, nil } func (c *Client) DeleteParam(project, name string) error { endpoint := fmt.Sprintf("/projects/id:%s/parameters/%s", project, name) return c.DeleteRequest(endpoint) }