Pular para o conteúdo

Arquivos por caminho ​

Arquivos endereçados por um caminho no repositório: versões, histórico, restauração e arquivos brutos (raw) em uma única solicitação.

Operações deste grupo com a regra de acesso, a regra de repetição, os parâmetros e as respostas. Toda solicitação leva uma chave: Authorization: Bearer <chave> (consulte “Autenticação”).

Operações ​

Listar caminhos de arquivo por prefixo ​

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

Acesso: Permissão no repositório: asset.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Retorna todos os caminhos de arquivo que começam com prefix (literal, não um padrão; vazio para todos), ordenados por caminho, cada um com sua revisão atual e o ID do artefato. Não há paginação: mais de 1000 correspondências geram 400 pedindo um prefixo mais restrito, portanto prefira listAssetPage para árvores grandes.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
prefixconsultastringnão—

Resposta 200

CampoTipoObrigatórioRegras
itemsarray de objectnão—
items[].pathstringsim—
items[].revisionintegersim1–2147483647
items[].artifactIdstring (uuid)sim—

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

Exemplo

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

Listar caminhos de arquivo página a página ​

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

Acesso: Permissão no repositório: asset.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Retorna os caminhos de arquivo atuais que começam com prefix (literal; vazio para todos) em ordem de bytes UTF-8, cada um com sua revisão atual e o ID do artefato. As páginas contêm limit itens (1–100, padrão 50); continue com after definido como o next opaco. As páginas não são um instantâneo: caminhos alterados entre as solicitações podem aparecer com sua revisão mais nova ou deixar de aparecer até a próxima passagem.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
prefixconsultastringnãoaté 1024 caracteres; padrão ``; Case-sensitive literal prefix; % and _ are ordinary characters.
afterconsultastringnãocorresponde a ^[A-Za-z0-9_-]+$; 1–8192 caracteres
limitconsultaintegernão1–100; padrão 50

Resposta 200

CampoTipoObrigatórioRegras
itemsarray de objectsimaté 100 itens
items[].pathstringsim—
items[].revisionintegersim1–2147483647
items[].artifactIdstring (uuid)sim—
nextstringsimcorresponde a ^[A-Za-z0-9_-]+$; 1–8192 caracteres; pode ser null; Cursor opaco vinculado ao repositório e ao prefixo; null no fim. Nunca concede acesso.

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

Exemplo

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

Obter a revisão atual de um caminho de arquivo ​

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

Acesso: Permissão no repositório: asset.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Retorna a revision atual de path e o ID do artefato para o qual ele aponta; um caminho desconhecido gera 404. Um caminho tem de 1 a 1024 caracteres em segmentos separados por /, sem segmentos vazios, . ou .., e sem \, : nem caracteres de controle. Baixe os bytes com downloadAssetContent ou passe a revisão para setAsset como expectedRevision.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
pathconsultastringsim—

Resposta 200

CampoTipoObrigatórioRegras
pathstringsim—
revisionintegersim1–2147483647
artifactIdstring (uuid)sim—

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

Exemplo

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

Apontar um caminho de arquivo para um artefato ​

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

Acesso: Permissão no repositório: asset.write, artifact.read; chaves em arquivo: read, write · Repetição: Repetir somente com a revisão esperada (compare-and-swap)

Faz path nomear um artefato publicado do mesmo repositório como sua nova revisão; expectedRevision é 0 para criar o caminho e a revisão atual para substituí-lo; caso contrário, 409 revision_mismatch. As revisões anteriores permanecem no histórico e impedem que seus artefatos sejam excluídos. Para armazenar bytes e nomeá-los em uma única solicitação, use putRawFile.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$

Corpo da solicitação (application/json)

CampoTipoObrigatórioRegras
pathstringsim—
artifactIdstring (uuid)sim—
expectedRevisionintegersim0–2147483646

Resposta 200

CampoTipoObrigatórioRegras
pathstringsim—
revisionintegersim1–2147483647
artifactIdstring (uuid)sim—

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

Exemplo

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 as revisões de um caminho de arquivo ​

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

Acesso: Permissão no repositório: asset.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Retorna as revisões de path, da mais nova para a mais antiga, 50 por página, cada uma com seu artefato, o ator, a hora e, no caso de uma restauração, a sourceRevision que ela copiou (ator e hora são null nas revisões registradas por versões antigas do servidor). Continue com before definido como next. Um caminho desconhecido gera 404.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
pathconsultastringsim—
beforeconsultaintegernão1–2147483647; Only revisions strictly smaller than this value

Resposta 200

CampoTipoObrigatórioRegras
itemsarray de objectsimaté 50 itens
items[].pathstringsim—
items[].revisionintegersim1–2147483647
items[].artifactIdstring (uuid)sim—
items[].actorstringsimpode ser null; Null para o histórico registrado antes da migração 4
items[].createdAtstring (date-time)simpode ser null; Null para o histórico registrado antes da migração 4
items[].sourceRevisionintegersim1–2147483647; pode ser null; Revisão restaurada; null em uma substituição comum
nextintegersim1–2147483647; pode ser null; Cursor before exclusivo; null no fim

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

Exemplo

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

Obter uma revisão de um caminho de arquivo ​

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

Acesso: Permissão no repositório: asset.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Retorna a revisão revision de path com o ID do artefato, o ator, a hora e a origem da restauração. As revisões nunca mudam, portanto o ID do artefato pode ser mantido em cache; baixe-o com downloadArtifact. Um caminho ou uma revisão inexistente gera 404.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
pathconsultastringsim—
revisionconsultaintegersim1–2147483647

Resposta 200

