v2 API
The release notes for updates to v2 of the Propeller Platform.
Version 2.58 - 24th September
Checkout
Bugs
- Fixed validation error when querying payments by ID. The payment query now correctly accepts valid payment IDs without throwing integer validation errors.
Order
Bugs
- Resolved connection timeout issues when generating PDF documents for orders. PDF generation now completes successfully within reasonable time limits instead of failing with connection errors.
Pricing
Technical Improvements
- Reduced unnecessary error logging for products without prices. The system now properly handles products that don't have prices without generating error logs, significantly reducing log clutter.
Product
Bugs
- Fixed an issue in the machines query where spare parts would cause "Cannot return null for non-nullable field SparePart.id" errors. The query now correctly handles spare part data retrieval.
Version 2.57 - 19th September
Product
Bugs
- Fixed an issue where creating a product option using the
clusterProductUpdate
mutation would incorrectly add the product as both a product option AND a cluster product. Product options are now correctly created without being duplicated as cluster products, ensuring proper product catalog management.
Version 2.56 - 18th September
Media
Bugs
- Fixed an issue where media queries would fail with "Cannot return null for non-nullable field MediaImage.tags" error. The tags field now properly returns an empty array instead of null when no tags are present, ensuring media images can be retrieved successfully for all products.
Version 2.55 - 10th September
Pricing
Bugs
- Fixed an issue with the discounts bulk REST endpoint where omitting the
quantityFrom
field would result in an "unknown upsert error" despite documentation indicating it was optional. ThequantityFrom
field is now correctly handled as mandatory with improved error messaging when missing.
Version 2.54 - 3rd September
Tax
New Features
- Extended tax code support by adding 'M' (Medium) and 'CUST' (Custom) values to the tax code enum, enabling support for Belgium and other countries with additional tax requirements.
Order
Bugs
- Fixed an issue where tender creation would fail with surcharge validation errors for certain companies. The system now correctly validates surcharge values against the allowed tax codes (H, L, N, M, CUST).
- Fixed the claims query in Order V1 that was incorrectly referencing
companyIds
field instead ofcompanyId
, causing validation errors.
Warehouse
New Features
- Added sorting capabilities to warehouse searches with support for createdAt and lastModifiedAt fields, improving data retrieval flexibility.
Attributes
Bugs
- Fixed authorization issues where certain attribute mutations were missing required role checks, ensuring proper access control.
- Resolved HTTP 500 errors when posting attributes without values via REST API. The system now properly handles bulk attribute updates when value properties are omitted.
User Management
Bugs
- Fixed an issue preventing company deletion where the system would incorrectly report "Company not found" for existing companies due to data inconsistencies.
Version 2.53 - 27th August
Order
New Features
- Added support for multiple source systems on orders. Orders can now have a
sources
array field containing source objects withid
andname
, enabling proper tracking when different order items originate from different systems. The existingexternalId
field has been deprecated in favor of this new approach.
Bugs
- Fixed an issue where tax totals in order revision history were displaying the latest calculation instead of the historical values from when each revision was created. Historical revisions now correctly preserve their original tax percentages and totals.
- Resolved an issue where updating the tax code on order items was not being persisted correctly. Tax code changes are now properly saved when updating order items.
- Fixed an issue where revision sorting was not working correctly when fetching revisions for multiple orders. Revisions are now properly sorted according to the specified sort order.
- Resolved synchronization issues between the latest non-public order revision and the main order data, ensuring consistency across order states.
Attributes
Bugs
- Fixed an issue where
attributeResultByProductId
query was returning empty values for product attributes. The query now correctly returns the attribute values for the specified products.
External Reference
New Features
- Added bulk delete endpoint for external references, allowing efficient removal of multiple references in a single operation.
Bugs
- Fixed caching issue where searches with source and source ID would incorrectly return "no results" from cache instead of checking the database. The system now properly searches the database when cache returns empty results.
User Management
Bugs
- Resolved an error when fetching orderlists that occurred when no companies were assigned to an orderlist. The pagination calculation now handles empty result sets correctly.
Version 2.52 - 20th August
Pricing
Bugs
- Resolved an issue where bulk creation of ZoneTaxCodes would fail with a "Cannot return null for non-nullable field ZoneTaxCode.id" error. Bulk zone tax code creation now works correctly.
- Fixed an error when using the pricesheets field in contact queries that resulted in invalid input syntax errors. The pricesheets field now correctly handles contact ID parameters.
Order
Bugs
- Fixed an issue where bonus items could not be removed from orders/tenders, resulting in "TENDERITEM_NOT_FOUND" errors. Bonus items can now be properly deleted from orders and quotes.
- Resolved an issue where the orderItemId field always returned null for all tender items. The field now correctly returns the associated order item ID.
Deprecations
- Deprecated the
validateBudget
field in tender operations as it is no longer in use.
User Management
Deprecations
- Deprecated manager-related queries, fields, and mutations as no v2 tenants are using this functionality. This includes all manager-specific endpoints and fields.
Product
Bugs
- Fixed pagination issues in the machines query where page and offset values were being swapped. The query now correctly interprets page as page number and offset as the number of items to skip.
Version 2.51 - 13th August
Revision History for Quote Requests, Quotes & Orders
New Features
We're introducing comprehensive revision history across all order types - quote requests, quotes, and orders - to provide complete traceability and meet audit requirements. This feature captures every change made throughout the entire sales cycle, from initial customer request to final order fulfillment.
Key Benefits:
- Complete Audit Trail: Every modification to quote requests, quotes, and orders is automatically captured in an immutable revision history, ensuring compliance with audit requirements and providing a permanent record for dispute resolution.
- Full Data Snapshots: Each revision stores a complete snapshot of all order data including items, prices, shipments, addresses, and tracking information, along with who made the change and when.
- Regulatory Compliance: Meet regulatory and internal compliance requirements with tamper-proof historical records that cannot be modified or deleted once created.
- Accountability: Track all changes made by sales representatives, customers, or system processes, providing clear accountability throughout the order lifecycle.
How It Works:
- Revisions are automatically created whenever an order status changes or when public-facing documents are modified
- Each revision is assigned a sequential revision number and timestamp
- All revisions are immutable - they cannot be changed once created
- The system maintains a complete chain of custody from initial request through final order
- Historical revisions remain accessible for reference, reporting, and audit purposes
Quote Versioning
New Features
Alongside revision history, we're introducing intelligent quote versioning that revolutionizes how sales teams manage quotations while maintaining a clear, customer-friendly experience.
Key Benefits:
- Draft Capability: Sales representatives can work on draft versions without immediately exposing changes to customers, enabling internal review and iteration.
- Public Version Numbers: Customer-facing quotes automatically receive sequential version numbers (v1, v2, v3), making it easy to reference specific proposals during negotiations.
- Version Invalidation: Mark outdated quotes as invalid while keeping them visible for reference, preventing customers from accepting superseded proposals.
- Parallel Workflows: Sales teams can prepare multiple quote variations while customers continue to view the current public version.
How It Works:
- Quotes are marked as either public (customer-visible) or draft (internal only)
- Only public quotes receive customer-friendly version numbers that increment sequentially
- Sales reps can create and modify draft versions without affecting what customers see
- When ready, drafts can be published to become the new public version
- Previous versions remain accessible but can be invalidated to prevent acceptance
Implementation Flexibility: Partners have complete control over how quote versioning is presented in their frontend implementations:
- Minimal Approach: Show only the latest public version to keep the customer experience simple
- Transparent Approach: Display all public versions, allowing customers to compare different proposals
- Selective Approach: Show all valid versions while hiding invalidated quotes to reduce confusion
- Hybrid Approach: Combine strategies based on customer type or quote value
This flexibility ensures that each implementation can align with specific business processes and customer expectations, whether prioritizing simplicity or complete transparency in the quotation process.
Cart
New Features
- Added support for child items in bulk cart operations. The
CartItemBulkInput
now acceptschildItems
for clusters, enabling efficient bulk creation of complex product configurations. - Added ability to set requested delivery dates on order items through the cart, allowing customers to specify desired delivery dates at the line item level.
Bugs
- Fixed an issue where custom prices were not applied when adding items to cart using
cartAddItem
mutation. Custom prices are now correctly set when provided. - Fixed an issue where custom prices were not applied in bulk cart operations using
cartItemBulk
mutation. Bulk operations now properly respect custom pricing.
Pricing
Bugs
- Improved error messaging when updating pricesheets with duplicate codes. The system now clearly indicates when a pricesheet code already exists instead of returning a generic error.
Order
Bugs
- Fixed incorrect calculation of
priceTotalNet
field for order items. The field now correctly calculates based on the actual item quantity instead of defaulting to quantity 1. - Fixed an issue where order item sequence would change unexpectedly when adding new items to existing orders. Items now maintain their original position when orders are modified.
- Resolved tender processing failures caused by missing
export_status
default values. Tenders can now be successfully converted to orders. - Fixed pagination issues in the orders query where incorrect numbers of items were returned regardless of the offset value. Pagination now works correctly and returns all orders as expected.
Order Status
Bugs
- Fixed security issue where admin users could incorrectly delete system order statuses. System order statuses are now properly protected from deletion by non-system users.
Valueset & PayMethod
Bugs
- Fixed REST endpoint functionality for Valueset and PayMethod services, ensuring proper operation of these services via REST API.
Version 2.50 - 6th August
Product
Bugs
- Fixed an issue where searching for products by manufacturer name failed when the name contained spaces. Product searches now correctly return results for manufacturers with spaces in their names (e.g., "Turtle Wax").
User Management
Bugs
- Resolved an issue where the parentUsergroupId field incorrectly returned null in various queries and mutations. This non-nullable field now properly returns the expected value in contact and company operations.
Order
Bugs
- Improved error handling when deleting Order Status Sets. The system now provides clear guidance that all order statuses must be removed from a set before it can be deleted, replacing the previous generic error message.
Version 2.49 - 23rd July
Order
Bugs
- Fixed an issue where order creation via REST API failed with "Failed to fetch product ids by sources" error. Orders can now be created successfully when referencing products by their source identifiers.
- Resolved an issue where order REST API responses included empty arrays for addresses and shipments when these fields were not expanded. These fields are now only included in the response when explicitly requested via expand parameters.
Attributes
Bugs
- Fixed an issue where default values were not created when bulk importing attribute descriptions via REST API. Default values are now properly saved when included in the bulk payload.
Media
New Features
- Increased the maximum file name length for media uploads to 255 characters (including file extension), aligning with industry standards for better compatibility with various file naming conventions.
Version 2.48 - 16th July
Product
Bugs
- Fixed validation error messages when importing products with attributes via REST API. The system now returns accurate error messages for v2 attribute payload validation, making it easier to identify and resolve import issues.
Pricing
Bugs
- Fixed an issue where product group discounts created through REST API were not visible in GraphQL queries or the backoffice interface. Product group discounts are now correctly displayed and applied across all platform interfaces.
Version 2.47 - 9th July
Attribute
New Features
- Improved error messaging when creating text attribute descriptions without required default values.
User Management
New Features
- Deprecated List FavoriteList REST endpoint.
Product
Bugs
- Fixed error when creating products and clusters that prevented proper price creation response handling.
- Resolved catalog query error that occurred when filtering by color attributes.
Bugs
- Fixed pricesheet pricing REST endpoint error for bulk discount operations.
Version 2.47 - 25th June
Pricing
Bugs
- Fixed discount bulk issue when updating existing discount per pricesheet.
Version 2.46 - 18th June
Product
Bugs
- Fixed bulk product creation always setting hidden value to Y regardless of payload value
Order
Bugs
- Fixed
exportStatus
field not being returned in order REST API response - Fixed search by empty
exportStatus
not working correctly for non-exported orders
Event Actions & Templates
New Features
- Added custom fields to standard payload for event actions (
ORDER_CREATED
,ORDER_UPDATED
,ORDER_SEND_CONFIRMATION
,QUOTE_SEND
,QUOTE_SEND_REQUEST
,QUOTE_SEND_VALIDATION
) - Added
reference
field, order addresses andtaxPercentages
details to event payloads - Implemented error logging for template rendering and custom query failures with 1-month retention
- Added GraphQL queries for
templateErrorLog
,templateErrorLogs
andtemplateErrorLogStats
Webhooks
New Features
- Added authentication support for webhooks with HMAC-SHA256 signature verification
- Added basic HTTP authentication support for webhook endpoints
Pricing
Bugs
- Fixed VAT calculation not updating correctly when changing delivery country on orders
- Fixed tax calculations for discounted postage and payment amounts
Cart
Bugs
- Fixed
cartUpdateItem
mutation not calculating correct prices for clusters with options
User Management
Bugs
- Fixed REST API returning all amount fields as strings instead of numbers (except
postageData.tax
)
Business Rules
Bugs
- Fixed
businessRuleDecisionTableUpdate
mutation not updating decision table names
Version 2.45 - 10th June
Product
Bugs
- Fixed issue causing cluster products to disappear due to incorrect routing and deletion behavior.
- Ensured hidden products and clusters are fully excluded from search results.
- Resolved GraphQL error where null
SparePart.id
caused spare parts queries to fail when migrating from V1 to V2.
Version 2.44 - 28th May
Order
New Features
- Added support for updating a single address via the
orderUpdate
mutation to increase flexibility in order editing.
Bugs
- Updated validation for
postage.requestDate
andpayment.statusDate
to accept ISO 8601 date strings, resolving unnecessary 400 errors. - Fixed tender creation flow failure, ensuring stability of order initialization.
Product
New Features
- Improved cluster creation time by avoiding unnecessary calls to pricing and attribute services when no products are present.
Bugs
- Prevented GraphQL crash when moving products from a cluster to a PDM category.
- Fixed
externalreference
REST API to properly return IDs for existing imported machines instead of 404 errors.
Pricing
Bugs
- Fixed bundle price calculation issue for “no discount” bundles. The bundle price now correctly sums up the applied product prices instead of using only the first item’s price.
Other
Bugs
- Resolved valueset type issue where newly created valuesets defaulted to SYSTEM instead of CUSTOM, blocking edits in backoffice.
- Corrected filter behavior: multiple selections in a filter group are now allowed, and value sorting defaults to descending by count.
Version 2.43 - 21th May
Order
New features
- Improved error handling for price imports by splitting payloads into 1,000-record batches when limits are exceeded.
- Included postage and payment taxes in
order.total.taxPercentages
grouping in the API response.
Bugs
- Fixed sync issue where
externalId
updates on orders weren’t reflected in related tender queries. - Fixed issue where setting tender discount to 0 didn’t overwrite previous discount on order during tender processing.
- Fixed duplication of surcharges for bonus items when
tenderProcess
was run multiple times aftertenderApplyIncentives
.
Pricing
New features
- Added backend support to wipe all pricesheet prices in one action instead of requiring full pricesheet deletion.
Bugs
- Ensured bulk prices return correctly from the API regardless of
validFrom
orvalidTo
dates. - Fixed bug where deleting a user didn’t remove them from pricesheets, causing pricing page to break.
- Fixed API error when searching pricesheets using
json_search
, ensuring stability across environments.
Deprecation
- Flagged the deprecated
shippingcost
field on carrier objects across all V2 API definitions. - Deprecated unused fields in
OrderStatus
object (isExportable
,isConfirmable
,isArchivable
).
Version 2.42 - 14th May
Order
New features
- Deprecated the
total.orderId
field in the order object since the order ID is already present in the parent structure.
Business rules
New features
- Enabled business rules to set transaction costs automatically, expanding rule-based pricing capabilities.
Bugs
- Fixed carrier rule logic so that defined conditions correctly apply in both the sales portal and webshop checkout flow.
Product
New features
- Made it possible to add hidden products and clusters to quotes or orders in the back office, while still keeping them hidden on the frontend.
- Removed unused or incomplete options from the rule builder: removed “User path” and “User parent usergroup id” from IF conditions, and “Add valuepoints to order” from THEN actions.
Pricing
Bugs
- Corrected tax values shown on the order overview page and PDF to match actual calculations and basket totals.
Other
New features
- Added
WAREHOUSE_CREATED
andWAREHOUSE_UPDATED
events to the warehouse service for better cross-service data replication. - Removed
SEND_WELCOME_EMAIL
from the list of available event triggers, as it was incorrectly exposed in the back office.
Version 2.41 - 7th May
Product
Bugs
- Fixed an error in the
ClusterOptionCreate
mutation that occurred when thedefaultLanguage
field was provided. This field is no longer accepted and must be omitted to successfully create cluster options. - Resolved an issue where
machineCreate
mutation failed due to an internal fetch error from the SpareParts service. Creation now works as expected with valid inputs.
Pricing
Bugs
- Fixed a bug in VAT calculation where changing the delivery country on an order did not correctly recalculate VAT rates (e.g. low/high/zero) based on the new tax zone. The calculation now reflects the appropriate rate when updating the order address.
Business Rules
Bugs
- Fixed a forbidden resource error when users with proper roles tried to edit business rules in the rule builder.
Version 2.40 - 29th April
Event actions, webhooks and templates
You can now configure automated actions in response to key platform events using the new Event Action Manager.
Key capabilities
-
Event Actions Define actions triggered by platform events (e.g. order placed, quote approved, account created). Supports multiple actions per event.
-
Webhooks Send structured JSON payloads to external systems in real-time. Useful for syncing with CRMs, ERPs, or internal services.
-
Template Rendering Render HTML or PDF content using customizable templates. Supports multi-tenant setups, per-channel logic, and language variants. Handlebars syntax with custom helpers is supported.
Use cases
- Automatically send transactional emails using tenant-specific templates.
- Trigger external updates via webhook when a quote is accepted.
- Generate and attach a rendered PDF offer when an event is fired.
This reduces the need for custom code by allowing event-driven behavior to be configured declaratively.
Documentation: Event Actions & Templates
Shipments
The shipment model in our v2 API has been completely rebuilt to support structured shipment tracking and integration with external systems. This includes shipments, shipment items and track & trace.
Key changes
- New shipment model
A shipment is tied to an order (1:N). Multiple shipments per order are supported. Each shipment can have one or more tracking codes and carrier info via the
TrackAndTrace
entity. Shipments now reference order items explicitly. This allows partial delivery tracking and aligns with ERP integration expectations.
API coverage
-
GraphQL Full read/write coverage for
Shipment
,ShipmentItem
, andTrackAndTrace
via query and mutation types. Supports filtering, sorting and pagination. -
REST Create, update, delete and bulk import shipments through REST endpoints.
Order address create, update and retrieve improvements
Address handling for orders has been extended and standardized across GraphQL and REST APIs.
Key changes
-
Create with order Addresses can now be created as part of the
orderCreate
mutation (GraphQL) or the corresponding REST endpoint. No need for a separate call during order creation. -
Update address Address updates now use a clearly named standalone mutation/endpoint for both GraphQL and REST. This replaces older implicit flows.
-
Retrieve address When fetching an order (REST or GraphQL), you can now include associated address data. This wasn’t available in REST before.
Removed fields, queries and objects
Fields
-
Order Type (GraphQL & REST)
- shipments
- accountingId
- pickupStoreId
- siteId
-
Order Item Type (GraphQL & REST)
- minimumQuantity
-
Order Create Input (GraphQL & REST)
- accountingId
-
Order Update Input (GraphQL & REST)
- accountingId
Query
- GraphQL
- orderSendConfirmationEmail Note: the mutation with the same name remains available
Objects
- GraphQL & REST
- Shipment
- TrackAndTrace
Other changes
New Features
- Added
hidden
support to both REST endpoints and GraphQL functionality for products, categories and clusters. This allows controlling visibility of these objects via API during creation, updates and filtering—useful for preparing content before webshop publication. - Added pagination support to pricesheet companies, contacts, and customers to improve performance when handling large datasets.
- Made
name
,supplier
, andsupplierCode
required fields when creating or updating tender order items to prevent null values in the database.
Bugs
- Fixed an issue where the title and content language of password reset and initial password emails for back office users did not match.
- Fixed an issue where the attribute products CSV import only processed the first product ID, ignoring subsequent rows.
- Fixed an issue that caused order creation from a cart to fail due to invalid or missing address fields in the order validation process.
- Fixed a regression where bonus items were no longer added to the cart based on incentive rules when subtotal thresholds were met.
- Fixed an issue where incentives with the "repeat" setting did not apply to all order items as expected.
- Fixed a bug where tender item prices ignored the updated cost price from bulkCostPrices and still used the deprecated cost field.
- Corrected tax calculation on tender updates to apply the appropriate tax percentage based on the actual tax code and delivery address, instead of defaulting to high VAT.
- Fixed an issue where
tender.postageData.requestDate
was not persisted when processing a tender into an order. - Fixed a bug where the default delivery address was not selected correctly on order creation and switching the delivery address resulted in an error.
Version 2.39 - 23th April
Product
New Features
- Implemented the ability to mark cluster products as hidden, extending hidden functionality to clusters in addition to products and categories.
- Added new mutations
clusterProductAttach
andclusterProductDetach
in Product Search V2 to enable easier linking and unlinking of products to clusters. - Clarified GraphQL and REST API conventions for product-cluster association to avoid ambiguity between creation and linking operations.
User Management
New Features
- Enabled access to
triggerPasswordSendResetEmailEvent
andtriggerPasswordSendInitEmailEvent
using admin-level tenant credentials, supporting platform-level onboarding workflows.
Bugs
- Fixed mismatch in contact data returned between
companySearch
andcompany(id)
queries. - Fixed a bug where deleting all contacts on the last page caused
itemsFound
to return zero in subsequent queries, even though contacts still existed on previous pages. - Deprecated usergroup queries and mutations as they were no longer in use.
- Resolved a GraphQL 413 "Payload Too Large" error that prevented order lists from loading due to excessive payload in user paginated results.
Attributes
Bugs
- Fixed an issue where importing attribute values in multiple languages failed due to backend validation, now allowing multilingual attribute input.
Version 2.38 - 16th April
Authorization & Authorization Limit
Introduced support for purchase authorization roles and limits to reduce risk and enable more controlled delegation of purchasing responsibility. Tenants can now assign ‘purchaser’ and ‘authorization manager’ roles to contacts and configure authorization limits per company-contact pair. The platform enforces these limits during cart and tender flows, blocking purchases that exceed the defined thresholds unless approved. Carts now supports authorization requests, tracks status, and emits relevant events for integration with approval workflows.
Product
New Features
- Added support for product statuses like Out of Stock, Presale, and Restricted to ensure these can be added to carts and other flows like favorites and business rules.
Order
Bugs
- Fixed an issue where tenderStart failed if only a customerId was provided, ensuring proper support for order creation via tender.
User Management
Bugs
- Resolved a bug where creating new companies failed due to a missing parent company reference.
Other
Bugs
- Resolved an issue where machine queries to the GraphQL API would incorrectly return “Forbidden resource” errors when using limited API keys.
Version 2.37 - 2nd April
User Management
Bugs
- Fixed issue where contact and customer sources were not populated when using larger offset values in the user management API.
- Improved error handling on registration page when trying to register with an already existing email address.
Product
Bugs
- Fixed cluster field resolving issue in product queries using offset > 500.
Version 2.36 - 26th March
Magic Tokens for PunchOut Catalogs
We introduced magic token-based authentication to support OCI punchout catalog integrations and user impersonation, enabling seamless connections between Propeller tenants and their B2B customers’ ERP systems.
This release allows contacts to automatically log into a Propeller self-service portal directly from their ERP system. It also enables Propeller users to impersonate a contact or customer, providing support or placing orders on their behalf. These features help companies manage procurement via their own ERP while leveraging Propeller for real-time product data, pricing and stock.
Key Highlights:
-
Magic Token Authentication
- Secure, time-limited login links (magic tokens) can now be generated for contacts or customers. These enable ERP systems or Propeller users to start a session without static credentials or exposing sensitive user data.
-
OCI Integration Support
- ERP systems can now initiate punchout sessions using the standard OCI protocol. On login, contacts are automatically directed to a webshop session, with their identity managed through impersonation via magic token. Requires front-end integration support.
-
Impersonation by Propeller Users
- Propeller users can now log into the webshop on behalf of a contact or customer using magic token-based impersonation. This is useful for sales support or managing orders on behalf of B2B buyers.
Product
New Features
- Added lastModifiedAt timestamps to bundle events to improve tracking and debugging of changes.
- Added source and source ID to GraphQL product type to support ERP migration and data audits.
Bugs
- Fixed GraphQL error handling on surcharge deletion by applying proper cascade logic on delete and update.
- Investigated and improved performance of category queries by optimizing pricing bottlenecks.
- Fixed issue where product sources would not populate when using large offsets in GraphQL queries.
- Fixed manufacturerCode update mutation for cluster/option products by allowing the field in input schema.
Pricing
Bugs
- Fixed duplication of price sheet results in priceExplain query by ensuring correct de-duplication.
Order
Bugs
- Fixed an issue where orders placed for a non-primary company were incorrectly linked to the primary company.
- Corrected behavior of Tender so it now returns the debtor ID of the company an order is placed for, instead of the user’s default company.
User Management
New Features
- Added lastModifiedAt timestamps to UserRoleCreated and UserRoleUpdated events for better audit tracking.
- Added lastModifiedAt field to AdminUserCreated and AdminUserUpdated events to improve traceability in admin user management.
- Password reset events now include the user's language for localized emails.
Bugs
- Negative orderlists are now correctly enforced for anonymous users in the frontend.
- Fixed an issue where newly created companies were not immediately searchable due to race conditions in event handling.
- Fixed customerRegister mutation failing due to missing parent fields in the payload.
Other
Bugs
- Resolved issue where user 'source' field displayed inconsistently across paginated views in back office.
- Attribute description changes now emit create, update and delete events.
Version 2.35 - 27th February
Pricing
New Features
- Implemented bulk cost pricing, ensuring that when a bulk cost price is set for a specific quantity, customer pricing is correctly calculated based on the bulk cost price rather than the base cost price.
- Deprecated
shippingCost
on the carrier object, complex shipping costs including carrier logic can be set with the rule builder in Backoffice.
Rule Builder
Bugs
- Fixed an issue where carrier rules were not applied correctly to carts and orders.
- Resolved a bug where shipping cost-related rules were removed after the rules were applied.
Cart
Bugs
- Corrected an issue where searching by
productId
would return the wrong product. - Resolved an issue where bulk cart mutations did not properly update cart items.
- Fixed a problem where
cartItemsBulk
mutations did not add items to the cached cart.
Media
Bugs
- Fixed a bug where deleting a media image using the
mediaImageDelete
mutation would fail with a "No Such Object" error. The mutation now correctly removes media images and documents.
Product
Bugs
- Resolved a bug where an order list containing a cluster would prevent the products query from returning any results.
- Fixed search behavior where clusters were not returned when searching for the first word in their name.
- Fixed an issue where querying
sparePartProducts
under a machine would throw an API error.
Version 2.34 - 19th February
Categories
Bugs
- Resolved an issue where deleted categories were still being marked as folders and entities instead of only having the
deleted
property. This caused deleted categories to appear in query results.
Order
Bugs
- Fixed an issue where the
All
setting in the Rule Builder broke rule execution, preventing correct order processing.
User Management
Bugs
- Resolved an issue where pagination for federated contacts in the
company
query returned incorrect results. The second page of contacts now correctly retrieves only the expected items instead of duplicating records from the first page.
Version 2.33 - 12th February
CSV Import
New Features
- Added the ability to import customers via CSV.
- Automatically sets
USERGROUP_ID
,USERGROUP_SOURCE_NAME
, andUSERGROUP_SOURCE_ID
when importing companies, products, contacts, customers, categories and inventory via CSV.
Bugs
- Fixed an issue where category CSV imports by source ID were duplicating categories instead of updating them.
Order
Bugs
- Resolved an issue where an applied rule would remain active even if the conditions were no longer met, unless a new rule became true.
- Fixed an issue where bulk cart mutations did not correctly update cart items.
- Ensured correct tax calculation for cart and orders, resolving discrepancies in VAT calculations.
- Fixed an issue where order processing failed if no carrier rules were configured for a tenant.
Version 2.32 - 5th February
Product
New Features
- Improved search and filtering by adding metadata indexing for products, clusters and categories, enhancing search performance and filter accuracy.
Bugs
- Category updates now work correctly after fixing an issue that prevented updates to PDM categories due to an invalid parent ID.
Order
New Features
- Enhanced order processing with improved REST API error handling, ensuring specific error messages for failed order operations instead of generic errors.
Bugs
- Accurate order search by fixing an issue where searching for orders returned a 500 error instead of a valid response.
Pricing
Bugs
- Refined pricing logic to ensure bulk cost prices are properly factored into final pricing calculations.
- Consistent discounts in orders by resolving an issue where customer-specific price discounts were only applied to a single order item instead of all applicable items.
- Bulk cost price application now correctly uses bulk cost prices for pricing calculations when applicable.
User Management
Bugs
- Product import stability improved by addressing a problem where imported companies would throw errors when accessed in the back office.
Version 2.31 - 29th January
User Management
New Features
- Added mutations in User Management V2 to manually trigger welcome email events for contacts and customers.
Logistics
Bugs
- Fixed an issue with fetching warehouses, resolving checkout process issues for anonymous users.
Version 2.30 - 16th January
CSV Import
Features
- Added support for importing cluster instances through CSV.
Bugs
- Fixed a bug where attribute product CSV imports only respected the first product ID, ignoring subsequent rows.
Product
Features
- Implemented automatic deletion of cross-sell/up-sell items when a cluster is deleted to maintain data consistency.
Cart
Bugs
- Addressed an issue preventing clusters from being added to the shopping cart under certain configurations.
Order
Bugs
- Fixed an issue where tender items total was set to 0 on tender process for certain company contacts.
Rule Builder
Bugs
- Resolved an issue where the rule builder with attribute conditions did not apply shipping costs as expected.
Version 2.29 - 8th January
Cart
New Features
- Introduced a
cartItemsBulkUpdate
mutation to allow bulk creation and updates of cart items in a single API call, improving efficiency and reducing the number of required requests.
CSV Import
New Features
- Categories can now be imported via CSV, enhancing the platform's data import capabilities.
Bugs
- Updated CSV import services to default IDs to
0
, simplifying data import workflows and ensuring consistent handling across all services.
Order
Bugs
- Fixed an issue where the carrier value from
Cart
andTender
was not transferred to theOrder
, ensuring the carrier is correctly set during the order creation process.
Attributes
Bugs
- Fixed an issue where sorting functionality for
CREATED_AT
,LAST_MODIFIED_AT
, andNAME
fields inattributeDescriptions
did not work as expected, ensuring proper ordering in ascending or descending order based on the selected input. - Resolved an issue in the CSV import functionality for
attributeDescriptions
where thegroup
field was not populated, ensuring that attribute groups are imported correctly.
Clusters
Bugs
- Fixed an issue where deleting a product option within a cluster caused all options for that cluster to disappear. This issue also prevented proper cluster option updates until a new product option was added. Cluster options now update correctly after product deletions.
Companies
Bugs
- Fixed an issue where the
notes
field incompanyCreate
andcompanyUpdate
mutations always returned null. Thenotes
field now properly reflects the value input during company creation or updates.
Version 2.28 - 24th December
CSV Data Import
New Features
- Updated CSV import functionality to default IDs to
0
in all services that supportcsvImport
, simplifying workflows and ensuring consistency in data imports. - Added CSV import functionality for discounts, enabling seamless bulk updates or imports for discount-related data.
Bugs
- Fixed an issue with
discountCsvImport
wherevalidFrom
andvalidTo
fields always triggered errors, ensuring successful imports regardless of whether these optional fields are included.
Order
Bugs
- Fixed an issue where tenders would throw an error if the original product of a tender item was deleted, ensuring tenders are no longer dependent on the product's current price.
- Resolved an issue where item discounts in order and quotation responses always returned
0
, ensuring that accurate discount values are now included in the response. - Fixed an issue where tenders would throw an error if the original product of a tender item was deleted, ensuring tenders are no longer dependent on the product's current price.
- Fixed an issue where
tenderUpdatePostage
did not allow settingpostageData.price
back to 0 after it was set to a value greater than 0, ensuring accurate updates to postage costs.
Product
Bugs
- Fixed an issue where duplicate products appeared in exports (e.g., Channable integration), ensuring that each product is included only once per export.
User Management
Bugs
- Resolved an issue where existing contacts added to a company were not returned properly, ensuring contacts are visible immediately after being added.
Pricing
Bugs
- Fixed an inconsistency in customer-specific prices (
price.gross
) whenbulkPrices
were queried inCatalogProductDetailsQuery
, ensuring accurate and consistent price values regardless of bulk pricing data.
Version 2.27 - 18th December
CSV Data Import
- This release consists of the back-end for allowing to import Propeller tenant data through CSV files. This has several benefits:
- For Prospects: Prospects can import their data into the Propeller platform for testing purposes, experiencing the platform in their business context. This allows for faster evaluation and exploration of Propeller's full potential.
- For Existing Tenants: Propeller tenants can use data import tools to enrich their platform with additional configurations or datasets without requiring costly integrations for one-time updates.
Supported Data Imports:
- Pricing Data:
- Product prices
- Pricesheets
- Cost prices
- Bulk prices
- Attributes:
- Attributes
- Attribute descriptions
- Users:
- Contacts
- Companies
- Inventory
User Management
New Features
- Password reset emails can now be fully customized with tenant-specific logos, sender domains, and email content, enhancing branding and providing a tailored user experience.
Product
Bugs
- Product search queries now correctly return no results when positive order lists are empty, ensuring accurate filtering and preventing unintended product visibility.
- Fixed errors related to integer and decimal range filters in product queries, ensuring seamless data retrieval without null field errors.
Cart
Bugs
- Resolved an issue where starting a new cart triggered an “Unauthorized use of companyId” error, ensuring smooth cart initialization.
Version 2.26 - 10th December
Product
Bugs
-
Improved product and cluster queries to consistently apply order lists in singular queries, ensuring aligned behavior across all query types when handling product visibility and access.
-
Fixed an issue with deleting settings from cluster configurations where some settings erroneously returned “not found” errors. The deletion and update processes for cluster settings are now more reliable, ensuring consistent handling of cluster configuration operations.
Version 2.25 - 2nd December
User Management
Bugs
- Resolved an issue where querying sources on a contact resulted in an unknown error. API users can now fetch contact sources without encountering errors.
Cart
New Features
- The GET cart endpoint now returns surcharge details, providing more comprehensive cart information for API users.