Saltar al contenido

Artefactos y catálogo ​

Artefactos publicados: listado, detalles, contenido, anotaciones, referencias, búsqueda, la auditoría del catálogo y su fuente de cambios.

Operaciones de este grupo con su regla de acceso, su regla de reintento, sus parámetros y sus respuestas. Cada solicitud lleva una clave: Authorization: Bearer <clave> (consulte «Autenticación»).

Operaciones ​

Obtener las anotaciones de un artefacto ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/annotations

Acceso: Permiso de repositorio: annotation.read; claves de archivo: read · Reintento: Se puede repetir (lectura)

Devuelve las etiquetas, los metadatos y las colecciones actuales de un artefacto publicado con su revision. La revisión 0 significa que nunca se reemplazaron: las etiquetas y los metadatos son los indicados al crear la subida y las colecciones están vacías. Pase la revisión a setAnnotations como expectedRevision.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Respuesta 200

CampoTipoObligatorioReglas
revisionintegersí0–2147483647
labelsarray de stringsíhasta 32 elementos
metadatamapa de stringsíhasta 32 entradas
collectionsarray de stringsíhasta 32 elementos

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/annotations" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Reemplazar las anotaciones de un artefacto ​

PUT /api/v1/repositories/{repository}/artifacts/{id}/annotations

Acceso: Permiso de repositorio: annotation.write, artifact.read; claves de archivo: read, write · Reintento: Repetir solo con la revisión esperada (compare-and-swap)

Reemplaza labels, metadata y collections de un artefacto publicado de una sola vez; un campo omitido en value queda vacío. expectedRevision debe ser la revisión actual (0 para el primer cambio); de lo contrario, 409 revision_mismatch: lea de nuevo las anotaciones y vuelva a aplicar el cambio. Hasta 32 etiquetas y 32 colecciones (1–64 letras, dígitos o _.:-) y 32 entradas de metadatos (valores de hasta 1024 caracteres); los bytes y el descriptor original nunca cambian.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
expectedRevisionintegersí0–2147483646
valueobjectsí—
value.labelsarray de stringnohasta 32 elementos
value.metadatamapa de stringnohasta 32 entradas
value.collectionsarray de stringnohasta 32 elementos

Respuesta 200

CampoTipoObligatorioReglas
revisionintegersí0–2147483647
labelsarray de stringsíhasta 32 elementos
metadatamapa de stringsíhasta 32 entradas
collectionsarray de stringsíhasta 32 elementos

Respuestas: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/annotations" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedRevision":0,"value":{}}'

Registrar un artefacto como paquete UPack ​

POST /api/v1/repositories/{repository}/artifacts/{id}/package

Acceso: Permiso de repositorio: package.publish, artifact.read; claves de archivo: read, write · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Abre el artefacto publicado como un ZIP de UPack, lee el upack.json de la raíz (name, group opcional y version SemVer) y registra esa versión del paquete para él; los archivos ZIP no seguros o no válidos se rechazan con 400. Una versión es inmutable: registrar el mismo artefacto de nuevo devuelve la misma entrada, y otro artefacto para un grupo, nombre y versión ya existentes (comparados sin distinguir mayúsculas) produce un 409 version_exists. Después la versión aparece en listPackages y se resuelve por nombre, rango y etapa.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Respuesta 200

CampoTipoObligatorioReglas
groupstringno—
namestringno—
versionstringno—
artifactIdstring (uuid)no—
manifestobjectno—

Respuestas: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/package" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Buscar artefactos ​

GET HEAD /api/v1/repositories/{repository}/search

Acceso: Permiso de repositorio: artifact.list; claves de archivo: read · Reintento: Se puede repetir (lectura)

Encuentra artefactos publicados por q (una subcadena, sin distinguir mayúsculas, del nombre o de un valor de metadatos actual), una label actual exacta, una collection y un par exacto metadataKey/metadataValue, que van juntos; deben cumplirse todos los filtros indicados. Los resultados llegan en páginas de 100 ordenadas por ID, cada uno con tamaño, horas de creación y de publicación, etiquetas actuales y etapas de promoción; continúe pasando next como after. Los metadatos y las colecciones no se devuelven: léalos con getAnnotations.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
qconsultastringno—
labelconsultastringno—
collectionconsultastringno—
afterconsultastringno—
metadataKeyconsultastringnocoincide con ^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$; hasta 64 caracteres; Exact metadata key; requires metadataValue.
metadataValueconsultastringnohasta 1024 caracteres; Exact case-sensitive value; requires metadataKey. Empty string is allowed.

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectsíhasta 100 elementos
items[].idstring (uuid)sí—
items[].namestringsí—
items[].sizestringsíun número entero en dígitos decimales, enviado como cadena; Tamaño en bytes, cadena decimal
items[].createdAtstring (date-time)síHora de reserva de la subida
items[].publishedAtstring (date-time)sípuede ser null; Hora de publicación; null solo cuando no se registró ninguna
items[].labelsarray de stringsíhasta 32 elementos; Etiquetas actuales: la anotación si se reemplazó; en otro caso, el descriptor de la subida
items[].stagesarray de stringsíhasta 16 elementos; cada elemento: coincide con ^[a-z0-9][a-z0-9_.-]{0,31}$; Etapas de promoción actuales en orden de bytes
nextstring (uuid)sípuede ser null; Último ID de una página completa; páselo como after

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/search" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Leer la auditoría del catálogo de un repositorio ​

GET HEAD /api/v1/repositories/{repository}/audit

