Depurador de

El recurso de instantánea no está disponible en la versión 1.0 de la API.

Una instantánea es un recurso identificado de forma única por su nombre. Revise los detalles para cada operación.

Operations

  • Obtener
  • Enumerar varios
  • Crear
  • Archivo y recuperación
  • Enumeración de pares clave-valor

Requisitos previos

  • Se deben autenticar todas las solicitudes HTTP. Consulte la sección Autenticación.
  • Todas las solicitudes HTTP deben proporcionar parámetros api-version explícitos. Consulte la sección Control de versiones.

Sintaxis

Snapshot

{
    "etag": [string],
    "name": [string],
    "status": [string, enum("provisioning", "ready", "archived", "failed")],
    "filters": [array<SnapshotFilter>],
    "composition_type": [string, enum("key", "key_label")],
    "created": [datetime ISO 8601],
    "size": [number, bytes],
    "items_count": [number],
    "tags": [object with string properties],
    "retention_period": [number, timespan in seconds],
    "expires": [datetime ISO 8601]
}

SnapshotFilter

{
  "key": [string],
  "label": [string]
}
{
  "key": [string],
  "label": [string],
  "tags": [array<string>]
}

Obtención de la instantánea

Obligatorio: {name}, {api-version}

GET /snapshots/{name}?api-version={api-version}

Respuestas:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Mon, 03 Mar 2023 9:00:03 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Link: </kv?snapshot=prod-2023-03-20&api-version={api-version}>; rel="items"
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "name": "prod-2023-03-20",
  "status": "ready",
  "filters": [
      {
          "key": "*",
          "label": null
      }
  ],
  "composition_type": "key",
  "created": "2023-03-20T21:00:03+00:00",
  "size": 2000,
  "items_count": 4,
  "tags": {
    "t1": "value1",
    "t2": "value2"
  },
  "retention_period": 7776000
}

Si no existe una instantánea con el nombre proporcionado, se devuelve la siguiente respuesta:

HTTP/1.1 404 Not Found

Obtención (de manera condicional)

Para mejorar el almacenamiento en caché del cliente, use los encabezados de solicitud If-Match o If-None-Match. El argumento etag forma parte de la representación de la instantánea. Para obtener más información, consulte las secciones 14.24 y 14.26.

La siguiente solicitud recupera la instantánea solo si la representación actual no coincide con el argumento etag especificado:

GET /snapshot/{name}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "{etag}"

Respuestas:

HTTP/1.1 304 NotModified

Or

HTTP/1.1 200 OK

Lista de instantáneas

Opcional: name (si no se especifica, sugiere cualquier nombre). Opcional: status (si no se especifica, sugiere cualquier estado).

GET /snapshots?name=prod-*&api-version={api-version} HTTP/1.1

Respuesta:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8

Para obtener más opciones, consulte la sección "Filtrado" más adelante en este artículo.

Paginación

El resultado se pagina si el número de elementos devueltos supera el límite de respuesta. Siga los encabezados de respuesta Link opcionales y use rel="next" para la navegación. Como alternativa, el contenido proporciona un vínculo Siguiente en forma de propiedad @nextLink. El URI vinculado incluye el argumento api-version.

GET /snapshots?api-version={api-version} HTTP/1.1

Respuesta:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8
Link: <{relative uri}>; rel="next"
{
    "items": [
        ...
    ],
    "@nextLink": "{relative uri}"
}

Filtrado

Se admite una combinación de filtrado de name y status. Use los parámetros de cadena de consulta opcionales name y status.

GET /snapshots?name={name}&status={status}&api-version={api-version}

Filtros admitidos

Filtro de nombres Efecto
se omite name o name=* Coincide con instantáneas con cualquier nombre
name=abc Coincide con una instantánea denominada abc
name=abc* Coincide con instantáneas con nombres que empiezan por abc
name=abc,xyz Coincide con instantáneas con nombres abc o xyz (limitado a 5 archivos CSV)
Filtro de estado Efecto
se omite status o status=* Coincide con instantáneas con cualquier estado
status=ready Coincide con instantáneas con estado listo
status=ready,archived Coincide con instantáneas con estado listo o archivado (limitado a 5 archivos CSV)

Caracteres reservados

*, , \, ,

Si un carácter reservado forma parte del valor, se debe escapar mediante \{Reserved Character}. Los caracteres no servidos también se pueden escapar.

