> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestión de activos digitales

> Conecta Topsort con plataformas de gestión de activos digitales para optimizar los flujos de trabajo creativos.

export const LastUpdatedEs = ({date}) => {
  const label = "Última actualización:";
  return <>
      <style>{`
        .last-updated-component {
          display: inline-flex;
          align-items: center;
          gap: 8px;
          padding: 10px 16px;
          border-radius: 8px;
          margin-top: 12px;
          margin-bottom: 16px;
          font-size: 14px;
          background-color: rgba(0, 0, 0, 0.05);
          border: 1px solid rgba(0, 0, 0, 0.12);
          color: rgba(0, 0, 0, 0.75);
          line-height: 1;
        }

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

# Conexión de Topsort con sistemas de gestión de activos digitales

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Los sistemas de gestión de activos digitales (DAM), como Adobe Experience Manager Assets, Bynder y otros, centralizan los activos creativos y generan URL optimizadas para su uso en campañas. A diferencia de la conectividad con los sistemas de gestión de organizaciones (OMS), la conectividad con los sistemas DAM es posible actualmente con las API existentes de Topsort.
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Esta guía explica cómo integrar las API de Topsort con sistemas DAM para optimizar los flujos de trabajo creativos y automatizar la gestión de activos.
</div>

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/topsort/lJrVI0_31YmwNFmR/images/knowledge-base/dam-diagram-light.svg?fit=max&auto=format&n=lJrVI0_31YmwNFmR&q=85&s=03f87e0d2893edc94ba901eed3c8fc8c" alt="Diagram showing dam connectivity" width="1063" height="264" data-path="images/knowledge-base/dam-diagram-light.svg" />

  <img className="hidden dark:block" src="https://mintcdn.com/topsort/lJrVI0_31YmwNFmR/images/knowledge-base/dam-diagram-dark.svg?fit=max&auto=format&n=lJrVI0_31YmwNFmR&q=85&s=6914f4b495de9ac2d599ec1d7efc8060" alt="Diagram showing dam connectivity" width="1063" height="264" data-path="images/knowledge-base/dam-diagram-dark.svg" />
</Frame>

## Cómo funcionan los sistemas DAM con Topsort

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Sistemas DAM como Adobe Experience Manager Assets, Bynder o Webdam:
</div>

1. **Centralizar recursos**: Almacenar todos los banners, imágenes de productos y vídeos en un repositorio organizado.
2. **Generar URL de CDN**: Crear URL optimizadas y de acceso público para cada recurso.
3. **Gestionar versiones**: Realizar un seguimiento de las versiones aprobadas y evitar el uso de recursos obsoletos.
4. **Control del cumplimiento de la marca**: Asegúrese de que solo los activos aprobados y acordes con la marca lleguen a las campañas.

## Flujos de trabajo

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  La integración de DAM implica cuatro flujos de trabajo distintos para diferentes roles y momentos:
</div>

| **Flujo de trabajo**                                            | **Quién**                               | **Cuándo**                      | **Objetivo**                                                           |
| --------------------------------------------------------------- | --------------------------------------- | ------------------------------- | ---------------------------------------------------------------------- |
| [Guía de implementación](#implementation-guide)                 | Equipo de DevOps/Integración            | Configuración única             | Establecer sincronización automatizada de DAM ↔ Topsort                |
| [Flujo de trabajo de la interfaz de usuario](#ui-workflow)      | Proveedores/Administradores del mercado | Por campaña                     | Crea campañas de banners a través del panel de control con URL de DAM  |
| [api Workflow](#api-workflow-complete-banner-campaign-creation) | Gestores de campañas/Anunciantes        | Por campaña                     | Crea campañas de banners de forma programática utilizando recursos DAM |
| [Subasta y visualización](#auction-response-with-dam-urls)      | Desarrolladores de Marketplace          | Cada vez que se carga la página | Mostrar banners ganadores a los usuarios                               |

### Creación de campañas de banners con activos DAM

#### Flujo de trabajo de la interfaz de usuario

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **Rol:** Administradores de vendedores/mercados | **Frecuencia:** Configuración por campaña
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  \*\*<Frame> <img src="https://mintcdn.com/topsort/JfdWUceY7Se3NW-0/images/knowledge-base/banner-ad-url-image-example.webp?fit=max&auto=format&n=JfdWUceY7Se3NW-0&q=85&s=a2f769e27762a20d98031497acfff689" alt="Inicio de la creación de la plantilla de marcas patrocinadas" width="2982" height="1859" data-path="images/knowledge-base/banner-ad-url-image-example.webp" /></Frame> \*\*
</div>

<Note>
  Para crear campañas de banners con URL de DAM externas a través de **[Ad
  Plataforma](https://www.topsort.com/retail-media)**, consulte la información completa
  \[Campañas de anuncios publicitarios en banners]
  guía]\(/es/knowledge-base/ad-platform/banners/banner-ads-campaigns) que muestra
  el proceso de interfaz de usuario step-by-step, incluyendo cómo hacer referencia a URL externas en
  Configuración de la campaña.
</Note>

#### Flujo de trabajo API: Creación completa de una campaña de banners

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **Rol:** Gestores de campañas/Anunciantes | **Frecuencia:** Configuración por campaña
</div>

<Steps>
  <Step title="Crear activo con DAM URL">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Primero, cree un activo en Topsort que haga referencia a su DAM URL:
    </div>

    ```javascript theme={null}
    const assetResponse = await fetch("https://api.topsort.com/v2/assets", {
      method: "POST",
      headers: {
        Authorization: "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        name: "Holiday Banner 728x90 - Approved v2",
        url: "https://dam-cdn.retailer.com/campaigns/holiday/banner-728x90-v2.jpg",
        dimensions: {
          width: 728,
          height: 90,
        },
        metadata: {
          approved: true,
          brand_compliant: true,
          expiry_date: "2024-12-31",
          version: "v2",
        },
      }),
    });

    const asset = await assetResponse.json();
    ```
  </Step>

  <Step title="Crea una campaña de banners utilizando el recurso.">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      A continuación, crea una campaña de banners que haga referencia al recurso que acabas de crear:
    </div>

    ```javascript theme={null}
    const campaignResponse = await fetch(
      "https://api.topsort.com/v2/campaigns",
      {
        method: "POST",
        headers: {
          Authorization: "Bearer YOUR_API_KEY",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          name: "Holiday Banner Campaign",
          type: "banners",
          vendor_id: "vendor-123",
          bidding_strategy: "target_roas",
          target_roas: 4.5,
          budget: {
            amount: 5000,
            currency: "USD",
            period: "lifetime",
          },
          start_date: "2024-11-01",
          end_date: "2024-12-31",
          assets: [asset.id], // Reference the created asset
          slot_id: "homepage_banner_top",
        }),
      }
    );

    const campaign = await campaignResponse.json();
    ```
  </Step>
</Steps>

#### Respuesta a la subasta con URL de DAM

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **Rol:** Desarrolladores de Marketplace | **Frecuencia:** Cada vez que se carga la página
</div>

<Steps>
  <Step title="Realiza una subasta para el espacio del banner.">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Solicita una subasta para el espacio publicitario donde tu campaña basada en DAM pueda competir:
    </div>

    ```javascript theme={null}
    const auctionResponse = await fetch("https://api.topsort.com/v2/auctions", {
      method: "POST",
      headers: {
        Authorization: "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        auctions: [
          {
            type: "banners",
            slots: 1,
            slotId: "homepage_banner_top",
            device: "desktop",
          },
        ],
      }),
    });

    const auctionResult = await auctionResponse.json();
    ```
  </Step>

  <Step title="Recibir DAM URL en respuesta">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Cuando su campaña de banners gana, la respuesta a la subasta incluye el DAM URL original:
    </div>

    ```json theme={null}
    {
      "results": [
        {
          "winners": [
            {
              "rank": 1,
              "type": "product",
              "id": "p_PJbnN",
              "resolvedBidId": "WyJlX1BKYm5OIiwiMTJhNTU4MjgtOGVhZC00Mjk5LTgzMjctY2ViYjAwMmEwZmE4IiwiYmFubmVyQWRzIiwiZGVmYXVsdCIsIiJd",
              "asset": [
                {
                  "url": "https://dam-cdn.retailer.com/campaigns/holiday/banner-728x90-v2.jpg"
                }
              ]
            }
          ],
          "error": false
        }
      ]
    }
    ```
  </Step>

  <Step title="Banner renderizado con el recurso DAM">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Utilice el objeto URL devuelto para mostrar el banner y realizar un seguimiento del rendimiento:
    </div>

    ```javascript theme={null}
    // Extract the DAM URL from auction response
    const winner = auctionResult.results[0].winners[0];
    const damImageUrl = winner.asset[0].url;
    const resolvedBidId = winner.resolvedBidId;

    // Render banner in your UI
    const bannerElement = document.createElement("img");
    bannerElement.src = damImageUrl;
    bannerElement.addEventListener("click", () => {
      // Track click event for billing and attribution
      fetch("/api/topsort/events", {
        method: "POST",
        body: JSON.stringify({
          type: "click",
          resolvedBidId: resolvedBidId,
        }),
      });
    });
    ```
  </Step>
</Steps>

### Beneficios clave de la integración de DAM

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Consistencia de marca**: Solo los activos aprobados y que cumplen con las normas llegan a las campañas publicitarias.
  * **Eficiencia del flujo de trabajo**: Los equipos creativos trabajan con herramientas DAM conocidas y los recursos se sincronizan automáticamente.
  * **Control de versiones**: Cuando se actualizan los elementos creativos en el DAM, los recursos de la campaña se actualizan automáticamente.
  * **Gestión de derechos**: Controlar las licencias de uso e impedir el uso de activos caducados.
  * **Distribución global de activos**: Un repositorio de activos sirve a múltiples canales de marketing
</div>

## Guía de implementación

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **Rol:** Equipo de DevOps/Integración | **Frecuencia:** Configuración única
</div>

<Steps>
  <Step title="Preparación del sistema de represas">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Configure su sistema DAM para una conectividad óptima con Topsort:
    </div>

    * **Organización de recursos**: Estructure los recursos con carpetas y metadatos específicos de la campaña.
    * **Configuración de CDN**: Asegurar que el DAM genere URLs optimizadas y accesibles públicamente.
    * **Flujos de trabajo de aprobación**: Configurar procesos para marcar los activos como listos para la campaña.
    * **Estándares de metadatos**: Definir un etiquetado coherente para dimensiones, versiones y fechas de caducidad.
  </Step>

  <Step title="Topsort Activos API Configuración">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Configure la conectividad entre su DAM y Topsort:
    </div>

    * **Autenticación**: Configure las credenciales Topsort y API.
    * **URL Validación**: Asegurar que las URL de DAM sean accesibles para los sistemas Topsort
    * **Sincronización automatizada**: Configure webhooks o tareas programadas para sincronizar los recursos aprobados.
    * **Manejo de errores**: Implementar lógica de reintento para referencias a recursos fallidas.
  </Step>

  <Step title="Automatización de flujos de trabajo">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Implementar la sincronización automatizada de activos:
    </div>

    ```javascript theme={null}
    // Example automated asset sync from DAM to Topsort
    const syncApprovedAssets = async () => {
      const approvedAssets = await dam.getAssetsByStatus("approved");

      for (const asset of approvedAssets) {
        if (!asset.syncedToTopsort) {
          await topsortAssetsAPI.create({
            name: asset.name,
            url: asset.cdnUrl,
            dimensions: asset.dimensions,
            metadata: asset.metadata,
          });
          await dam.markAsSynced(asset.id);
        }
      }
    };
    ```
  </Step>
</Steps>

## Referencia API

### API Topsort para la integración de DAM

| API                                                       | Caso de uso de integración           | Estado       | Documentación                                    |
| --------------------------------------------------------- | ------------------------------------ | ------------ | ------------------------------------------------ |
| [Recursos api](/en/ad-server/additional-apis/assets-api)  | URL de referencia de DAM en campañas | ✅ Disponible | Gestión y colecciones de recursos                |
| [Campaña api](/en/ad-server/additional-apis/campaign-api) | Crea campañas con recursos DAM       | ✅ Disponible | Gestión completa del ciclo de vida de la campaña |

### Autenticación

```http theme={null}
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## Mejores prácticas

