export interface ProblemDetails { type: string | null; title: string | null; status: number | null; detail: string | null; instance: string | null; extensions: { [key: string]: any; }; [key: string]: any; } export interface HttpValidationProblemDetails extends ProblemDetails { errors: { [key: string]: string[]; }; [key: string]: any; } export interface ValidationProblemDetails extends HttpValidationProblemDetails { errors: { [key: string]: string[]; }; [key: string]: any; } /** Response which is returned when creating a new JWT bearer token. */ export interface TokenModel { /** JWT bearer token, used to make authenticated calls to the decoloop CPQ API. */ access_token: string | null; /** DateTime (UTC) at which the token was issued. */ ".issued": string; /** DateTime (UTC) at which the token will expire. */ ".expires": string; /** Optional WizardId connected to this user. */ wizard_id: number | null; } /** Contains all parameters needed to request a JWT bearer token for the decoloop CPQ API. */ export interface TokenRequest { /** Company name of the Employee to retrieve the token for */ domainName: string; /** Username of the Employee to retrieve the token for */ username: string; /** Password of the Employee to retrieve the token for */ password: string; /** Optional API key which can be issued by the owner of the installation. API keys can give extra rights within WoonTotaal. */ apiKey: string | null; } /** Contains a CategoryPreset and a Polygon with the calculation result */ export interface CategoryPresetCalculationResult { /** The CategoryPreset for this result */ categoryPreset: CategoryPreset | null; /** A Polygon which contains all relevant calculated information for the CategoryPreset. NOTE: This Polygon is specific to the current request. It is not saved in the database! */ polygon: Polygon | null; } /** A CategoryPreset contains a blueprint for a Polygon. It can contain property values, materials etc. */ export interface CategoryPreset { /** Unique ID for this CategoryPreset */ id: number; /** Id of the product Category this preset belongs to */ categoryId: number; /** Unique external reference/identifier for this CategoryPreset */ externalReference: string | null; /** Optional height used for this CategoryPreset */ height: number | null; /** Determines the kind of CategoryPreset */ kind: CategoryPresetKind; /** Name for this CategoryPreset */ name: string | null; /** Optional PolygonType.Id used for this CategoryPreset */ polygonTypeId: number | null; /** Optional width used for this CategoryPreset */ width: number | null; } export type CategoryPresetKind = "Menu" | "DefaultCalculation"; /** A Polygon implements a configurable product in a Project (e.g. a curtain). */ export interface Polygon { /** Unique ID. */ id: string; /** Entity ID (Always use the Id field for API communication) */ entityId: number; /** Line number for this Polygon. */ lineNumber: number | null; /** Line number suffix for this Polygon, only present on a chained Polygon. */ lineNumberSuffix: string | null; /** Polygon attributes, allows for saving custom key-value information. */ attributes: { [key: string]: string; } | null; /** Contains the description of the product category for this Polygon. */ categoryDescription: string | null; /** Description of the CategoryFavorite, set for this polygon. */ categoryFavoriteDescription: string | null; /** Id of the CategoryFavorite, set for this polygon. */ categoryFavoriteId: number | null; /** The available categories for material selection. Based on the selected ModelId, the system will return a list of CategoryLinks, foreach of which a material can be selected as part of the product configuration. */ categoryLinks: CategoryLink[]; /** Applied category extras for this polygon. */ appliedExtras: PolygonCategoryExtra[]; /** Optional Id of the category preset used for this polygon */ categoryPresetId: number | null; /** Optional CategoryPreset.ExternalReference of the category preset used for this polygon */ categoryPresetExternalReference: string | null; /** Chained children */ chainedChildren: Polygon[]; /** The last status of this Polygon */ currentStatus: PolygonStatus | null; /** Description. */ description: string | null; /** Contains information about min/max dimensions */ dimensionsInfo: DimensionsInfo | null; /** Documentations, e.g. measurement instructions Url or video link */ documentations: Documentation[]; /** Optional value for storing a gross value. For example a measured height. */ grossHeight: number | null; /** Optional value for storing a gross value. For example a measured width. */ grossWidth: number | null; /** Height. The default unit is cm. */ height: number | null; /** Optional value for storing a correction value. This correction will be applied to the GrossHeight, and the outcome will be set on the Height. */ heightCorrection: number | null; /** The customer can specify a description for this polygon. Some model configurations don't need a description (or a description does not apply), in which case this property will return false. */ isDescriptionEnabled: boolean; /** True if the orderline of this polygon is marked as deleted */ isDeleted: boolean; /** Height can be adjusted by customer. Some model configurations don't need a Height to be specified, in which case this property will return false. */ isHeightEnabled: boolean; /** The polygon is marked as readonly, so can no longer be modified. */ isReadonly: boolean; /** Width can be adjusted by customer. Some model configurations don't need a Width to be specified, in which case this property will return false. */ isWidthEnabled: boolean; /** The lead time of the polygon */ leadTime: number; /** Model code. This code is unique for all models within the product category of the order line. */ modelCode: string | null; /** Description of the model, which corresponds to the model Id. */ modelDescription: string | null; /** The Model ID, which has been selected for the Polygon. */ modelId: string | null; /** Model Image url (relative path) */ modelImageUrl: string | null; /** CategoryLinkPropertyList.InterfaceKey of the model with Id = ModelId. Used to interface polygon with other product categories. */ modelInterfaceKey: string | null; /** ExecutionPolygonNumber. Unique execution polygon number of the polygon. */ executionPolygonNumber: string | null; /** Unique order number of the polygon. */ polygonNumber: string | null; /** Polygon grouping number. */ polygonNumberGrouped: string | null; /** Id of the PolygonType, set for this polygon. */ polygonTypeId: number | null; /** The prices for this order line (after calculation). */ prices: Price | null; /** Unique ID of order line’s product category. */ productCategoryId: number | null; /** Category.InterfaceKey of polygons product category. */ productCategoryInterfaceKey: string | null; /** Article code/SKU for this Polygon. This code is determined in the configuration. */ productCode: string | null; /** Optional external reference (e.g. a 3rd party id) for this Polygon. Max length 100. */ externalReference: string | null; /** State of the polygon. */ state: PolygonState; /** The visual groups are different representation styles for the configured polygon. */ visuals: Visual[]; /** Width. The default unit is cm. */ width: number | null; /** Optional value for storing a correction value. This correction will be applied to the GrossWidth, and the outcome will be set on the Width. */ widthCorrection: number | null; /** Id referring to the measurementTypeSetting for the width */ widthMeasurementTypeSettingId: number | null; /** Id referring to the measurementTypeSetting for the height */ heightMeasurementTypeSettingId: number | null; } /** The definition of a category link. */ export interface CategoryLink { /** ID of the categorylink. */ id: number; /** The selected material. Can be null when there is no material selected for the category yet. */ categoryLinkMaterial: CategoryLinkMaterial | null; /** Option filter to determine which Materials are valid for this CategoryLink */ categoryMaterialOptionFilter: number; /** InterfaceKeys of the CategoryMaterialOptions that are valid for this CategoryLink */ categoryMaterialOptionInterfaceKeys: string[]; /** Description of the (child)category. */ childCategoryDescription: string | null; /** ID of the child category. */ childCategoryId: number; /** Name of the category link. */ description: string | null; /** Image URL for visualization of the CategoryLink */ imageUrl: string | null; /** InterfaceKey of the category link. */ interfaceKey: string | null; /** Is the categorylink enabled? For example, not all curtain fabrics are suitable for a lining fabric. */ isEnabled: boolean; /** Gets or sets whether this is the main category link. */ isMainCategory: boolean; /** ID of the parent category. */ parentCategoryId: number; /** Quantity description of the (polygonproject-)material. e.g. 2 x 3.5m */ quantityDescription: string | null; /** Remarks of CategoryLink */ remarks: string | null; /** Material selection required?: - None - Desired - Obligated */ requiredLevel: RequiredLevel; /** Options for the CategoryLink */ options: CategoryLinkOption[]; } /** Material data, which is returned for the category structure. Once a material has been selected for a CategoryLink, this class will be returned which contains details about the materials, and the properties for the material which can be configured. */ export interface CategoryLinkMaterial { /** Material code. */ materialCode: string | null; /** Supplier code. */ supplierCode: string | null; /** Gets or sets the unique id of the material. */ materialId: number | null; /** Material description. The description of the material will be localized based on the user's linked Supplier and Language. */ materialDescription: string | null; /** Material color. The color of the material will be localized based on the user's linked Supplier and Language. */ materialColor: string | null; /** Material remarks. The remarks of the material will be localized based on the user's Language. */ materialRemarks: string | null; /** Material composition. The remarks of the material will be localized based on the user's Language. */ materialComposition: string | null; /** Material sale price. */ materialSalePrice: number | null; /** Sale quantity of the material. */ saleQuantity: number | null; /** Calculated quantity of the material. */ calcQuantity: number | null; /** Calculated quantity net of the material. */ calcQuantityNet: number | null; /** Sale unit of the material. */ saleUnit: string | null; /** Gets or sets the supplier id. */ supplierId: number | null; /** Gets or sets the supplier sbn key. */ supplierSbnKey: number | null; /** Price (including Pricegroup and PriceElements). */ price: Price | null; /** Properties (configurable). These properties define the product configuration, and the value can be changed the user/customer. */ properties: Property[]; /** Messages resulting from the calculation. During the calculation, the system can raise error, warning or information messages. These messages are grouped per material, and returned in this list (e.g. in case of invalid configurations). */ messages: Message[]; /** Gets or sets the redistribution info for this material. */ redistributionInfo: string | null; } /** The price calculation data */ export interface Price { /** The total amount of discount for this price structure. */ discountAmount: number; /** The price groups which make up the price total. */ priceGroups: PriceGroup[]; /** The promotions which have been applied to this price structure. */ promotions: Promotion[]; /** Total price of the containing price groups, including the applicable promotions. */ totalPrice: number; /** Total price of the containing price groups without promotions applied. */ totalPriceBeforePromotions: number; /** Total purchase price of the containing price groups */ totalPurchasePrice: number; } /** Specifies a price group, which is returned as part of the price calculation structure */ export interface PriceGroup { /** Code of the PriceGroup. Depending on the configuration of the user's database it will contain the configured price groups, or a default price group coding. */ code: string | null; /** Description of this PriceGroup. Price group descriptions are not localized. */ description: string | null; /** Display order of this PriceGroup. */ displayOrder: number; /** Return the list of articles which build up this PriceGroup */ elements: PriceElement[]; } /** An element which builds up the structure of the price calculation. These elements represent a list of materials (with a quantity and price), which together sums up to the total price for the configured Polygon. This list of materials will typically include the materials which have been selected on the CategoryLink configuration, but will also include additional materials like 'Wage', 'Ribbon', 'Hooks', etc. */ export interface PriceElement { /** The code of the material for this element. Depending on the configuration of the user's SupplierInterface this will represent either a material's supplier code or the material's EAN code. */ code: string | null; /** ID of the associated material for this element. */ materialId: number | null; /** The supplier code code of the material for this element. */ supplierCode: string | null; /** Description of the material. This description will be localized for the language and linked Supplier of the current user. */ description: string | null; /** Contains information about the purchase price. This is only available when the account has sufficient permissions. */ purchasePrice: PurchasePriceInfo | null; /** Quantity needed for the configuration of the Polygon. */ quantity: number; /** The total price for this element. It is calculated as Quantity * unit price, 2 decimals. */ totalPrice: number; /** The total price before promotion for this element. It is calculated as Quantity * promotion price, 2 decimals. */ totalPriceBeforePromotion: number; /** Unit of measure for the material. */ unit: string | null; /** Unit price of the material. */ unitPrice: number; /** Unit price of the material before promotion. */ unitPriceBeforePromotion: number; /** Total price of the material excluding vat. */ totalPriceExclVat: number; /** Unit price of the material excluding vat. */ unitPriceExclVat: number; /** Vat amount of the total price. */ vatAmount: number; /** Vat percentage. */ vatPercentage: number; } /** Contains information about the purchase price */ export interface PurchasePriceInfo { /** The purchase price per unit */ unitPurchasePrice: number | null; /** The total purchase price */ totalPurchasePrice: number | null; } /** Specifies a promotion which has been applied to the Polygon price structure. */ export interface Promotion { /** Code of the promotion. This is a unique reference which has been assigned to the promotion, and is typically used internally to assign the applied to promotions to a specific cost centre. */ code: string | null; /** Description of the promotion. This description will be localized in the language of the current user. */ description: string | null; /** Discount price added by this promotion. Promotions are handled as an addition to the total price, so are typically returned as a negative number (as they usualy give reductions). */ priceDiscount: number; /** (Optional) reference of the promotion to a PriceElement code. Using this reference it is possible to relate a specific promotion to a specific price element (e.g. a reduction to the Fabric costs). */ reference: string | null; /** Specifies a date/time until when this promotion is valid. */ validUntil: string; /** Discount price excluding vat added by this promotion. Promotions are handled as an addition to the total price, so are typically returned as a negative number (as they usualy give reductions). */ priceDiscountExclVat: number; /** Arbitrary key-value pair metadata for this promotion. */ attributes: { [key: string]: string; } | null; } /** Specify a property definition for a material in a category link. */ export interface Property { /** Unique ID (category link property id). This provides a unique identification of the property in relation to the category link. */ id: number; /** Control type */ controlType: ControlType; /** Custom control code, used to show a custom control when Property.ControlKind == ControlKind.Custom. */ customControlCode: string | null; /** Data type of property. */ dataType: PropertyDataType; /** Data type of the property value. */ valueDataType: PropertyDataTypeString; /** Contains the default control type for this property. If DataType == Custom for example, DefaultControlType will contain the WoonTotaal default. */ defaultControlType: ControlType; /** Description of the property. Can contain a DynamicDescription if present. */ description: string | null; /** Label used for display of the property. The label will be returned in the language which is linked to the authentication information passed to the service. */ displayLabel: string | null; /** Display order of the property. By default the server will also return the properties in the display order. */ displayOrder: number; /** Label to be used as a display suffix. */ displaySuffix: string | null; /** Wether the description is dynamic yes or no. */ hasDynamicDescription: boolean; /** Interface key of the category link property. */ interfaceKey: string | null; /** Property is modified by the user (the client). When set to true, the calculation engine will attempt to preserve the value of the property as much as possible. To prevent the server from changing the value of a property (which has been explicitely set by the user), this property should be set to True. The server will also preserve the value of this property in subsequent server round-trips, so the state of the polygon includes 'knowledge' about which properties have been set by the user. */ isModified: boolean; /** Property is modified by the application server, when the calculation engine has changed the value of a property (typical because a non-logical value was selected). */ isModifiedByApp: boolean; /** Gets or sets whether this property is readonly. */ isReadonly: boolean; /** When this property returns true, the property is required to have a value (in order to have a valid configuration for the Polygon). */ isRequired: boolean; /** Gets or sets whether a property should be shown to the user. */ isVisible: boolean; /** Gets or sets whether a property is available before calculation. */ isAvailableBeforeCalculation: boolean; /** List values. Only applicable if the property’s data type is one of the pdtList* options. In that case, this property contains a list of possible values, from which the Property value can (or should) be selected. The available items in the list can depend on other properties in a Polygon configuration. Selecting a specific type of material can also cause list values to appear or disappear. */ listValues: ListValue[]; /** Unique ID of property. The same property under different category links, will share the same property id. */ propertyId: number; /** Remarks / explanation for the property. */ remarks: string | null; /** Property value, which is set via either user input, or as a result from the calculation. */ value: string | null; /** Contains information for validating the value of this Property */ validation: PropertyValidation | null; /** URL to image for this property (if available) */ imageUrl: string | null; /** Optional explanation for this property */ explanation: string | null; } /** The kind of control, used for display of properties */ export type ControlType = "Text" | "Input" | "Select" | "ListBox" | "ImageListBox" | "ImageSelect" | "DatePicker" | "WeekPicker" | "EmployeeComboBox" | "Default" | "CategorySelect" | "SupplierSelect" | "ValuePickerWindow" | "Calendar" | "InnerHtml" | "Custom"; /** Specifies the possible data types, which are used for property definitions */ export type PropertyDataType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20; /** Specifies the possible data types, which are used for property definitions */ export type PropertyDataTypeString = "None" | "String" | "Number" | "Currency" | "Integer" | "Date" | "Time" | "Memo" | "FmtMemo" | "Graphic" | "Boolean" | "List" | "ListGroups" | "ListRooms" | "ListPolygons" | "ListMaterials" | "ListOrder" | "ListProjectNumber" | "ArticleCodes" | "File" | "Svg"; /** A possible list value for a list-property */ export interface ListValue { /** Description of the list item. The description of the list item will be returned in the language which is linked to the authentication information passed to the service. */ description: string | null; /** Returns a URL for an image which represents the list value (optional) */ imageUrl: string | null; /** InterfaceKey of the category link property list. */ interfaceKey: string | null; /** (list of) skills of the category link property list. */ skills: string | null; /** Remarks / explanation for the list item. */ remarks: string | null; /** Value of the list item. This value should be passed as the selected property value. */ value: string | null; /** Determines if this list item can be selected or not. */ isDisabled: boolean; /** Price difference for this list value relative to the selected list value */ priceDifference: number | null; /** Price for this list value */ price: number | null; /** Same value as the Property.Id of the Property this list value belongs to. Can usually be ignored. */ categoryLinkPropertyId: number; /** Reference to a content block that provides additional information for this list value. */ contentBlockId: string | null; } /** Contains information for validating the value of a Property */ export interface PropertyValidation { /** Minimum value for this Property Only applies to Numbers and Integers */ min: any | null; /** Maximum value for this Property Only applies to Numbers and Integers */ max: any | null; /** Number of decimal places for this Property Only applies to Numbers */ precision: number | null; /** The step field specifies the interval between legal numbers. Example: if step = 3, legal numbers could be -3, 0, 3, 6, etc. */ step: any | null; /** Specifies if the current Property value is valid yes/no according to the rules in this object. */ isValid: boolean | null; } /** A message can be returned from the calculation to show hints, warnings or errors for the user, based on the current polygon configuration. When MessageKind is Fatal, message has not to be displayed !! There is also an errormessage in the ResponseBase !!! */ export interface Message { /** Context of the message. Possible values depend on the scope. Does the message apply to the price of the project/polygon, a polygon's property, etc. */ context: MessageContext; /** Gives additional information about the context of the message. For example, if Context equals MessageContext.Property, this property contains a comma separated list of property descriptions. */ contextReference: string | null; /** Kind of message. */ kind: MessageKind; /** Scope of the message. Does it apply the the project, the polygon, etc. */ scope: MessageScope; /** The text of the message When MessageKind is Fatal this can be an non-localized message, so don't display it to the customer When any other MessageKind this message is localized */ text: string | null; /** Specifies the origin of the Message */ origin: MessageOrigin; } export type MessageContext = "None" | "MaterialPrice" | "WagePrice" | "Price" | "Width" | "Height" | "Dimensions" | "Property"; /** The kind of messages, which can be returned from a service call */ export type MessageKind = "Information" | "Warning" | "Error" | "Fatal" | "Dynamic"; export type MessageScope = "None" | "Polygon" | "Project"; /** Specifies where the message originates from */ export type MessageOrigin = "Default" | "ConfigMessage"; /** Specifies whether material selection is desired, obligated or not applicable. Defined per CategoryLink. */ export type RequiredLevel = "None" | "Desired" | "Obligated"; /** The options for a CategoryLink */ export type CategoryLinkOption = "None" | "IncludeInModelMenu" | "ChainAutomatically" | "CanUseMainMaterial"; export interface PolygonCategoryExtra { id: string; materialId: number; materialCategoryId: number; categoryExtraId: number; quantity: number; description: string | null; priceElement: PriceElement | null; } /** Describes a status about a Polygon. */ export interface PolygonStatus { /** Remarks that come with the status value */ remarks: string | null; /** Date and time when the status was entered. */ statusDateTime: string; /** Desciption of the status value, e.g. 'Entered', 'Printed', 'Paid' */ statusDescription: string | null; /** Status Value, e.g. 1000000 = entered, 2000000 = printed, 3000000 = paid */ statusValue: number; } /** Contains information about min/max dimensions */ export interface DimensionsInfo { /** When present, this is the maximum height for this Polygon */ maxHeight: number | null; /** When present, this is the maximum width for this Polygon */ maxWidth: number | null; /** When present, this is the minimum height for this Polygon */ minHeight: number | null; /** When present, this is the minimum width for this Polygon */ minWidth: number | null; } /** A class for information about the requested documentation. */ export interface Documentation { /** Description of the documentation e.g. 'Meetinstructies' */ description: string | null; /** Kind of documentation */ documentationKind: DocumentationKind; /** Location of the documentation */ documentationUrl: string | null; /** Media type: html page, pdf document, video, etc */ mediaType: MediaType; } /** The supported kinds of documentation */ export type DocumentationKind = "General" | "MeasurementInstructions" | "HelpCSVImport" | "MailAttachment"; /** The type of media. */ export type MediaType = "None" | "HtmlDocument" | "PdfDocument" | "Video"; /** Indicates the state of polygon during configuring. */ export type PolygonState = "New" | "Completed" | "Editing"; /** A visual is used for visual presentation of configurable objects like a polygon. */ export interface Visual { /** The name of the visual. */ name: string | null; /** The (relative) url of the visual. */ url: string | null; /** Additional information about the visual. */ remarks: string | null; } /** Represents a content block with its localized content and nested children. */ export interface ContentBlock { /** Gets or sets the unique identifier for the content block. */ id: string; /** Gets or sets the zone identifier (e.g., "header", "footer", "sidebar"). Null for nested content blocks. */ zone: string | null; /** Gets or sets the sort order within the zone or parent field. */ sortOrder: number; /** Gets or sets the component definition for this content block. */ component: ContentBlockComponent; /** Gets or sets the field values for this content block, keyed by field name. */ fields: { [key: string]: ContentBlockFieldValue; }; /** Gets or sets the nested child content blocks (for component fields). */ children: ContentBlock[]; } /** Represents the component definition for a ContentBlock. */ export interface ContentBlockComponent { /** Gets or sets the unique identifier for the component. */ id: string; /** Gets or sets the component name (e.g., "HeroSection"). */ name: string | null; /** Gets or sets the user-friendly display name. */ displayName: string | null; /** Gets or sets the component category (e.g., "layout", "content"). */ category: string | null; /** Gets or sets the icon identifier for UI. */ icon: string | null; } /** Represents a field value within a ContentBlock with its metadata. */ export interface ContentBlockFieldValue { /** Gets or sets the display label for UI. */ label: string | null; /** Gets or sets the type of field (determines how to render the value). */ fieldType: ContentBlockFieldType; /** Gets or sets the single value for non-repeatable fields. Null for repeatable fields (use Values instead). The type depends on FieldType: - Text, RichText, Email, Url, Image: string - Number: decimal - Boolean: bool - Date: string (ISO 8601) - Json, KeyValuePair: object */ value: any | null; /** Gets or sets multiple values for repeatable fields. Null for single-value fields (use Value instead). */ values: any[] | null; } /** Defines the type of a ContentBlock field. */ export type ContentBlockFieldType = "Text" | "RichText" | "Number" | "Boolean" | "Date" | "Email" | "Url" | "Image" | "Json" | "Component" | "KeyValuePair"; /** Contains the results of a page operation. */ export interface PagedResultOfCustomer { /** Gets or sets the items. */ items: Customer[]; /** Gets or sets the total item count. This is the amount of items that would have been loaded if no paging was specified. */ totalItemCount: number; } /** Contains information about the customer. */ export interface Customer { /** Unique ID. - Set to NULL when inserting a new Customer - Set to a valid ID when updating a Customer */ id: string | null; /** Entity ID (Always use the Id field for API communication) */ entityId: number; /** Gets or sets the debtor code of the customer. This field is usually threated as readonly. */ code: string | null; /** Gets or sets the name of a company associated with the customer if applicable. */ companyName: string | null; /** Gets or sets the delivery address. */ deliveryAddress: AddressInfo | null; /** Gets or sets the delivery code. This field is usually treated as readonly. */ deliveryCode: string | null; /** Gets or sets a display friendly name. */ displayName: string | null; /** Gets or sets the e-mail address. */ emailAddress: string | null; /** Gets or sets the fax number. */ fax: string | null; /** Gets or sets the title. */ title: string | null; /** Gets or sets the first name. */ firstName: string | null; /** Gets or sets the invoice address. */ invoiceAddress: AddressInfo | null; /** Gets or sets the last name. */ lastName: string | null; /** Gets or sets the main address. */ mainAddress: AddressInfo | null; /** Gets or sets the middle name. */ middleName: string | null; /** Gets or sets the mobile number. */ mobile: string | null; /** Gets or sets the phone number. */ phone: string | null; /** Gets or sets the website address. */ website: string | null; /** Gets or sets the search name. */ searchName: string | null; } /** Address data, which is typically associated with a customer / order. */ export interface AddressInfo { /** Gets or sets the address type. */ type: AddressType; /** Gets or sets the city. */ city: string | null; /** Gets or sets the country code. */ countryCode: string | null; /** Gets or sets the EmailAddress associated with the address. */ emailAddress: string | null; /** Gets or sets the name associated with the address. */ name: string | null; /** Gets or sets the PhoneNumber associated with the address. */ phoneNumber: string | null; /** Gets or sets the street name. */ address: string | null; /** Gets or sets the zip/postal code. */ zip: string | null; /** Extra information for the transporter. NOTE: not every CPQ instance supports this field. Check this with the owner of the instance first. */ extraAddressLine: string | null; /** Extra information for the transporter. NOTE: not every CPQ instance supports this field. Check this with the owner of the instance first. */ extraAddressLine2: string | null; /** State/province for the address NOTE: not every CPQ instance supports this field. Check this with the owner of the instance first. */ state: string | null; } export type AddressType = "UNKNOWN" | "CONSUMER" | "BUSINESS"; export interface PageRequestBase { /** Current page number */ pageNumber: number; /** Gets or sets the page size. */ pageSize: number; } export interface CustomerBrowseRequest extends PageRequestBase { /** Gets or sets the text search filter. */ textFilter: string | null; /** Gets or sets the debtor code to filter by. */ debtorCode: string | null; /** Gets or sets the delivery code to filter by. */ deliveryCode: string | null; } /** Contains form information for API v2. */ export interface FormModel { /** Gets or sets the form id. */ id: number; /** Gets or sets the form number. */ formNumber: string | null; /** Gets or sets the form description. */ description: string | null; /** Gets or sets the form kind. */ formKind: FormKind; /** Gets or sets the date and time when the form document was generated. */ generatedDateTime: string | null; } /** Describes the kind of a form. */ export type FormKind = "Unknown" | "Drawing" | "Summary" | "ConnectSummary" | "MeasuringNote" | "Precalculation" | "PriceCalculation" | "Proposal" | "MeasureReport" | "CustomerOrder" | "CustomerOrderLetter" | "Reservation" | "SupplierOrder" | "ConnectOrder" | "DeliveryNote" | "SupplierOrderReceivedNote" | "WorkOrder" | "RollList" | "WorkOrder2" | "Invoice" | "PostCalculation" | "PriceList" | "MarginList" | "CutList" | "WorkList" | "MaterialLabel" | "BreadthList" | "CspSolution" | "ArticleLabel" | "MaterialList" | "CustomerInfoReport"; export interface Licensee { /** Unique identifier for this Licensee */ id: number; /** Address for this Licensee */ address: AddressInfo | null; /** Unique, readonly code for this Licensee */ code: string | null; /** Company name used for authentication */ domainName: string | null; /** Latitude of this Licensees location */ latitude: number | null; /** Longitude of this Licensees location */ longitude: number | null; /** Name of this Licensee */ name: string | null; } /** Contains information about a Material. This information is requestor dependent, which means that every requestor get's its own information. For example: Between requestors, a Material can have the same id, but the descriptions, prices, color, etc. may be different. This also applies for different used languages. */ export interface Material { /** Gets or sets the id of the Material. */ id: number; /** The attachments of the Material */ attachments: Attachment[]; /** Description of the Category this Material belongs to. */ categoryDescription: string | null; /** Specifies the id of the category. */ categoryId: number; /** Specifies the code of the Material. This field contains either the ean code or the supplier code determined by the application's backend configuration. */ code: string | null; /** Gets or sets the color code */ color: string | null; /** Gets or sets the color description */ colorDescription: string | null; /** Gets or sets the composition */ composition: string | null; /** Gets or sets the description. */ description: string | null; /** Gets or sets the ean code. */ eanCode: string | null; /** Gets or sets a collection of extra values. This can be regarded as metadata for a Material and is a back end configuration scoped per Material. Each Material can have its own unique collection of extra field values. */ extraFieldValues: ExtraFieldValue[]; /** Height of the Material in unit specified by Material.Unit */ height: number | null; /** Gets or sets the url of the image. */ imageUrl: string | null; /** Gets or sets wheter it's a wage 'Material' */ isWage: boolean; /** Gets or sets the lead time. */ leadTime: number | null; /** Length of the Material in unit specified by Material.Unit */ length: number | null; /** Gets or sets a collection of Material options. This can be used to get additional information about a Material and is a back end configuration scoped per Material. Each Material can have its own unique collection of Material options. */ materialOptionValues: MaterialOptionValue[]; /** MaterialGroups to which this Material belongs */ materialGroups: MaterialGroup[]; /** The kind of material */ materialKind: MaterialKind | null; /** The style of the material */ materialStyle: MaterialStyle | null; /** Length of the pattern in unit specified by Material.Unit */ patternLength: number | null; /** Width of the pattern in unit specified by Material.Unit */ patternWidth: number | null; /** Gets or sets promotion price. */ promotionPrice: number | null; /** Gets or sets the remarks. */ remarks: string | null; /** Gets or sets the sale price. */ purchasePrice: number | null; /** Gets or sets the sale price. */ salePrice: number | null; /** Gets or sets the sale unit. */ saleUnit: MeasurementUnit | null; /** Gets or sets the shrink tolerance. */ shrinkTolerance: number | null; /** Gets or sets the supplier code. */ supplierCode: string | null; /** Gets or sets the supplier id. */ supplierId: number; /** Gets or sets the supplier sbn key. */ supplierSbnKey: number | null; /** Unit of the Material, used in calculation etc. */ unit: MeasurementUnit; /** List of valid Model.Id's for this Material */ validModelIds: string[]; /** WashingSymbols for the Material */ washingSymbols: string | null; /** Weight of the Material in grams */ weight: number | null; /** Width of the Material in unit specified by Material.Unit */ width: number | null; } export interface Attachment { /** The kind of the attachment */ kind: AttachmentKind; /** The path to the attachment */ path: string | null; /** The kind of path */ pathKind: Pathkind; /** The attachment content */ content: string | null; } export type AttachmentKind = "Pdf" | "Image" | "Video" | "Thumbnail"; export type Pathkind = "Relative" | "Absolute" | "File"; /** Contains information about the objects that this is associated with. For example: A material has a collection of extra fields and these extra fields contain metadata for that material. */ export interface ExtraFieldValue { displayOrder: number | null; /** Gets or sets the ExtraField id. */ extraField: number; /** Gets or sets the ExtraField name. */ extraFieldName: string | null; extraFieldNameResource: string | null; image: string | null; /** Gets or sets the value. */ value: string | null; valueResource: string | null; } /** Specifies an option value for a material. Note: Origin is a bit array field 'Options' on the material, mapped on its category 'CategoryMaterialOptions'. */ export interface MaterialOptionValue { /** Description of the option. */ description: string | null; /** Option value. */ value: number; /** Unique identifier for this option. */ interfaceKey: string | null; } /** Represents a group of materials */ export interface MaterialGroup { /** Unique ID of the MaterialGroup */ id: number; /** Code of the MaterialGroup */ code: string | null; /** A description of the MaterialGroup */ description: string | null; /** A list of children of the current MaterialGroup */ children: MaterialGroup[]; } /** Specifies an kind value for a material. */ export interface MaterialKind { /** Description of the kind. */ description: string | null; /** Kind value. */ value: number; /** Unique identifier for this kind. */ interfaceKey: string | null; } /** Specifies an kind value for a material. */ export interface MaterialStyle { /** Description of the kind. */ description: string | null; /** Kind value. */ value: number; /** Unique identifier for this kind. */ interfaceKey: string | null; } export type MeasurementUnit = "Millimeters" | "Centimeters" | "Meters" | "Inches" | "Feet" | "Yards" | "Pixels" | "Grams" | "Kilograms" | "Milliliters" | "Liters" | "SquareCentimeters" | "SquareMeters" | "Pieces" | "Package" | "SquareFeet" | "SquareYards" | "Hours"; /** Contains the results of a page operation. */ export interface PagedResultOfMaterial { /** Gets or sets the items. */ items: Material[]; /** Gets or sets the total item count. This is the amount of items that would have been loaded if no paging was specified. */ totalItemCount: number; } /** Contains information about filtering and/or paging materials. */ export interface MaterialBrowseRequest extends PageRequestBase { /** Gets or sets the material Category.Id. This field can be used to only retrieve Materials for a certain Category */ categoryId: number | null; /** Gets or sets the list of material Category.Ids. This field can be used to only retrieve Materials valid for these Categories. */ categoryIds: number[] | null; /** Gets or sets the CategoryLink.Id. This field can be used to only retrieve Materials which are valid for a certain CategoryLink */ categoryLinkId: number | null; /** Optional Material.Description filter */ descriptionFilter: string | null; /** Optional Material.Color filter */ colorFilter: string | null; /** Optional Material.Code filter */ codeFilter: string | null; /** Gets or sets whether to include wages. */ includeWages: boolean; } /** Contains information about filtering and/or paging materials. */ export interface BrowseMaterialsForExtraRequest extends PageRequestBase { /** Gets or sets the material Category.Id. This field can be used to only retrieve Materials for a certain Category */ categoryExtraId: number; /** Gets or sets the polygon id. This field is used to filter materials for the specified extra relevant to this polygon. */ polygonId: string | null; } /** The definition of a category link. */ export interface Category { /** ID of the category. */ id: number; /** Name of the category. */ description: string | null; /** InterfaceKey of the category. */ interfaceKey: string | null; } /** Specifies the settings for the measurementType */ export interface MeasurementTypeSettings { /** The identiefier */ id: number; /** Enum specifying if the measurement is targeted at width or height */ measurementTarget: MeasurementTarget; /** FK for the measurementType */ measurementTypeId: number | null; /** InterfaceKey for the measurementType */ measurementTypeInterfacekey: string | null; /** The description for the measurementType */ measurementTypeDescription: string | null; /** Checks if this is the default choice for the licensee */ isDefault: boolean; /** The kind specified for the measurement */ kind: number; /** The reference specified for the measurement */ reference: string | null; /** The correction specified for the measurement */ correction: number | null; } /** Specifies if the measurement is targeted at width or hight */ export type MeasurementTarget = "NotApplicable" | "Width" | "Height"; export interface DataTypeBase { } export interface MeasurementTypeModel extends DataTypeBase { id: number; description: string | null; correction: number; correctionUnit: MeasurementUnit2; isArchived: boolean; licenseeId: number | null; remarks: string | null; measurementTarget: MeasurementTarget2; interfaceKey: string | null; } export type MeasurementUnit2 = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17; export type MeasurementTarget2 = 0 | 1 | 2; /** Specifies the available options for the measurementTypes. */ export interface MeasurementTypeSettingsOptions { /** An contains a list of MeasurementType for the width. */ widthSettings: MeasurementTypeSettings[]; /** An contains a list of MeasurementType for the height. */ heightSettings: MeasurementTypeSettings[]; } export interface ApplicationBase { /** Unique Id for this WoonTotaal Application instance. */ applicationId: number | null; } /** A model specifies a possible product configuration for a Polygon. Based on the model selection, the Polygon configuration will return a number of Categories and Properties. */ export interface Model extends ApplicationBase { /** Unique Id of the model. Models in the structure, which cannot be selected for product configuration, will have an Id value of NULL. These models are typically only included for navigational purposes (e.g. as a parent model for other models). It filter these sub-levels in the model tree, they can be identified via the ProductCategoryId property. */ id: string | null; /** Contains a list of product category id's, which can be chained to this model. */ chainedCategories: number[]; /** Contains a list of model id's, which can be chained to this model. */ chainableModelIds: string[]; /** List of children of this model. */ children: Model[]; /** Model code. */ code: string | null; /** Short description of the model, e.g. Double pleat. */ description: string | null; /** Code of the default material for this model. This is the default material that will be selected when this model is selected. This material can't be changed by the user. */ defaultMaterialCode: string | null; /** Full description of the model. The names of the model’s parents up to the root of the model tree are included in this description, e.g. Curtain, Pleated, Double pleat. */ fullDescription: string | null; /** URL of the model’s image to be used in the UI of the hosting application. */ imageUrl: string | null; /** Determines if this model is the default model for this product category. */ isDefaultModel: boolean; /** The customer can specify a description for a polygon with this model. Some model configurations don't need a description (or a description does not apply), in which case this property will return false. */ isDescriptionEnabled: boolean; /** Height for this model can be adjusted by customer. Some model configurations don't need a Height to be specified, in which case this property will return false. */ isHeightEnabled: boolean; /** Width for this model can be adjusted by customer. Some model configurations don't need a Width to be specified, in which case this property will return false. */ isWidthEnabled: boolean; /** Database description of the main category. */ mainCategoryLinkDescription: string | null; /** Display name of the main category of this product (main material to be selected). */ mainCategoryLinkDisplayName: string | null; /** Database ID of the main category of this product (main material to be selected). */ mainCategoryLinkId: number; /** Database Image of the main category of this product (main material to be selected). */ mainCategoryLinkImage: string | null; /** The category id of the materials */ materialCategoryID: number | null; /** Id of the model’s parent (optional). */ parentId: string | null; /** Database description of the category this model is a part of. */ productCategoryDescription: string | null; /** Unique database ID of the product category this model is a part of. */ productCategoryId: number | null; /** Unique InterfaceKey of the product category this model is a part of. */ productCategoryInterfaceKey: string | null; /** Specifies an average leadtime (in days) for the product to be delivered. */ productLeadTime: number | null; /** Extra information. Can be used in UI of hosting application to clarify the model’s usage. */ remarks: string | null; /** Unique InterfaceKey of this model */ interfaceKey: string | null; /** Property value for this model. */ value: string | null; } /** Specify a project configuration. A project is the primary entity in the gateway API, and reflects an order of one or more polygons. */ export interface Project extends ApplicationBase { /** Unique ID. */ id: string; /** Entity ID (Always use the Id field for API communication) */ entityId: number; /** Project attributes, allows for saving custom key-value information. */ attributes: { [key: string]: string; } | null; /** DateTime (UTC) of creation. */ createdAt: string; /** Contains basic information of the customer for this Project. */ customer: CustomerInfo | null; /** Gets or sets the customer id of the project. */ customerId: number | null; /** Gets or sets the delivery address. */ deliveryAddress: AddressInfo | null; /** Gets or sets the delivery address. */ deliveryLicensee: LicenseeInfo | null; /** Gets or sets the delivery address. */ licensee: LicenseeInfo | null; /** Reference to the delivery location (== XTS licensee code) */ deliveryRef: string | null; /** Order description. */ description: string | null; /** Gets or sets the execution address of the projet. */ executionAddress: AddressInfo | null; /** Field which can be used to store 3rd party references (for example an ID) */ externalReference: string | null; /** Indicates if this Project can be edited yes/no. */ isEditable: boolean; /** Date/time last modified. */ lastModifiedAt: string; /** Date/time last opened. */ lastOpenedAt: string; /** Messages resulting from the calculation. During the calculation, the system can raise error, warning or information messages. The messages in this list are relevant for the entire Project. */ messages: Message[]; /** The polygons of the project A project can contain multiple polygons of different models */ polygons: Polygon[]; /** Project wide prices (order costs). These costs don't directly relate to a Polygon. */ projectPrices: Price | null; /** Price (including Pricegroup and PriceElements) */ price: Price | null; /** Project number. */ projectNumber: string | null; /** Status of the project. If the status >= Confirmed, the polygons cannot be changed any more. */ projectStatus: ProjectStatus; /** List of Sets applied to this Project. */ projectSets: ProjectSet[]; /** ProjectType for this Project. */ projectType: ProjectType | null; /** Order reference / commission. */ reference: string | null; /** Order remarks. */ remarks: string | null; /** Contains the salesman of the project. This is the employee who is responsible for the project. */ salesman: Employee | null; } /** Contains basis information about the customer. */ export interface CustomerInfo { /** Unique ID. */ id: string; /** Entity ID (Always use the Id field for API communication) */ entityId: number; /** Gets the delivery code. This field is readonly. */ debtorCode: string | null; } /** Licensee data, which is typically associated with an order. */ export interface LicenseeInfo { /** Gets or sets the id. */ id: number; /** Gets or sets the code associated with the licensee. */ code: string | null; } /** Specifies the status of a Project */ export type ProjectStatus = "Entered" | "Confirmed" | "Paid" | "Canceled"; /** A ProjectSet is link between the Project and the Set entity */ export interface ProjectSet { /** Unique ID. */ id: string; /** Entity ID (Always use te Id field for API communication) */ entityId: number; /** The id of the Set. */ setId: number; /** The description of the ProjectSet. */ description: string | null; /** Additional information about the ProjectSet. */ remarks: string | null; /** The (relative) image url of the ProjectSet. */ imageUrl: string | null; /** List of Polygon ids which are part of this Set. */ polygonIds: string[]; } /** Contains information about the type of Project */ export interface ProjectType { /** Gets or sets the id of the ProjectType. */ id: number; /** Gets or sets the unique code of the ProjectType. */ code: string | null; } export interface Employee { id: number; name: string | null; username: string | null; } export interface ProjectRequestBase { /** Id (GUID) of the stored Project. */ projectId: string; } /** Contains information about the request to add a new polygon to the provided project. */ export interface AddPolygonRequest extends ProjectRequestBase { /** Gets or sets the model id to use for the new polygon. */ modelId: string | null; /** Gets or sets the material id to use for the new polygon's main category link material. */ materialId: number | null; /** Optional Id of the parent Polygon. The newly created Polygon will be added as a chained child of this Polygon. */ parentPolygonId: string | null; /** Gets or sets the polygon type id to use for the new polygon's main category link material. */ polygonTypeId: number | null; /** Gets or sets the material code to use for the new polygon's main category link material. */ materialCode: string | null; /** Gets or sets the width to use for the new polygon. */ width: number | null; /** Gets or sets the height to use for the new polygon. */ height: number | null; } /** Contains information about the request to add a new polygon using a preset to the provided project. Use either the CategoryPreset.Id or the CategoryPreset.ExternalReference. */ export interface AddPolygonWithPresetRequest extends ProjectRequestBase { /** CategoryPreset.Id */ categoryPresetId: number | null; /** CategoryPreset.ExternalReference */ categoryPresetExternalReference: string | null; /** Optional Id of the parent Polygon. The newly created Polygon will be added as a chained child of this Polygon. */ parentPolygonId: string | null; /** Sets the width to use for the new polygon. */ width: number | null; /** Sets the height to use for the new polygon. */ height: number | null; } /** Contains information about the preset to apply for a specified polygon. */ export interface ApplyPresetRequest { /** Gets or sets the polygon id. */ polygonId: string; /** CategoryPreset.Id */ categoryPresetId: number | null; /** CategoryPreset.ExternalReference */ categoryPresetExternalReference: string | null; } /** Contains information for which Polygon the edit should be cancelled. */ export interface CancelEditPolygonRequest { /** The Id of Polygon for which the edit should be cancelled. */ polygonId: string; } /** Contains information for which Polygon the state should be set to Completed. */ export interface CompletePolygonRequest { /** The Id of Polygon for which the state should be set to Completed. */ polygonId: string; } /** Contains the information that is needed for copying a polygon within the same Project. */ export interface CopyPolygonRequest { /** Gets or sets the id of the polygon that must be copied. */ polygonId: string; /** Gets or sets the width of the copied polygon. */ width: number | null; /** Gets or sets the height of the copied polygon. */ height: number | null; /** Gets or sets the description of the copied polygon. */ description: string | null; } /** Contains information for which Polygon the state should be set to Editing. */ export interface EditPolygonRequest { /** The Id of Polygon for which the state should be set to Editing. */ polygonId: string; } /** Summary of a product that belongs to the Category of a Polygon */ export interface CategorySummary { /** The category for which this summary was generated */ categoryId: number; /** Optional code to identify this summary programmatically */ code: string | null; /** Human friendly description of this CategorySummary */ description: string | null; /** List of groups that belong to this summary */ groups: CategorySummaryGroup[]; } /** Group of summary items that belong to a CategorySummary */ export interface CategorySummaryGroup { /** Optional code to identify this summary group programmatically */ code: string | null; /** Human friendly description of this summary group */ description: string | null; /** The display order of this group */ displayOrder: number | null; /** Items belonging to this summary group, these can contain a value and a price */ items: CategorySummaryGroupItem[]; /** The sum of all the prices in the Items list */ price: Price | null; } /** An individual summary group item that can have a value and a price */ export interface CategorySummaryGroupItem { /** Optional code to identify this summary group programmatically */ code: string | null; /** A display label for this item */ displayLabel: string | null; /** The display order of this group item */ displayOrder: number | null; /** Can contain an URL to an image for this group item */ imageUrl: string | null; /** Optional price of this group item */ price: Price | null; /** The value of this group item */ value: string | null; } /** A collection of all PolygonTexts that belong to the corresponding PolygonId. */ export interface PolygonTextCollection { /** The Id of the Polygon that the Texts belong to. */ polygonId: string; /** An array of PolygonTexts that belong to this Polygon. */ texts: PolygonText[]; } /** A polygon text is a configurable text that is attached to a specific Polygon, the text has an optional Code property indicating which kind of text it is. This can for example be used to return polygon summaries or other generated texts. */ export interface PolygonText { /** The code for this PolygonText, this can be used to determine how this text should be interpreted */ code: string | null; /** The actual content of this PolygonText, this can contain for example a generated XML, JSON or other type of document. */ content: string | null; } /** Contains information about the request to move a polygon to the provided target project. */ export interface MovePolygonsRequest { /** The Id of the Project to which the Polygon should be moved. */ targetProjectId: string; /** The Polygon.Id's which should be moved. The Polygons will be removed from their original Project(s). */ polygonIds: string[]; /** When set to true, the source Polygon(s) will not be deleted from their Project(s) */ preserveSourcePolygons: boolean | null; /** When set to true, the state of the source Polygon(s) has to be Completed. When any of the Polygons is incomplete, the request will fail. */ validateSourcePolygonsState: boolean | null; } /** Contains information about the request to remove a polygon from the project it belongs to. */ export interface RemovePolygonRequest { /** Id of the Polygon to remove from this Project */ polygonId: string; } /** Contains the information that is needed to remove a material from a polygon. */ export interface RemovePolygonMaterialRequest { /** Gets or sets the polygon id. */ polygonId: string; /** Gets or sets the category link id to remove the material for. */ categoryLinkId: number; } /** Contains information to set the attributes for the specified polygon. */ export interface SetPolygonAttributesRequest { /** Gets or sets the polygon id. */ polygonId: string; /** The desired attributes for the stored Polygon. Stored as string key-value pairs. */ attributes: { [key: string]: string; }; } /** Contains information to add the attributes for the specified polygon. Updates the attribute if it already exists. */ export interface AddPolygonAttributesRequest { /** Id (GUID) of the stored Polygon. */ polygonId: string; /** The desired attributes for the stored Polygon. Stored as string key-value pairs. */ attributes: { [key: string]: string; }; } /** Contains information to delete the attributes for the specified polygon. */ export interface DeletePolygonAttributesRequest { /** Id (GUID) of the stored Polygon. */ polygonId: string; /** The desired attributes for the stored Polygon. Stored as string key-value pairs. */ attributes: { [key: string]: string; }; } /** Contains information about the description to set for a specified polygon. */ export interface SetPolygonDescriptionRequest { /** Gets or sets the polygon id. */ polygonId: string; /** Gets or sets the description. Max length can vary per WT instance. The description will be printed when the product goes into production. Different workshops can handle different max lengths for descriptions. The default max length is 255. */ description: string | null; /** Gets or sets a value indicating whether to trigger recalculation of the polygon after setting the description. */ triggerCalculate: boolean; } /** Contains information about the request for setting the external reference on a polygon. */ export interface SetPolygonExternalReferenceRequest { /** Gets or sets the ID of the Polygon. */ polygonId: string; /** Gets or sets the external reference (e.g. a 3rd party id) for this Polygon. Max length 100. */ externalReference: string; } /** Contains information about the type to set for a specified polygon. */ export interface SetPolygonTypeRequest { /** Gets or sets the polygon id. */ polygonId: string; /** Gets or sets the polygon type id. */ polygonTypeId: number; } /** Contains information for the polygon's dimensions to set. */ export interface SetPolygonDimensionsRequest { /** Gets or sets the polygon id. */ polygonId: string; /** Gets or sets the width. */ width: number | null; /** Gets or sets the height. */ height: number | null; /** Sets the values to be targeted at GrossWidth and GrossHeight instead */ isGrossDimension: boolean; } /** COntains the measurementtype to apply and the id of the specified polygon. */ export interface SetPolygonMeasurementTypesRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the id of that polygon's category link. */ measurementTypeSettingId: number; } /** Contains information for the polygon's dimension to set. */ export interface SetPolygonDimensionRequest { /** Gets or sets the polygon id. */ polygonId: string; /** Gets or sets the value. */ value: number | null; } /** Contains the information that is needed to associated a material with a polygon using the materials id. */ export interface SetPolygonMaterialRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the id of that polygon's category link. */ categoryLinkId: number; /** Gets or sets the material id to associate with the polygon's category link. */ materialId: number; } /** Applies the Main Material to the CategoryLink */ export interface ApplyMainMaterialToCategoryLinkRequest { /** The id of the polygon */ polygonId: string; /** the id of the CategoryLink */ categoryLinkId: number; } /** Contains the information that is needed to associated a material with a polygon using the materials code. */ export interface SetPolygonMaterialByCodeRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the id of that polygon's category link. */ categoryLinkId: number; /** Gets or sets the material code to associate with the polygon's category link. */ materialCode: string | null; } /** Contains information about the model to set for a specified polygon. */ export interface SetPolygonModelRequest { /** Gets or sets the polygon id. */ polygonId: string; /** Gets or sets the model id. */ modelId: string; } /** Contains information about the property value to set for a polygon's category link and material configuration. A property means, a property of the product. Like the quantity of the product, or whether a curtain is placed at the left or right side of a window. A CategoryLinkMaterial is an element that is a relation between a CategoryLink and its associated material. */ export interface SetPolygonPropertyValueRequest { /** Gets or sets the id of the category link material property. */ categoryLinkMaterialPropertyId: number; /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the value. */ value: string | null; } /** Contains information about the property value to set for a polygon's category link and material configuration. A property means, a property of the product. Like the quantity of the product, or whether a curtain is placed at the left or right side of a window. A CategoryLinkMaterial is an element that is a relation between a CategoryLink and its associated material. */ export interface SetPolygonPropertyValuesRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Key value pairs for the property values to set on the polygon. The key is a CategoryLinkMaterialPropertyId and the value the selected value for the property */ propertyValues: { [key: string]: string; }; } export interface PolygonType { /** Gets or sets the Id */ id: number; /** Contains all the ids for categories which are valid for this PolygonType */ categoryDimensions: PolygonTypeCategoryDimension[]; /** Contains all the children of this PolygonType */ children: PolygonType[]; /** Gets or sets the unique code for this PolygonType */ code: string | null; /** Gets or sets the Description */ description: string | null; /** Gets or sets the display order */ displayOrder: number | null; /** Gets or sets the full description This is the current PolygonTypes' description plus the descriptions of its parents */ fullDescription: string | null; /** Gets or sets the Height */ height: number | null; /** Gets or sets the image url */ image: string | null; /** Get or sets InterfaceKey */ interfaceKey: string | null; /** Gets or sets IsActive */ isActive: boolean; /** Gets or sets the parent id */ parentId: number | null; /** Gets or sets the Width */ width: number | null; } export interface PolygonTypeCategoryDimension { categoryId: number; height: number | null; width: number | null; } /** Contains for which project to calculate. */ export interface CalculateProjectRequest { /** Id (GUID) of the stored Project. */ projectId: string; } /** Contains information about the request for initial creation of a Project. */ export interface CreateProjectRequest { /** Optional ProjectType.Code to create the Project with. */ projectTypeCode: string | null; /** Optional field which can be used to store 3rd party references (for example an ID) */ externalReference: string | null; } /** Contains very limited info about a Project. */ export interface ProjectInfo { /** The Id of the Project. */ id: string; /** The ProjectType.Code for this Project. */ projectTypeCode: string | null; /** The ProjectType.Id for this Project. */ projectTypeId: number; } /** Contains information to send a Project for manufacturing */ export interface SendProjectRequest extends ProjectRequestBase { /** Optional Customer object. This Customer object should contain information about the consumer. */ customer: Customer | null; } /** Contains information to set the attributes for the specified project. */ export interface SetProjectAttributesRequest { /** Id (GUID) of the stored Project. */ projectId: string; /** The desired attributes for the stored Project. Stored as string key-value pairs. */ attributes: { [key: string]: string; }; } /** Contains information to add the attributes for the specified project. Updates the attribute if it already exists. */ export interface AddProjectAttributesRequest { /** Id (GUID) of the stored Project. */ projectId: string; /** The desired attributes for the stored Project. Stored as string key-value pairs. */ attributes: { [key: string]: string; }; } /** Contains information to delete the attributes for the specified project. */ export interface DeleteProjectAttributesRequest { /** Id (GUID) of the stored Project. */ projectId: string; /** The desired attributes for the stored Project. Stored as string key-value pairs. */ attributes: { [key: string]: string; }; } /** Request to set the Customer for a Project */ export interface SetProjectCustomerRequest extends ProjectRequestBase { /** The unique identifier of the customer. */ customerId: string; } /** Request to set the ExternalReference for a Project */ export interface SetProjectExternalReferenceRequest extends ProjectRequestBase { /** The ExternalReference to be set to the Project. */ externalReference: string; } /** Request to set a description for a Project */ export interface SetProjectDescriptionRequest extends ProjectRequestBase { /** The description to be set to the Project. */ description: string; } /** Request to set a Reference for a Project */ export interface SetProjectReferenceRequest extends ProjectRequestBase { /** The Reference to be set to the Project. */ reference: string; } /** Request to set a delivery address for a Project */ export interface SetDeliveryAddressRequest extends ProjectRequestBase { /** The delivery address to be set to the Project. */ deliveryAddress: AddressInfo; } /** Request to set a delivery address from a Customer to a Project */ export interface SetDeliveryAddressFromCustomerRequest extends ProjectRequestBase { /** Id (GUID) of the Customer. */ customerId: string; } /** Request to set a delivery address for a Project */ export interface SetDeliveryLicenseeRequest extends ProjectRequestBase { /** The delivery address to be set to the Project. */ licenseeCode: string; } /** Contains the id of a project that needs to be stored. */ export interface SaveEntityRequest { /** The of the project that needs to be stored. */ projectId: string; } /** Contains information to set the purchase number for the specified polygon. */ export interface SetPolygonPurchaseNumberRequest { /** Gets or sets the polygon id. */ polygonId: string; /** The desired purchase number for the specified polygon. */ purchaseNumber: string; } /** The identifier of the Polygon with its PurchaseNumber if set */ export interface PolygonPurchaseNumber { /** Gets or sets the polygon id. */ polygonId: string; /** The desired purchase number for the specified polygon. */ purchaseNumber: string | null; } /** Contains information about the request for initial creation of a ProjectSet. */ export interface CreateProjectSetRequest { /** Guid of the Project. */ projectId: string; /** Id of the Set. */ setId: number; /** List of Polygon Ids which are included in the ProjectSet. */ polygonIds: string[] | null; } /** Contains information about the request for updates of a ProjectSet. */ export interface UpdateProjectSetRequest { /** Guid of the Project. */ projectId: string; /** Id of the Set. */ setId: number; /** List of Polygon Ids which are included in the ProjectSet. */ polygonIds: string[] | null; } /** Contains information about the request for deleting a ProjectSet. */ export interface DeleteProjectSetRequest { /** Guid of the Project. */ projectId: string; /** Id of the Set. */ setId: number; } export interface CreateStandalonePolygonRequest { /** Gets or sets the model id to use for the new polygon. */ modelId: string | null; /** Gets or sets the material id to use for the new polygon's main category link material. */ materialId: number | null; /** Gets or sets the polygon type id to use for the new polygon's main category link material. */ polygonTypeId: number | null; /** Gets or sets the material code to use for the new polygon's main category link material. */ materialCode: string | null; /** Gets or sets the width to use for the new polygon. */ width: number | null; /** Gets or sets the height to use for the new polygon. */ height: number | null; } /** Applies multiple actions to the Polygon */ export interface ApplyMultipleActionsRequest { /** The id of the polygon */ polygonId: string; /** Gets or sets the model id. */ modelId: string | null; /** The desired attributes for the stored Polygon. Stored as string key-value pairs. */ attributes: { [key: string]: string; } | null; /** Width of the polygon */ width: ApplyMultipleActionsRequestDimension | null; /** Height of the polygon */ height: ApplyMultipleActionsRequestDimension | null; /** Key value pairs for the property values to set on the polygon. The key is a CategoryLinkMaterialPropertyId and the value the selected value for the property */ propertyValues: { [key: string]: string; } | null; } export interface ApplyMultipleActionsRequestDimension { value: number | null; } /** Response for creating a project for standalone polygons. */ export interface CreateProjectForStandalonePolygonsResponse { /** The Project.Id of the created Project. */ projectId: string; } /** Contains information about the request for initial creation of a Project for Standalone Polygons. */ export interface CreateProjectForStandalonePolygonsRequest { /** Optional ProjectType.Code to create the Project with. */ projectTypeCode: string | null; /** Optional field which can be used to store 3rd party references (for example an ID) */ externalReference: string | null; /** Gets or sets the list of Standalone Polygon IDs to be included in the project. */ standalonePolygonIds: string[] | null; } /** Contains information to set the status of a specific Project */ export interface SetProjectStatusRequest { /** The Id of the Project */ projectId: string; /** The new desired Status for the Project */ status: ProjectStatus; } /** Contains information to set the status of one polygon */ export interface SetPolygonStatusByPolygonIdRequest { /** The Id of the polygon to set the status for */ polygonId: string; /** The status to set for the polygon (using the value of a status) */ statusValue: number; /** The SBN Key to which is only required to set supplier specific statuses */ sbnKey: number | null; /** Sets supplierorder number, only applicable if the licenseeoption UsePolygonStatus is set to false */ supplierOrderNumber: string | null; /** optional remarks to be added to the status, only applicable if the licenseeoption UsePolygonStatus is set to false */ remarks: string | null; /** optional datetime overrule for status */ statusDateTime: string | null; } /** Contains information to set the status of all non-deleted polygons in a specific Project */ export interface SetPolygonStatusByProjectIdRequest { /** The (Guid) Id of the project containing the polygons */ projectId: string; /** The status to set for the polygons (using the value of a status) */ statusValue: number; /** The SBN Key to which is only required to set supplier specific statuses */ sbnKey: number | null; /** Sets supplierorder number, only applicable if the licenseeoption UsePolygonStatus is set to false */ supplierOrderNumber: string | null; /** optional remarks to be added to the status, only applicable if the licenseeoption UsePolygonStatus is set to false */ remarks: string | null; /** optional datetime overrule for status */ statusDateTime: string | null; } /** Contains information for what properties to show on a step for a product. */ export interface WizardStep { /** The id of the Category this step belongs to. This id is equal to the Polygon.ProductCategoryId. */ categoryId: number; /** Description for this step. */ description: string | null; /** Kind of step. */ kind: WizardStepKind; /** Remarks/explanation for this step. */ remarks: string | null; /** DisplayOrder for this step. */ displayOrder: number; /** Optional Code that identifies this step in the wizard */ code: string | null; /** List of items which should be displayed on this step. */ items: WizardStepItem[]; } /** The kind of steps which can be present in a Wizard */ export type WizardStepKind = "Property" | "Material" | "Dimensions" | "Summary"; /** Contains information about which Item to display in which order. */ export interface WizardStepItem { /** Id of the Property which should be displayed. */ categoryLinkPropertyId: number; /** Id of the CategoryLink that can be used for material selection. */ categoryLinkId: number | null; /** CategoryLinkPropertyId of the parent */ parentWizardStepCategoryItemId: number | null; /** DisplayOrder for this Item. */ displayOrder: number; /** Remarks/explanation for this Item. */ remarks: string | null; /** Description for this Item. */ description: string | null; /** Image for this Item. */ image: string | null; /** The kind of this Item, can be used to determine how to render this item. */ kind: WizardStepItemKind; /** Optional custom code to use when the Kind = Custom */ customCode: string | null; /** Optional code identifying which category extra this item refers to when Kind = CategoryExtra. */ categoryExtraCode: string | null; /** Optional children of this item, used when the current Item has Kind = Group */ children: WizardStepItem[]; } /** The kind of a wizard step indicating how it should be displayed */ export type WizardStepItemKind = "Property" | "Group" | "Custom" | "CategoryLink" | "CategoryExtra" | "Model" | "Dimensions" | "Description" | "ContentBlock"; /** Represents a polygon within a wizard interface for configuration of geometric shapes. */ export interface WizardPolygon { /** Unique identifier for the polygon. */ id: string; /** The ID of the wizard this polygon belongs to. */ wizardId: number; /** The display name of the wizard this polygon belongs to. */ wizardName: string | null; /** Indicates whether the polygon configuration is valid according to business rules. */ isValid: boolean; /** Human-readable description of the polygon. */ polygonDescription: string | null; /** The unique identifier for the model associated with this polygon. */ modelId: string | null; /** The lead time of the polygon. */ leadTime: number; /** The width and height dimensions of the polygon. */ dimensions: WizardPolygonDimensions | null; /** Price information for the configured polygon. */ prices: Price | null; /** Collection of configuration steps required to define the polygon. */ steps: WizardPolygonStep[]; /** Polygon attributes, allows for saving custom key-value information. */ attributes: { [key: string]: string; } | null; /** State of the polygon. */ state: PolygonState; /** Messages (warnings, errors, information) associated with this polygon that are not already included in its steps or step items. */ messages: Message[] | null; /** The selected materials for the polygon, based on the CategoryLinks defined for this polygon. */ materials: WizardPolygonMaterial[] | null; } /** Contains the width and height dimensions for a polygon in the wizard. */ export interface WizardPolygonDimensions { /** The width dimension of the polygon. */ width: WizardPolygonDimension | null; /** The height dimension of the polygon. */ height: WizardPolygonDimension | null; } /** Represents a single dimension (width or height) of a polygon with validation ranges and measurement settings. */ export interface WizardPolygonDimension { /** The actual value of the dimension in centimeters. This is the final value used for calculations after any corrections are applied. */ value: number | null; /** The raw measured value before any corrections are applied. Useful for tracking the original input measurement. */ grossValue: number | null; /** Adjustment value that is applied to the GrossValue to calculate the final Value. Can be positive or negative to account for various measurement offsets. */ correction: number | null; /** The minimum allowed value for this dimension. Used for validation to ensure the dimension isn't too small. */ minValue: number | null; /** The maximum allowed value for this dimension. Used for validation to ensure the dimension isn't too large. */ maxValue: number | null; /** References a predefined measurement type setting that defines how this dimension should be measured. Can dictate specific measuring methods or tools that should be used. */ measurementTypeSettingId: number | null; } /** Represents a single step in the wizard polygon configuration process. Each step contains configurable items that the user must complete. */ export interface WizardPolygonStep { /** The display name of this step. */ name: string | null; /** The unique identifier for this wizard step. */ wizardStepId: number; /** The type of step, which determines its behavior and available options. */ kind: WizardStepKind; /** Detailed description of this step to guide the user. */ description: string | null; /** The order in which this step should be displayed within the wizard. */ displayOrder: number; /** A unique code identifier for this step, can be used for programmatic reference. */ code: string | null; /** The collection of configurable items contained within this step. */ items: WizardPolygonStepItem[]; /** Messages (warnings, errors, information) associated with this step. */ messages: Message[]; /** Indicates whether this step is valid - no errors exist in the step or its child items. This is a calculated property that checks all messages and child items recursively. */ isValid: boolean; /** Indicates whether this step is currently enabled in the wizard flow. Disabled steps are typically skipped or shown as inactive in the UI. */ isEnabled: boolean; } /** Represents a configurable item within a wizard step. Items can have child items, creating a hierarchical structure of configuration options. */ export interface WizardPolygonStepItem { /** The unique identifier for this step item. */ wizardStepItemId: number; /** The display name of this item. */ name: string | null; /** Detailed description of this item to guide the user. */ description: string | null; /** URL or reference to an image that represents this item visually. */ image: string | null; /** The type of item, which determines its behavior and available options. */ kind: WizardStepItemKind; /** Link to a category in the product catalog, if this item represents a specific category. */ categoryLink: CategoryLink | null; /** Custom code identifier that can be used for special handling of this item. */ customCode: string | null; /** Optional code identifying which category extra this item refers to when Kind = CategoryExtra. */ categoryExtraCode: string | null; /** Reference to a content block that provides additional information for this wizard step item. */ contentBlockId: string | null; /** Configuration options for this item that the user can select from. */ option: WizardPolygonStepItemOption | null; /** List of applied category extras related to this wizard item. */ appliedExtras: PolygonCategoryExtra[]; /** Child items that are hierarchically nested under this item. The visibility of child items may depend on the selection made for this item. */ children: WizardPolygonStepItem[]; /** Messages (warnings, errors, information) associated with this item. */ messages: Message[]; /** Indicates whether this item is in a valid state according to business rules. */ isValid: boolean; } /** Represents a configurable option within a wizard step item. Defines the type of control and validation rules for user input. */ export interface WizardPolygonStepItemOption { /** The unique identifier for this option. */ id: string | null; /** The display label shown to the user for this option. */ label: string | null; /** The current selected or entered value for this option. */ value: string | null; /** The data type for this option's value (string, number, boolean, etc.). */ dataType: PropertyDataTypeString; /** The type of UI control to use for this option (dropdown, textbox, checkbox, etc.). */ controlType: ControlType; /** The default control type for this option, fallback for Custom control types. */ defaultControlType: ControlType; /** Custom control code, used to show a custom control when Property.ControlKind == ControlKind.Custom. */ customControlCode: string | null; /** Indicates whether a value is required for this option. */ isRequired: boolean; /** Controls the visibility of this option in the UI. */ isVisible: boolean; /** Text to display after the input field (e.g., units like "cm" or "%"). */ displaySuffix: string | null; /** When true, the user cannot modify this option's value. */ isReadonly: boolean; /** Detailed description or help text for this option. */ description: string | null; /** URL or reference to an image that represents this option visually. */ imageUrl: string | null; /** Collection of possible values that can be selected for this option. */ values: WizardPolygonStepItemOptionValue[]; /** Validation rules applied to the value of this option. */ validation: PropertyValidation | null; /** > The Property.Description */ propertyDescription: string | null; /** Optional explanation for this option */ explanation: string | null; } /** Represents a selectable value for an option in a wizard step item. Each option may have multiple possible values that the user can choose from. */ export interface WizardPolygonStepItemOptionValue { /** The display label shown to the user for this value. */ label: string | null; /** The actual value that will be stored when this option is selected. */ value: string | null; /** URL or reference to an image that represents this option value visually. */ imageUrl: string | null; /** When true, this value is not selectable by the user. This is typically used for values that are not compatible with other selected options. */ isDisabled: boolean; /** The price difference (positive or negative) when this specific value is selected. Used to indicate how choosing this option affects the overall price. */ priceDifference: number | null; /** Price for this option value */ price: number | null; /** Reference to a content block that provides additional information for this option value. */ contentBlockId: string | null; /** Additional description or remarks about this option value. */ description: string | null; } /** Represents the material selection for a polygon. */ export interface WizardPolygonMaterial { /** The ID of the category link this material selection belongs to. */ categoryLinkId: number; /** Interface key of the category link. */ interfaceKey: string | null; /** Indicates whether this material is the main material for the polygon. */ isMainMaterial: boolean; /** The selected material for the category link. */ material: Material | null; } /** Contains the information that is needed to associated a material with a polygon using the materials code. */ export interface ApplyCategoryExtraRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the id of that polygon's category extra. */ categoryExtraId: number; /** Gets or sets the material id to add as extra. */ materialId: number; /** Gets or sets the quantity of the material to add as extra. Defaults to 1 if left empty */ quantity: number | null; /** Determines whether the provided material should be merged with an existing material on the same category extra, if any. If true, the quantity of the existing material will be replaced by the provided quantity. If false, a new material will be added even if there is already a material on the same category extra. Defaults to true if left empty. */ merge: boolean; /** Gets or sets a custom description for this PolygonExtra. Only works if Merge is set to false. */ description: string | null; } /** Contains the information needed to remove a previously applied CategoryExtra from a polygon. */ export interface RemoveCategoryExtraRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the unique id of the applied CategoryExtra on the polygon (matches PolygonCategoryExtra.Id, which corresponds to the backend ProjectMaterial.ReferenceId). */ polygonExtraId: string; } /** Contains the information needed to update a previously applied CategoryExtra on a polygon. Only the fields that are provided in the request will be updated; null means "leave unchanged". An empty string for Description is a valid value and will clear the description. */ export interface UpdateCategoryExtraRequest { /** Gets or sets the id of the polygon. */ polygonId: string; /** Gets or sets the unique id of the applied CategoryExtra on the polygon (matches PolygonCategoryExtra.Id, which corresponds to the backend ProjectMaterial.ReferenceId). */ polygonExtraId: string; /** Gets or sets the new quantity for the applied CategoryExtra. When null, the quantity will not be updated. */ quantity: number | null; /** Gets or sets the new description for the applied CategoryExtra. When null, the description will not be updated. An empty string is a valid value and will clear the existing description. */ description: string | null; } export interface FileResponse { data: Blob; status: number; fileName?: string; headers?: { [name: string]: any; }; }