Criar ou atualizar arquivo ou pasta da aplicação
curl --request PUT \
--url https://api.vertracloud.app/v1/apps/{id}/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"last_modified": "<string>",
"confirm_detach": true
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({content: '<string>', last_modified: '<string>', confirm_detach: true})
};
fetch('https://api.vertracloud.app/v1/apps/{id}/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/apps/{id}/files"
payload = {
"content": "<string>",
"last_modified": "<string>",
"confirm_detach": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/apps/{id}/files"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"last_modified\": \"<string>\",\n \"confirm_detach\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": null
}
Gerenciador de arquivos
Criar ou atualizar arquivo ou pasta da aplicação
Cria ou atualiza um arquivo ou pasta de uma aplicação pelo seu ID.
PUT
/
v1
/
apps
/
{id}
/
files
Criar ou atualizar arquivo ou pasta da aplicação
curl --request PUT \
--url https://api.vertracloud.app/v1/apps/{id}/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"last_modified": "<string>",
"confirm_detach": true
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({content: '<string>', last_modified: '<string>', confirm_detach: true})
};
fetch('https://api.vertracloud.app/v1/apps/{id}/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/apps/{id}/files"
payload = {
"content": "<string>",
"last_modified": "<string>",
"confirm_detach": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/apps/{id}/files"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"last_modified\": \"<string>\",\n \"confirm_detach\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": null
}
string
obrigatório
O ID da aplicação na qual o arquivo ou pasta será criado ou atualizado. Se a aplicação pertencer a um workspace, informe o ID dele no parâmetro de query
workspace_id.string
Se a aplicação pertencer a um workspace, o ID do workspace. Membros com papel de Owner, Admin ou Developer podem usar o gerenciador de arquivos em uma aplicação do workspace que não é deles; sem isso, somente o dono da aplicação pode.
string
obrigatório
O caminho onde o arquivo ou pasta será criado ou atualizado. Termine com
/ para criar uma pasta.string
O conteúdo do arquivo a criar ou atualizar. Obrigatório para arquivos; não se aplica a pastas.
string
Timestamp ISO opcional da última data de modificação (mtime) conhecida do arquivo, conforme retornado por
GET /files/content. Quando informado e não corresponde ao mtime atual do arquivo no disco, o salvamento é recusado com FILE_MODIFIED em vez de sobrescrever silenciosamente uma versão mais nova — use isso para detectar conflitos de edição. Omita para salvar sem condições.boolean
Envie
true para confirmar que a alteração desvincula uma aplicação que veio de um template aberto (ela deixa de receber versões). Sem ele, a requisição não altera nada e responde 409 TEMPLATE_DETACH_CONFIRMATION_REQUIRED. Ignorado para outras aplicações. Veja Desvincular de um template.Resposta
Em caso de sucesso, a resposta é200 com { "response": null }.
{
"response": null
}
Respostas de erro
string
O código de erro que indica o motivo da falha. Valores possíveis:
AUTH_TOKEN_MISSING,API_KEY_INVALID,SESSION_REVOKED: o cabeçalhoAuthorizationestá ausente, a chave de API é inválida ou a sessão do painel foi revogada (401).API_KEY_IP_DENIED,API_KEY_SCOPE_DENIED: a chave de API está sendo usada a partir de um IP fora da sua lista de permissões, ou não tem o escopo que a rota exige (403).ACCESS_DENIED: o recurso pertence a outra conta, ou você não tem a permissão do workspace para ele (403).FORBIDDEN: o usuário não tem permissão para acessar a aplicação.APP_NOT_FOUND: a aplicação especificada não existe.PLAN_RESTRICTED_FEATURE: o plano do usuário não oferece suporte ao acesso ao gerenciador de arquivos.MISSING_PATH: o parâmetro de querypathnão foi informado.MISSING_CONTENT: o parâmetro de corpocontenté obrigatório para arquivos.INVALID_PATH: o caminho informado é inválido.TARGET_IS_DIRECTORY: o caminho já existe como pasta e não pode ser gravado como arquivo.FILE_MODIFIED: o mtime atual do arquivo não corresponde aolast_modifiedenviado — alguém o alterou desde a última leitura. Recarregue o arquivo antes de salvar de novo.PUT_FILE_FAILED: falha ao criar ou atualizar o arquivo ou pasta.OWNER_APP_WITHOUT_LIMITS: os limites do plano do dono não foram encontrados.TEMPLATE_DETACH_CONFIRMATION_REQUIRED: a alteração desvincularia a aplicação do seu template econfirm_detachnão foi enviado (409). Nada foi alterado.
string
Uma mensagem descritiva com detalhes adicionais sobre o erro.
{
"code": "ACCESS_DENIED"
}
{
"code": "APP_NOT_FOUND"
}
{
"code": "FILE_MODIFIED",
"message": "File was modified since it was last read"
}
{
"code": "TARGET_IS_DIRECTORY"
}
{
"code": "MISSING_PATH",
"message": "Path query parameter is required"
}
Última modificação em 28 de outubro de 2026