Validación del filtro

Si se produce un error en la validación del filtro, la respuesta es HTTP 400 con detalles de error:

HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
  "type": "https://azconfig.io/errors/invalid-argument",
  "title": "Invalid request parameter '{filter}'",
  "name": "{filter}",
  "detail": "{filter}(2): Invalid character",
  "status": 400
}

Ejemplos

  • All

    GET /snapshots?api-version={api-version}
    
  • El nombre de la clave comienza por abc

    GET /snapshot?name=abc*&api-version={api-version}
    
  • El nombre de la instantánea comienza por abc y el estado es igual a listo o archivado

    GET /snapshot?name=abc*&status=ready,archived&api-version={api-version}
    

Solicitud de campos específicos

Use el parámetro de cadena de consulta opcional $select y proporcione una lista separada por comas de campos solicitados. Si se omite el parámetro $select, la respuesta contiene el conjunto predeterminado.

GET /snapshot?$select=name,status&api-version={api-version} HTTP/1.1

Create snapshot

parameters

Nombre de propiedad Obligatorio Valor predeterminado Validación
name N/D Length
     Máximo: 256
filters N/D Count
     Mínimo: 1
     Máximo: 3
filters[<index>].key N/D
filters[<index>].label no nulo Los filtros de etiqueta de coincidencia múltiple (por ejemplo: "*", "comas, separados") no se admiten con el tipo de composición "key".
etiquetas no {}
composition_type no key
retention_period no Nivel Standard
     2592000 (30 días)
Nivel Gratis
     604800 (siete días)
Nivel Standard
     Mínimo: 3600 (una hora)
     Máximo: 7776000 (90 días)
Nivel Gratis
     Mínimo: 3600 (una hora)
     Máximo: 604800 (siete días)
PUT /snapshot/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "filters": [                        // required
    {
      "key": "app1/*",                // required
      "label": "prod"                 // optional
    }
  ],
  "tags": {                           // optional
    "tag1": "value1",
    "tag2": "value2",
  },
  "composition_type": "key",          // optional
  "retention_period": 2592000         // optional
}

Respuestas:

HTTP/1.1 201 Created
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "name": "{name}",
  "status": "provisioning",
  "filters": [
      {
          "key": "app1/*",
          "label": "prod"
      }
  ],
  "composition_type": "key",
  "created": "2023-03-20T21:00:03+00:00",
  "size": 2000,
  "items_count": 4,
  "tags": {
    "t1": "value1",
    "t2": "value2"
  },
  "retention_period": 2592000
}
Nombre de propiedad Obligatorio Valor predeterminado Validación
name N/D Length
     Máximo: 256
filters N/D Count
     Mínimo: 1
     Máximo: 3
filters[<index>].key N/D
filters[<index>].label no nulo Los filtros de etiqueta de coincidencia múltiple (por ejemplo: "*", "comas, separados") no se admiten con el tipo de composición "key".
filters[<index>].tags no nulo Count
     Mínimo: 0
     Máximo: 5
etiquetas no {}
composition_type no key
retention_period no Nivel Standard
     2592000 (30 días)
Nivel Gratis
     604800 (7 días)
Nivel Standard
     Mínimo: 3600 (1 hora)
     Máximo: 7776000 (90 días)
Nivel Gratis
     Mínimo: 3600 (1 hora)
     Máximo: 604800 (7 días)
PUT /snapshot/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "filters": [                                // required
    {
      "key": "app1/*",                        // required
      "label": "prod",                        // optional
      "tags": ["group=g1", "default=true"]    // optional
    }
  ],
  "tags": {                                   // optional
    "tag1": "value1",
    "tag2": "value2",
  },
  "composition_type": "key",                  // optional
  "retention_period": 2592000                 // optional
}

Respuestas:

HTTP/1.1 201 Created
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "name": "{name}",
  "status": "provisioning",
  "filters": [
      {
          "key": "app1/*",
          "label": "prod",
          "tags": ["group=g1", "default=true"]
      }
  ],
  "composition_type": "key",
  "created": "2023-03-20T21:00:03+00:00",
  "size": 2000,
  "items_count": 4,
  "tags": {
    "t1": "value1",
    "t2": "value2"
  },
  "retention_period": 2592000
}