### Gestión de activos

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Optimizar las URL**: Asegurar que el DAM genere URL de carga rápida y optimizadas para CDN.
  * **Control de versiones**: Implemente un control de versiones claro para evitar que los recursos de las campañas queden obsoletos.
  * **Estándares de metadatos**: Utilice un etiquetado coherente para dimensiones, tipos de campaña y estado de aprobación.
  * **Control de acceso**: Asegúrese de que las URL de los recursos sean accesibles públicamente para los sistemas Topsort.
</div>

### Automatización de flujos de trabajo

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Requisitos de aprobación**: Sincronice únicamente los recursos aprobados y que cumplan con la marca con Topsort
  * **Limpieza automatizada**: Elimina los recursos caducados o desactualizados de las campañas activas.
  * **Supervisión de errores**: Seguimiento de referencias a recursos fallidas y problemas de sincronización.
</div>

## Solución de problemas

### Problemas comunes de integración de DAM

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  1. **Problemas con el activo URL**
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * Verificar que las URL del DAM sean de acceso público (no estén protegidas por autenticación).
  * Comprobar que las URL devuelven los códigos de estado HTTP adecuados (200)
    Asegúrese de que las URL de la CDN estén optimizadas para una carga rápida.
  * Validar que las dimensiones del activo coincidan con los requisitos de Topsort
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  2. **Fallo de sincronización**
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * Comprobar la autenticación y los permisos de API
  * Verificar la compatibilidad del formato de metadatos de los activos
  * Supervisar las tasas de éxito de entrega de webhooks
  * Implementar un registro de errores adecuado para las sincronizaciones fallidas.
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  3. **Problemas de control de versiones**

  * Asegurar que los activos actualizados activen las actualizaciones de los activos de la campaña
  * Verificar que los activos caducados se eliminen de las campañas activas
  * Comprobar que solo las versiones de activos aprobadas se sincronicen con Topsort
