Saltar al contenido

Archivos por ruta ​

Archivos direccionados por una ruta del repositorio: revisiones, historial, restauración y archivos sin procesar en una sola solicitud.

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 ​

Listar rutas de archivo por prefijo ​

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

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

Devuelve todas las rutas de archivo que empiezan por prefix (literal, no un patrón; vacío para todas), ordenadas por ruta, cada una con su revisión actual y el ID del artefacto. No hay paginación: más de 1000 coincidencias producen un 400 que pide un prefijo más específico, así que prefiera listAssetPage para árboles grandes.

Parámetros

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

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectno—
items[].pathstringsí—
items[].revisionintegersí1–2147483647
items[].artifactIdstring (uuid)sí—

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

Ejemplo

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

Listar rutas de archivo página por página ​

GET HEAD /api/v1/repositories/{repository}/assets/page

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

Devuelve las rutas de archivo actuales que empiezan por prefix (literal; vacío para todas) en orden de bytes UTF-8, cada una con su revisión actual y el ID del artefacto. Las páginas contienen limit elementos (1–100, 50 por defecto); continúe pasando el next opaco como after. Las páginas no son una instantánea: las rutas modificadas entre solicitudes pueden aparecer con su revisión más reciente o quedar fuera hasta la siguiente pasada.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
prefixconsultastringnohasta 1024 caracteres; predeterminado: ``; Case-sensitive literal prefix; % and _ are ordinary characters.
afterconsultastringnocoincide con ^[A-Za-z0-9_-]+$; 1–8192 caracteres
limitconsultaintegerno1–100; predeterminado: 50

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectsíhasta 100 elementos
items[].pathstringsí—
items[].revisionintegersí1–2147483647
items[].artifactIdstring (uuid)sí—
nextstringsícoincide con ^[A-Za-z0-9_-]+$; 1–8192 caracteres; puede ser null; Cursor opaco ligado al repositorio y al prefijo; null al final. Nunca concede acceso.

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

Ejemplo

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

Obtener la revisión actual de una ruta de archivo ​

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

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

Devuelve la revision actual de path y el ID del artefacto al que apunta; una ruta desconocida es un 404. Una ruta tiene de 1 a 1024 caracteres en segmentos separados por /, sin segmentos vacíos, . ni .., y sin \, : ni caracteres de control. Descargue los bytes con downloadAssetContent o pase la revisión a setAsset como expectedRevision.

Parámetros

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

Respuesta 200

CampoTipoObligatorioReglas
pathstringsí—
revisionintegersí1–2147483647
artifactIdstring (uuid)sí—

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

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Apuntar una ruta de archivo a un artefacto ​

PUT /api/v1/repositories/{repository}/asset

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

Hace que path nombre un artefacto publicado del mismo repositorio como su nueva revisión; expectedRevision es 0 para crear la ruta y la revisión actual para reemplazarla; de lo contrario, 409 revision_mismatch. Las revisiones anteriores permanecen en el historial e impiden que sus artefactos se eliminen. Para almacenar bytes y nombrarlos en una sola solicitud, use putRawFile.

Parámetros

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

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
pathstringsí—
artifactIdstring (uuid)sí—
expectedRevisionintegersí0–2147483646

Respuesta 200

CampoTipoObligatorioReglas
pathstringsí—
revisionintegersí1–2147483647
artifactIdstring (uuid)sí—

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

Ejemplo

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"path":"<path>","artifactId":"00000000-0000-4000-8000-000000000000","expectedRevision":0}'

Listar las revisiones de una ruta de archivo ​

GET HEAD /api/v1/repositories/{repository}/asset/history

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

Devuelve las revisiones de path, de la más reciente a la más antigua, 50 por página, cada una con su artefacto, el actor, la hora y, en una restauración, la sourceRevision que copió (el actor y la hora son null en las revisiones registradas por las primeras versiones del servidor). Continúe pasando next como before. Una ruta desconocida es un 404.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
pathconsultastringsí—
beforeconsultaintegerno1–2147483647; Only revisions strictly smaller than this value

Respuesta 200

CampoTipoObligatorioReglas
itemsarray de objectsíhasta 50 elementos
items[].pathstringsí—
items[].revisionintegersí1–2147483647
items[].artifactIdstring (uuid)sí—
items[].actorstringsípuede ser null; Null para el historial registrado antes de la migración 4
items[].createdAtstring (date-time)sípuede ser null; Null para el historial registrado antes de la migración 4
items[].sourceRevisionintegersí1–2147483647; puede ser null; Revisión restaurada; null en un reemplazo ordinario
nextintegersí1–2147483647; puede ser null; Cursor exclusivo para before; null al final

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

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/history?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Obtener una revisión de una ruta de archivo ​

GET HEAD /api/v1/repositories/{repository}/asset/revision

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

Devuelve la revisión revision de path con el ID de su artefacto, el actor, la hora y el origen de la restauración. Las revisiones nunca cambian, por lo que el ID del artefacto se puede guardar en caché; descárguelo con downloadArtifact. Una ruta o una revisión inexistente es un 404.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
pathconsultastringsí—
revisionconsultaintegersí1–2147483647

Respuesta 200