Acceso: Permiso de repositorio: audit.read; claves de archivo: write · Reintento: Se puede repetir (lectura)

Devuelve, del más antiguo al más reciente, hasta 100 cambios del catálogo del repositorio posteriores al número de secuencia after (0 por defecto): publicaciones, eliminaciones, cambios de anotaciones y de adjuntos, registros de paquetes, cambios de rutas de archivo, referencias, etapas y promociones, cada uno con actor, acción, artefacto y hora. Para seguir leyendo, pase el último sequence de la página como after; no hay campo next. Las descargas y los inicios de sesión no figuran en ella; los espejos siguen listCatalogChanges, que omite los actores.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
afterconsultastringno—

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectno—
items[].sequencestringno—
items[].actorstringno—
items[].actionstringno—
items[].artifactIdstringno—
items[].occurredAtstring (date-time)no—

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/audit" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Añadir una referencia a un artefacto ​

POST /api/v1/repositories/{repository}/artifacts/{id}/references

Acceso: Permiso de repositorio: reference.write, artifact.read; claves de archivo: read, write · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Registra que algo ajeno a Arkvory usa este artefacto, bajo una key a su elección (1–256 letras, dígitos o _.:/-), por ejemplo el nombre de un despliegue. Un artefacto con referencias no se puede eliminar ni la retención puede retirarlo hasta que desaparezcan todas. La referencia pertenece al solicitante; añadir de nuevo la misma clave no cambia nada.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
keystringsíhasta 256 caracteres

Respuestas: 204, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/references" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key":"<key>"}'

Quitar una referencia de un artefacto ​

DELETE /api/v1/repositories/{repository}/artifacts/{id}/references

Acceso: Permiso de repositorio: reference.write, artifact.read; claves de archivo: read, write · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Quita del artefacto la referencia propia del solicitante key; las referencias de otros solicitantes permanecen. Quitar una clave que no existe también se completa con éxito.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
keystringsíhasta 256 caracteres

Respuestas: 204, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X DELETE "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/references" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key":"<key>"}'

Listar artefactos ​

GET HEAD /api/v1/repositories/{repository}/artifacts

Acceso: Permiso de repositorio: artifact.list; claves de archivo: read · Reintento: Se puede repetir (lectura)

Enumera los artefactos publicados del repositorio ordenados por ID, limit por página (1–100, 50 por defecto); continúe pasando next como after. next se establece siempre que una página está llena, por lo que la última página puede estar vacía. Cada elemento lleva el descriptor indicado en la subida; las etiquetas y los metadatos actuales están en getAnnotations.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
afterconsultastring (uuid)no—
limitconsultaintegerno1–100; predeterminado: 50

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectno—
items[].idstring (uuid)sí—
items[].repositorystringsí—
items[].statusstringsíuno de pending, available, cancelled
items[].createdAtstring (date-time)sí—
items[].expiresAtstring (date-time)sí—
items[].descriptorobjectsí—
items[].descriptor.namestringsí1–240 caracteres
items[].descriptor.sizestringsíun número entero en dígitos decimales, enviado como cadena
items[].descriptor.sha256stringsíSHA-256: 64 dígitos hexadecimales en minúsculas
items[].descriptor.labelsarray de stringnohasta 32 elementos; cada elemento: hasta 64 caracteres
items[].descriptor.metadatamapa de stringnohasta 32 entradas
nextstringnopuede ser null

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Obtener un artefacto ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}

Acceso: Permiso de repositorio: artifact.read; claves de archivo: read · Reintento: Se puede repetir (lectura)

Devuelve un artefacto publicado: su ID, repositorio, estado, hora de creación y el descriptor indicado en la subida (nombre, tamaño, SHA-256, etiquetas y metadatos originales). Los artefactos pendientes, cancelados y eliminados responden 404. Para leer los bytes use downloadArtifact.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Respuesta 200

CampoTipoObligatorioReglas
idstring (uuid)sí—
repositorystringsí—
statusstringsíuno de pending, available, cancelled
createdAtstring (date-time)sí—
expiresAtstring (date-time)sí—
descriptorobjectsí—
descriptor.namestringsí1–240 caracteres
descriptor.sizestringsíun número entero en dígitos decimales, enviado como cadena
descriptor.sha256stringsíSHA-256: 64 dígitos hexadecimales en minúsculas
descriptor.labelsarray de stringnohasta 32 elementos; cada elemento: hasta 64 caracteres
descriptor.metadatamapa de stringnohasta 32 entradas

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Eliminar un artefacto ​

DELETE /api/v1/repositories/{repository}/artifacts/{id}

Acceso: Permiso de repositorio: artifact.delete · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Elimina lógicamente un artefacto publicado: desaparece de inmediato de las listas, las búsquedas y las descargas, y la limpieza física en línea del repositorio (setCleanup, desactivada por defecto) recupera sus bytes tras su período de gracia. expectedAnnotationRevision debe ser igual a la revisión actual de las anotaciones. La respuesta es 200 con un outcome: deleted, already_deleted, changed (la revisión difiere), not_found o protected con los blockers que lo retienen (una referencia, una revisión de ruta de archivo, un adjunto de compilación o una etapa de promoción). Compruébelo antes con inspectArtifactDeletion.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
expectedAnnotationRevisionintegersí0–2147483647

Respuesta 200

CampoTipoObligatorioReglas
idstring (uuid)sí—
outcomestringsíuno de deleted, already_deleted, protected, changed, not_eligible, not_found
blockersarray de stringsíhasta 4 elementos; sin elementos repetidos; cada elemento: uno de reference, asset_history, attachment_history, protected_label, promotion_stage

