> ## 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.

# Gestão de Ativos Digitais

> Conecte o Topsort com plataformas de gestão de ativos digitais para otimizar os fluxos de trabalho criativos.

export const LastUpdatedPt = ({date}) => {
  const label = "Última atualização:";
  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>
    </>;
};

# Conexão do Topsort com Sistemas de Gestão de Ativos Digitais

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Os sistemas de gestão de ativos digitais (DAM), como Adobe Experience Manager
  Assets, Bynder e outros, centralizam os ativos criativos e geram URLs
  otimizadas para uso em campanhas. Diferentemente da conectividade com os
  sistemas de gestão de organizações (OMS), a conectividade com os sistemas DAM
  é possível atualmente com as APIs existentes do Topsort.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Este guia explica como integrar as APIs do Topsort com sistemas DAM para
  otimizar os fluxos de trabalho criativos e automatizar a gestão de ativos.
</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="Diagrama mostrando conectividade DAM" 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="Diagrama mostrando conectividade DAM" width="1063" height="264" data-path="images/knowledge-base/dam-diagram-dark.svg" />
</Frame>

## Como Funcionam os Sistemas DAM com o Topsort

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

1. **Centralizar recursos**: Armazenar todos os banners, imagens de produtos e vídeos em um repositório organizado.
2. **Gerar URLs de CDN**: Criar URLs otimizadas e de acesso público para cada recurso.
3. **Gerenciar versões**: Realizar o acompanhamento das versões aprovadas e evitar o uso de recursos obsoletos.
4. **Controle de conformidade da marca**: Garantir que apenas os ativos aprovados e de acordo com a marca cheguem às campanhas.

## Fluxos de Trabalho

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  A integração de DAM envolve quatro fluxos de trabalho distintos para
  diferentes funções e momentos:
</div>

| **Fluxo de trabalho**                                                    | **Quem**                                    | **Quando**                        | **Objetivo**                                                             |
| ------------------------------------------------------------------------ | ------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| [Guia de implementação](#implementation-guide)                           | Equipe de DevOps/Integração                 | Configuração única                | Estabelecer sincronização automatizada de DAM ↔ Topsort                  |
| [Fluxo de trabalho da interface](#ui-workflow)                           | Fornecedores/Administradores do marketplace | Por campanha                      | Criar campanhas de banners através do painel com URLs de DAM             |
| [Fluxo de trabalho API](#api-workflow-complete-banner-campaign-creation) | Gestores de campanhas/Anunciantes           | Por campanha                      | Criar campanhas de banners de forma programática utilizando recursos DAM |
| [Leilão e visualização](#auction-response-with-dam-urls)                 | Desenvolvedores de Marketplace              | Cada vez que a página é carregada | Mostrar banners vencedores aos usuários                                  |

### Criação de Campanhas de Banners com Ativos DAM

#### Fluxo de Trabalho da Interface

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  **Função:** Administradores de fornecedores/marketplace | **Frequência:**
  Configuração por campanha
</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="Início da criação do template de marcas patrocinadas" width="2982" height="1859" data-path="images/knowledge-base/banner-ad-url-image-example.webp" />
  </Frame>
</div>

<Note>
  Para criar campanhas de banners com URLs de DAM externas através da
  **[Plataforma de Anúncios](https://www.topsort.com/retail-media)**, consulte o
  guia completo de [Campanhas de Anúncios em
  Banners](/pt/knowledge-base/ad-platform/banners/banner-ads-campaigns) que
  mostra o processo da interface passo a passo, incluindo como referenciar URLs
  externas na configuração da campanha.
</Note>

#### Fluxo de Trabalho API: Criação Completa de uma Campanha de Banners

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  **Função:** Gestores de campanhas/Anunciantes | **Frequência:** Configuração
  por campanha
</div>

<Steps>
  <Step title="Criar ativo com URL do DAM">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Primeiro, crie um ativo no Topsort que faça referência à sua URL do DAM:
    </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: "Banner de Férias 728x90 - Aprovado 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="Criar uma campanha de banners utilizando o recurso">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Em seguida, crie uma campanha de banners que faça referência ao recurso que você acabou de criar:
    </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: "Campanha de Banner de Férias",
        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], // Referência ao ativo criado
        slot_id: "homepage_banner_top",
      }),
    });

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

