Obtener credenciales de subida de archivos

Genera las credenciales firmadas temporales necesarias para subir un archivo (imagen o documento) al almacenamiento de Fracttal. Es el primer paso del proceso para adjuntar archivos a un registro, y es genérico: puede reutilizarse desde cualquier módulo que admita adjuntos.

Parámetros de entrada

Requeridos

ParámetroTipoRequeridoDescripción
nametextoSíNombre del archivo, incluida su extensión (por ejemplo informe.pdf). La extensión debe estar en la lista de extensiones permitidas. El valor final con el que queda almacenado el archivo se devuelve en data.key.

Opcionales

ParámetroTipoRequeridoDescripción
sizeenteroNoTamaño del archivo en bytes. Es necesario enviarlo si después va a asociar el archivo a un registro; de lo contrario, ese paso responde FILE_NOT_FOUND. Debe caber en la capacidad de almacenamiento disponible de la compañía.

Extensiones permitidas: json, swf, flv, f4v, sldprt, sldasm, csv, pdf, gif, jpg, jpeg, jpe, jif, bmp, tif, tiff, png, mp4, mov, wmv, avi, mp3, doc, docx, xml, xls, xlsx, txt, ppt, pptx, dwg, eml, msg, iam, ipt, cad, rar, zip, 7z.

Tamaño máximo por archivo: 100.490.000 bytes (aproximadamente 100 MB).

Cómo subir el archivo (paso 2)

Este servicio no sube el archivo: solo entrega las credenciales. Para subirlo:

  1. Llame a este servicio con el name y el size del archivo.
  2. Con la respuesta, haga una petición POST de tipo multipart/form-data a la URL indicada en host, enviando los campos de la tabla siguiente. El campo file, con el contenido del archivo, debe ir siempre al final.
  3. Las credenciales expiran a las 2 horas de ser generadas. Pasado ese tiempo es necesario solicitar unas nuevas.
  4. El valor de key es el que se usa después para asociar el archivo al registro correspondiente (por ejemplo, en Asociar adjuntos a una solicitud de trabajo).
Campo del formularioValor
keyValor de key de la respuesta.
aclValor de acl de la respuesta.
policyValor de policy de la respuesta.
x-amz-credentialValor de credential de la respuesta.
x-amz-algorithmAWS4-HMAC-SHA256
x-amz-dateValor de date de la respuesta.
x-amz-signatureValor de signature de la respuesta.
success_action_status200
fileContenido del archivo. Debe ser el último campo.

Parámetros de salida

ParámetroTipoDescripción
successbooleanoIndica si la operación fue exitosa.
messagetextoResultado de la operación (ACTION_DONE si fue exitosa).
dataobjetoCredenciales de subida. Ver estructura en la tabla siguiente.
totalenteroCantidad de elementos devueltos.

Estructura de data:

ParámetroTipoDescripción
keytextoRuta del archivo en el almacenamiento (company_<id>/<name>). Es el valor que se usa después para asociarlo a un registro.
buckettextoContenedor de almacenamiento destino.
hosttextoURL a la que se debe enviar la petición de subida.
public_keytextoLlave pública de acceso.
credentialtextoCredencial de la firma. Se envía en el campo x-amz-credential.
signaturetextoFirma de la subida. Se envía en el campo x-amz-signature.
policytextoPolítica de subida firmada, en base64. Expira a las 2 horas.
acltextoNivel de acceso con el que se almacena el archivo.
redirecttextoCampo adicional devuelto por el servicio. No es necesario para la subida.
datetextoFecha de generación de la firma. Se envía en el campo x-amz-date.

Errores

CódigoCausa
400FILE_NOT_ALLOWED: la extensión del archivo no está permitida, o name está vacío.
400INSUFFICIENT_STORAGE_CAPACITY: la compañía no tiene capacidad de almacenamiento suficiente.
400body is required: no se envió el cuerpo de la petición.
400The request is poorly formed: la petición no incluye el encabezado Authorization.
401INVALID_TOKEN: el token es inválido.

Cuando la operación falla, la respuesta incluye success: false y el código de error en message.


Ejemplo

Request body

{
  "name": "informe-mantenimiento.pdf",
  "size": 245760
}

Response 200

{
  "success": true,
  "message": "ACTION_DONE",
  "data": {
    "key": "company_1234/informe-mantenimiento.pdf",
    "bucket": "ejemplo-bucket",
    "host": "https://ejemplo-bucket.s3.amazonaws.com",
    "public_key": "EXAMPLEPUBLICKEY123",
    "credential": "EXAMPLEPUBLICKEY123/20261013/us-east-1/s3/aws4_request",
    "signature": "3f1c0b7a9d2e4c5f8a6b1d0e9c7a5b3f2e1d0c9b8a7f6e5d4c3b2a1f0e9d8c7b",
    "redirect": "",
    "acl": "private",
    "policy": "eyJleHBpcmF0aW9uIjoiMjAyNi0xMC0xM1QxNDowMDowMFoifQ==",
    "date": "20261013T000000Z"
  },
  "total": 0
}

Response — Extensión no permitida (400)

{
  "success": false,
  "message": "FILE_NOT_ALLOWED",
  "data": [],
  "total": 0
}

Response — Capacidad de almacenamiento insuficiente (400)

{
  "success": false,
  "message": "INSUFFICIENT_STORAGE_CAPACITY",
  "data": [],
  "total": 0
}

Response — Token inválido (401)

{
  "success": false,
  "message": "INVALID_TOKEN",
  "data": [],
  "total": 0
}

OpenAPI definition

{
  "openapi": "3.1.0",
  "info": {
    "title": "s3_object",
    "version": "1-Es"
  },
  "servers": [
    { "url": "https://app.fracttal.com/api/s3_object" }
  ],
  "security": [{}],
  "paths": {
    "/": {
      "post": {
        "summary": "Obtener credenciales de subida de archivos",
        "description": "",
        "operationId": "obtener-credenciales-de-subida-de-archivos",
        "deprecated": false,
        "security": []
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": false,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
Language
LoadingLoading…