Appearance
Change Log
We use semantic versioning for the API, minor version bumps will not introduce any breaking changes under normal circumstances.
3.0.0 (2025-02-23)
New Features
Entry-level transaction ID
Added the ability to specify a transaction ID for each entry, the transaction ID must be unique for each (instance, entry) pair. Just like request-level IDs, transaction IDs are used to make sure that the same entry is not processed multiple times.
It is still possible to submit entries without a transaction ID and to use request IDs, the latter will be translated to entry transaction IDs internally.
Instance Time Zones
Time zones can be specified for instances, if not provided, the default time zone is undefined and depends on various factors.
Tax Information In Sales
It is now possible to specify VAT percentages and other tax information in itemSale
entries.
Currency Information In Sales
It is now possible to specify the currency of the sale in itemSale
entries.
Item dynamicPricingPeriod
It is possible to specify a dynamic pricing period for each item, this is a more flexible way to enable and disable scheduled pricing. If not provided, the sales period is used as the dynamic pricing period.
Note that the dynamicPricingPeriod
property alone does not enable scheduled pricing, the instance also must be set as active
in order for the scheduled pricing to be enabled.
Product-specific Pricing Models
It is now possible to set separate pricing models for each product.
Breaking Changes
Entry Validation Changes
Only basic entry validation is done during submission, such as syntactic integrity. From this version it is essential for API users to subscribe to webhooks to receive error messages and other important information.
Duplicate entries are also silently ignored instead of returning an 409 Conflict
error.
Commission Rates Removed
Just like entry validation, commission rates cannot be calculated immediately and were removed from the response.
Instance Actions Deprecated
Instance actions are now deprecated. So far they only served the purpose of enabling and disabling scheduled pricing, which must be done by setting via dynamicPricingPeriod
for each item.
For clients that depend on these actions, we will convert the date ranges to dynamicPricingPeriod
internally.
Item Quantities Deprecated
Item quantities are now deprecated and are ignored. The quantity of each item is now determined by the product capacities and the number of items sold.
For clients that heavily depend on these quantity numbers we automatically set up product capacities based on the quantities.
Item-level Expected Sales Removed
Item-level expected sales are no longer supported, expected sales can be set for products instead.
Expected Sale Counts Removed
Expected sales are now only take percentage values (0-1.0) and it is no longer possible to specify exact counts.
Product Schedules Removed
Up until this version, we exposed product-level schedules that determined when prices were recalculated for products after certain thresholds (such as sales percent reached). DynamO will still recalculate prices based various triggers, but this feature can no longer be configured and is removed from the API.
Current and Last-sold Prices Removed
Current and last-sold prices of items are no longer included in instance summaries.
Constant Price Rule Removed
As a simplification the constant
price field has been removed, use min
and max
with the same value instead.
Public Key Management Removed
Signatures of entries are no longer verified by DynamO and thus public keys are no longer needed. DynamO still accepts and stores entries in JWT formats so that the signatures can be verified by clients.
Item dates
Renamed to salesPeriod
Item dates always reflected the period when an item was available for sale, so we renamed it to salesPeriod
. The API will still accept dates
for backwards compatibility.
Create "subproject" Request Removed
Please use the "create project" request instead.
Commission Rates Removed
Commission rates are determined by DynamO Pricing, it is no longer possible to set them.
2.8.0 (2024-07-03)
New Features
Product Zones
It is now possible to specify zones within an instance, these are often used to represent physical locations within venues.
For now zones can be provided as metadata to products and are not separate entities in our system.
2.7.0 (2024-05-09)
New Features
No More Item Quantity Errors
Previously, if an item was sold more than its quantity, the API would return an error. This is no longer the case, the API will now allow the sale of items even if the quantity is exceeded.
We are also planning to rethink how we process items and quantities in the future and how they relate to product capacities.
Repeated Registrations are Allowed
Previously, if an item or product was registered multiple times, the API would return an error in some cases. This is no longer the case, the API will now allow the registration of items multiple times by default.
Product-level Reservations
It is now possible to specify reservations at the product level instead of specifying them for each item.
2.6.0 (2023-11-27)
New Features
Manual Webhook Triggers
We added the ability to manually trigger webhooks of subscriptions.
Note that this is a rather niche API, webhooks are great for immediate updates but they should not be used as the only source of truth, manually triggering webhooks also carries the risk of the system re-sending obsolete prices.
Webhook Error Reporting
Some clients put received webhooks in a queue for batch processing later, which means it is not possible to report any errors in the webhook's response.
For this reason we added an endpoint that can be used to report errors asynchronously.
2.5.0 (2023-10-16)
New Features
Instance Date Tags
It is now possible to attach tags
to pricing instance dates in Instance Metadata
entries to provide additional hints and other information.
Arbitrary tags cannot be specified, unknown tags (currently anthing other than main
) will be rejected, duplicate tags are allowed however.
For most one-time events (such as cinema screenings) the exact date of the event is known, sometimes even its duration. Attach the main
tag to a date or date range to mark it as the date of the main event:
json
{
"date": {
"start": "2023-01-01T16:00:00Z",
"end": "2023-01-01T18:00:00Z"
},
"description": "The main event that is 2 hours long.",
"tags": ["main"]
}
Attaching main
to multiple dates is allowed, but in most cases the first valid date (range) will be used.
2.4.0 (2023-07-06)
New Features
New Project Creation
Added the ability to create a project without a specified parent project.
This is already mostly what creating a subproject did, as we phase out subprojects it made sense to allow creating regular projects instead.
2.3.0 (2023-07-04)
New Features
- It is now possible to toggle dynamic pricing on a per-item basis.
- Added instance action entries (via
Instance Actions Entry
) that can be used to:- enable scheduled pricing automatically at a given date
- disable scheduled pricing automatically at a given date
- Added support for coordinates via the
coord
field withinInstanceMetadataLocation
.
Changes
Instance Date Actions
Instance date deactivation actions are now considered the absolute end of a pricing period for an instance, and instances cannot be activated again after the given date.
Deprecations
- instance metadata date actions (
meta.dates.actions
) have been deprecated in favor of instance actions.
2.2.1 (2023-04-23)
Changes
Negative Price Settings
Negative price settings in entries are now disallowed, including minimum/maximum/default prices and multipliers.
2.2.0 (2023-03-11)
New Features
- It is now possible to specify a
pool
initemSale
entries that makes it possible to sell reserved items without freeing them up first in a separate entry.
2.1.0 (2023-02-08)
New Features
- Added
GET /webhooks/signatureVerificationKeys
for retrieving webhook verification keys.
Deprecations
- The subprojects feature is being deprecated and will be replaced by a management layer that allows grouping and managing multiple projects in one of the following versions. Along with the deprecation, we changed its behaviour to simply create new projects without any inheritance. According to our analysis the latter change does not affect any of our clients.
2.0.0 (2022-12-09)
Production release of the last RC.
2.0.0-rc.1 (2022-11-07)
New Features
JSON Patches
- Added the ability to provide JSON Patch (RFC 6902) operations within the following entries:
instanceMetadata
itemMetadata
itemProperties
productMetadata
productProperties
JSON patches are a standard way of updating (patching) objects of arbitrarily complex structure. Previously the only way to update fields without resending the entire object was to use the update
operation, but it was very limited as it did not allow removing fields and only worked at the object root.
Entry Changes
- Added the
basePrice
field toitemSale
entries.
Breaking Changes
Removed Features
Removed the following:
POST /projects/{projectId}/instances/{instanceId}/items
endpoint has been removed completely.PUT /projects/{projectId}/instances/{instanceId}
- The fields
addMeta
andreplaceMeta
have been removed.
- The fields
POST /projects/{projectId}/instances/{instanceId}/entries
- The entries
instanceDates
andexpectedSales
have been removed. change.relative
ofitemQuantity
entry has been removed without a deprecation period as it was not used by any clients.
- The entries
GET /projects/{projectId}/instances/{instanceId}
- The field
dates
from the item summary has been removed as it is part ofproperties
.
- The field
No Implicit Products
Products are not created implicitly anymore with item registrations. Implicit products were only a temporary feature in order to help with transitioning for existing users. Products now have become an integral part of the pricing system and has too much of an impact to be automatically configured by DynamO.
itemQuantity
Entry Behavioural Change
The way total
change in itemQuantity
entries affect the total quantity of items has changed.
Previous 1.x.x Behaviour
Previously the itemQuantity
entry only affected the items that were available for sale instead of adjusting the total item amount in circulation. After setting the quantity of the items, subsequent item sales and reservations decreased this number. This meant that the entry was not idempotent, submitting the same itemQuantity
entry after items were sold or reserved increased the total amount of items for an instance.
For example:
itemQuantity
entry submitted with a total amount of 100 itemsitemSale
entry submitted with an amount of 50 items- same
itemQuantity
entry submitted with a total amount of 100 items caused 150 items to be in circulation within the pricing instance
New 2.0.0 Behaviour
In order to align with the naming of the entry and the users' expectations the itemQuantity
total
amounts are now idempotent and reflect the total amount of items in circulation.
Instead of directly affecting the amount of items that are available, the available item count will be calculated by DynamO Pricing by subtracting the amount of items that were already sold and reserved. This means that the submitted itemQuantity
entry total
amount cannot be less than the sum of sold
and reserved
for an item.
Deprecations
- the
update
field is now deprecated as it is superseded by thepatch
field in the following entries:instanceMetadata
itemMetadata
itemProperties
productMetadata
productProperties
1.9.0 (2022-10-29)
New Features
- Added the ability to provide unmodified base prices for item sale entries.
1.8.0 (2022-10-21)
New Features
- Added the ability to specify pricing recalculation triggers via product properties. These triggers can be used to request pricing calculations based on item sales rather than time.
1.7.0 (2022-09-11)
New Features
- Added the
/projects/{projectId}/instancePrices
endpoint to query prices of selected pricing instances.
1.6.0 (2022-05-26)
Changes
- Product and item registration entries are now allowed to be sent multiple times for the same IDs. The previous behaviour can be enabled by setting
"strict": true
within the entries.
1.5.0 (2022-05-17)
New Features
- Added the ability to create subprojects for a project that will inherit most project settings but not pricing instances.
1.4.0 (2022-03-16)
New Features
- Added the ability to send metadata with pricing calculation requests that are returned in callbacks.
1.3.0 (2022-01-24)
A stable release that incorporates the new Product-based pricing.
It mostly contains refinements of previous release candidates, as well as some minor convenience features.
New Features
- Added the ability to automatically deactivate instances after certain dates.
New Instance Entries
Item Reservation
: A new entry type that signals that a specific amount of items cannot be sold but they are not sold yet.
Other Changes
- All metadata should now follow a given structure.
- The behaviour when updating JSON objects, such as metadata or properties is now properly defined.
- Removed the need for explicit oauth scopes, we will be reintroducing them in the future, but they were not used right now.
- Various refinements and naming changes in new endpoints and data structures.
- Cycles in price matches will be no longer allowed, as it is impossible to determine a final price in that case.
1.3.0-rc.2
- There is one product per item by default to match the existing behaviour.
- Added per item capacity when specifying products for items.
1.3.0-rc.1
New Features
- Added the new concept of
Product
that allows grouping items within an instance. - Added feature for signing entries.
- Added on-demand pricing requests.
New Endpoints
Project Management
POST /projects/{projectId}/calculatePrices
: Request a price calculation for selected or all instances within the project.POST /projects/{projectId}/publicKeys
: Add public keys for the project.GET /projects/{projectId}/publicKeys
: Get public keys for the project.
New Instance Entries
Instance Metadata
: Add and update metadata of instances.Item Registration
: Registration of items for an instance.Item Metadata
: Add and update metadata of items.Item Properties
: Add and update properties of items.Item Removal
: Remove items from the instance permanently.Product Registration
: Registration of products for an instance.Product Metadata
: Add and update metadata of products.Product Properties
: Add and update properties of products.Pricing Schedule
: Set the frequency and schedule of price updates.
Deprecations
The following endpoints and resources are deprecated and will be removed in a future version.
Endpoint Deprecations
Update a Pricing Instance
:addMeta
: functionality was moved into theinstanceMetadata
instance entry.replaceMeta
: functionality was moved into theinstanceMetadata
instance entry.commissionRates
: functionality was moved into theitemProperties
instance entry.
Register items for pricing
: functionality was moved into theinstanceMetadata
instance entry.
Instance Entry Deprecations
expectedSales
: functionality was moved to theitemProperties
entry.instanceDates
: functionality was moved to theitemProperties
entry andinstanceMetadata
entry.
1.2.0
1.2.0-rc.2
Changes
- (breaking change) The Create Instance endpoint now requires a JSON object in the request body.
- (behavior) The default and current price of all items will start with
999_999_999
as a safety feature.
1.2.0-rc.1
Changes
- (breaking change) The Submit Entries endpoint returns a summary response based on the entries and thus uses status code
200
rather than204
. - (breaking change) Removed quantity links.
- Added
Expected Sales
entry. - Added ability to remove price matching rules.
- Price matches now show up in item details.
- Item-scoped dates now show up in the item details.
- Added handling of DynamO Pricing commissions per item, commission rates can be viewed and changed on the instance-level. Exact commission values are calculated for each
itemSale
entry and returned in the Submit Entries response. - Instance Update allows setting additional fields for metadata, which are returned with the instance details.
- Item Registration now accepts items as objects with additional metadata, these are also shown in the instance details.
1.1.0
Changes
- Added
callbackUrl
property in the response when listing project and and instance subscriptions.