#### Resposta ao Leilão com URLs do DAM

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  **Função:** Desenvolvedores de Marketplace | **Frequência:** Cada vez que a
  página é carregada
</div>

<Steps>
  <Step title="Realizar um leilão para o espaço do banner">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Solicite um leilão para o espaço publicitário onde sua campanha baseada em DAM pode 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="Receber URL do DAM na resposta">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Quando sua campanha de banners vence, a resposta ao leilão inclui a URL original do DAM:
    </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="Renderizar banner com o recurso DAM">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Utilize a URL retornada para exibir o banner e acompanhar o desempenho:
    </div>

    ```javascript theme={null}
    // Extrair a URL do DAM da resposta do leilão
    const winner = auctionResult.results[0].winners[0];
    const damImageUrl = winner.asset[0].url;
    const resolvedBidId = winner.resolvedBidId;

    // Renderizar banner na sua interface
    const bannerElement = document.createElement("img");
    bannerElement.src = damImageUrl;
    bannerElement.addEventListener("click", () => {
      // Rastrear evento de clique para faturamento e atribuição
      fetch("/api/topsort/events", {
        method: "POST",
        body: JSON.stringify({
          type: "click",
          resolvedBidId: resolvedBidId,
        }),
      });
    });
    ```
  </Step>
</Steps>

### Benefícios Principais da Integração de DAM

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * **Consistência de marca**: Apenas os ativos aprovados e em conformidade
    chegam às campanhas publicitárias. - **Eficiência do fluxo de trabalho**: As
    equipes criativas trabalham com ferramentas DAM conhecidas e os recursos são
    sincronizados automaticamente. - **Controle de versões**: Quando os elementos
    criativos são atualizados no DAM, os recursos da campanha são atualizados
    automaticamente. - **Gestão de direitos**: Controlar as licenças de uso e
    impedir o uso de ativos expirados. - **Distribuição global de ativos**: Um
    repositório de ativos serve a múltiplos canais de marketing.
</div>

## Guia de Implementação

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  **Função:** Equipe de DevOps/Integração | **Frequência:** Configuração única
</div>