CampoTipoObligatorioReglas
pathstringsí—
revisionintegersí1–2147483647
artifactIdstring (uuid)sí—
actorstringsípuede ser null; Null para el historial registrado antes de la migración 4
createdAtstring (date-time)sípuede ser null; Null para el historial registrado antes de la migración 4
sourceRevisionintegersí1–2147483647; puede ser null; Revisión restaurada; null en un reemplazo ordinario

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

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/revision?path=$PATH&revision=$REVISION" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Restaurar una revisión anterior de una ruta de archivo ​

POST /api/v1/repositories/{repository}/asset/restore

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

Añade una nueva revisión de path que apunta al artefacto de sourceRevision; no se copia nada ni se elimina ninguna revisión. expectedRevision debe ser la revisión actual (al menos 1); de lo contrario, 409 revision_mismatch, de modo que repetir una restauración que ya tuvo éxito produce un 409 y no una segunda restauración. La nueva revisión registra sourceRevision y el cambio se audita en la misma transacción.

Parámetros

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

Cuerpo de la solicitud (application/json)

CampoTipoObligatorioReglas
pathstringsí—
sourceRevisionintegersí1–2147483647
expectedRevisionintegersí1–2147483646

Respuesta 200

CampoTipoObligatorioReglas
pathstringsí—
revisionintegersí1–2147483647
artifactIdstring (uuid)sí—

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

Ejemplo

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/restore" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"path":"<path>","sourceRevision":1,"expectedRevision":1}'

Descargar un archivo por ruta ​

GET HEAD /api/v1/repositories/{repository}/asset/content

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

Resuelve path a su revisión actual y transmite ese artefacto como downloadArtifact, con Range, If-Range, If-None-Match y HEAD. La ruta se resuelve en cada solicitud, así que reanude con If-Range igual al ETag devuelto: si la ruta ya apunta a otra revisión, la respuesta es el archivo nuevo completo en lugar de uno mezclado. downloadRawFile hace lo mismo con la ruta en la URL.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
RangeencabezadostringnoSingle bytes range; multi-range is unsupported. HEAD ignores Range.
If-RangeencabezadostringnoExact strong ETag; a mismatch causes a full response.
If-None-MatchencabezadostringnoMatching ETag returns 304, including HEAD.
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.
pathconsultastringsí—

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

Ejemplo

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/content?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -o file

Subir un archivo a una ruta en una sola solicitud ​

PUT /api/v1/repositories/{repository}/raw/{assetPath}

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

Almacena el cuerpo de la solicitud, de cualquier tipo de medio, como la nueva revisión de la ruta de la URL, pensado para scripts y CI (curl -T); la respuesta es 201 con la ruta, la revisión y el artefacto. Con X-Checksum-Sha256 y Content-Length, los bytes se transmiten directamente al almacenamiento y se verifican; sin ellos pasan primero por un área temporal y se calcula su hash (422 si el cuerpo no coincide con una suma de comprobación indicada). Los mismos bytes que la revisión actual no añaden nada y responden 200 con created: false; If-None-Match: * solo crea (409 already_exists), y un escritor simultáneo de la misma ruta recibe 409 revision_mismatch. Para archivos muy grandes, prefiera las sesiones de subida reanudables.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
assetPathrutastringsí1–1024 caracteres; File path; may contain slashes (folders). No empty, "." or ".." segments, backslash or colon.
X-Checksum-Sha256encabezadostringnocoincide con ^[a-fA-F0-9]{64}$; SHA-256 of the body (64 hex digits); a mismatch stores nothing (422).
If-None-Matchencabezadostringnouno de *; "*": store only when the path does not exist yet (409 already_exists).

Cuerpo de la solicitud (application/octet-stream)

Respuesta 200

CampoTipoObligatorioReglas
pathstringsí—
revisionintegersícomo mínimo 1
createdbooleansí—
artifactobjectsí—
artifact.idstring (uuid)sí—
artifact.sizestringsíun número entero en dígitos decimales, enviado como cadena
artifact.sha256stringsíSHA-256: 64 dígitos hexadecimales en minúsculas

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

Ejemplo

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/raw/$ASSETPATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @file

Descargar un archivo por la ruta de la URL ​

GET HEAD /api/v1/repositories/{repository}/raw/{assetPath}

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

Transmite la revisión actual de la ruta de la URL como downloadArtifact, con Range, If-Range, If-None-Match, HEAD y X-Arkvory-Artifact-Id, que nombra el artefacto. La ruta se resuelve en cada solicitud, así que reanude con If-Range igual al ETag devuelto, o descargue el artefacto por ID.

Parámetros

NombreUbicaciónTipoObligatorioReglas
repositoryrutastringsícoincide con ^[a-z0-9][a-z0-9_-]{0,63}$
assetPathrutastringsí1–1024 caracteres; File path; may contain slashes (folders). No empty, "." or ".." segments, backslash or colon.
RangeencabezadostringnoSingle bytes range; multi-range is unsupported. HEAD ignores Range.
If-RangeencabezadostringnoExact strong ETag; a mismatch causes a full response.
If-None-MatchencabezadostringnoMatching ETag returns 304, including HEAD.
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.

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

Ejemplo

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

Arkvory · ProAnimaStudio