Respuestas: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X DELETE "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedAnnotationRevision":0}'

Descargar un artefacto ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/content

Acceso: Permiso de repositorio: content.read; claves de archivo: read · Reintento: Se puede repetir (lectura)

Transmite los bytes originales con Content-Length, Content-Disposition (el nombre del artefacto) y un ETag fuerte ("sha256:<hex>"). Un único Range da 206 (uno no satisfacible, 416); If-Range con el ETag reanuda de forma segura y If-None-Match responde 304. HEAD devuelve las mismas cabeceras sin cuerpo e ignora Range. En lugar de una cabecera Authorization, la solicitud puede llevar como token un enlace de descarga creado con createDownloadLink; las descargas esperan una ranura libre de la admisión de descargas del servidor.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—
Rangeencabezadostringno—
If-Rangeencabezadostringno—
If-None-Matchencabezadostringno—
Arkvory-Download-Idencabezadostringnocoincide con ^[A-Za-z0-9_-]{16,64}$; The client own id of one download, the same on every range of it: the queue keys the session by it instead of the client address, answers a waiting request at once with 503 download_queued, and may ask it to yield its place at a range boundary. Without it, a waiting request is held until its turn for a bounded time.
Arkvory-Queue-Ticketencabezadostringnohasta 80 caracteres; The last Arkvory-Queue-Ticket the server sent for this download: after a server restart the download takes its old turn. A ticket that is wrong, expired or of another download is ignored.
Arkvory-Download-Classencabezadostringnouno de interactive, release, bulk, background; Queue class of the download. Only a class lower than the caller own one applies (people: interactive, services and links: release); an unknown value is 400. The response names the class applied.
tokenconsultastringnocoincide con ^dtl_[A-Za-z0-9_-]{43}$; Download link from POST …/artifacts/{id}/links, instead of an Authorization header

Respuestas: 200, 206, 304, 400, 401, 403, 404, 409, 416, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/content" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -o file

Leer el resumen de los sitios ​

GET HEAD /api/v1/fleet/overview

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Alertas de los sitios gestionados y de esta instalación, las más graves primero (critical, warning, info), y los vínculos de espejo entre ellos. Se construye con las últimas lecturas en segundo plano, como mucho una vez cada 5 segundos. Un origen en cuya dirección no responde ningún sitio gestionado es external:<origin>; esta instalación es self y los vínculos hacia ella solo aparecen con ARKVORY_SITE_URL definido. Solo responde el proceso de escritura.

Respuesta 200

CampoTipoObligatorioReglas
generatedAtstring (date-time)sí—
selfobjectsí—
self.namestringsí—
self.versionstringsí—
self.urlstringsípuede ser null
alertsarray de objectsí—
alerts[].sitestringsí—
alerts[].namestringsí—
alerts[].kindstringsíuno de unreachable, certificate, revoked, refused, invalid, stale, not-writable, copies, single-copy, mirror-failing, mirror-lag, updates-failed, version-skew
alerts[].severitystringsíuno de critical, warning, info
alerts[].subjectstringsípuede ser null
alerts[].sincestring (date-time)sípuede ser null
linksarray de objectsí—
links[].fromstringsí—
links[].tostringsí—
links[].repositorystringsí—
links[].sourceRepositorystringsí—
links[].modestringsíuno de mirror, import
links[].lagChangesstringsíun número entero en dígitos decimales, enviado como cadena; puede ser null
links[].failingbooleansí—
links[].stalebooleanno—
externalarray de stringsí—

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/fleet/overview" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Listar los sitios gestionados ​

GET HEAD /api/v1/fleet/sites

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Lista los sitios que gestiona esta instalación (ADR 0077) con lo último que informó cada uno: state (ok, o por qué no se leyó: unreachable, certificate, revoked, invalid, refused), cuándo se vio por última vez y su última topology. Los sitios se leen cada 30 segundos en segundo plano. Nunca se devuelve la clave de un sitio.

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectsíhasta 256 elementos
items[].idstring (uuid)sí—
items[].namestringsí—
items[].urlstringsí—
items[].fingerprintstringsícoincide con ^[0-9a-f]{64}$; puede ser null
items[].addedBystringsí—
items[].addedAtstring (date-time)sí—
items[].seenAtstring (date-time)sípuede ser null
items[].statestringsíuno de pending, ok, unreachable, certificate, revoked, invalid, refused
items[].errorstringsípuede ser null
items[].topologyobjectsípuede ser null
items[].topology.collectedAtstring (date-time)sí—
items[].topology.siteobjectsí—
items[].topology.healthobjectsí—
items[].topology.replicationobjectsípuede ser null
items[].topology.gatewaysarray de objectsíhasta 16 elementos
items[].topology.mirrorsarray de objectsíhasta 64 elementos
items[].topology.updatesobjectsípuede ser null
items[].topology.downloadsobjectsí—

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/fleet/sites" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Emparejar con un sitio ​

POST /api/v1/fleet/sites

Acceso: Administrador · Reintento: No repetir automáticamente

Empareja un sitio: el controlador vuelve a conectarse, el certificado debe seguir teniendo la fingerprint que confirmó el administrador (null para HTTP en loopback), el code de emparejamiento creado en el sitio se canjea por una clave y la clave se sella con ARKVORY_FLEET_KEY_FILE. El sitio se lee una vez antes de responder. Sin el archivo de clave la respuesta es 503.

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
urlstringsí—
fingerprintstringsícoincide con ^[0-9a-f]{64}$; puede ser null
codestringsíhasta 32 caracteres