<Steps>
  <Step title="Preparação do sistema de represas">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Configure seu sistema DAM para una conectividade óptima com Topsort:
    </div>

    <ul>
      <li><strong>Organização de recursos</strong>: Estructure os recursos com carpetas e metadatos específicos da campanha.</li>
      <li><strong>Configuração de CDN</strong>: Asegurar que o DAM genere URLs optimizadas e accesibles públicamente.</li>
      <li><strong>Flujos de trabajo de aprobação</strong>: Configurar procesos para marcar os activos como listos para a campanha.</li>
      <li><strong>Estándares de metadatos</strong>: Definir un etiquetado coherente para dimensiones, versiones e fechas de caducidade.</li>
    </ul>
  </Step>

  <Step title="Topsort Activos API Configuração">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Configure a conectividade entre seu DAM e Topsort:
    </div>

    <ul>
      <li><strong>Autenticação</strong>: Configure as credenciales Topsort e API.</li>
      <li><strong>URL Validação</strong>: Asegurar que as URL de DAM sean accesibles para os sistemas Topsort</li>
      <li><strong>Sincronização automatizada</strong>: Configure webhooks ou tareas programadas para sincronizar os recursos aprobados.</li>
      <li><strong>Manejo de errores</strong>: Implementar lógica de reintento para referencias a recursos fallidas.</li>
    </ul>
  </Step>

  <Step title="Automatização de flujos de trabajo">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Implementar a sincronização automatizada de ativos:
    </div>

    ```javascript theme={null}
    // Exemplo de sincronização automatizada de ativos do DAM para o 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>

## Referência da API

### APIs do Topsort para Integração de DAM

| API                                                            | Caso de uso de integração            | Status       | Documentação                                 |
| -------------------------------------------------------------- | ------------------------------------ | ------------ | -------------------------------------------- |
| [API de Recursos](/pt/ad-server/additional-apis/assets-api)    | Referenciar URLs de DAM em campanhas | ✅ Disponível | Gestão e coleções de recursos                |
| [API de Campanhas](/pt/ad-server/additional-apis/campaign-api) | Criar campanhas com recursos DAM     | ✅ Disponível | Gestão completa do ciclo de vida da campanha |

### Autenticação

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

## Melhores Práticas

### Gestão de Ativos

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * **Otimizar as URLs**: Garantir que o DAM gere URLs de carregamento rápido e
    otimizadas para CDN. - **Controle de versões**: Implemente um controle de
    versões claro para evitar que os recursos das campanhas fiquem obsoletos. -
    **Padrões de metadados**: Utilize uma rotulagem consistente para dimensões,
    tipos de campanha e status de aprovação. - **Controle de acesso**: Garanta que
    as URLs dos recursos sejam acessíveis publicamente para os sistemas do
    Topsort.
</div>

### Automatização de Fluxos de Trabalho

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * **Requisitos de aprovação**: Sincronize apenas os recursos aprovados e em
    conformidade com a marca com o Topsort. - **Limpeza automatizada**: Remova os
    recursos expirados ou desatualizados das campanhas ativas. - **Monitoramento
    de erros**: Acompanhe referências a recursos com falha e problemas de
    sincronização.
</div>

## Solução de Problemas

### Problemas Comuns de Integração de DAM

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  1. **Problemas com URLs de ativos**
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * Verificar que as URLs do DAM sejam de acesso público (não estejam protegidas
    por autenticação). - Verificar que as URLs retornem os códigos de status HTTP
    adequados (200). - Garantir que as URLs da CDN estejam otimizadas para
    carregamento rápido. - Validar que as dimensões do ativo correspondam aos
    requisitos do Topsort.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  2. **Falha de sincronização**
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * Verificar a autenticação e as permissões da API. - Verificar a
    compatibilidade do formato de metadados dos ativos. - Monitorar as taxas de
    sucesso de entrega de webhooks. - Implementar um registro de erros adequado
    para as sincronizações com falha.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  3. **Problemas de controle de versões** - Garantir que os ativos atualizados
     acionem as atualizações dos ativos da campanha. - Verificar que os ativos
     expirados sejam removidos das campanhas ativas. - Verificar que apenas as
     versões de ativos aprovadas sejam sincronizadas com o Topsort.
</div>

### Questões Gerais da API

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  1. **Falha de autenticação**
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * Verificar a validade da chave de API e as permissões de escopo. - Verificar
    o formato do cabeçalho de autenticação. - Monitorar a expiração do token.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  2. **Limitação de taxa** - Implementar uma limitação de taxa adequada no
     código de conectividade. - Utilizar operações em lote quando disponíveis. -
     Adicionar lógica de nova tentativa com recuo exponencial.
</div>

## Começando

### Etapas de Implementação

1. **Avaliação**: Revise as capacidades de geração de URL e API do seu sistema DAM atual.
2. **Credenciais da API**: Obtenha as chaves de API do Topsort e configure a autenticação.
3. **Prova de conceito**: Comece com um pequeno conjunto de recursos para testar o fluxo de trabalho de conectividade.
4. **Automatização**: Implemente processos de sincronização automatizados para os ativos aprovados.
5. **Monitoramento**: Configure o acompanhamento para o sucesso da sincronização de ativos e o desempenho da campanha.

## Recursos Relacionados

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  * [Guia de Integração do OMS](/pt/knowledge-base/ad-server/oms-connectivity) -
    Conectividade do sistema de gestão de pedidos - [Documentação da API de
    Recursos](/pt/ad-server/additional-apis/assets-api) - [Documentação da API de
    Campanhas](/pt/ad-server/additional-apis/campaign-api)
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Esta documentação reflete as capacidades atuais do Topsort e da API. A
  conectividade DAM já está disponível através das APIs existentes. Para o
  desenvolvimento de conectividade personalizada, entre em contato com seu
  representante do Topsort.
</div>

***

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