Crear o actualizar archivo o carpeta de la aplicación
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
}
Gestor de archivos
Crear o actualizar archivo o carpeta de la aplicación
Crea o actualiza un archivo o una carpeta de una aplicación a partir de su ID.
PUT
/
v1
/
apps
/
{id}
/
files
Crear o actualizar archivo o carpeta de la aplicación
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
requerido
El ID de la aplicación en la que se creará o actualizará el archivo o la carpeta. Si la aplicación pertenece a un workspace, pasa su ID en el parámetro de query
workspace_id.string
Si la aplicación pertenece a un workspace, el ID de ese workspace. Los miembros con el rol Propietario, Administrador o Desarrollador pueden usar el gestor de archivos en una aplicación del workspace que no les pertenece; sin este parámetro, solo puede hacerlo el propietario de la aplicación.
string
requerido
La ruta donde se creará o actualizará el archivo o la carpeta. Termina con
/ para crear una carpeta.string
El contenido del archivo que se creará o actualizará. Es obligatorio para los archivos; no aplica a las carpetas.
string
Fecha y hora ISO opcional de la última modificación conocida del archivo, tal como la devuelve
GET /files/content. Si se envía y no coincide con la fecha de modificación actual del archivo en disco, el guardado se rechaza con FILE_MODIFIED en lugar de sobrescribir en silencio una versión más reciente; úsalo para detectar conflictos de edición. Omítelo para guardar sin condiciones.boolean
Envía
true para confirmar que el cambio desvincula una aplicación que viene de una plantilla abierta (deja de recibir versiones). Sin este parámetro, la petición no cambia nada y responde 409 TEMPLATE_DETACH_CONFIRMATION_REQUIRED. Se ignora en las demás aplicaciones. Consulta Desvincular de una plantilla.Respuesta
Si todo va bien, responde200 con { "response": null }.
{
"response": null
}
Respuestas de error
string
El código de error que indica el motivo del fallo. Valores posibles:
AUTH_TOKEN_MISSING,API_KEY_INVALID,SESSION_REVOKED: Falta la cabeceraAuthorization, la clave de API no es válida o la sesión del panel fue revocada (401).API_KEY_IP_DENIED,API_KEY_SCOPE_DENIED: La clave de API se usa desde una IP fuera de su lista de permitidas, o no tiene el scope que requiere la ruta (403).ACCESS_DENIED: El recurso pertenece a otra cuenta, o no tienes el permiso de workspace necesario para él (403).FORBIDDEN: El usuario no tiene permiso para acceder a la aplicación.APP_NOT_FOUND: La aplicación indicada no existe.PLAN_RESTRICTED_FEATURE: El plan del usuario no admite el acceso al gestor de archivos.MISSING_PATH: No se proporcionó el parámetro de querypath.MISSING_CONTENT: El parámetrocontentdel cuerpo es obligatorio para los archivos.INVALID_PATH: La ruta indicada no es válida.TARGET_IS_DIRECTORY: La ruta ya existe como carpeta y no se puede escribir en ella como archivo.FILE_MODIFIED: La fecha de modificación actual del archivo no coincide con ellast_modifiedenviado: alguien lo cambió desde que se leyó por última vez. Vuelve a cargar el archivo antes de guardarlo de nuevo.PUT_FILE_FAILED: No se pudo crear o actualizar el archivo o la carpeta.OWNER_APP_WITHOUT_LIMITS: No se encontraron los límites del plan del propietario.TEMPLATE_DETACH_CONFIRMATION_REQUIRED: El cambio desvincularía la aplicación de su plantilla y no se envióconfirm_detach(409). No se cambió nada.
string
Una descripción detallada con información adicional sobre el error.
{
"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 modificación el 28 de octubre de 2026