El estado de la instantánea recién creada es provisioning. Una vez que la instantánea está completamente aprovisionada, el estado se actualiza a ready. Los clientes pueden sondear la instantánea para esperar a que esté lista antes de enumerar sus valores de clave asociados. Para consultar información adicional sobre la operación, consulte la sección sondeo de creación de instantáneas.

Si la instantánea ya existe, se devuelve la siguiente respuesta:

HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset=utf-8
{
    "type": "https://azconfig.io/errors/already-exists",
    "title": "The resource already exists.",
    "status": 409,
    "detail": ""
}

Sondeo de creación de instantáneas

La respuesta de una solicitud de creación de instantáneas devuelve un encabezado Operation-Location.

Respuestas:

HTTP/1.1 201 Created
...
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}

El estado de la operación de aprovisionamiento de instantáneas se puede encontrar en el URI incluido en Operation-Location. Los clientes pueden sondear este objeto de estado para asegurarse de que se aprovisiona una instantánea antes de enumerar sus valores de clave asociados.

GET {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}

Respuesta:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "id": "{id}",
    "status": "Succeeded",
    "error": null
}

Si se produce algún error durante el aprovisionamiento de la instantánea, la error propiedad contiene detalles que describen el error.

{
    "id": "{name}",
    "status": "Failed",
    "error": {
      "code": "QuotaExceeded",
      "message": "The allotted quota for snapshot creation has been surpassed."
    }
}

Archivo (revisión)

Se puede archivar una instantánea en el estado ready. A una instantánea archivada se le asigna una fecha de expiración, en función del período de retención establecido en el momento de su creación. Una vez superada la fecha de expiración, la instantánea se eliminará permanentemente. En cualquier momento antes de la fecha de expiración, los elementos de la instantánea todavía se pueden mostrar.

Archivar una instantánea que ya está archived no afecta a la instantánea.

  • Se requiere {name}, {status}, {api-version}.
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "status": "archived"
}

Respuesta: Devolver la instantánea archivada

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
  "etag": "33a0c9cdb43a4c2cb5fc4c1feede1c68",
  "name": "{name}",
  "status": "archived",
  ...
  "expires": "2023-08-11T21:00:03+00:00"
}

Archivar una instantánea que se encuentra actualmente en el estado provisioning o failed es una operación no válida.

Respuesta:

HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
    "type": "https://azconfig.io/errors/invalid-state",
    "title": "Target resource state invalid.",
    "detail": "The target resource is not in a valid state to perform the requested operation.",
    "status": 409
}

Recuperación (revisión)

Se puede recuperar una instantánea en el estado archived. Una vez recuperada la instantánea, se quita la fecha de expiración de la instantánea.

Recuperar una instantánea que ya está ready no afecta a la instantánea.

  • Se requiere {name}, {status}, {api-version}.
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "status": "ready"
}

Respuesta: Devolver la instantánea recuperada

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
  "etag": "90dd86e2885440f3af9398ca392095b9",
  "name": "{name}",
  "status": "ready",
  ...
}

Recuperar una instantánea que se encuentra actualmente en el estado provisioning o failed es una operación no válida.

Respuesta:

HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
    "type": "https://azconfig.io/errors/invalid-state",
    "title": "Target resource state invalid.",
    "detail": "The target resource is not in a valid state to perform the requested operation.",
    "status": 409
}

Archivado o recuperación de una instantánea (condicionalmente)

Para evitar condiciones de carrera, use los encabezados de solicitud If-Match o If-None-Match. El argumento etag forma parte de la representación de la instantánea. Si se omiten If-Match o If-None-Match, la operación es incondicional.

La siguiente respuesta actualiza el recurso solo si la representación actual coincide con el valor de etag especificado:

PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

La siguiente respuesta actualiza el recurso solo si la representación actual no coincide con el valor de etag especificado:

PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

Respuestas

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...

Or

HTTP/1.1 412 PreconditionFailed

Enumeración de los valores clave-valor de instantánea

Obligatorio: {name}, {api-version}

GET /kv?snapshot={name}&api-version={api-version}

Nota

Si se intenta enumerar los elementos de una instantánea que no está en el estado ready o archived, se producirá una respuesta de lista vacía.

Solicitud de campos específicos

Use el parámetro de cadena de consulta opcional $select y proporcione una lista separada por comas de campos solicitados. Si se omite el parámetro $select, la respuesta contiene el conjunto predeterminado.

GET /kv?snapshot={name}&$select=key,value&api-version={api-version} HTTP/1.1