Skip to content

Changelog

All notable changes to the Attivita API will be documented here.

[2026-03-31]

Added

  • Region Filtering: Filter products by region using GET /api/products?region=DACH|EU|GLOBAL
    • Fully backward compatible — omitting the parameter returns all products as before
    • Invalid region values return a 400 error with valid options
  • Bundle Products: Products can now be marked as bundles (isBundle: true) with multiple license pools
    • Bundle orders allocate licenses from each linked pool independently
    • New bundleLicenses field in order responses groups licenses by pool with pool name and product name
    • Bundle stock is calculated as the minimum across all linked pools
    • All-or-nothing allocation: if any pool lacks stock, the entire bundle order fails
  • License Pool Reference: Licenses now track their licensePoolId for precise pool-level queries
  • Product API: isBundle and licensePools fields are now included in product responses
  • New Product Fields: Added validRegion and validRegionInfo fields to product responses
    • validRegion: Can be "DACH", "EU", "GLOBAL", or null
    • validRegionInfo: Optional descriptive text about the region (max 200 characters)

[2025-07-08]

Major Updates

Customer Discount System

  • Orders now automatically apply customer-specific discount packages
  • The price field in order responses shows the final discounted price
json
{
  "items": [{
    "product": "CCleaner Professional 1 Year",
    "quantity": 1,
    "price": 3.25,  // Final price after customer discounts
    "productId": "67d7d6b03c6d23fd3526c694"
  }],
  "subTotal": 3.25,
  "discountTotal": 1.75  // Applied discount amount
}

Enhanced Order Response

  • Added productId field to order items for better product identification
  • New discountTotal field shows the total discount amount applied to orders
  • Sandbox orders now use the same response structure as real orders

Security Enhancements

Product Availability Check

  • Orders can now only be placed for products with isListed: true
  • Unlisted products will return a 404 error:
json
{
  "error": "Product not found or not available: 67d7d6b03c6d23fd3526c694"
}

German VAT Fix

  • Corrected VAT calculation for German customers to properly apply 19% tax

API Consistency

Unified Response Format

  • GET and POST order endpoints now return consistent response structures
  • The price field is now included in all order responses
json
{
  "items": [{
    "product": { "displayName": "Product Name" },
    "quantity": 1,
    "price": 89.99,  // Now included in GET responses!
    "subtotal": 89.99
  }]
}

Internal Improvements

  • Code Refactoring: Improved discount calculation logic for better accuracy
  • Bugfixes: Fixed various internal calculation and data handling issues
  • Performance: Optimized product fetching and discount calculations

[2024-12-15]

Added

  • Webhook Support (Beta): Real-time notifications for product changes
    • productOutOfStock event
    • productBackInStock event
    • productPriceChanged event
  • Telegram Bot Integration: Alternative notification channel via @attivita_price_stock_bot

Changed

  • Improved error messages for better debugging
  • Enhanced rate limiting with clearer retry headers

[2024-11-01]

Added

  • Sandbox Mode (Beta): Test API integration without affecting production
  • Customer-specific discount packages
  • Credit limit enforcement

Security

  • Enhanced API token validation
  • Improved request signature verification

API Version Policy

The Attivita API follows these versioning principles:

  • Backward Compatibility: We strive to maintain backward compatibility
  • Deprecation Notice: Features will be deprecated with at least 90 days notice
  • Beta Features: May change without notice (marked with BETA badge)
  • Breaking Changes: Will be communicated well in advance

Reporting Issues

Found a bug or have a feature request? Please contact our support team or create an issue on our GitHub repository.


Note

This changelog focuses on API-facing changes. For detailed technical updates or questions about specific features, please contact our support team.

The usage of this API is at your own risk. Attivita GmbH is not responsible for any damages or losses.