Release notes - Customers API

This page will show the changes made in the customers API version 2024v1.

New changes are added at the top of the page and include a summary of the modified models. A summary of all model changes can be found here.

Adjustable CatalogPrices for the current week

Floriday is setting up a pilot that will allow the use of adjustable catalog prices in the current week. These changes will have impact on the current business rules that are set up for the catalog supply and will affect the current pricing rules across all API versions.

The weekly prices will no longer be locked for the current week. Instead, the supplier will be allowed to change the price of a supply line once per 24 hours in the current week. Afterwards, the price cannot be changed again until 24 hours have passed.

The SupplyLine and WeeklyBaseSupply models will be modified with a new date time property pricePerPieceLastModified to indicate the last price change.

Changed models:



Range Constraint Added to limit Properties

A range constraint has been added to all limit query parameters across sync endpoints. The minimum limit is now set to 1, and the default value is the maximum limit. Setting the limit to 0 or above the default value will result in an invalid call. In previous versions, the limit was overwritten to the default when it went above the maximum.


Plant passports - PDF

Added new routes to download PlantPassport PDFs based on a SalesOrder. The routes support downloading PDFs by providing a salesOrderId, as well as by salesChannelOrderId for SalesOrders.

Affected routes:



BlanketOrder - Model changes

AddBlanketOrder

  • BlanketOrderCreate -> AddBlanketOrder
  • BlanketOrderLines model EditBlanketOrderLine

EditBlanketOrderLine (new)

  • AdditionalServiceIds minlength 1 still optional
  • PackingConfiguration model PackingConfigurationBase
  • SupplierOrganizationId removed

EditContractLineTradeItem

  • PackingConfiguration model PackingConfigurationBase

EditContractPackingConfiguration Removed

BlanketOrder

  • InitiatedBy Removed
  • IsInitiatedBySupplier (new)
  • IsLastModifiedBySupplier (new)
  • salesChannelInterface (new)
  • ApprovalStatus Removed
  • IsDeleted
  • Status (new)

BlanketOrderLine

  • PricePerPiece nullable
  • PackingConfiguration model PackingConfigurationBase
  • Incoterm (new)
  • LiesOutsideOfContractLinePeriodMargins (new)

BlanketOrderStatus

  • approvalStatus
  • declineDescription
  • IsDeleted

ContractPackingConfiguration Removed



Contract - Model Rewrite and New Features

The contract models have undergone significant rewriting with various changes. Although not all changes are depicted here, you can check the Model, enums and routes changes for all model changes as linked below this topic.

String properties that are required now have a minimum length of 1 to ensure non-empty values. However, if the string property was optional, a null value is still allowed.

Some properties have been removed from the model and replaced with new enclosing models to better group related properties. For example, the Delivery model has been added to contain fields like deliveryConditionId, despatchWarehouseId, and defaultDeliveryLocationGln, providing clearer linkage with delivery information.

AddContract, EditContract and Contract changes and features

When creating or editing a contract with AddContract or EditContract, several new features have been introduced:

  • allowTradeItemVariants: This option allows trade item variants to be enabled.
  • subSupplierOrganizationIds: Enables specification of sub-supplier organization IDs.
  • customerOrganizationId: has been removed from EditContract, it is no longer possible to edit the customer when the contract has been created.
  • As mentioned above delivery has been added to group related properties.
  • A contract must now contain at least 1 contractLine.

EditContractLine and ContractLine changes and features

The ContractLine model has undergone changes:

  • The property ContractLineTradeItems has been removed and replaced with tradeItem to indicate the primary TradeItem. In addition, the property substituteTradeItems has been introduced as a temporary solution to indicate possible substitutes that can be used. This property is specifically designed for older contracts that do not utilize the new TradeItemGroup workflow.
  • When using EditContractLine, you have the option to set either the tradeItem or the tradeItemGroup, but not both simultaneously. If you choose to set the tradeItemGroup, the primary trade item of this group will be automatically selected as the primary trade item in the ContractLine model.

