Locks

This API (version 1.0) provides lock and unlock semantics for the key-value resource. It supports the following operations:

  • Place lock
  • Remove lock

If present, label must be an explicit label value (not a wildcard). For all operations, it's an optional parameter. If omitted, it implies no label.

Prerequisites

  • All HTTP requests must be authenticated. See the authentication section.
  • All HTTP requests must provide explicit api-version. See the versioning section.

Lock key-value

  • Required: {key}, {api-version}
  • Optional: label
PUT /locks/{key}?label={label}&api-version={api-version} HTTP/1.1

Responses:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8"
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "key": "{key}",
  "label": "{label}",
  "content_type": null,
  "value": "example value",
  "created": "2017-12-05T02:41:26.4874615+00:00",
  "locked": true,
  "tags": []
}

If the key-value doesn't exist, the following response is returned:

HTTP/1.1 404 Not Found

Unlock key-value

  • Required: {key}, {api-version}
  • Optional: label
DELETE /locks/{key}?label={label}?api-version={api-version} HTTP/1.1

Responses:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8"
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "key": "{key}",
  "label": "{label}",
  "content_type": null,
  "value": "example value",
  "created": "2017-12-05T02:41:26.4874615+00:00",
  "locked": true,
  "tags": []
}

If the key-value doesn't exist, the following response is returned:

HTTP/1.1 404 Not Found

Conditional lock and unlock

To prevent race conditions, use If-Match or If-None-Match request headers. The etag argument is part of the key representation. If If-Match or If-None-Match are omitted, the operation is unconditional.

The following request applies the operation only if the current key-value representation matches the specified etag:

PUT|DELETE /locks/{key}?label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

The following request applies the operation only if the current key-value representation exists, but doesn't match the specified etag:

PUT|DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"