Idioma

Português English Deutsch Español Français

API

Conecte sus sistemas a sus archivos: listar, subir y compartir por HTTP.

Quién tiene acceso

La API forma parte del paquete Empresa. El token pertenece a la cuenta que lo contrata, y es esa cuenta la que responde por lo que haga la integración. Tras comprar el paquete, el token está en Panel → API, con ejemplos ya rellenados con sus credenciales.

Autenticación

Todas las peticiones llevan el token en la cabecera Authorization. Una petición sin token, o con un token de una suscripción caducada, recibe 401.

Authorization: Bearer <token>

En servidores donde la cabecera Authorization no llega a PHP — ocurre con CGI y FastCGI sin configuración adicional — puede usarse X-API-Token en su lugar. También existe ?token=, pensado para probar en el navegador y que no debe usarse en producción: un token en la barra de direcciones acaba en los registros del servidor y en la cabecera Referer de cualquier enlace saliente.

Respuestas y errores

La respuesta es siempre JSON, también en los errores — un cliente que recibe HTML ante un fallo no tiene forma de decirle a quien lo escribió qué salió mal. Un error tiene siempre esta forma:

{
  "erro": {
    "codigo": "token_invalido",
    "mensagem": "Token inválido ou sem subscrição activa."
  }
}

Lectura

La API ve exactamente lo que la persona ve en el panel: el titular de la cuenta de empresa y los gestores ven los archivos de todo el equipo, el resto ve los suyos.

Petición Devuelve
GET /api/v1/ La lista de recursos disponibles.
GET /api/v1/conta La cuenta, la empresa (plazas compradas y ocupadas) y la cuota — total y usado, en archivos y en bytes.
GET /api/v1/utilizadores Las personas de la empresa, con el papel de cada una y cuántos archivos tiene.
GET /api/v1/ficheiros Los archivos visibles. Parámetros: pagina, por_pagina (máximo 100) y procurar.
GET /api/v1/ficheiros/{id} Un archivo, con su tamaño en disco y el enlace para compartir listo para enviar.

Subir archivos

El envío se hace por sesión, en trozos, y no en una única petición. La razón es práctica: un archivo de varios gigabytes no cabe en una sola petición — choca con los límites de tamaño y de tiempo de PHP y de cualquier proxy por el camino, y cuando falla al 90% no queda nada aprovechable. Por trozos, cada petición es pequeña, y quien se cae a medias retoma donde quedó.

Petición Devuelve
POST /api/v1/uploads Abre la sesión. Campos: nome y tamanho (en bytes). Devuelve el upload_id.
POST /api/v1/uploads/{id} Envía un trozo, en el campo pedaco o en el cuerpo de la petición. Devuelve cuántos bytes han llegado.
POST /api/v1/uploads/{id}/concluir Cierra la sesión, registra el archivo y lo devuelve con el enlace para compartir.
GET /api/v1/uploads/{id} Cuántos bytes han llegado. Es por aquí que se reanuda un envío interrumpido.
DELETE /api/v1/uploads/{id} Desiste del envío y borra lo que ya se había enviado.

El parámetro offset es opcional pero recomendable: indica en qué byte empieza el trozo. Si no coincide con lo que el servidor ya tiene, la petición se rechaza con 409 y la respuesta trae el valor correcto — que es lo que permite reanudar sin enviar dos veces el mismo trozo.

Se aplican las mismas reglas que al subir desde el panel: la cuota se comprueba al abrir la sesión (con el tamaño declarado) y otra vez al concluir (con el tamaño real en disco), y se rechazan los tipos de archivo que el servidor podría ejecutar.

Ejemplo completo

Subir un archivo en trozos de 8 MB:

TOKEN=<token>
BASE=https://www.youstorecloud.com/api/v1/
FICHEIRO=video.mp4
TAMANHO=$(stat -c%s "$FICHEIRO")

# 1. abrir a sessao
UPLOAD=$(curl -s -H "Authorization: Bearer $TOKEN" \
  -X POST "$BASE"uploads \
  -F "nome=$FICHEIRO" -F "tamanho=$TAMANHO" \
  | sed -n 's/.*"upload_id":"\([0-9a-f]*\)".*/\1/p')

# 2. enviar em pedacos de 8 MB, a partir do byte 0
split -b 8M "$FICHEIRO" parte_
OFFSET=0
for PARTE in parte_*; do
  curl -s -H "Authorization: Bearer $TOKEN" \
    -X POST "$BASE"uploads/"$UPLOAD"?offset=$OFFSET \
    -F "pedaco=@$PARTE"
  OFFSET=$((OFFSET + $(stat -c%s "$PARTE")))
done

# 3. fechar — devolve o ficheiro e o link de partilha
curl -s -H "Authorization: Bearer $TOKEN" \
  -X POST "$BASE"uploads/"$UPLOAD"/concluir

Reanudar un envío interrumpido

curl -s -H "Authorization: Bearer $TOKEN" "$BASE"uploads/"$UPLOAD"
# {"upload_id":"...","nome":"video.mp4","tamanho":5000000,"recebido":3200000,"falta":1800000}

# continuar desde el byte indicado en "recebido"

Límites

Tamaño máximo de cada trozo 64 MB
Validez de una sesión sin concluir 24 horas
Archivos por página en el listado 100
Tamaño de cada archivo Limitado por la cuota de su paquete.