</div>

### Cuestiones generales de API

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  1. **Fallo de autenticación**
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * Verificar la validez de la clave API y los permisos de alcance
  * Comprobar el formato del encabezado de autenticación
  * Monitorear la expiración del token
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  2. **Limitación de velocidad**

  * Implementar una limitación de velocidad adecuada en el código de conectividad
  * Utilice operaciones en lote cuando estén disponibles
  * Agregar lógica de reintento con retroceso exponencial
</div>

## Empezando

### Implementación Steps

1. **Evaluación**: Revise las capacidades de generación URL y API de su sistema DAM actual.
2. **Credenciales API**: Obtenga las claves Topsort y API y configure la autenticación.
3. **Prueba de concepto**: Comience con un pequeño conjunto de recursos para probar el flujo de trabajo de conectividad.
4. **Automatización**: Implementar procesos de sincronización automatizados para los activos aprobados.
5. **Monitoreo**: Configure el seguimiento para el éxito de la sincronización de activos y el rendimiento de la campaña.

## Recursos relacionados

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * [Guía de integración del OMS](/es/knowledge-base/ad-server/oms-connectivity) - Conectividad del sistema de gestión de pedidos
  * [Documentación de recursos api](/en/ad-server/additional-apis/assets-api)
  * [Documentación de la campaña api](/en/ad-server/additional-apis/campaign-api)
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  ***
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Esta documentación refleja las capacidades actuales de Topsort y API. La conectividad DAM ya está disponible mediante las API existentes. Para el desarrollo de conectividad personalizada, póngase en contacto con su representante de Topsort.
</div>

***

<LastUpdatedEs date="2025-11-18" />
