PIM Developer Overview
In this article we will look at PIM from a developers perspective and provide you with the overview and references you need to get started.
Before getting started
In this concept article you can find an overview of PIM, delving into its fundamental concepts and detailing its key features. If you haven't already, we highly recommend reading it.
You should also review our versioning strategy to understand how we manage releases. Additionally, you may find it helpful to read about our approach to software development at Bizzkit.
API
PIM is composed of a REST API that includes endpoints related to attributes, brands, lists, hierarchies, segmentation system, products, and so forth.
Preview API
The API also provides a preview version where new functionality can be tested. However, be aware that this preview version may include features that are still under development and subject to change. As such, it is not recommended for use in production environments. Use it primarily for testing and providing feedback on upcoming features. Read more here.
Notable endpoints
Below is a table highlighting some of the most notable endpoints:
Endpoint | Method | Summary |
---|---|---|
/api/attribute-groups |
GET |
Lists available attribute groups with optional filtering |
/api/attribute-groups |
POST |
Creates an attribute group |
/api/attributes |
GET |
Get a list of existing Attributes, matching the given query |
/api/brands/import/csv |
POST |
Enqueues a job to import brands from the uploaded file. |
/api/domain-events |
GET |
List domain event types which can be subscribed to |
/api/external-bulk-operations |
GET |
Get a list of external bulk operations |
/api/global-lists/-without-items |
GET |
Get a list of existing global lists |
/api/global-lists/import/csv |
POST |
Enqueues a job to import global list items from the uploaded CSV file |
/api/pim-types |
GET |
Lists all available PIM types |
/api/product-categories |
POST |
Create a new ProductCategory and place it within a defined hierarchy structure |
/api/product-hierarchies/import/csv |
POST |
Enqueues a job to import product hierarchies from the uploaded CSV file |
/api/products |
PATCH |
Patch multiple products' data with specified operations to be performed. |
/api/products/-filter |
POST |
Filter indexed products based on the specified filter query. |
/api/products/export/csv |
POST |
Enqueues a job to export products to a CSV file based on the supplied parameter set. |
/api/products/import/csv |
POST |
Enqueues a job to import products from the uploaded CSV file |
/api/products/import/json |
POST |
Enqueues a job to import products from the uploaded json file |
/api/resolved-views/attribute-field-values/-resolve |
POST |
Resolves the supplied attribute fields from a view. |
/api/resolved-views/attribute-predefined-values/-search |
POST |
Retrieves attribute predefined value views for the specified attribute uniquenames and segmentation. |
/api/resolved-views/attributes/-search |
POST |
Retrieves attribute views for the specified attribute uniquenames and segmentation. |
/api/resolved-views/brands/-search |
POST |
Retrieves resolved brand views for the specified brand uniquenames and segmentation. |
/api/resolved-views/global-lists/-search |
POST |
Retrieves global list views for the specified global list uniquenames and segmentation. |
/api/resolved-views/product-hierarchies/-search |
POST |
Retrieves resolved product hierarchy views for the specified hierarchy uniquenames and segmentation. |
/api/resolved-views/products/-search |
POST |
Retrieves resolved product views for the specified product uniquenames and segmentation. |
/api/resolved-views/products/families/-search |
POST |
Retrieves the full product family views for the specified product uniquenames and segmentation. |
/api/segmentations |
GET |
Get a list of existing segmentations |
/api/test |
GET |
Displays a simple hello message from the api. |
/api/users/-search-by-ids |
POST |
Search for users matching the provided user ids. |
This is just a brief highlight — please refer to the full Swagger API reference for the complete specification.
Resolved views
The resolved views endpoint provides a simplified representation of a PIM entity, designed for easy integration with external systems like online stores. For more details, please refer to the documentation here.
Using the API
Given a valid authentication token here is an example of calling the Test-endpoint:
Replace the URL with the URL to your environment and replace ...
with the authtoken from the example mentioned above.
Using the Bizzkit .NET SDK
For easy integration with Microsoft .NET, Bizzkit offers SDK packages. These packages include auto-generated Swagger clients and a factory class to simplify authentication. They automate token renewal and provide type-safe methods for the API endpoints.
All SDK package names start with the prefix Bizzkit.Sdk.
, and the SDK packages incorporate the following elements:
- A client factory
- A dedicated client
- Options to configure the client factory
Info
Preview versions are identified as Bizzkit.Sdk.[product].Preview
, such as Bizzkit.Sdk.Iam.Preview
or Bizzkit.Sdk.Pim.Preview
.
To access the Bizzkit NuGet packages in your preferred development environment, you need to reference the Bizzkit Partner feed. You can, for example, do this by adding a nuget.config
file to your project with the following configuration:
This configuration clears existing package sources and adds the Bizzkit Partner feed alongside the official NuGet source.
Once the feed is configured, you can install the required NuGet package using the following command:
To simplify the authentication process, all NuGet packages associated with Bizzkit applications come with a factory class. This class streamlines the creation of an authenticated Swagger-generated client.
Example
As noted earlier, the SDK client is mainly an auto-generated client based on the OpenAPI interface, meaning all methods map directly to the API.
Below is an example of calling the Test endpoint using the SDK client (with the factory and client already created):
Warning
Please keep in mind that all examples provided are for illustrative purposes only. They are not intended to represent best practices and should not be used in production without a thorough code review.
Modelling
Creating a PIM data model to represent the data structure of products for a specific company is essential for ensuring accurate and efficient data management. A well-designed model helps in organizing and categorizing product information, making it easier to manage, retrieve, and update.
For more information, please refer to Data types, Attributes, Segmentations, and Modelling attributes.
Ingesting data
Our PIM system boasts a comprehensive data ingestion mechanism, harnessing the simplicity of the CSV format. This tool empowers you to efficiently import a variety of elements, including attributes, brands, products, hierarchies, and so forth. For a deeper understanding of the CSV specification utilized, please explore the dedicated article on the CSV specification.
For a more simple but fast import we also support the JSON format.
Product enrichment
When managing data in PIM, it’s important to understand the concepts of enrichers and validators. Product enrichers allow you to add, replace, set, and update product catalog item attributes, while validators ensure the quality of product data.
For more information, see Product enrichers and Product validators.
Events
PIM has the capability to communicate with other systems about events such as item creation, updates, or deletions using webhooks. You can set these up either through the User Interface (UI), by navigating to Settings -> Administration -> Webhooks, or via the API. For more detailed information, please refer to this article.
Extensibility
PIM can be extended in numerous ways. External bulk operations are an extension point in PIM, enabling you to perform custom operations or jobs on the product catalog, which are run on the customer solution side. UI Extension Frame Sets provide a way to call an external URL with parameters, and display the result either internally or externally.
Please refer to:
Job runners
PIM utilizes two job execution mechanisms, namely the notification hub and the task runner. The role of the notification hub is to inform the User Interface (UI) about modifications, while the task runner takes care of event processing, cache management, and related tasks.