Respuesta 201

CampoTipoObligatorioReglas
idstring (uuid)sí—
namestringsí—
urlstringsí—
fingerprintstringsícoincide con ^[0-9a-f]{64}$; puede ser null
addedBystringsí—
addedAtstring (date-time)sí—
seenAtstring (date-time)sípuede ser null
statestringsíuno de pending, ok, unreachable, certificate, revoked, invalid, refused
errorstringsípuede ser null
topologyobjectsípuede ser null
topology.collectedAtstring (date-time)sí—
topology.siteobjectsí—
topology.site.namestringsí—
topology.site.versionstringsí—
topology.site.schemaintegersícomo mínimo 0
topology.site.rolestringsíuno de api, reader
topology.healthobjectsí—
topology.health.availablebooleansí—
topology.health.writablebooleansí—
topology.health.drainingbooleansí—
topology.replicationobjectsípuede ser null
topology.replication.copiesintegersí0–16
topology.replication.requiredintegersí1–16
topology.replication.singleCopyUntilstring (date-time)sípuede ser null
topology.replication.nodestringnohasta 63 caracteres
topology.replication.profilestringnouno de ha-2, ha-3
topology.replication.peersarray de objectnohasta 16 elementos
topology.gatewaysarray de objectsíhasta 16 elementos
topology.gateways[].slotintegersícomo mínimo 0
topology.gateways[].activebooleansí—
topology.gateways[].expiresAtstring (date-time)sí—
topology.mirrorsarray de objectsíhasta 64 elementos
topology.mirrors[].repositorystringsí—
topology.mirrors[].modestringsíuno de mirror, import
topology.mirrors[].upstreamstringsí—
topology.mirrors[].sourceRepositorystringsí—
topology.mirrors[].phasestringsí—
topology.mirrors[].errorCodestringsípuede ser null
topology.mirrors[].checkedAtstring (date-time)sípuede ser null
topology.mirrors[].syncedAtstring (date-time)sípuede ser null
topology.mirrors[].lagChangesstringsíun número entero en dígitos decimales, enviado como cadena; puede ser null
topology.mirrors[].copiedArtifactsintegersícomo mínimo 0
topology.mirrors[].copiedBytesstringsíun número entero en dígitos decimales, enviado como cadena
topology.updatesobjectsípuede ser null
topology.updates.currentVersionstringsí—
topology.updates.lateststringsípuede ser null
topology.updates.phasestringsí—
topology.updates.errorstringsípuede ser null
topology.updates.automaticbooleansí—
topology.updates.heartbeatAtstring (date-time)sí—
topology.downloadsobjectsí—
topology.downloads.strategystringsíuno de ordered, smallest-first, shared
topology.downloads.sessionsintegersícomo mínimo 0
topology.downloads.activeintegersícomo mínimo 0
topology.downloads.waitingintegersícomo mínimo 0
topology.downloads.oldestWaitSecondsintegersícomo mínimo 0
topology.downloads.bytesPerSecondintegersícomo mínimo 0

Respuestas: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>","fingerprint":"<fingerprint>","code":"<code>"}'

Leer el certificado de un sitio ​

POST /api/v1/fleet/sites/probe

Acceso: Administrador · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Se conecta a la dirección y lee el certificado del sitio sin enviar nada: compare su fingerprint con la que ve el administrador del sitio antes de emparejar.

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
urlstringsí—

Respuesta 200

CampoTipoObligatorioReglas
urlstringsí—
certificateobjectsípuede ser null
certificate.fingerprintstringsícoincide con ^[0-9a-f]{64}$
certificate.subjectstringsí—
certificate.issuerstringsí—
certificate.validTostring (date-time)sí—

Respuestas: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites/probe" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>"}'

Olvidar un sitio ​

DELETE /api/v1/fleet/sites/{id}

Acceso: Administrador · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Olvida aquí un sitio y su clave sellada. Revoque también este controlador en el sitio; hasta entonces la clave sigue siendo válida allí.

Parámetros

NombreUbicaciónTipoObligatorioReglas
idrutastring (uuid)sí—

Respuestas: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

Ejemplo

bash
curl -X DELETE "$ARKVORY_URL/api/v1/fleet/sites/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Leer el catálogo de un sitio ​

GET HEAD /api/v1/fleet/sites/{id}/read

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Pasa una lectura del catálogo a un sitio gestionado y devuelve su respuesta sin cambios: repositorios, búsqueda, artefactos, anotaciones, etapas, paquetes, páginas e historial de archivos, uso de almacenamiento, estado del espejo. path es la ruta del sitio con su consulta. Otras rutas y los bytes de archivos se rechazan con 400.

Parámetros

NombreUbicaciónTipoObligatorioReglas
idrutastring (uuid)sí—
pathconsultastringsícoincide con ^/api/v1/; hasta 2048 caracteres; A read route of the site with its query, from a fixed list: catalog metadata (repositories, search, artifacts, annotations, stages, packages, file pages and history, storage usage, mirror state), download queue settings and update state. Never file bytes.

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/fleet/sites/$ID/read?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Cambiar un ajuste de un sitio ​

POST /api/v1/fleet/sites/{id}/change

Acceso: Administrador · Reintento: No repetir automáticamente

Pasa un cambio a un sitio gestionado y devuelve su respuesta sin cambios. path es una de estas rutas: /api/v1/system/downloads/settings (ajustes de la cola de descargas, enviado como PUT) o /api/v1/system/updates/requests (una solicitud de actualización, enviada como POST). El cuerpo llega al sitio tal cual; el sitio comprueba la revisión o el id de la solicitud, así que un cambio repetido no se aplica dos veces. Otras rutas se rechazan con 400.

