Get product details
What is returned: Returns complete details for a single catalog product, including all variants, options, and pricing information. Product and variant descriptions are automatically converted from internal format (IDoc) to HTML for easy display.
Product structure: A product consists of three main sections:
- Product details: Name, category, logo, description, and base pricing
- Variants: Different performance levels or configurations (e.g., Standard, Pro, Enterprise) with their own prices and descriptions
- Options: Extra services or add-ons that customers can optionally book (e.g., “Add workshop” or “Enable premium support”)
Pricing models:
- Fixed price: One-time payment amount
- Subscription price: Recurring amount at set intervals (monthly, quarterly, yearly)
- Price per unit: Flexible billing by quantity (e.g., per user, per hour)
Response format:
- All descriptions are returned as HTML (converted from internal format)
- Logo URL is included if a logo is set (points to public file endpoint)
- Variants include their activation status
- Options include their configuration (required, multiple selection)
Note: This endpoint only returns catalog products (products without projectId or taskId). Products assigned to specific projects or tasks are not accessible through this endpoint.
GET
/administration/product-catalog/{id}Authorization
AuthorizationOAuth2 access token · headerrequiredScopes:
api:reador
AuthorizationBearer token (JWT) · headerrequiredPath parameters
idstringrequiredResponses
200
categoryIdstringrequiredUUID of the product category this product belongs to
descriptionHtmlstringrequiredProduct description converted to HTML format for easy display
idstringrequiredUnique identifier of the product
logoIdobject | nullrequiredFile ID of the product logo. Null if no logo is set.
logoUrlobject | nullrequiredPublic URL to access the product logo image. Constructed from logoId if a logo is set. Null if no logo is available.
namestringrequiredName of the product or service
optionsstring[]requiredList of all product options with their values and configurations. Structure matches ProductOptionApiDto but with additional internal fields.
priceFixednumberrequiredOne-time fixed price for the product
priceFrequencyobject | nullrequiredBilling frequency in months (1, 3, 6, or 12). Null if subscription or per-unit pricing is not used.
pricePerUnitnumberrequiredPrice per unit for quantity-based billing
priceSubscriptionnumberrequiredRecurring subscription price for the product
priceUnitNameobject | nullrequiredName of the unit for per-unit pricing (e.g., "user", "hour"). Null if per-unit pricing is not used.
variantsIProductVariantApiResponse[]requiredList of all product variants with their pricing and descriptions
Show propertiesHide properties
Array of
IProductVariantApiResponsedescriptionHtmlobject | nullrequiredVariant description converted to HTML format. Null if no description is set.
idstringrequiredUnique identifier of the variant
isActivatedbooleanrequiredWhether this variant is currently activated and available for selection
namestringrequiredName of the variant (e.g., "Standard", "Pro", "Enterprise")
priceFixednumberrequiredOne-time fixed price for this variant
pricePerUnitnumberrequiredPrice per unit for this variant
priceSubscriptionnumberrequiredRecurring subscription price for this variant
401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X GET "https://leadtime.app/api/public/administration/product-catalog/string" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"const response = await fetch("https://leadtime.app/api/public/administration/product-catalog/string", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
});import requests
response = requests.get(
"https://leadtime.app/api/public/administration/product-catalog/string",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
},
)Response
{
"categoryId": "string",
"descriptionHtml": "string",
"id": "string",
"logoId": {},
"logoUrl": {},
"name": "string",
"options": [
"string"
],
"priceFixed": 0,
"priceFrequency": {},
"pricePerUnit": 0,
"priceSubscription": 0,
"priceUnitName": {},
"variants": [
{
"descriptionHtml": {},
"id": "string",
"isActivated": true,
"name": "string",
"priceFixed": 0,
"pricePerUnit": 0,
"priceSubscription": 0
}
]
}Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient API scopes or permissions