CampoTipoObrigatórioRegras
pathstringsim—
revisionintegersim1–2147483647
artifactIdstring (uuid)sim—
actorstringsimpode ser null; Null para o histórico registrado antes da migração 4
createdAtstring (date-time)simpode ser null; Null para o histórico registrado antes da migração 4
sourceRevisionintegersim1–2147483647; pode ser null; Revisão restaurada; null em uma substituição comum

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

Exemplo

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

Restaurar uma revisão anterior de um caminho de arquivo ​

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

Acesso: Permissão no repositório: asset.restore, asset.read, artifact.read; chaves em arquivo: read, write · Repetição: Repetir somente com a revisão esperada (compare-and-swap)

Adiciona uma nova revisão de path que aponta para o artefato de sourceRevision; nada é copiado e nenhuma revisão é removida. expectedRevision deve ser a revisão atual (pelo menos 1); caso contrário, 409 revision_mismatch — portanto, repetir uma restauração que já teve sucesso gera 409, não uma segunda restauração. A nova revisão registra sourceRevision, e a alteração é auditada na mesma transação.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$

Corpo da solicitação (application/json)

CampoTipoObrigatórioRegras
pathstringsim—
sourceRevisionintegersim1–2147483647
expectedRevisionintegersim1–2147483646

Resposta 200

CampoTipoObrigatórioRegras
pathstringsim—
revisionintegersim1–2147483647
artifactIdstring (uuid)sim—

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

Exemplo

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}'

Baixar um arquivo por caminho ​

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

Acesso: Permissão no repositório: content.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Resolve path para sua revisão atual e transmite esse artefato como downloadArtifact, com Range, If-Range, If-None-Match e HEAD. O caminho é resolvido a cada solicitação; portanto, retome com If-Range definido como o ETag retornado: se o caminho já avançou para outra revisão, a resposta é o novo arquivo inteiro, e não uma mistura dos dois. downloadRawFile faz o mesmo com o caminho na URL.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
RangecabeçalhostringnãoSingle bytes range; multi-range is unsupported. HEAD ignores Range.
If-RangecabeçalhostringnãoExact strong ETag; a mismatch causes a full response.
If-None-MatchcabeçalhostringnãoMatching ETag returns 304, including HEAD.
Arkvory-Download-Idcabeçalhostringnãocorresponde a ^[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-Ticketcabeçalhostringnãoaté 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-Classcabeçalhostringnãoum destes: 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.
pathconsultastringsim—

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

Exemplo

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

Enviar um arquivo para um caminho em uma solicitação ​

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

Acesso: Permissão no repositório: upload.create, upload.write, upload.complete, asset.read, asset.write, artifact.read; chaves em arquivo: write · Repetição: Pode ser repetida com segurança: a mesma solicitação tem o mesmo efeito

Armazena o corpo da solicitação, de qualquer tipo de mídia, como a nova revisão do caminho na URL, para scripts e CI (curl -T); a resposta é 201 com o caminho, a revisão e o artefato. Com X-Checksum-Sha256 e Content-Length, os bytes vão direto para o armazenamento e são verificados; sem eles, são primeiro gravados em área temporária (staging) e têm o hash calculado (422 se o corpo não corresponder a um checksum informado). Os mesmos bytes da revisão atual não adicionam nada e respondem 200 com created: false, If-None-Match: * apenas cria (409 already_exists), e um escritor concorrente do mesmo caminho recebe 409 revision_mismatch. Para arquivos muito grandes, prefira as sessões de upload retomáveis.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
assetPathcaminhostringsim1–1024 caracteres; File path; may contain slashes (folders). No empty, "." or ".." segments, backslash or colon.
X-Checksum-Sha256cabeçalhostringnãocorresponde a ^[a-fA-F0-9]{64}$; SHA-256 of the body (64 hex digits); a mismatch stores nothing (422).
If-None-Matchcabeçalhostringnãoum destes: *; "*": store only when the path does not exist yet (409 already_exists).

Corpo da solicitação (application/octet-stream)

Resposta 200

CampoTipoObrigatórioRegras
pathstringsim—
revisionintegersimpelo menos 1
createdbooleansim—
artifactobjectsim—
artifact.idstring (uuid)sim—
artifact.sizestringsimum número inteiro em dígitos decimais, enviado como string
artifact.sha256stringsimSHA-256: 64 dígitos hexadecimais minúsculos

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

Exemplo

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

Baixar um arquivo pelo caminho da URL ​

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

Acesso: Permissão no repositório: content.read; chaves em arquivo: read · Repetição: Pode ser repetida com segurança (leitura)

Transmite a revisão atual do caminho na URL como downloadArtifact, com Range, If-Range, If-None-Match, HEAD e X-Arkvory-Artifact-Id indicando o artefato. O caminho é resolvido a cada solicitação; portanto, retome com If-Range definido como o ETag retornado ou baixe o artefato pelo ID.

Parâmetros

NomeLocalTipoObrigatórioRegras
repositorycaminhostringsimcorresponde a ^[a-z0-9][a-z0-9_-]{0,63}$
assetPathcaminhostringsim1–1024 caracteres; File path; may contain slashes (folders). No empty, "." or ".." segments, backslash or colon.
RangecabeçalhostringnãoSingle bytes range; multi-range is unsupported. HEAD ignores Range.
If-RangecabeçalhostringnãoExact strong ETag; a mismatch causes a full response.
If-None-MatchcabeçalhostringnãoMatching ETag returns 304, including HEAD.
Arkvory-Download-Idcabeçalhostringnãocorresponde a ^[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-Ticketcabeçalhostringnãoaté 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-Classcabeçalhostringnãoum destes: 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.

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

Exemplo

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

Arkvory · ProAnimaStudio