Parámetros

NombreUbicaciónTipoObligatorioReglas
idrutastring (uuid)sí—
pathconsultastringsícoincide con ^/api/v1/; hasta 2048 caracteres; A change route of the site, from a fixed list: PUT /api/v1/system/downloads/settings, POST /api/v1/system/updates/requests.

Cuerpo de la solicitud (application/json)

Respuestas: 200, 202, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites/$ID/change?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Leer un sitio ahora ​

POST /api/v1/fleet/sites/{id}/refresh

Acceso: Administrador · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Lee el sitio ahora en lugar de esperar a la siguiente ronda y lo devuelve con el nuevo estado.

Parámetros

NombreUbicaciónTipoObligatorioReglas
idrutastring (uuid)sí—

Respuesta 200

CampoTipoObligatorioReglas
idstring (uuid)sí—
namestringsí—
urlstringsí—
fingerprintstringsícoincide con ^[0-9a-f]{64}$; puede ser null
addedBystringsí—
addedAtstring (date-time)sí—
seenAtstring (date-time)sípuede ser null
statestringsíuno de pending, ok, unreachable, certificate, revoked, invalid, refused
errorstringsípuede ser null
topologyobjectsípuede ser null
topology.collectedAtstring (date-time)sí—
topology.siteobjectsí—
topology.site.namestringsí—
topology.site.versionstringsí—
topology.site.schemaintegersícomo mínimo 0
topology.site.rolestringsíuno de api, reader
topology.healthobjectsí—
topology.health.availablebooleansí—
topology.health.writablebooleansí—
topology.health.drainingbooleansí—
topology.replicationobjectsípuede ser null
topology.replication.copiesintegersí0–16
topology.replication.requiredintegersí1–16
topology.replication.singleCopyUntilstring (date-time)sípuede ser null
topology.replication.nodestringnohasta 63 caracteres
topology.replication.profilestringnouno de ha-2, ha-3
topology.replication.peersarray de objectnohasta 16 elementos
topology.gatewaysarray de objectsíhasta 16 elementos
topology.gateways[].slotintegersícomo mínimo 0
topology.gateways[].activebooleansí—
topology.gateways[].expiresAtstring (date-time)sí—
topology.mirrorsarray de objectsíhasta 64 elementos
topology.mirrors[].repositorystringsí—
topology.mirrors[].modestringsíuno de mirror, import
topology.mirrors[].upstreamstringsí—
topology.mirrors[].sourceRepositorystringsí—
topology.mirrors[].phasestringsí—
topology.mirrors[].errorCodestringsípuede ser null
topology.mirrors[].checkedAtstring (date-time)sípuede ser null
topology.mirrors[].syncedAtstring (date-time)sípuede ser null
topology.mirrors[].lagChangesstringsíun número entero en dígitos decimales, enviado como cadena; puede ser null
topology.mirrors[].copiedArtifactsintegersícomo mínimo 0
topology.mirrors[].copiedBytesstringsíun número entero en dígitos decimales, enviado como cadena
topology.updatesobjectsípuede ser null
topology.updates.currentVersionstringsí—
topology.updates.lateststringsípuede ser null
topology.updates.phasestringsí—
topology.updates.errorstringsípuede ser null
topology.updates.automaticbooleansí—
topology.updates.heartbeatAtstring (date-time)sí—
topology.downloadsobjectsí—
topology.downloads.strategystringsíuno de ordered, smallest-first, shared
topology.downloads.sessionsintegersícomo mínimo 0
topology.downloads.activeintegersícomo mínimo 0
topology.downloads.waitingintegersícomo mínimo 0
topology.downloads.oldestWaitSecondsintegersícomo mínimo 0
topology.downloads.bytesPerSecondintegersícomo mínimo 0

Respuestas: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites/$ID/refresh" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Crear un código de emparejamiento ​

POST /api/v1/system/fleet/pairings

Acceso: Administrador · Reintento: No repetir automáticamente

Crea un código de un solo uso, válido diez minutos, que el administrador de un controlador introduce para gestionar este sitio. El código se muestra una vez y solo se guarda como hash. Solo el administrador global del sitio puede crearlo.

Respuesta 201

CampoTipoObligatorioReglas
codestringsícoincide con ^[0-9A-Z]{4}-[0-9A-Z]{4}-[0-9A-Z]{4}$
expiresAtstring (date-time)sí—
fingerprintstringsícoincide con ^[0-9a-f]{64}$; puede ser null

Respuestas: 201, 400, 401, 403, 404, 405, 409, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/system/fleet/pairings" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Listar los controladores del sitio ​

GET HEAD /api/v1/system/fleet/controllers

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Lista los controladores que pueden gestionar este sitio: nombre, quién los emparejó, cuándo y cuándo se usó su clave por última vez.

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectsíhasta 100 elementos
items[].idstring (uuid)sí—
items[].namestringsí—
items[].pairedBystringsí—
items[].pairedAtstring (date-time)sí—
items[].usedAtstring (date-time)sípuede ser null

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/system/fleet/controllers" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Revocar un controlador ​

DELETE /api/v1/system/fleet/controllers/{id}

Acceso: Administrador · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Revoca un controlador: su clave de flota se rechaza de inmediato. Para volver a gestionar el sitio debe emparejarse con un código nuevo.

Parámetros

NombreUbicaciónTipoObligatorioReglas
idrutastring (uuid)sí—

