Back to Website
Show / Hide Table of Contents

Connecting a PIM product to assets

  • Last updated on September 15, 2025
  • •
  • 1 minute to read

After creating a PIM product, you may need to connect it to designs, mockups, and documents. This article explains how to create these connections using the BackOffice API.

Using the API

Before you start, ensure your app has the necessary credentials to make API calls:

  1. In your tenant, go to Settings > External apps and register your app.
  2. Implement authentication in your app as described in the Authorization article.

C# API Client

To use the C# API client, initialize it with the required configuration:

var httpClient = new HttpClient();
var backOfficeApiConfiguration = new Aurigma.BackOfficeApi.ApiClientConfiguration()
{
    ApiUrl = BACKOFFICE_API_URL,
    AuthorizationToken = AUTH_TOKEN
};
var assetStorageApiConfiguration = new Aurigma.AssetStorage.ApiClientConfiguration()
{
    ApiKey = ASSET_STORAGE_API_URL,
    AuthorizationToken = AUTH_TOKEN
};
var mockupsApiClient = new MockupsApiClient(assetStorageApiConfiguration, httpClient);
var designsApiClient = new DesignsApiClient(assetStorageApiConfiguration, httpClient);
var documentsApiClient = new DocumentsApiClient(assetStorageApiConfiguration, httpClient);
var productsApiClient = new ProductsManagementApiClient(backOfficeApiConfiguration, httpClient);

Connecting a PIM Product to Assets

To connect a PIM product to assets:

  1. Load the assets (designs, mockups, documents) from the specified folder.
  2. Load the product options.
  3. Create connections between the product and the assets.

Example

// Load assets from a specific folder
var mockups = await mockupsApiClient.GetFolderAsync(tenantId: TENANT_ID, fullPath: "/Test Product/");
var designs = await designsApiClient.GetFolderAsync(tenantId: TENANT_ID, fullPath: "/Test Product/");
var documents = await documentsApiClient.GetFolderAsync(tenantId: TENANT_ID, fullPath: "/Test Product/");

// Load product options
var options = await productsApiClient.GetProductOptionsAsync(id: PRODUCT_ID, tenantId: TENANT_ID);

// Create product designs connections
await productsApiClient.CreateDesignsConnectionsAsync(
    id: PRODUCT_ID,
    tenantId: TENANT_ID,
    body: new CreateProductDesignConnectionsDto()
    {
        Connections = designs.Entities
            .Select(design => new ProductDesignConnectionDto()
            {
                DesignId = design.Id,
                Options = options.Items
                    .Select(option => new ProductAssetConnectionOptionsDto()
                    {
                        OptionId = option.Id,
                        OptionValueIds = option.ProductOptionValues.Select(value => value.Id).ToList()
                    })
                    .ToList()
            })
            .ToList()
    });

// Create product mockups connections
await productsApiClient.CreateMockupsConnectionsAsync(
    id: PRODUCT_ID,
    tenantId: TENANT_ID,
    body: new CreateProductMockupConnectionsDto()
    {
        Connections = mockups.Entities
            .Select(mockup => new ProductMockupConnectionDto()
            {
                MockupId = mockup.Id,
                Options = options.Items
                    .Select(option => new ProductAssetConnectionOptionsDto()
                    {
                        OptionId = option.Id,
                        OptionValueIds = option.ProductOptionValues.Select(value => value.Id).ToList()
                    })
                    .ToList()
            })
            .ToList()
    });

// Create product documents connections
await productsApiClient.CreateDocumentsConnectionsAsync(
    id: PRODUCT_ID,
    tenantId: TENANT_ID,
    body: new CreateProductDocumentConnectionsDto()
    {
        Connections = documents.Entities
            .Select(document => new ProductDocumentConnectionDto()
            {
                DocumentId = document.Id,
                Options = options.Items
                    .Select(option => new ProductAssetConnectionOptionsDto()
                    {
                        OptionId = option.Id,
                        OptionValueIds = option.ProductOptionValues.Select(value => value.Id).ToList()
                    })
                    .ToList()
            })
            .ToList()
    });
Note

All assets will be connected to all product variants.

Was this page helpful?
Thanks for your feedback!
Back to top Copyright © 2001–2025 Aurigma, Inc. All rights reserved.
Loading...
    Thank for your vote
    Your opinion is important to us. To provide details, send feedback.
    Send feedback