* support optimistic concurrency in template service
* update request handler to get version from query parameter
* return not found if a new template is set with version
* update PUT api to set version
* update documentation + for mute timings
---------
Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
| name | `path` | string | `string` | | ✓ | | Mute timing name |
| version | `query` | string | `string` | | | | Current version of the resource. Used for optimistic concurrency validation. Keep empty to bypass validation. |
#### All responses
| Code | Status | Description | Has headers | Schema |
| name | `path` | string | `string` | | ✓ | | Template Name |
| version | `query` | string | `string` | | | | Current version of the resource. Used for optimistic concurrency validation. Keep empty to bypass validation. |
#### All responses
| Code | Status | Description | Has headers | Schema |
ErrTimeIntervalInvalid=errutil.BadRequest("alerting.notifications.time-intervals.invalidFormat").MustTemplate("Invalid format of the submitted time interval",errutil.WithPublic("Time interval is in invalid format. Correct the payload and try again."))
ErrTimeIntervalInUse=errutil.Conflict("alerting.notifications.time-intervals.used").MustTemplate("Time interval is used")
ErrContactPointReferenced=errutil.Conflict("alerting.notifications.contact-points.referenced",errutil.WithPublicMessage("Contact point is currently referenced by a notification policy."))
ErrContactPointUsedInRule=errutil.Conflict("alerting.notifications.contact-points.used-by-rule",errutil.WithPublicMessage("Contact point is currently used in the notification settings of one or many alert rules."))
// if version is not specified and it's not a file provisioning, emit a log message to reflect that optimistic concurrency is disabled for this request
t.log.Debug("ignoring optimistic concurrency check because version was not provided","template",name,"operation",action)