Respuestas: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

Ejemplo

bash
curl -X DELETE "$ARKVORY_URL/api/v1/system/fleet/controllers/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Emparejar con un controlador ​

POST /api/v1/system/fleet/enrollment

Acceso: Cualquiera, sin clave · Reintento: No repetir automáticamente

Canjea una vez un código de emparejamiento vigente por una clave de flota. El controlador lo llama por TLS fijado a la huella que confirmó el administrador. La clave se devuelve una vez y solo alcanza las rutas que necesita un controlador.

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
codestringsíhasta 32 caracteres
namestringsí1–63 caracteres

Respuesta 201

CampoTipoObligatorioReglas
keystringsícoincide con ^afk_[A-Za-z0-9_-]{43}$
siteobjectsí—
site.namestringsí—
site.versionstringsí—

Respuestas: 201, 400, 403, 405, 413, 415, 503

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/system/fleet/enrollment" \
  -H "Content-Type: application/json" \
  -d '{"code":"<code>","name":"<name>"}'

Obtener este sitio para la consola de flota ​

GET HEAD /api/v1/system/topology

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Devuelve esta instalación como un sitio de una flota (ADR 0077): nombre, versión, esquema y rol, si está disponible y admite escrituras, las copias y nodos de HA, las pasarelas de lectura según sus arrendamientos, cada espejo e importación con su fase, última sincronización y lagChanges (cambios del origen aún no aplicados), el estado del agente de actualizaciones y la cola de descargas. Solo puede leerlo el administrador global del sitio o un controlador emparejado con él.

Respuesta 200

CampoTipoObligatorioReglas
collectedAtstring (date-time)sí—
siteobjectsí—
site.namestringsí—
site.versionstringsí—
site.schemaintegersícomo mínimo 0
site.rolestringsíuno de api, reader
healthobjectsí—
health.availablebooleansí—
health.writablebooleansí—
health.drainingbooleansí—
replicationobjectsípuede ser null
replication.copiesintegersí0–16
replication.requiredintegersí1–16
replication.singleCopyUntilstring (date-time)sípuede ser null
replication.nodestringnohasta 63 caracteres
replication.profilestringnouno de ha-2, ha-3
replication.peersarray de objectnohasta 16 elementos
replication.peers[].namestringsíhasta 63 caracteres
replication.peers[].connectedbooleansí—
replication.peers[].diskstringsíhasta 24 caracteres
replication.peers[].completebooleansí—
replication.peers[].witnessbooleansí—
gatewaysarray de objectsíhasta 16 elementos
gateways[].slotintegersícomo mínimo 0
gateways[].activebooleansí—
gateways[].expiresAtstring (date-time)sí—
mirrorsarray de objectsíhasta 64 elementos
mirrors[].repositorystringsí—
mirrors[].modestringsíuno de mirror, import
mirrors[].upstreamstringsí—
mirrors[].sourceRepositorystringsí—
mirrors[].phasestringsí—
mirrors[].errorCodestringsípuede ser null
mirrors[].checkedAtstring (date-time)sípuede ser null
mirrors[].syncedAtstring (date-time)sípuede ser null
mirrors[].lagChangesstringsíun número entero en dígitos decimales, enviado como cadena; puede ser null
mirrors[].copiedArtifactsintegersícomo mínimo 0
mirrors[].copiedBytesstringsíun número entero en dígitos decimales, enviado como cadena
updatesobjectsípuede ser null
updates.currentVersionstringsí—
updates.lateststringsípuede ser null
updates.phasestringsí—
updates.errorstringsípuede ser null
updates.automaticbooleansí—
updates.heartbeatAtstring (date-time)sí—
downloadsobjectsí—
downloads.strategystringsíuno de ordered, smallest-first, shared
downloads.sessionsintegersícomo mínimo 0
downloads.activeintegersícomo mínimo 0
downloads.waitingintegersícomo mínimo 0
downloads.oldestWaitSecondsintegersícomo mínimo 0
downloads.bytesPerSecondintegersícomo mínimo 0

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/system/topology" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Leer los ajustes de la cola de descargas ​

GET HEAD /api/v1/system/downloads/settings

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Devuelve los valores cambiados (overrides), lo que fija el entorno del servidor (defaults) y lo que usa la cola ahora (effective), con la revisión que hay que enviar al cambiar. problem indica por qué los ajustes guardados no encajan en este servidor; entonces la cola funciona con los valores por defecto.

Respuesta 200