ContractLinePeriod margin changes

The margin properties for EditContractLinePeriod and ContractLinePeriod have been replaced with two new models:

Property numberOfPiecesMargin uses the ContractLinePeriodBandwidthNumberOfPieces model and property pricePerPieceMargin uses the ContractLinePeriodBandwidthPricePerPiece. Both properties are optional to indicate if a margin is being used. Within the model you can either have a percentage margin or a pieces margin, only one can be used for the lower and upper margin.

Affected models:

Commands

Models




ContractTradeItemGroup

We've introduced a new model called ContractTradeItemGroup, which enables suppliers to create groups of trade items. This model serves as an indication for their contract line, offering greater flexibility in contract specifications. Instead of linking a single trade item, you now have the option to link an entire group.

In the ContractLine, the primary trade item from the group will be utilized as the primary trade item. However, both the supplier and customer have the option to create a blanket order based on any trade item within the connected group when one is available.

It's important to note that the ContractTradeItemGroup does not have its own versioning. Instead, it is always linked to the latest changes. Suppliers can freely edit the group to switch out trade items, with the exception of the primary trade item, which cannot be changed as long as the group is linked to an active contract.

Additionally, the ContractTradeItemGroup will have its own endpoints for fetching by ID and fetching by sequence number, as well as a method to retrieve the maximum sequence number.

Affected routes:

  • ContractTradeItemGroup

Affected models:

  • ContractTradeItemGroup
  • ContractTradeItemgroupTradeItem


ClockPresalesSupplyLine - Model changes

The ClockPresalesSupplyline model has undergone updates, including the addition of new properties, removal of obsolete properties, and updating certain properties to be non-nullable. Previously, these properties were nullable but always returned with a value.

Affected models:



SalesOrder and BlanketOrder - Restriction on additional service of type LABEL

A validation rule has been implemented to restrict the direct addition of an additional service of type LABEL when creating a SalesOrder or BlanketOrder. Instead, customers can add an additional service of type LABEL by adding a CustomerSticker to an existing order.




Unexpected enum value - Response detail

We've enhanced the response detail to provide additional information when an unexpected enum value is encountered in a call. The updated message will now include the property name associated with the unexpected value.
The message contains an invalid enum '{EnumName}.{EnumValue}' in combination with {PropertyName}.



Validation on DateTime and Guid Properties

Extra validation has been implemented on all DateTime and Guid properties to disallow default values. When a property is optional, the null value is still permitted. However, if a value is provided, it must not be a default value for the DateTime "0001-01-01T00:00:00" or Guid property "00000000-0000-0000-0000-000000000000".



PurchaseOrderRequest - Included services

A new property, includedServices, has been added to the PurchaseOrderRequest model. This property is an optional list with a minimum length of 1. Customers can utilize this property to indicate whether the matching supply line or created order request has the included service STICKERING.

If no matches are found on the supply line, the PurchaseOrder will receive the actionRequired status of INCORRECT_INCLUDED_SERVICES. Once the order request has been accepted by the supplier, the newly created SalesOrder will contain the specified includedService.

Affected models:

  • AddPurchaseOrderRequest

Affected enums:

  • ActionRequired


Trade settings

We've added trade settings as new options to access via the API. These settings are divided into two models CustomerTradeSetting and SupplierTradeSetting. They include specific settings, such as the automatic acceptance of correction requests automaticallyAcceptsCorrectionRequests, as well as operational practices, like specifying how a customer operates within their company, such as whether they utilize contracts usesContracts.

As customer, you can retrieve your own CustomerTradeSetting using the GetCustomerTradeSettingFromOrganization endpoint. Additionally, cou can access SupplierTradeSetting via the sync endpoint GetSupplierTradeSettingsBySequenceNumber.

Retrieving a SupplierTradeSetting for a specific organization with no trade settings will result in a default model. The sequence will be set to 0, while the lastModified will be null, signifying that no modifications have been made.

New models:

New routes:



InvoiceLine - New properties

New properties are added to InvoiceLine.

Affected models: