curl --request PUT \
--url 'https://api.upnify.com/v4/catalogos/productos/imagenes/lote' \
--header 'token: 00000000-0000-4000-8000-000000000001' \
--form 'payload={"products":[{"tkProducto":"PRO-00000000-0000-4000-8000-000000000010","imagen":"imagen-producto.png","fileKey":"imagen_0"}]}' \
--form 'imagen_0=@/ruta/a/imagen-producto.png'const archivo = document.querySelector("#imagen-producto").files[0];
const formData = new FormData();
formData.append("payload", JSON.stringify({
products: [{
tkProducto: "PRO-00000000-0000-4000-8000-000000000010",
imagen: "imagen-producto.png",
fileKey: "imagen_0",
}],
}));
formData.append("imagen_0", archivo, archivo.name);
const response = await fetch("https://api.upnify.com/v4/catalogos/productos/imagenes/lote", {
method: "PUT",
headers: { token: "00000000-0000-4000-8000-000000000001" },
body: formData,
});
const resultado = await response.json();
console.log(resultado);// Node.js 20 o posterior
import { readFile } from "node:fs/promises";
const contenido = await readFile("/ruta/a/imagen-producto.png");
const formData = new FormData();
formData.append("payload", JSON.stringify({
products: [{
tkProducto: "PRO-00000000-0000-4000-8000-000000000010",
imagen: "imagen-producto.png",
fileKey: "imagen_0",
}],
}));
formData.append("imagen_0", new Blob([contenido], { type: "image/png" }), "imagen-producto.png");
const response = await fetch("https://api.upnify.com/v4/catalogos/productos/imagenes/lote", {
method: "PUT",
headers: { token: "00000000-0000-4000-8000-000000000001" },
body: formData,
});
console.log(await response.json());import json
import requests
payload = {
"products": [{
"tkProducto": "PRO-00000000-0000-4000-8000-000000000010",
"imagen": "imagen-producto.png",
"fileKey": "imagen_0",
}]
}
with open("/ruta/a/imagen-producto.png", "rb") as archivo:
response = requests.put(
"https://api.upnify.com/v4/catalogos/productos/imagenes/lote",
headers={"token": "00000000-0000-4000-8000-000000000001"},
data={"payload": json.dumps(payload)},
files={"imagen_0": ("imagen-producto.png", archivo, "image/png")},
)
response.raise_for_status()
print(response.json())package main
import (
"bytes"
"encoding/json"
"mime/multipart"
"net/http"
"os"
)
func main() {
var body bytes.Buffer
form := multipart.NewWriter(&body)
payload, _ := json.Marshal(map[string]any{
"products": []map[string]string{{
"tkProducto": "PRO-00000000-0000-4000-8000-000000000010",
"imagen": "imagen-producto.png",
"fileKey": "imagen_0",
}},
})
_ = form.WriteField("payload", string(payload))
archivo, err := os.Open("/ruta/a/imagen-producto.png")
if err != nil { panic(err) }
defer archivo.Close()
parte, err := form.CreateFormFile("imagen_0", "imagen-producto.png")
if err != nil { panic(err) }
_, err = archivo.WriteTo(parte)
if err != nil { panic(err) }
_ = form.Close()
request, err := http.NewRequest(http.MethodPut, "https://api.upnify.com/v4/catalogos/productos/imagenes/lote", &body)
if err != nil { panic(err) }
request.Header.Set("token", "00000000-0000-4000-8000-000000000001")
request.Header.Set("Content-Type", form.FormDataContentType())
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
}using System.Net.Http;
using var client = new HttpClient();
using using var contenido = new MultipartFormDataContent();
contenido.Add(new StringContent("""{"products":[{"tkProducto":"PRO-00000000-0000-4000-8000-000000000010","imagen":"imagen-producto.png","fileKey":"imagen_0"}]}"""), "payload");
await using var archivo = File.OpenRead("/ruta/a/imagen-producto.png");
contenido.Add(new StreamContent(archivo), "imagen_0", "imagen-producto.png");
using var request = new HttpRequestMessage(
HttpMethod.Put,
"https://api.upnify.com/v4/catalogos/productos/imagenes/lote"
)
{
Content = contenido
};
request.Headers.Add("token", "00000000-0000-4000-8000-000000000001");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var resultado = await response.Content.ReadAsStringAsync();