CampoTipoObligatorioReglas
revisionintegersí0–9007199254740991
overridesobjectsí—
overrides.strategystringnouno de ordered, smallest-first, shared
overrides.sessionsintegerno1–1024
overrides.reserveintegerno0–1023
overrides.perPrincipalintegerno1–1024
overrides.weightsobjectno—
overrides.weights.interactiveintegersí1–1000
overrides.weights.releaseintegersí1–1000
overrides.weights.bulkintegersí1–1000
overrides.weights.backgroundintegersí1–1000
overrides.sessionMinBytesintegerno0–9007199254740991
overrides.idleSecondsintegerno1–3600
overrides.agingMinutesintegerno0–10080
overrides.preemptbooleanno—
overrides.rangesPerSessionintegerno1–64
defaultsobjectsí—
defaults.strategystringsíuno de ordered, smallest-first, shared
defaults.sessionsintegersí1–1024
defaults.reserveintegersí0–1023
defaults.perPrincipalintegersí1–1024
defaults.weightsobjectsí—
defaults.weights.interactiveintegersí1–1000
defaults.weights.releaseintegersí1–1000
defaults.weights.bulkintegersí1–1000
defaults.weights.backgroundintegersí1–1000
defaults.sessionMinBytesintegersí0–9007199254740991
defaults.idleSecondsintegersí1–3600
defaults.agingMinutesintegersí0–10080
defaults.preemptbooleansí—
defaults.rangesPerSessionintegersí1–64
effectiveobjectsí—
effective.strategystringsíuno de ordered, smallest-first, shared
effective.sessionsintegersí1–1024
effective.reserveintegersí0–1023
effective.perPrincipalintegersí1–1024
effective.weightsobjectsí—
effective.weights.interactiveintegersí1–1000
effective.weights.releaseintegersí1–1000
effective.weights.bulkintegersí1–1000
effective.weights.backgroundintegersí1–1000
effective.sessionMinBytesintegersí0–9007199254740991
effective.idleSecondsintegersí1–3600
effective.agingMinutesintegersí0–10080
effective.preemptbooleansí—
effective.rangesPerSessionintegersí1–64
admissionstringsíuno de sessions, per-request
updatedAtstring (date-time)sípuede ser null
updatedBystringsípuede ser null
actorstringsípuede ser null
problemstringsípuede ser null

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/system/downloads/settings" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Cambiar los ajustes de la cola de descargas ​

PUT /api/v1/system/downloads/settings

Acceso: Administrador · Reintento: Repetir solo con la revisión esperada (compare-and-swap)

Guarda overrides sobre el entorno del servidor y los aplica sin reiniciar: las nuevas decisiones los siguen de inmediato y las descargas activas conservan su lugar. Los valores enviados reemplazan todos los cambios anteriores; {} vuelve al entorno. Los ajustes que no pueden funcionar aquí se rechazan con 400 indicando el campo; una expectedRevision desactualizada recibe 409. Las pasarelas de lectura conservan su entorno.

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
expectedRevisionintegersí0–9007199254740991
overridesobjectsí—
overrides.strategystringnouno de ordered, smallest-first, shared
overrides.sessionsintegerno1–1024
overrides.reserveintegerno0–1023
overrides.perPrincipalintegerno1–1024
overrides.weightsobjectno—
overrides.weights.interactiveintegersí1–1000
overrides.weights.releaseintegersí1–1000
overrides.weights.bulkintegersí1–1000
overrides.weights.backgroundintegersí1–1000
overrides.sessionMinBytesintegerno0–9007199254740991
overrides.idleSecondsintegerno1–3600
overrides.agingMinutesintegerno0–10080
overrides.preemptbooleanno—
overrides.rangesPerSessionintegerno1–64

Respuesta 200

CampoTipoObligatorioReglas
revisionintegersí0–9007199254740991
overridesobjectsí—
overrides.strategystringnouno de ordered, smallest-first, shared
overrides.sessionsintegerno1–1024
overrides.reserveintegerno0–1023
overrides.perPrincipalintegerno1–1024
overrides.weightsobjectno—
overrides.weights.interactiveintegersí1–1000
overrides.weights.releaseintegersí1–1000
overrides.weights.bulkintegersí1–1000
overrides.weights.backgroundintegersí1–1000
overrides.sessionMinBytesintegerno0–9007199254740991
overrides.idleSecondsintegerno1–3600
overrides.agingMinutesintegerno0–10080
overrides.preemptbooleanno—
overrides.rangesPerSessionintegerno1–64
defaultsobjectsí—
defaults.strategystringsíuno de ordered, smallest-first, shared
defaults.sessionsintegersí1–1024
defaults.reserveintegersí0–1023
defaults.perPrincipalintegersí1–1024
defaults.weightsobjectsí—
defaults.weights.interactiveintegersí1–1000
defaults.weights.releaseintegersí1–1000
defaults.weights.bulkintegersí1–1000
defaults.weights.backgroundintegersí1–1000
defaults.sessionMinBytesintegersí0–9007199254740991
defaults.idleSecondsintegersí1–3600
defaults.agingMinutesintegersí0–10080
defaults.preemptbooleansí—
defaults.rangesPerSessionintegersí1–64
effectiveobjectsí—
effective.strategystringsíuno de ordered, smallest-first, shared
effective.sessionsintegersí1–1024
effective.reserveintegersí0–1023
effective.perPrincipalintegersí1–1024
effective.weightsobjectsí—
effective.weights.interactiveintegersí1–1000
effective.weights.releaseintegersí1–1000
effective.weights.bulkintegersí1–1000
effective.weights.backgroundintegersí1–1000
effective.sessionMinBytesintegersí0–9007199254740991
effective.idleSecondsintegersí1–3600
effective.agingMinutesintegersí0–10080
effective.preemptbooleansí—
effective.rangesPerSessionintegersí1–64
admissionstringsíuno de sessions, per-request
updatedAtstring (date-time)sípuede ser null
updatedBystringsípuede ser null
actorstringsípuede ser null
problemstringsípuede ser null

Respuestas: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X PUT "$ARKVORY_URL/api/v1/system/downloads/settings" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedRevision":0,"overrides":{}}'

Leer los cambios del sitio ​

GET HEAD /api/v1/system/changes

Acceso: Administrador · Reintento: Se puede repetir (lectura)

Devuelve si el agente del sitio responde (agent), la solicitud pendiente y las 20 más recientes con su estado: pending, applying, done o failed con el motivo. Las claves de origen nunca aparecen aquí.

Respuesta 200

