Skip to content

Products API ​

The Products API allows you to retrieve information about available products with customer-specific pricing.

Get All Products ​

GET/api/products

Retrieves a list of all available products with your customer-specific discounts applied.

Query Parameters ​

ParameterTypeRequiredDescription
regionstringNoFilter products by region. Valid values: DACH, EU, GLOBAL

Region Filtering

The region parameter is optional and case-insensitive. When omitted, all products are returned regardless of region (backward compatible). Products without a region (validRegion: null) are excluded when filtering.

Examples ​

bash
# Get all products (default, no filter)
curl -X GET https://api.attivita.de/api/products \
  -H "Authorization: Bearer YOUR_API_ACCESS_TOKEN"

# Get only DACH region products
curl -X GET "https://api.attivita.de/api/products?region=DACH" \
  -H "Authorization: Bearer YOUR_API_ACCESS_TOKEN"

# Get only EU region products
curl -X GET "https://api.attivita.de/api/products?region=EU" \
  -H "Authorization: Bearer YOUR_API_ACCESS_TOKEN"

Response ​

json
[
  {
    "_id": "507f1f77bcf86cd799439011",
    "name": "microsoft-office-2021-home-business",
    "displayName": "Microsoft Office 2021 Home & Business",
    "price": 149.99,
    "productImageUrl": "https://example.com/office-2021.jpg",
    "manufacturer": {
      "name": "Microsoft"
    },
    "categoryName": "ESD",
    "isMultidevice": false,
    "isSubscription": false,
    "isTerm": false,
    "isMobileOnly": false,
    "oldPrice": 249.99,
    "duration": "Lifetime",
    "seats": 1,
    "description": {
      "DE": "Microsoft Office 2021 für PC und Mac",
      "EN": "Microsoft Office 2021 for PC and Mac"
    },
    "availableStock": 100,
    "validRegion": "DACH",
    "validRegionInfo": "Valid for Germany, Austria and Switzerland",
    "isBundle": false,
    "licensePools": []
  }
]
bash
curl -X GET https://api.attivita.de/api/products \
  -H "Authorization: Bearer YOUR_API_ACCESS_TOKEN"

Response Fields ​

FieldTypeDescription
_idstringUnique product identifier
namestringInternal product name
displayNamestringCustomer-facing product name
pricenumberPrice after customer discounts
productImageUrlstringProduct image URL
manufacturerobjectManufacturer information
categoryNamestringProduct category
isMultidevicebooleanMulti-device license
isSubscriptionbooleanSubscription product
isTermbooleanTerm-based license
isMobileOnlybooleanMobile-only product
oldPricenumberOriginal price (optional)
durationstringLicense duration
seatsnumberNumber of seats/devices
descriptionobjectMultilingual descriptions
availableStocknumberCurrent stock (max 100)
validRegionstringRegion validity (DACH/EU/GLOBAL/null)
validRegionInfostringRegion description (optional)
isBundlebooleanWhether the product is a bundle of multiple license pools
licensePoolsarrayLicense pool IDs linked to this product (relevant for bundles)

Get Product by ID ​

GET/api/products/:id

Retrieves details of a specific product by its ID.

Parameters ​

ParameterTypeRequiredDescription
idstringYesThe product ID

Response ​

The response format is identical to a single product object from the "Get All Products" endpoint.

Example ​

bash
curl -X GET https://api.attivita.de/api/products/507f1f77bcf86cd799439011 \
  -H "Authorization: Bearer YOUR_API_ACCESS_TOKEN"
javascript
const productId = '507f1f77bcf86cd799439011';
const response = await fetch(`https://api.attivita.de/api/products/${productId}`, {
  headers: {
    'Authorization': 'Bearer YOUR_API_ACCESS_TOKEN'
  }
});

const product = await response.json();

Error Responses ​

StatusErrorDescription
404Product not foundThe specified product ID doesn't exist
401UnauthorizedInvalid or missing API token

Important Notes ​

Customer Pricing

All prices shown in the API responses include your customer-specific discounts. The price field shows the final price you'll pay.

Stock Levels

The availableStock field shows a maximum of 100 even if actual stock is higher. This is to protect sensitive inventory information while still indicating availability.

Product Availability

Only products with isListed: true are returned by these endpoints. Unlisted products cannot be accessed or ordered.

Next Steps ​

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