# Afineo API > Afineo is a PIM (Product Information Management), DAM (Digital Asset Management) and MDM (Master Data Management) platform. ## API Documentation - OpenAPI 3.0 spec (full): https://api.afineo.io/openapi.json - Human-readable docs: https://api.afineo.io/ - Website: https://www.afineo.com The full spec is large. Prefer the per-module specs listed below: each one is a standalone, valid OpenAPI 3.0 document containing only that module's endpoints. ## Authentication All endpoints (except token/get) require a Bearer JWT token: 1. POST /api/v3/token/get/ with login + password 2. Use the returned token in header: Authorization: Bearer {token} ## Response Format All responses follow a standard format: ```json { "status_code": 1, "status_message": "Success", "result": [] } ``` Status codes: 1 = success, 2 = validation error, 3 = no result, 0 = system error. ## Base URL Each client has its own instance: https://{instance}.afineo.io/api/v3/ ## API Overview The Afineo REST API v3 provides 132 endpoints across 17 modules. - **administration** (2 endpoints) — Read-only access to platform structure: list available libraries (classes) and versions. Use this to discover the data model foundation (library IDs, names) before querying other modules like… Spec: https://api.afineo.io/openapi/administration.json - **attributes** (17 endpoints) — Define and manage asset attributes (fields) within a library: create attributes, organize them into tabs and groups, assign them to types, and retrieve JSON schemas for validation. This is the core… Spec: https://api.afineo.io/openapi/attributes.json - **export** (6 endpoints) — Export asset data using predefined mappings. Supports repository and project contexts, file-based exports (CSV, XML) via background jobs, and EasyCatalog format. Use processes/get to track export job… Spec: https://api.afineo.io/openapi/export.json - **get-asset** (4 endpoints) — Retrieve asset data by search criteria or by ID. Supports both repository (master data) and project (contextual data) contexts. Use this to read asset information without modifying it. Spec: https://api.afineo.io/openapi/get-asset.json - **import** (4 endpoints) — Import asset data into the platform. Supports auto-mapped imports and JSON/JSONL formats, in both repository and project contexts. Data can be sent inline via the data parameter or as a file upload. Spec: https://api.afineo.io/openapi/import.json - **listvalues** (6 endpoints) — Manage dropdown lists (list values) used by select-type attributes: create lists, add options, and update existing values. These are the predefined option sets that populate dropdown, checkbox and… Spec: https://api.afineo.io/openapi/listvalues.json - **mappings** (3 endpoints) — Read-only access to field mapping configurations: list available mappings and retrieve mapping details. Mappings define how data is transformed during import and export operations. Spec: https://api.afineo.io/openapi/mappings.json - **permissions** (13 endpoints) — Read-only access to access control configuration: list and retrieve user groups, permission profiles, display masks, and asset statuses. Use this to discover permission structures and their IDs for… Spec: https://api.afineo.io/openapi/permissions.json - **preferences** (4 endpoints) — Manage display preferences per library context: column visibility, sort order, and layout settings. These control how asset lists are presented to users. Spec: https://api.afineo.io/openapi/preferences.json - **processes** (9 endpoints) — Execute and monitor background processes (ETL, exports, transformations). Launch a process, track its state via polling, retrieve execution logs and download generated files when complete. Spec: https://api.afineo.io/openapi/processes.json - **projects** (4 endpoints) — Manage project trees within a library: create projects, list them, and retrieve project details. Projects are contextual workspaces where assets can be organized independently from the main… Spec: https://api.afineo.io/openapi/projects.json - **publishing** (22 endpoints) — Manage publication projects for catalog and document generation: create publications, manage pages, place products in blocks, assign themes, and control page layout. This is the complete… Spec: https://api.afineo.io/openapi/publishing.json - **queues** (3 endpoints) — Monitor the message queue system: list queues, get queue details, and view queue types. Queues handle asynchronous job processing (imports, exports, transformations) across the platform. Spec: https://api.afineo.io/openapi/queues.json - **record-asset** (19 endpoints) — Full asset lifecycle management: create, update, delete, move and copy assets in both repository and project contexts. Also handles file uploads, status changes, type reassignment, and tree… Spec: https://api.afineo.io/openapi/record-asset.json - **token** (3 endpoints) — Authentication: obtain a JWT token by providing credentials (login/password), check token validity, or disable active tokens. A valid token is required in the Authorization header for all other API… Spec: https://api.afineo.io/openapi/token.json - **types** (8 endpoints) — Manage asset types (categories) within a library: create types, update properties, configure status assignments and set group permissions. Types define the classification and permission structure for… Spec: https://api.afineo.io/openapi/types.json - **workflows** (5 endpoints) — Retrieve workflow configurations: list available workflows and get complete workflow definitions including states, transitions and rules. Supports both repository and project contexts. Spec: https://api.afineo.io/openapi/workflows.json ## Endpoints ### administration Spec: https://api.afineo.io/openapi/administration.json - `POST /api/v3/administration/classes/list/` — List all available classes - `POST /api/v3/administration/versions/list/` — List available versions ### attributes Spec: https://api.afineo.io/openapi/attributes.json - `POST /api/v3/attributes/assign-masks/` — Sync display mask permissions for an attribute (add, update, remove) Required: id, assignments - `POST /api/v3/attributes/assign-types/` — Sync type assignments for an attribute (add, update, remove) Required: id, assignments - `POST /api/v3/attributes/batch-create/` — Create multiple attributes in batch Required: class_id, attributes - `POST /api/v3/attributes/create/` — Create a new attribute Required: class_id, tab_id, data_type, label, code, type - `POST /api/v3/attributes/full/` — Get all attributes with full configuration Required: class_id - `POST /api/v3/attributes/get/` — Get attribute configuration Required: id - `POST /api/v3/attributes/groups/create/` — Create a new attribute group Required: class_id, tab_id, label - `POST /api/v3/attributes/groups/list/` — List attribute groups Required: class_id - `POST /api/v3/attributes/groups/update/` — Update an existing attribute group Required: id - `POST /api/v3/attributes/list/` — List class attributes (simplified) Required: class_id - `POST /api/v3/attributes/masks/` — Get attribute mask permissions Required: id - `POST /api/v3/attributes/schema/` — Get attribute schema by data type Required: data_type - `POST /api/v3/attributes/tabs/create/` — Create a new attribute tab Required: class_id, label - `POST /api/v3/attributes/tabs/list/` — List attribute tabs Required: class_id - `POST /api/v3/attributes/tabs/update/` — Update an existing attribute tab Required: id - `POST /api/v3/attributes/types/` — Get attribute type assignments Required: id - `POST /api/v3/attributes/update/` — Update an existing attribute Required: id ### export Spec: https://api.afineo.io/openapi/export.json - `POST /api/v3/export/by-mapping/node/` — Export project node data by mapping Required: class_id, parent_id, mapping_id, num_page, results_per_page - `POST /api/v3/export/by-mapping/repository/` — Export repository data by mapping Required: class_id, mapping_id, num_page, results_per_page - `POST /api/v3/export/easycatalog/` — Export for EasyCatalog InDesign Required: class_id, node_id, action - `POST /api/v3/export/get-file/` — Get export file by queue ID Required: queue_id - `POST /api/v3/export/jobs-by-mapping/node/` — Async export project node to file Required: class_id, parent_id, mapping_id - `POST /api/v3/export/jobs-by-mapping/repository/` — Async export repository to file Required: class_id, mapping_id ### get-asset Spec: https://api.afineo.io/openapi/get-asset.json - `POST /api/v3/get-asset/by-id/node/` — Get project node asset by ID Required: id, class_id - `POST /api/v3/get-asset/by-id/repository/` — Get repository asset by ID Required: id, class_id - `POST /api/v3/get-asset/by-search/node/` — Search project node assets by filters Required: class_id, parent_id, num_page, results_per_page - `POST /api/v3/get-asset/by-search/repository/` — Search repository assets by filters Required: class_id, parent_id, num_page, results_per_page ### import Spec: https://api.afineo.io/openapi/import.json - `POST /api/v3/import/auto/node/` — Auto-mapped import in node (project context) Required: class_id, parent_id, mode - `POST /api/v3/import/auto/repository/` — Auto-mapped import in repository Required: class_id, mode - `POST /api/v3/import/json/node/` — Import JSON/JSONL data in node (project context) Required: class_id, parent_id, mode - `POST /api/v3/import/json/repository/` — Import JSON/JSONL data in repository Required: class_id, mode ### listvalues Spec: https://api.afineo.io/openapi/listvalues.json - `POST /api/v3/listvalues/add-option/` — Add option to list value Required: list_id, value - `POST /api/v3/listvalues/create/` — Create a new dropdown list Required: class_id, label - `POST /api/v3/listvalues/full/` — Get list values for dropdowns Required: class_id - `POST /api/v3/listvalues/get/` — Get list value details Required: id - `POST /api/v3/listvalues/list/` — List dropdown configurations Required: class_id - `POST /api/v3/listvalues/update/` — Update a dropdown list with full options synchronization Required: id ### mappings Spec: https://api.afineo.io/openapi/mappings.json - `POST /api/v3/mappings/full/` — Get all mappings for a class Required: class_id - `POST /api/v3/mappings/get/` — Get mapping details Required: id - `POST /api/v3/mappings/list/` — List mappings by class and type Required: class_id, type ### permissions Spec: https://api.afineo.io/openapi/permissions.json - `POST /api/v3/permissions/groups/full/` — Get full user group permissions - `POST /api/v3/permissions/groups/get/` — Get user group details Required: id - `POST /api/v3/permissions/groups/list/` — List user groups (simplified) - `POST /api/v3/permissions/masks/assign-attributes/` — Sync attribute permissions for a display mask, scoped to a library (add, update, remove) Required: id, class_id, assignments - `POST /api/v3/permissions/masks/full/` — Get all display masks with details Required: class_id - `POST /api/v3/permissions/masks/get/` — Get display mask details Required: id, class_id - `POST /api/v3/permissions/masks/list/` — List display masks (simplified) - `POST /api/v3/permissions/profiles/full/` — Get full profile permissions - `POST /api/v3/permissions/profiles/get/` — Get profile details Required: id - `POST /api/v3/permissions/profiles/list/` — List profiles (simplified) - `POST /api/v3/permissions/statuses/full/` — Get all statuses with details Required: class_id - `POST /api/v3/permissions/statuses/get/` — Get status details Required: id - `POST /api/v3/permissions/statuses/list/` — List statuses (simplified) Required: class_id ### preferences Spec: https://api.afineo.io/openapi/preferences.json - `POST /api/v3/preferences/full/` — Get all preferences with details Required: class_id - `POST /api/v3/preferences/get/` — Get preference by context Required: class_id, id, context - `POST /api/v3/preferences/list/` — List preferences (simplified) Required: class_id - `POST /api/v3/preferences/update/` — Update preference attributes Required: class_id, id, context, attribute_ids ### processes Spec: https://api.afineo.io/openapi/processes.json - `POST /api/v3/processes/connections/` — List external connections - `POST /api/v3/processes/execute/` — Execute automated process Required: id, class_id - `POST /api/v3/processes/full/` — List processes (full details) Required: class_id - `POST /api/v3/processes/get-file/` — Download process-generated file Required: identification_key, file_key - `POST /api/v3/processes/get-instance-state/` — Check process execution status Required: identification_key - `POST /api/v3/processes/get-logs/` — Get process execution logs Required: id - `POST /api/v3/processes/get/` — Get process configuration Required: id - `POST /api/v3/processes/list/` — List processes (simplified) Required: class_id - `POST /api/v3/processes/schedulers/` — List scheduled processes Required: class_id ### projects Spec: https://api.afineo.io/openapi/projects.json - `POST /api/v3/projects/create/` — Create new project Required: class_id, workspace_node_id, label, project_type - `POST /api/v3/projects/full/` — Get all projects with full details Required: class_id - `POST /api/v3/projects/get/` — Get project details Required: id - `POST /api/v3/projects/list/` — List projects (simplified) Required: class_id ### publishing Spec: https://api.afineo.io/openapi/publishing.json - `POST /api/v3/publishing/add-block-to-page/` — Add a single content block to a page Required: class_id, project_node_id, page_num, block - `POST /api/v3/publishing/add-blocks-to-pages/` — Add content blocks to pages Required: class_id, project_node_id, pages - `POST /api/v3/publishing/add-empty-block/` — Add an empty block to a page Required: class_id, project_node_id, page_num, x_position, y_position, width, height - `POST /api/v3/publishing/add-notepad/` — Add a notepad to a page Required: class_id, project_node_id, page_num, notepad_type, html_content - `POST /api/v3/publishing/add-product-to-page/` — Add a product to a publication page tree Required: class_id, project_node_id, page_num, asset_id - `POST /api/v3/publishing/add-products-to-pages/` — Add products to publication pages (batch) Required: class_id, project_node_id, pages - `POST /api/v3/publishing/add-text-block/` — Add a text block to a page Required: class_id, project_node_id, page_num, x_position, y_position, width, height, html_content - `POST /api/v3/publishing/add-theme-to-page/` — Associate a single theme to a single page Required: class_id, project_node_id, page_num, theme - `POST /api/v3/publishing/add-themes-to-pages/` — Associate themes to pages Required: class_id, project_node_id, pages - `POST /api/v3/publishing/create/` — Create new project Required: class_id, workspace_node_id, label, project_type - `POST /api/v3/publishing/delete-block-to-page/` — Remove a content block from a page Required: block_id - `POST /api/v3/publishing/delete-theme-to-page/` — Remove a theme from a page Required: class_id, project_node_id, page_num, theme - `POST /api/v3/publishing/details/` — Get publication details Required: class_id, project_node_id - `POST /api/v3/publishing/get-block-form-by-attribute/` — Get forms in a project by attribute value Required: class_id, project_node_id, attribute_id, value - `POST /api/v3/publishing/list/` — List publication projects Required: class_id - `POST /api/v3/publishing/page-details/` — Get page details with blocks Required: class_id, project_node_id, page_num - `POST /api/v3/publishing/pages/` — Get publication pages list Required: class_id, project_node_id - `POST /api/v3/publishing/place-product-in-page/` — Place a product on a publication page Required: class_id, project_node_id, page_num - `POST /api/v3/publishing/place-products-in-pages/` — Place products on publication pages (batch) Required: class_id, project_node_id, pages - `POST /api/v3/publishing/unassign-product-from-block/` — Remove a product from a block Required: class_id, project_node_id, block_id - `POST /api/v3/publishing/update-block-to-page/` — Update a content block on a page Required: class_id, project_node_id, page_num, block_id, block - `POST /api/v3/publishing/update-status/node/` — Update page status in publication project Required: page_num, class_id, project_node_id, status_id ### queues Spec: https://api.afineo.io/openapi/queues.json - `POST /api/v3/queues/get/` — Get queue details Required: id - `POST /api/v3/queues/list/` — List queue items - `POST /api/v3/queues/types/` — List queue types ### record-asset Spec: https://api.afineo.io/openapi/record-asset.json - `POST /api/v3/record-asset/add-asset-to-project/` — Add repository asset to project Required: class_id, asset_id, parent_node_id - `POST /api/v3/record-asset/available-attributes-creation/` — Get available attributes for creation Required: type_id - `POST /api/v3/record-asset/copy-node-in-project/` — Copy node in project Required: class_id, node_id, parent_node_id - `POST /api/v3/record-asset/create/node/` — Create node in project Required: class_id, type_id, parent_id - `POST /api/v3/record-asset/create/repository/` — Create asset in repository Required: class_id, type_id, parent_id - `POST /api/v3/record-asset/destroy/node/` — Delete node and repository asset Required: id, class_id - `POST /api/v3/record-asset/destroy/repository/` — Delete repository asset permanently Required: id, class_id - `POST /api/v3/record-asset/detach/node/` — Detach node from project Required: id, class_id - `POST /api/v3/record-asset/detach/repository/` — Detach asset from repository tree Required: id, class_id - `POST /api/v3/record-asset/move-asset-in-repository/` — Move an asset to a different parent in the repository hierarchy Required: class_id, asset_id, parent_id - `POST /api/v3/record-asset/move-node-in-project/` — Move node in project Required: class_id, node_id, parent_node_id - `POST /api/v3/record-asset/repoint/node/` — Repoint a node to a different asset Required: node_id, asset_id, class_id - `POST /api/v3/record-asset/update-datas/node/` — Update project node attributes Required: id, class_id - `POST /api/v3/record-asset/update-datas/repository/` — Update repository asset attributes Required: id, class_id - `POST /api/v3/record-asset/update-status/node/` — Update project node status Required: id, class_id, status_id - `POST /api/v3/record-asset/update-status/repository/` — Update repository asset status Required: id, class_id, status_id - `POST /api/v3/record-asset/update-type/` — Change asset type Required: id, class_id, type_id - `POST /api/v3/record-asset/upload-file/node/` — Upload file to project node Required: id, class_id - `POST /api/v3/record-asset/upload-file/repository/` — Upload file to repository asset Required: id, class_id ### token Spec: https://api.afineo.io/openapi/token.json - `POST /api/v3/token/disable/` — Disable all active tokens Required: l, p - `POST /api/v3/token/get/` — Get JWT authentication token Required: l, p - `POST /api/v3/token/info/` — Get current token information ### types Spec: https://api.afineo.io/openapi/types.json - `POST /api/v3/types/assign-attributes/` — Sync attribute assignments for a type (add, update, remove) Required: id, assignments - `POST /api/v3/types/create/` — Create a new type in a library Required: class_id, label, supertype_id - `POST /api/v3/types/full/` — Get all types with full details Required: class_id - `POST /api/v3/types/get/` — Get asset type details Required: id - `POST /api/v3/types/list/` — List types by class Required: class_id - `POST /api/v3/types/statuses/` — Get type status assignments Required: id - `POST /api/v3/types/update-permissions/` — Update group permissions for a type Required: id, mode, permissions - `POST /api/v3/types/update/` — Update an existing type in a library Required: id ### workflows Spec: https://api.afineo.io/openapi/workflows.json - `POST /api/v3/workflows/full/node/` — Get full workflows for project node Required: project_node_id, class_id - `POST /api/v3/workflows/full/repository/` — Get full workflows for repository Required: class_id - `POST /api/v3/workflows/get/` — Get workflow details Required: id - `POST /api/v3/workflows/list/node/` — List workflows by project node Required: project_node_id, class_id - `POST /api/v3/workflows/list/repository/` — List workflows for repository Required: class_id