CampoTipoObligatorioReglas
agentbooleansí—
updatingbooleansí—
blockedstringsíuno de expired, interrupted, key_missing, not_a_mirror, already_attached, mirror_failed, switchover_failed, single_copy_failed, unreadable, digest_mismatch, null; puede ser null
pendingobjectsípuede ser null
pending.idstring (uuid)sí—
pending.kindstringsíuno de mirror-attach, mirror-key, mirror-detach, cluster-switchover, single-copy
pending.actorstringsíhasta 200 caracteres
pending.requestedAtstring (date-time)sí—
recentarray de objectsíhasta 20 elementos
recent[].idstring (uuid)sí—
recent[].digeststringsícoincide con ^[0-9a-f]{64}$
recent[].kindstringsíuno de mirror-attach, mirror-key, mirror-detach, cluster-switchover, single-copy
recent[].statestringsíuno de pending, applying, done, failed
recent[].errorstringsíuno de expired, interrupted, key_missing, not_a_mirror, already_attached, mirror_failed, switchover_failed, single_copy_failed, unreadable, digest_mismatch, null; puede ser null
recent[].actorstringsíhasta 200 caracteres
recent[].requestedAtstring (date-time)sí—
recent[].finishedAtstring (date-time)sípuede ser null

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/system/changes" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Poner en cola un cambio del sitio ​

POST /api/v1/system/changes

Acceso: Administrador · Reintento: Se puede repetir: la misma solicitud tiene el mismo efecto

Pone en cola un cambio para el agente del sitio, que lo aplica en menos de un minuto con las comprobaciones y la reversión de arkvory configure y cluster-*: conectar un espejo o una importación, sustituir su clave de origen, desconectar espejos, cambiar el nodo HA activo (el nombre del nodo se escribe dos veces) o decidir escrituras con una copia. id lo elige el cliente; repetirlo no vuelve a poner el cambio en cola. key es la clave de origen solo de mirror-attach y mirror-key: llega al agente en su propio archivo 0600 y nunca se devuelve. 202 significa en cola, no aplicado.

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
idstring (uuid)sí—
changeobjectsí—
change.kindstringsíuno de mirror-attach
change.repositorystringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
change.upstreamstringsíhasta 255 caracteres
change.sourceRepositorystringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
change.stagesarray de stringno1–16 elementos; cada elemento: coincide con ^[a-z0-9][a-z0-9_.-]{0,31}$; puede ser null
change.repositoriesarray de stringsí1–64 elementos; cada elemento: coincide con ^[a-z0-9][a-z0-9_-]{0,63}$
change.nodestringsícoincide con ^[A-Za-z0-9][A-Za-z0-9_.-]{0,62}$
change.confirmstringsícoincide con ^[A-Za-z0-9][A-Za-z0-9_.-]{0,62}$
change.untilstring (date-time)sípuede ser null
change.reasonstringsí1–200 caracteres
keystringno16–4000 caracteres

Respuesta 202

CampoTipoObligatorioReglas
idstring (uuid)sí—

Respuestas: 202, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/system/changes" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id":"00000000-0000-4000-8000-000000000000","change":{"kind":"mirror-attach","repository":"<repository>","upstream":"<upstream>","sourceRepository":"<sourceRepository>"}}'

Seguir el flujo de cambios de un repositorio ​

GET HEAD /api/v1/repositories/{repository}/changes

Acceso: Permiso de repositorio: artifact.list; claves de archivo: read · Reintento: Se puede repetir (lectura)

Devuelve, en orden de confirmación, hasta limit cambios (1–100, 100 por defecto) posteriores a la secuencia after (0 por defecto): acción, artefacto y, para rutas de archivo y etapas, la ruta o la etapa en detail; los actores se omiten, por lo que basta con el permiso de listado. head es la secuencia más reciente del repositorio y next el cursor de la página siguiente, o null cuando la página llegó hasta head. Un espejo guarda la última secuencia que aplicó y sondea desde ahí.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
afterconsultastringnoun número entero en dígitos decimales, enviado como cadena; Sequence cursor, default 0
limitconsultaintegerno1–100

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectsí—
items[].sequencestringsíun número entero en dígitos decimales, enviado como cadena
items[].actionstringsí—
items[].artifactIdstring (uuid)sí—
items[].detailstringsípuede ser null
headstringsíun número entero en dígitos decimales, enviado como cadena
nextstringsíun número entero en dígitos decimales, enviado como cadena; puede ser null

Respuestas: 200, 400, 401, 403, 404, 409, 422, 503, 507

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/changes" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

POST /api/v1/repositories/{repository}/artifacts/{id}/links

Acceso: Permiso de repositorio: content.read; claves de archivo: read · Reintento: No repetir automáticamente

Devuelve un token secreto, una url relativa al origen de la API y expiresAt para usar downloadArtifact con este único artefacto sin clave; ttlSeconds fija la duración (de 60 segundos a un día, una hora por defecto). El token se muestra solo en esta respuesta y no se puede revocar: deja de funcionar cuando caduca o se elimina el artefacto, y las descargas con él cuentan para los límites de transferencia de su creador. Un solicitante puede tener 1000 enlaces vigentes (507 token_limit), y un enlace de descarga no puede crear más enlaces.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
idrutastring (uuid)sí—

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
ttlSecondsintegerno60–86400; predeterminado: 3600

Respuesta 201

CampoTipoObligatorioReglas
tokenstringsícoincide con ^dtl_[A-Za-z0-9_-]{43}$
urlstringsí—
expiresAtstring (date-time)sí—

Respuestas: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/links" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Arkvory · ProAnimaStudio