openapi: 3.0.1 info: title: Infigo description: Infigo API Documentation contact: name: Infigo support url: https://infigosoftware.zendesk.com/hc/en-us/requests/new email: infigo@infigosupport.com license: name: Infigo url: https://infigo.net version: '16511' x-logo: https://resources.public.infigosoftware.rocks/infigo/logo/infigo-logo-colour.svg x-providerName: infigo.net x-apisguru-categories: software servers: - url: 'https://infigo.platform.url.com/services/api' description: Infigo paths: /account: description: 'Returns cookie ticket based on Email address passed in. It will also create a new user in the system if it doesnt exist. The cookie name is also passed along. If the cookie name is not passed, the AppHarbor security plug-in is used. **use SSOCookie endpoint instead**' get: tags: - Account summary: Get authentication cookie description: 'Returns cookie ticket based on Email address passed in. It will also create a new user in the system if it doesnt exist. The cookie name is also passed along. If the cookie name is not passed, the AppHarbor security plug-in is used. **use SSOCookie endpoint instead**' operationId: Account_GetAuthenticationCookie parameters: - name: id in: query description: | The customer's email address or GUID. A numeric customer Id or a username is not accepted. required: true schema: type: string description: '' responses: '200': description: The system has successfully generated a token based on the provided information. content: application/json: schema: $ref: '#/components/schemas/InfigoApiCustomerToken' application/xml: schema: $ref: '#/components/schemas/InfigoApiCustomerToken' '404': description: 'The token could not be created: the customer could not be found or created (e.g. registration is prohibited or the identifier is not an email/GUID), or the customer is a system administrator or system account.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true deprecated: true /action/getstatus: description: Gets the status of a thumbnail generation action. The actionId parameter is required to identify the specific action. get: tags: - Action summary: Get thumbnail status description: Gets the status of a thumbnail generation action. The actionId parameter is required to identify the specific action. operationId: Action_GetThumbnailStatus parameters: - name: actionId in: query description: | The unique identifier (GUID) of the action to retrieve status for. required: true schema: type: string description: '' format: uuid responses: '200': description: Record found successfully and details about it content: application/json: schema: $ref: '#/components/schemas/InfigoImmediateActionRecordDisplayModel' '404': description: 'No action with the provided id was found, or it has been removed.' content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetails' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /addressbook: description: This operation returns a list of all address books available within the system. get: tags: - AddressBook summary: List address books description: This operation returns a list of all address books available within the system. operationId: AddressBook_ListAddressBooks responses: '200': description: Successfully retrieved address books content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoApiAddressBookModel' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoApiAddressBookModel' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /addressbook/paginated: description: This operation returns a list of all address books paginated available within the system. get: tags: - AddressBook summary: List address books (paginated) description: This operation returns a list of all address books paginated available within the system. operationId: AddressBook_ListAddressBooksPaginated parameters: - name: PageIndex in: query description: | Zero-based page index for pagination. Default is 0 (first page). schema: type: integer description: | Zero-based page index for pagination. Default is 0 (first page). - name: PerPage in: query description: | Number of items to return per page. Default returns all items. schema: type: integer description: | Number of items to return per page. Default returns all items. - name: OrderBy in: query description: | Field to order results by (e.g., Name, CreatedDate, ModifiedDate). Possible values: `0` - Id - Order by product ID `1` - Name - Order by product name schema: allOf: - $ref: '#/components/schemas/InfigoOrderByFilter' description: | Field to order results by (e.g., Name, CreatedDate, ModifiedDate). Possible values: - `0` - Id - Order by product ID - `1` - Name - Order by product name - name: SortDirection in: query description: | Sort direction for the results - ascending or descending. Possible values: `0` - Asc - Sort in ascending order (A to Z, 0 to 9) `1` - Desc - Sort in descending order (Z to A, 9 to 0) schema: allOf: - $ref: '#/components/schemas/InfigoSortDirection' description: | Sort direction for the results - ascending or descending. Possible values: - `0` - Asc - Sort in ascending order (A to Z, 0 to 9) - `1` - Desc - Sort in descending order (Z to A, 9 to 0) - name: Search in: query description: | Search term to filter address books by name or description. Performs a case-insensitive partial match. schema: type: string description: | Search term to filter address books by name or description. Performs a case-insensitive partial match. nullable: true responses: '200': description: Successfully retrieved address books content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoApiAddressBookModel' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoApiAddressBookModel' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/addressbook/getbyid/{id}': description: This operation retrieves detailed information about a customer based on the provided Customer identifier. get: tags: - AddressBook summary: Get address book description: This operation retrieves detailed information about a customer based on the provided Customer identifier. operationId: AddressBook_GetAddressBook parameters: - name: id in: path description: | The unique identifier of the address book to retrieve. required: true schema: type: integer description: '' responses: '200': description: Details about address book retrieved successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiAddressBookModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiAddressBookModel' '404': description: Address book with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /addressbook/insert: description: Created a new address book with provided details. post: tags: - AddressBook summary: Create address book description: Created a new address book with provided details. operationId: AddressBook_CreateAddressBook requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiAddressBookModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiAddressBookModel' responses: '200': description: Address book was created successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Validation for provided details failed. The body is the comma-separated validation messages. content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '/addressbook/update/{id}': description: Update a existing address book with the provided identifier. post: tags: - AddressBook summary: Update address book description: Update a existing address book with the provided identifier. operationId: AddressBook_UpdateAddressBook parameters: - name: id in: path description: | The unique identifier of the address book to update. required: true schema: type: integer description: '' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiAddressBookModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiAddressBookModel' responses: '200': description: Address book was updated successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Validation for provided details failed. The body is the comma-separated validation messages. content: text/plain: schema: type: string description: '' nullable: true '404': description: Address book with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '/addressbook/delete/{id}': description: Delete a existing address book with the provided identifier. post: tags: - AddressBook summary: Delete address book description: Delete a existing address book with the provided identifier. operationId: AddressBook_DeleteAddressBook parameters: - name: id in: path description: | The unique identifier of the address book to delete. required: true schema: type: integer description: '' responses: '200': description: Address book was deleted successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: Address book with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /addressbook/assign: description: 'Assign address book to a Customer, Customer role or to a Department.' post: tags: - AddressBook summary: Assign address book description: 'Assign address book to a Customer, Customer role or to a Department.' operationId: AddressBook_AssignAddressBook requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoAssignAddressBookModel' application/xml: schema: $ref: '#/components/schemas/InfigoAssignAddressBookModel' responses: '200': description: Address book was assigned successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Validation for provided details failed. The body is the comma-separated validation messages. content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /address/getallbycustomerid: description: 'Retrieves all addresses associated with a specific customer. Includes billing, shipping, and any custom addresses. Use this to populate address selection dropdowns or sync customer addresses with external systems. Related endpoints: GetById, Assign.' get: tags: - Address summary: List customer addresses description: 'Retrieves all addresses associated with a specific customer. Includes billing, shipping, and any custom addresses. Use this to populate address selection dropdowns or sync customer addresses with external systems. Related endpoints: GetById, Assign.' operationId: Address_ListCustomerAddresses parameters: - name: customerId in: query description: | Customer ID to retrieve addresses for. schema: type: integer description: '' - name: id in: query description: | Customer identifier. schema: type: integer description: '' responses: '200': description: Array of customer addresses with full details. content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoApiAddress' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoApiAddress' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/address/getbyid/{id}': description: This operation retrieves detailed information about an address with the provided address identifier. get: tags: - Address summary: Get address description: This operation retrieves detailed information about an address with the provided address identifier. operationId: Address_GetAddress parameters: - name: id in: path description: | The unique identifier of the address to retrieve. required: true schema: type: integer description: '' responses: '200': description: Details about address retrieved successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiAddress' application/xml: schema: $ref: '#/components/schemas/InfigoApiAddress' '404': description: Address with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/address/update/{id}': description: Update a existing address with the provided identifier. post: tags: - Address summary: Update address description: Update a existing address with the provided identifier. operationId: Address_UpdateAddress parameters: - name: id in: path description: | The unique identifier of the address to update. required: true schema: type: integer description: '' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiAddress' application/xml: schema: $ref: '#/components/schemas/InfigoApiAddress' responses: '200': description: Address was updated successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Validation for provided details failed. The body is the comma-separated validation messages. content: text/plain: schema: type: string description: '' nullable: true '404': description: Address with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /address/delete: description: Delete a existing address with the provided identifier. post: tags: - Address summary: Delete address description: Delete a existing address with the provided identifier. operationId: Address_DeleteAddress parameters: - name: id in: query description: | The unique identifier of the address to delete. required: true schema: type: integer description: '' responses: '200': description: Address was deleted successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: Address with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /address/assign: description: 'Assign address to a Customer, Department or to an Address Book.' post: tags: - Address summary: Assign address description: 'Assign address to a Customer, Department or to an Address Book.' operationId: Address_AssignAddress requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoAssignApiAddressModel' application/xml: schema: $ref: '#/components/schemas/InfigoAssignApiAddressModel' responses: '200': description: Address was assigned successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Validation for provided details failed. The body is the comma-separated validation messages. content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /auth: description: This operation retrieves the authentication record associated with a specific API Key get: tags: - Auth summary: Get authentication record description: This operation retrieves the authentication record associated with a specific API Key operationId: Auth_GetAuthenticationRecord parameters: - name: id in: query description: | The API Key of the record. required: true schema: type: string description: '' responses: '200': description: Authentication record content: application/json: schema: $ref: '#/components/schemas/InfigoAuthentication' application/xml: schema: $ref: '#/components/schemas/InfigoAuthentication' '404': description: No Authentication Record found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /batch/get: description: 'Get job details with pagination and filtering. Use ''status'' to filter items by status. Use ''pageIndex'' (0-based, default 0) and ''perPage'' to paginate; ''perPage'' 0 or omitted uses the maximum API page size (ApiMaxPageSize limitation setting). Use ''includePayload'' to include item payloads.' get: tags: - Batch summary: Get batch job description: 'Get job details with pagination and filtering. Use ''status'' to filter items by status. Use ''pageIndex'' (0-based, default 0) and ''perPage'' to paginate; ''perPage'' 0 or omitted uses the maximum API page size (ApiMaxPageSize limitation setting). Use ''includePayload'' to include item payloads.' operationId: Batch_GetBatchJob parameters: - name: Id in: query description: | Should be in GUID format required: true schema: type: string description: | Should be in GUID format nullable: true - name: IncludePayload in: query description: | Include item payloads in response schema: type: boolean description: | Include item payloads in response - name: PageIndex in: query description: '' schema: type: integer description: '' - name: PerPage in: query description: '' schema: type: integer description: '' - name: Status in: query description: | Filter by item status (Pending, Failed, Finished). Omit for all items. Possible values: `5` - Pending - Item is waiting to be processed `10` - Failed - Item processing failed with an error `15` - Finished - Item has been successfully processed schema: allOf: - $ref: '#/components/schemas/InfigoBatchJobItemStatusEnum' description: | Filter by item status (Pending, Failed, Finished). Omit for all items. Possible values: - `5` - Pending - Item is waiting to be processed - `10` - Failed - Item processing failed with an error - `15` - Finished - Item has been successfully processed x-nullable: true responses: '200': description: Batch job details including the requested page of job items and their statuses. content: application/json: schema: $ref: '#/components/schemas/InfigoBatchJobItemsInfoModel' application/xml: schema: $ref: '#/components/schemas/InfigoBatchJobItemsInfoModel' '400': description: 'The filter is invalid (Id missing or not a GUID, negative pageIndex, or perPage above ApiMaxPageSize); the plain-text body lists the validation errors.' content: text/plain: schema: type: string description: '' nullable: true '404': description: Batch job with the specified GUID not found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /batch/enqueue: description: 'Adds batch job items to the processing queue. Supports various job types including stock updates, product imports, and more. Jobs are processed asynchronously and results are sent to the specified callback URL. Maximum 500 jobs per request. Use the Get endpoint with the returned job GUID to monitor progress. Related endpoints: Get.' post: tags: - Batch summary: Enqueue batch description: 'Adds batch job items to the processing queue. Supports various job types including stock updates, product imports, and more. Jobs are processed asynchronously and results are sent to the specified callback URL. Maximum 500 jobs per request. Use the Get endpoint with the returned job GUID to monitor progress. Related endpoints: Get.' operationId: Batch_EnqueueBatch requestBody: description: Batch job configuration including callback URL and list of job items to process. content: application/json: schema: $ref: '#/components/schemas/InfigoApiBatchJobsModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiBatchJobsModel' responses: '200': description: Batch job created successfully. Response includes job GUID for tracking. content: application/json: schema: $ref: '#/components/schemas/InfigoBatchJobCallbackModel' application/xml: schema: $ref: '#/components/schemas/InfigoBatchJobCallbackModel' '400': description: 'Invalid request - callback URL invalid, too many jobs, or validation error.' content: text/plain: schema: type: string description: '' nullable: true '404': description: Job type not found or API authentication invalid. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /budget/adjust: description: 'Adjusts one or more customers'' budgets. Accepts a single object or an array. All entries are validated up front: an invalid entry, an unknown customer, or a batch over the MaxBudgetAdjustmentsPerRequest limitation setting rejects the whole request with 400 and changes nothing. Otherwise each entry is applied and returns its own success/failure result.' post: tags: - Budget summary: Adjust customer budget description: 'Adjusts one or more customers'' budgets. Accepts a single object or an array. All entries are validated up front: an invalid entry, an unknown customer, or a batch over the MaxBudgetAdjustmentsPerRequest limitation setting rejects the whole request with 400 and changes nothing. Otherwise each entry is applied and returns its own success/failure result.' operationId: Budget_AdjustCustomerBudget requestBody: description: Parameter content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoBudgetAdjustmentRequest' description: | Budget adjustments to apply. Accepts a single adjustment object or an array of them. responses: '200': description: Per-item adjustment results. content: application/json: schema: $ref: '#/components/schemas/InfigoBudgetAdjustmentResponse' '400': description: Invalid input content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /budget/getbudgets: description: 'Returns a paginated list of the budgets currently applicable to a customer (Amount, Used, Updated, Created per entry) and the available budget total across all valid budgets. Customer is resolved by Id, Guid, Username, or Email. Paging: PageIndex is 0-based (default 0); PerPage 0 or omitted uses the maximum API page size (ApiMaxPageSize limitation setting); a larger PerPage is rejected with 400.' get: tags: - Budget summary: List customer budgets description: 'Returns a paginated list of the budgets currently applicable to a customer (Amount, Used, Updated, Created per entry) and the available budget total across all valid budgets. Customer is resolved by Id, Guid, Username, or Email. Paging: PageIndex is 0-based (default 0); PerPage 0 or omitted uses the maximum API page size (ApiMaxPageSize limitation setting); a larger PerPage is rejected with 400.' operationId: Budget_ListCustomerBudgets parameters: - name: PageIndex in: query description: '' schema: type: integer description: '' - name: PerPage in: query description: '' schema: type: integer description: '' - name: CustomerId in: query description: | Customer identifier. Resolved by Id, Guid, Username, or Email. schema: type: string description: | Customer identifier. Resolved by Id, Guid, Username, or Email. nullable: true responses: '200': description: The customer's applicable budgets. content: application/json: schema: $ref: '#/components/schemas/InfigoCustomerBudgetsResponse' '400': description: Invalid input content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '404': description: Customer not found content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '500': description: An unexpected error occurred while retrieving the budgets. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /capability/checkstatus: description: 'Check capability status. Depending on the category, a specific context needs to be passed.' post: tags: - Capability summary: Check capability status description: 'Check capability status. Depending on the category, a specific context needs to be passed.' operationId: Capability_CheckCapabilityStatus requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoCheckStatusCapabilityRequest' application/xml: schema: $ref: '#/components/schemas/InfigoCheckStatusCapabilityRequest' responses: '200': description: Setting info based on provided context content: application/json: schema: $ref: '#/components/schemas/InfigoCapabilityResponse' application/xml: schema: $ref: '#/components/schemas/InfigoCapabilityResponse' '400': description: Validation for provided details failed content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /catalog/category: description: This operation returns a list of all root category identifiers available within the system. get: tags: - Catalog summary: List categories description: This operation returns a list of all root category identifiers available within the system. operationId: Catalog_ListCategories responses: '200': description: List of category Ids content: application/json: schema: type: array items: type: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true post: tags: - Catalog summary: Create category description: 'Creates a new category in the product catalog. Categories can be created as root-level categories or as sub-categories by providing a ParentCategoryId. New categories are automatically published and available for product assignment. The category hierarchy supports unlimited nesting depth. Use this to organize your product catalog structure. Related endpoints: CategoryList, CategoryDetails.' operationId: Catalog_CreateCategory requestBody: description: 'Category creation request containing name, description, and optional parent category for hierarchy placement.' content: application/json: schema: $ref: '#/components/schemas/InfigoCreateCategoryRequest' application/xml: schema: $ref: '#/components/schemas/InfigoCreateCategoryRequest' responses: '200': description: The newly created category's unique identifier. content: text/plain: schema: type: integer description: '' application/json: schema: type: integer description: '' '500': description: Server error occurred during category creation. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /catalog/product: description: Returns a list of all product identifier in a category or available in whole the system get: tags: - Catalog summary: List products description: Returns a list of all product identifier in a category or available in whole the system operationId: Catalog_ListProducts parameters: - name: id in: query description: | Category identifier. If set, only products from that category are returned. Otherwise, all products are returned. schema: type: integer description: '' nullable: true - name: groupId in: query description: | Group identifier. If set, only products from that group are returned. Otherwise, all products are returned. schema: type: integer description: '' nullable: true responses: '200': description: List of product ids content: application/json: schema: type: array items: type: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '404': description: No category was found by supplied Category identifier content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/product/{id}': description: Get detailed information for a product within the system get: tags: - Catalog summary: Get product details description: Get detailed information for a product within the system operationId: Catalog_GetProductDetails parameters: - name: id in: path description: | Product id required: true schema: type: integer description: '' - name: thumbnailSize in: query description: | Optional width of the thumbnail image schema: type: integer description: '' nullable: true - name: previewSize in: query description: | Optional width of the preview image schema: type: integer description: '' nullable: true responses: '200': description: Product details content: application/json: schema: $ref: '#/components/schemas/InfigoProductInfo' application/xml: schema: $ref: '#/components/schemas/InfigoProductInfo' '404': description: No product was found by supplied product id content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/product/{id}/delete': description: Deleting a product from the system will not affect any orders that were placed with this product. post: tags: - Catalog summary: Delete product description: Deleting a product from the system will not affect any orders that were placed with this product. operationId: Catalog_DeleteProduct parameters: - name: id in: path description: | Product id required: true schema: type: integer description: '' responses: '204': description: Product deleted with success '404': description: No product was found by supplied product id content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/product/create: description: 'Creates a new product in the catalog. The product can be created from scratch or based on an existing product by providing CreateFromProductId. The request supports setting basic product information (name, description, SKU), pricing, shipping options, quantity constraints, category assignments, product tags, tier pricing, and product attributes. After successful creation, use the UploadPdf endpoint to attach artwork templates. Related endpoints: UpdateProduct, DeleteProduct, ProductDetails, UploadPdf.' post: tags: - Catalog summary: Create product description: 'Creates a new product in the catalog. The product can be created from scratch or based on an existing product by providing CreateFromProductId. The request supports setting basic product information (name, description, SKU), pricing, shipping options, quantity constraints, category assignments, product tags, tier pricing, and product attributes. After successful creation, use the UploadPdf endpoint to attach artwork templates. Related endpoints: UpdateProduct, DeleteProduct, ProductDetails, UploadPdf.' operationId: Catalog_CreateProduct requestBody: description: 'Product creation request containing all product details including name, price, categories, attributes, and tier pricing.' content: application/json: schema: $ref: '#/components/schemas/InfigoCreateProductRequest' application/xml: schema: $ref: '#/components/schemas/InfigoCreateProductRequest' responses: '200': description: 'The product was successfully created, and the product ID will be provided in the response.' content: text/plain: schema: type: integer description: '' application/json: schema: type: integer description: '' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/product/update: description: 'Updates an existing product in the catalog. The ProductId field is required to identify which product to update. Only the provided fields will be updated - omitted fields will retain their current values. This endpoint supports updating basic product information (name, description, SKU), pricing, shipping settings, category assignments, product tags, and product attributes. Changes are applied immediately and affect future orders. Related endpoints: CreateProduct, ProductDetails, DeleteProduct.' post: tags: - Catalog summary: Update product description: 'Updates an existing product in the catalog. The ProductId field is required to identify which product to update. Only the provided fields will be updated - omitted fields will retain their current values. This endpoint supports updating basic product information (name, description, SKU), pricing, shipping settings, category assignments, product tags, and product attributes. Changes are applied immediately and affect future orders. Related endpoints: CreateProduct, ProductDetails, DeleteProduct.' operationId: Catalog_UpdateProduct requestBody: description: Product update request containing ProductId and fields to update. Only specified fields will be modified. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateProductRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateProductRequest' responses: '200': description: The product was updated. The body is the plain-text message "Product updated successfully". content: text/plain: schema: type: string description: '' nullable: true '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/product/{id}/artwork': description: Upload a PDF against an existing product post: tags: - Catalog summary: Upload artwork description: Upload a PDF against an existing product operationId: Catalog_UploadArtwork parameters: - name: id in: path description: | Product id required: true schema: type: integer description: '' requestBody: description: '' content: multipart/form-data: schema: required: - File type: object properties: File: type: string format: binary responses: '200': description: A success flag will be returned to indicate whether the artwork was attached successfully. content: text/plain: schema: type: boolean description: '' application/json: schema: type: boolean description: '' '404': description: No product with provided ID was found content: text/plain: schema: type: string description: '' nullable: true '415': description: File is not a valid PDF content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/product/stock: description: 'Updates the stock quantity for a product. Supports both relative adjustments (add/subtract from current stock) and absolute adjustments (set to specific value) based on the IsAbsoluteAdjustment flag. For products with attribute-based inventory management, you can specify attribute combinations to update specific variant stock. The response includes success status and any error details if the operation fails. Related endpoints: UpdateStockBySku, ProductDetails.' post: tags: - Catalog summary: Update stock description: 'Updates the stock quantity for a product. Supports both relative adjustments (add/subtract from current stock) and absolute adjustments (set to specific value) based on the IsAbsoluteAdjustment flag. For products with attribute-based inventory management, you can specify attribute combinations to update specific variant stock. The response includes success status and any error details if the operation fails. Related endpoints: UpdateStockBySku, ProductDetails.' operationId: Catalog_UpdateStock requestBody: description: 'Stock quantity update request containing ProductId, StockValue, and optional attributes for attribute-based inventory.' content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityModel' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityModel' responses: '200': description: 'Stock update result containing success status and any error information. Validation and server failures are also answered with 200: Success is false and ContextInfo.ErrorList lists the errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultModel' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultModel' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/product/{id}/image': description: Upload a image to an existing product post: tags: - Catalog summary: Upload product image description: Upload a image to an existing product operationId: Catalog_UploadProductImage parameters: - name: id in: path description: | Product Id required: true schema: type: integer description: '' - name: clearExisting in: query description: | Remove all existing images before uploading a new one schema: type: boolean description: '' - name: displayOrder in: query description: | Product image display order schema: type: integer description: '' - name: seoName in: query description: | Image seo name schema: type: string description: '' nullable: true requestBody: description: '' content: multipart/form-data: schema: required: - File type: object properties: File: type: string format: binary responses: '200': description: The image was uploaded and attached to the product. The body is always true; failures are reported with an error status. content: text/plain: schema: type: boolean description: '' application/json: schema: type: boolean description: '' '400': description: The uploaded file is not recognized as an image. content: text/plain: schema: type: string description: '' nullable: true '404': description: No product with the provided ID was found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/category/{id}': description: Get detailed information for a category within the system get: tags: - Catalog summary: Get category details description: Get detailed information for a category within the system operationId: Catalog_GetCategoryDetails parameters: - name: id in: path description: | Category id required: true schema: type: integer description: '' - name: thumbnailSize in: query description: | Optional width of the thumbnail image schema: type: integer description: '' nullable: true - name: previewSize in: query description: | Optional width of the preview image schema: type: integer description: '' nullable: true responses: '200': description: Category details content: application/json: schema: $ref: '#/components/schemas/InfigoCategoryInfo' application/xml: schema: $ref: '#/components/schemas/InfigoCategoryInfo' '404': description: No category with the provided Id was found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/product/{productId}/template': description: This will provide the Artwork file that was uploaded to an Infigo Product. Please note that only Infigo products are currently supported. get: tags: - Catalog summary: Download artwork description: This will provide the Artwork file that was uploaded to an Infigo Product. Please note that only Infigo products are currently supported. operationId: Catalog_DownloadArtwork parameters: - name: productId in: path description: | Id of the Infigo product (the InfigoProduct record, not the catalog product id). required: true schema: type: integer description: '' responses: '200': description: 'The artwork (PDF template) file of the Infigo product, sent as an attachment.' content: application/octet-stream: schema: type: string description: File content as binary data format: binary '404': description: No **Infigo** product with the provided ID was found. The body is empty. content: text/plain: schema: type: string description: '' nullable: true '405': description: The Catfish local sync setting (EnableCatfishLocalSync) is disabled for the storefront. The body is empty. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/product/synclocal: description: 'Working in context of Infigo products, verify whether the products retrieved from the server have the same checksums for artworks as those on the client side.' post: tags: - Catalog summary: Get product template sync status description: 'Working in context of Infigo products, verify whether the products retrieved from the server have the same checksums for artworks as those on the client side.' operationId: Catalog_GetProductTemplateSyncStatus requestBody: description: Parameter content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' description: '' responses: '200': description: Retrieve information about product templates from the server for the specified products. content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/product/syncremote: description: 'Working in context of Infigo products, check whether the client-side template of an Infigo product is newer than the server''s and should be uploaded.' post: tags: - Catalog summary: Check template needs upload description: 'Working in context of Infigo products, check whether the client-side template of an Infigo product is newer than the server''s and should be uploaded.' operationId: Catalog_CheckTemplateNeedsUpload requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' application/xml: schema: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' responses: '200': description: 'True when the client template''s checksum differs from the server''s and the server template was not updated after the client''s timestamp, i.e. the client should upload its template. False when the checksums match, the server template is newer, or Catfish local sync (EnableCatfishLocalSync) is disabled.' content: text/plain: schema: type: boolean description: '' application/json: schema: type: boolean description: '' '404': description: No Infigo product with the supplied ProductId was found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/products/search: description: 'Searches for products in the catalog based on various criteria including keywords, category, price range, and tags. Supports pagination for handling large result sets. Search can be configured to look in product names, descriptions, and SKUs. Results can be sorted by various criteria including price, name, and creation date. Use this endpoint for building product listings, search functionality, and catalog browsing features. Related endpoints: ProductDetails, ProductList, SearchProductsBySKU.' get: tags: - Catalog summary: Search products description: 'Searches for products in the catalog based on various criteria including keywords, category, price range, and tags. Supports pagination for handling large result sets. Search can be configured to look in product names, descriptions, and SKUs. Results can be sorted by various criteria including price, name, and creation date. Use this endpoint for building product listings, search functionality, and catalog browsing features. Related endpoints: ProductDetails, ProductList, SearchProductsBySKU.' operationId: Catalog_SearchProducts parameters: - name: Order in: query description: | The sort order for results. Determines how products are ordered in the response. required: true schema: allOf: - $ref: '#/components/schemas/InfigoProductSortingEnumString' description: | The sort order for results. Determines how products are ordered in the response. - name: Keywords in: query description: | Search for a product keyword, with the default search scope in `Product Name`, and additionally based on the flags from the request in `SKU` and `Description`. schema: type: string description: | Search for a product keyword, with the default search scope in `Product Name`, and additionally based on the flags from the request in `SKU` and `Description`. nullable: true - name: CategoryId in: query description: | The category ID to filter products by. When specified, only products in this category (and optionally its subcategories) are returned. Set to 0 or omit to search all categories. schema: type: integer description: | The category ID to filter products by. When specified, only products in this category (and optionally its subcategories) are returned. Set to 0 or omit to search all categories. nullable: true - name: MinPrice in: query description: | Minimum price filter. Only products with a price greater than or equal to this value will be included in results. schema: type: number description: | Minimum price filter. Only products with a price greater than or equal to this value will be included in results. format: decimal nullable: true - name: MaxPrice in: query description: | Maximum price filter. Only products with a price less than or equal to this value will be included in results. schema: type: number description: | Maximum price filter. Only products with a price less than or equal to this value will be included in results. format: decimal nullable: true - name: SearchOnlyFeaturedProducts in: query description: | When true, only returns products marked as 'featured'. Featured products are typically promoted or highlighted items. Default is false. schema: type: boolean description: | When true, only returns products marked as 'featured'. Featured products are typically promoted or highlighted items. Default is false. nullable: true - name: SearchInDescription in: query description: | When true, includes product descriptions in keyword search matching. Enables finding products where keywords appear in the full description text. Default is true. schema: type: boolean description: | When true, includes product descriptions in keyword search matching. Enables finding products where keywords appear in the full description text. Default is true. nullable: true - name: SearchInSKU in: query description: | When true, includes product SKU codes in keyword search matching. Useful for finding products by their stock keeping unit identifiers. Default is true. schema: type: boolean description: | When true, includes product SKU codes in keyword search matching. Useful for finding products by their stock keeping unit identifiers. Default is true. nullable: true - name: SearchIncludePublished in: query description: | When set to true, this will exclusively return products with the Published flag. Unpublished products are hidden from customers. Default is true. schema: type: boolean description: | When set to true, this will exclusively return products with the Published flag. Unpublished products are hidden from customers. Default is true. nullable: true - name: TwoLetterLanguageIsoCode in: query description: | Perform a product search within the scope of a specific language. Uses ISO 639-1 two-letter language codes (e.g., 'en', 'de', 'fr'). When specified, searches localized product content. schema: type: string description: | Perform a product search within the scope of a specific language. Uses ISO 639-1 two-letter language codes (e.g., 'en', 'de', 'fr'). When specified, searches localized product content. nullable: true - name: ProductTag in: query description: | If this is set, the query will exclusively return products that contain this tag. Product tags are keywords used for categorization and filtering. schema: type: string description: | If this is set, the query will exclusively return products that contain this tag. Product tags are keywords used for categorization and filtering. nullable: true - name: PageIndex in: query description: | The zero-based page index for pagination. First page is 0. Default is 0. schema: type: integer description: | The zero-based page index for pagination. First page is 0. Default is 0. nullable: true - name: PageSize in: query description: | The number of products to return per page. Controls result set size for pagination. Absent or 0 = the platform's maximum API page size. schema: type: integer description: | The number of products to return per page. Controls result set size for pagination. Absent or 0 = the platform's maximum API page size. nullable: true responses: '200': description: Products that meet the specified search criteria. content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoProductInfo' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoProductInfo' description: '' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/products/searchbysku: description: 'Searches for products and product attribute combinations by SKU (Stock Keeping Unit). This endpoint is optimized for inventory systems and integrations that identify products by SKU rather than internal IDs. Supports both exact match and partial match searches based on the ExactMatch flag. The response includes both product-level and attribute combination-level matches, making it useful for products with variant-specific SKUs. Related endpoints: SearchProducts, ProductDetails, UpdateStockBySku.' get: tags: - Catalog summary: Search products by SKU description: 'Searches for products and product attribute combinations by SKU (Stock Keeping Unit). This endpoint is optimized for inventory systems and integrations that identify products by SKU rather than internal IDs. Supports both exact match and partial match searches based on the ExactMatch flag. The response includes both product-level and attribute combination-level matches, making it useful for products with variant-specific SKUs. Related endpoints: SearchProducts, ProductDetails, UpdateStockBySku.' operationId: Catalog_SearchProductsBySku parameters: - name: SKU in: query description: | The SKU (Stock Keeping Unit) to search for. This is the unique product identifier used for inventory tracking and external system integration. required: true schema: type: string description: | The SKU (Stock Keeping Unit) to search for. This is the unique product identifier used for inventory tracking and external system integration. nullable: true - name: Order in: query description: | The sort order for results. Determines how products are ordered in the response. required: true schema: allOf: - $ref: '#/components/schemas/InfigoProductSortingEnumString' description: | The sort order for results. Determines how products are ordered in the response. - name: IncludeAttributeCombination in: query description: | A flag that indicates whether to order based on attribute combinations or not. schema: type: boolean description: | A flag that indicates whether to order based on attribute combinations or not. nullable: true - name: RequireExactMatch in: query description: | If enabled, this will execute an exact search; otherwise, it will perform a partial match. schema: type: boolean description: | If enabled, this will execute an exact search; otherwise, it will perform a partial match. nullable: true - name: PageIndex in: query description: | The zero-based page index for pagination. First page is 0. Default is 0. schema: type: integer description: | The zero-based page index for pagination. First page is 0. Default is 0. nullable: true - name: PageSize in: query description: | The number of results to return per page. Controls result set size for pagination. schema: type: integer description: | The number of results to return per page. Controls result set size for pagination. nullable: true responses: '200': description: Products and attribute combinations that match the specified SKU criteria. Each result includes the entity type (Product or ProductAttributeCombination) and the corresponding data. content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoSearchBySkuResponseModel' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoSearchBySkuResponseModel' description: '' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/product/stockbysku: description: 'Updates stock quantity for a product identified by SKU (Stock Keeping Unit). This endpoint is designed for inventory management integrations where products are tracked by SKU rather than internal product IDs. Supports updating stock for both product-level inventory and attribute combination-specific inventory. The response includes details about which items were updated and any errors encountered. Use this endpoint when integrating with external inventory management systems, warehouse systems, or ERP platforms. Related endpoints: UpdateStockLevel, SearchProductsBySKU.' post: tags: - Catalog summary: Update stock by SKU description: 'Updates stock quantity for a product identified by SKU (Stock Keeping Unit). This endpoint is designed for inventory management integrations where products are tracked by SKU rather than internal product IDs. Supports updating stock for both product-level inventory and attribute combination-specific inventory. The response includes details about which items were updated and any errors encountered. Use this endpoint when integrating with external inventory management systems, warehouse systems, or ERP platforms. Related endpoints: UpdateStockLevel, SearchProductsBySKU.' operationId: Catalog_UpdateStockBySku requestBody: description: Stock update request containing SKU identifier and quantity adjustment details. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStockBySkuRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStockBySkuRequest' responses: '200': description: Stock update response with details of updated items and any errors. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStockBySkuResponseModel' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStockBySkuResponseModel' '500': description: Server error occurred during stock update. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /catalog/v2/product: description: 'Returns a paginated list of products from the catalog. Supports filtering by category and publication status. This V2 endpoint returns enhanced product information including additional metadata compared to the V1 ProductList endpoint. Results can be customized with thumbnail and preview image sizes. Use pagination parameters to efficiently handle large catalogs. Related endpoints: ProductDetails, CreateProduct, UpdateProduct.' get: tags: - CatalogV2 summary: List products description: 'Returns a paginated list of products from the catalog. Supports filtering by category and publication status. This V2 endpoint returns enhanced product information including additional metadata compared to the V1 ProductList endpoint. Results can be customized with thumbnail and preview image sizes. Use pagination parameters to efficiently handle large catalogs. Related endpoints: ProductDetails, CreateProduct, UpdateProduct.' operationId: CatalogV2_ListProducts parameters: - name: PageIndex in: query description: | Zero-based page index for pagination. Default is 0 (first page). schema: type: integer description: | Zero-based page index for pagination. Default is 0 (first page). - name: PerPage in: query description: | Number of items to return per page. Default returns all items. schema: type: integer description: | Number of items to return per page. Default returns all items. - name: CategoryId in: query description: | Filter products by category ID. Only products in the specified category will be returned. schema: type: integer description: | Filter products by category ID. Only products in the specified category will be returned. nullable: true - name: ThumbnailSize in: query description: | Requested size (in pixels) for product thumbnail images. The system will generate or retrieve thumbnails at this dimension. schema: type: integer description: | Requested size (in pixels) for product thumbnail images. The system will generate or retrieve thumbnails at this dimension. nullable: true - name: PreviewSize in: query description: | Requested size (in pixels) for product preview images. The system will generate or retrieve preview images at this dimension. schema: type: integer description: | Requested size (in pixels) for product preview images. The system will generate or retrieve preview images at this dimension. nullable: true - name: Published in: query description: | Filter by publication status. When true, returns only published products. When false, returns only unpublished products. When null, returns all products regardless of publication status. schema: type: boolean description: | Filter by publication status. When true, returns only published products. When false, returns only unpublished products. When null, returns all products regardless of publication status. nullable: true responses: '200': description: Successfully retrieved products with full details including images and attributes. content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoProductInfoV2' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoProductInfoV2' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/v2/product/{id}': description: Get detailed information for a product within the system get: tags: - CatalogV2 summary: Get product description: Get detailed information for a product within the system operationId: CatalogV2_GetProduct parameters: - name: id in: path description: | Product id required: true schema: type: integer description: '' - name: thumbnailSize in: query description: | Optional width of the thumbnail image schema: type: integer description: '' nullable: true - name: previewSize in: query description: | Optional width of the preview image schema: type: integer description: '' nullable: true responses: '200': description: Product details content: application/json: schema: $ref: '#/components/schemas/InfigoProductInfoV2' application/xml: schema: $ref: '#/components/schemas/InfigoProductInfoV2' '404': description: No product was found by supplied product id content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/v2/product/create: description: 'Creates a new product in the catalog using the V2 API format. This endpoint provides enhanced product creation capabilities with improved validation and response models. Supports setting all product properties including pricing, inventory, categories, attributes, and tier pricing in a single request. The response includes the created product ID for subsequent operations. Related endpoints: UpdateProduct, ProductDetails, GetAll.' post: tags: - CatalogV2 summary: Create product description: 'Creates a new product in the catalog using the V2 API format. This endpoint provides enhanced product creation capabilities with improved validation and response models. Supports setting all product properties including pricing, inventory, categories, attributes, and tier pricing in a single request. The response includes the created product ID for subsequent operations. Related endpoints: UpdateProduct, ProductDetails, GetAll.' operationId: CatalogV2_CreateProduct requestBody: description: V2 product creation request with all product details. Includes validation for required fields. content: application/json: schema: $ref: '#/components/schemas/InfigoCreateProductRequestV2' application/xml: schema: $ref: '#/components/schemas/InfigoCreateProductRequestV2' responses: '200': description: 'The product was successfully created, and the product ID will be provided in the response.' content: application/json: schema: $ref: '#/components/schemas/InfigoCreateProductInfoV2' application/xml: schema: $ref: '#/components/schemas/InfigoCreateProductInfoV2' '400': description: 'Validation failed. The body is either a JSON ApiResponseObject listing the validation errors, or a plain-text message (e.g. an invalid PricingScript reference).' content: text/plain: schema: type: string description: '' nullable: true '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/catalog/v2/product/update/{id}': description: 'Updates an existing product in the catalog using the V2 API format. Supports both PUT and POST methods for flexibility. The product ID can be specified either in the URL path (recommended for RESTful clients) or in the request body. Only fields provided in the request will be updated - omitted fields retain their current values. Related endpoints: CreateProduct, ProductDetails, GetAll.' post: tags: - CatalogV2 summary: Update product description: 'Updates an existing product in the catalog using the V2 API format. Supports both PUT and POST methods for flexibility. The product ID can be specified either in the URL path (recommended for RESTful clients) or in the request body. Only fields provided in the request will be updated - omitted fields retain their current values. Related endpoints: CreateProduct, ProductDetails, GetAll.' operationId: CatalogV2_UpdateProduct parameters: - name: id in: path description: | Product ID to update. Takes precedence over ProductId in the request body if both are provided. required: true schema: type: integer description: '' requestBody: description: V2 product update request containing the fields to modify. ProductId can be specified here if not in URL. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateProductRequestV2' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateProductRequestV2' responses: '200': description: 'The product was successfully updated, and the product ID will be provided in the response.' content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateProductInfoV2' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateProductInfoV2' '400': description: 'Validation failed. The body is either a JSON ApiResponseObject listing the validation errors, or a plain-text message (e.g. an invalid PricingScript reference).' content: text/plain: schema: type: string description: '' nullable: true '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /customer/migrate: description: 'Migrates all data (basket, saved projects, images) for a specific user A (usually a guest) to another existing user B.' post: tags: - Customer summary: Migrate customer data description: 'Migrates all data (basket, saved projects, images) for a specific user A (usually a guest) to another existing user B.' operationId: Customer_MigrateCustomerData parameters: - name: fromCustomer in: query description: | The user identifier (Guid) of the source user required: true schema: type: string description: '' format: uuid - name: toCustomer in: query description: | The user identifier (Guid) of the target user required: true schema: type: string description: '' format: uuid responses: '204': description: Indicates the successful migration of customer data. '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /customer: description: This operation retrieves detailed information about a customer based on the provided Customer identifier. get: tags: - Customer summary: Get customer description: This operation retrieves detailed information about a customer based on the provided Customer identifier. operationId: Customer_GetCustomer parameters: - name: id in: query description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. required: true schema: type: string description: '' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoApiCustomer' application/xml: schema: $ref: '#/components/schemas/InfigoApiCustomer' '404': description: Indicates that the requested customer could not be found in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /customer/: description: 'Creates a new customer or updates an existing customer record. The operation is idempotent - if a customer with the provided email or username exists, their record is updated; otherwise, a new customer is created. Supports setting all customer properties including profile information, addresses, and custom attributes. Related endpoints: Get, Delete, CustomerList.' post: tags: - Customer summary: Create or update customer description: 'Creates a new customer or updates an existing customer record. The operation is idempotent - if a customer with the provided email or username exists, their record is updated; otherwise, a new customer is created. Supports setting all customer properties including profile information, addresses, and custom attributes. Related endpoints: Get, Delete, CustomerList.' operationId: Customer_CreateOrUpdateCustomer requestBody: description: Customer details for creation or update. Email or Username is used to identify existing customers. content: application/json: schema: $ref: '#/components/schemas/InfigoApiCustomer' application/xml: schema: $ref: '#/components/schemas/InfigoApiCustomer' responses: '200': description: Customer created or updated successfully. Response includes CustomerId. content: application/json: schema: $ref: '#/components/schemas/InfigoCreateOrUpdateCustomerApiResponse' application/xml: schema: $ref: '#/components/schemas/InfigoCreateOrUpdateCustomerApiResponse' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true get: tags: - Customer summary: List customers description: 'Returns a list of all customer IDs in the system. Use this endpoint to enumerate customers for batch operations, reporting, or synchronization with external systems. Each ID can be used with the Get endpoint to retrieve full customer details. Related endpoints: Get, Post, Delete.' operationId: Customer_ListCustomers responses: '200': description: Array of all customer IDs in the system. content: application/json: schema: type: array items: type: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/customer/delete/{customerId}': description: Delete an existing Customer record post: tags: - Customer summary: Delete customer description: Delete an existing Customer record operationId: Customer_DeleteCustomer parameters: - name: customerId in: path description: | The customer identifier, passed in the query string. It can be the customer's numeric `Id`, `Guid`, `Username` or `Email`. required: true schema: type: string description: '' responses: '200': description: Indicates that the customer record has been successfully deleted. content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: Indicates that the requested customer could not be found in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/customer/updaterewardpoints/{customerId}': description: 'Adjusts the reward points balance for a customer. Supports both relative adjustments (add/subtract points) and absolute adjustments (set to specific value). Useful for loyalty program integrations, manual corrections, or promotional point awards. Requires the Reward Points feature to be enabled in system settings. Related endpoints: Get.' post: tags: - Customer summary: Update reward points description: 'Adjusts the reward points balance for a customer. Supports both relative adjustments (add/subtract points) and absolute adjustments (set to specific value). Useful for loyalty program integrations, manual corrections, or promotional point awards. Requires the Reward Points feature to be enabled in system settings. Related endpoints: Get.' operationId: Customer_UpdateRewardPoints parameters: - name: customerId in: path description: | The customer identifier, passed in the query string. It can be the customer's numeric `Id`, `Guid`, `Username` or `Email`. required: true schema: type: string description: '' requestBody: description: 'Reward points adjustment details including point value, adjustment type (absolute/relative), and optional message.' content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateRewardPoints' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateRewardPoints' responses: '200': description: Reward points successfully updated. content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: Customer not found or Reward Points feature is disabled. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /customer/v2: description: 'Returns a paginated list of customer details with optional filtering by roles, status, activity dates, and creation dates.' get: tags: - CustomerV2 summary: List customers description: 'Returns a paginated list of customer details with optional filtering by roles, status, activity dates, and creation dates.' operationId: CustomerV2_ListCustomers parameters: - name: PageIndex in: query description: '' schema: type: integer description: '' - name: PerPage in: query description: '' schema: type: integer description: '' - name: Role in: query description: | Filter by customer roles (system names). Defaults to 'Registered' if not specified. Multiple roles can be specified. schema: type: array items: type: string description: '' nullable: true description: | Filter by customer roles (system names). Defaults to 'Registered' if not specified. Multiple roles can be specified. nullable: true - name: Status in: query description: | Filter by customer status. Multiple statuses can be specified. Possible values: `0` - NotActive - Account is deactivated; customer cannot log in or access the storefront. `1` - Active - Account is active; customer can log in and place orders normally. `2` - Invited - Customer has been invited but has not yet completed account activation. schema: type: array items: $ref: '#/components/schemas/InfigoApiCustomerStatus' description: | Filter by customer status. Multiple statuses can be specified. nullable: true - name: LastActivityFrom in: query description: | Filter customers with last activity date on or after this date. schema: type: string description: | Filter customers with last activity date on or after this date. format: date-time nullable: true - name: LastActivityTo in: query description: | Filter customers with last activity date on or before this date. schema: type: string description: | Filter customers with last activity date on or before this date. format: date-time nullable: true - name: CreatedFrom in: query description: | Filter customers created on or after this date. schema: type: string description: | Filter customers created on or after this date. format: date-time nullable: true - name: CreatedTo in: query description: | Filter customers created on or before this date. schema: type: string description: | Filter customers created on or before this date. format: date-time nullable: true - name: OrderDirection in: query description: | Customers sorting direction. Defaults to 'Asc'. Possible values: `0` - Asc - Sort results in ascending order. `1` - Desc - Sort results in descending order. schema: allOf: - $ref: '#/components/schemas/InfigoApiOrderDirection' description: | Customers sorting direction. Defaults to 'Asc'. Possible values: - `0` - Asc - Sort results in ascending order. - `1` - Desc - Sort results in descending order. x-nullable: true - name: OrderBy in: query description: | Customers sorting by column. Defaults to 'Id'. Possible values: `0` - Id - Sort by customer identifier. `1` - FirstName - Sort by customer first name. `2` - LastName - Sort by customer last name. `3` - Email - Sort by customer email address. schema: allOf: - $ref: '#/components/schemas/InfigoApiCustomerOrderBy' description: | Customers sorting by column. Defaults to 'Id'. Possible values: - `0` - Id - Sort by customer identifier. - `1` - FirstName - Sort by customer first name. - `2` - LastName - Sort by customer last name. - `3` - Email - Sort by customer email address. x-nullable: true - name: IncludeBudgetData in: query description: | When true, each returned customer includes their available budget total; when omitted or false the field is null and the per-customer budget calculation is skipped. Defaults to false. schema: type: boolean description: | When true, each returned customer includes their available budget total; when omitted or false the field is null and the per-customer budget calculation is skipped. Defaults to false. nullable: true responses: '200': description: Successfully retrieved customers content: application/json: schema: $ref: '#/components/schemas/InfigoApiPagedResult_1_ApiCustomer' '400': description: Invalid input content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '500': description: The customers could not be retrieved due to a server error. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /download: description: This operation returns the download location based on the provided ID. get: tags: - Download summary: Download file description: This operation returns the download location based on the provided ID. operationId: Download_DownloadFile parameters: - name: id in: query description: | Download Id (Guid) required: true schema: type: string description: '' responses: '200': description: File download content: application/octet-stream: schema: type: string description: File content as binary data format: binary '404': description: Indicates that the requested download location could not be found in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /editor/touchjob: description: 'This endpoint is designed to mark a job as used or touched, adding the current timestamp. This action prevents the job from being cleaned up or removed immediately. It can be useful when you want to retain a job for an indefinite period.' post: tags: - Editor summary: Touch job description: 'This endpoint is designed to mark a job as used or touched, adding the current timestamp. This action prevents the job from being cleaned up or removed immediately. It can be useful when you want to retain a job for an indefinite period.' operationId: Editor_TouchJob parameters: - name: id in: query description: | The orderline item identifier can take one of two values: - `Shopping Cart ID`: This represents the identifier associated with a shopping cart item. - `Job ID`: This represents the identifier associated with a job. schema: type: string description: '' nullable: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoTouchJobResponseModel' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /editor/linkfor: description: 'This function generates a link for embedding the editor into an iFrame. The generated link authenticates the user and has a short-lived validity period. You must specify the product ID, and optionally, the orderline item ID if you intend to edit an existing product (such as a basket item or saved project). Please check the Infigo Iframe integration (https://wiki-iframe.private.infigosoftware.rocks/) for more information' get: tags: - Editor summary: Get editor link description: 'This function generates a link for embedding the editor into an iFrame. The generated link authenticates the user and has a short-lived validity period. You must specify the product ID, and optionally, the orderline item ID if you intend to edit an existing product (such as a basket item or saved project). Please check the Infigo Iframe integration (https://wiki-iframe.private.infigosoftware.rocks/) for more information' operationId: Editor_GetEditorLink parameters: - name: id in: query description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. required: true schema: type: string description: '' format: uuid - name: orderlineItemId in: query description: | When you intend to edit an existing item, such as a basket or a saved project, you must specify the item's identifier here. schema: type: string description: '' nullable: true - name: quantity in: query description: | This field represents the quantity of the item. If no value is provided, the default quantity is set to 1. schema: type: integer description: '' nullable: true - name: errorUrl in: query description: | Specify the URL for the iFrame to display in case of an authentication error. schema: type: string description: '' nullable: true - name: embeddedMode in: query description: | Use this flag to determine whether the editor should operate in embedded mode. The specific mode depends on the editor being used. If uncertain, leave unset to use the most suitable default mode. schema: type: boolean description: '' nullable: true - name: embeddedOperationMode in: query description: | Use this flag to determine whether the editor should run in embedded operation mode. The specific operation mode varies depending on the editor in use. If you're unsure, it's advisable to leave this flag unset to utilize the most suitable default mode. Note that setting `embbedOperationMode` to true is necessary for the editor ('ME') to display a save button. schema: type: boolean description: '' nullable: true - name: productSku in: query description: | Use the Product SKU when you need to target a product based on its SKU rather than its Product ID. schema: type: string description: '' nullable: true - name: productId in: query description: | The Product ID is used when no SKU is provided. It is required when neither an SKU nor an orderlineitemId is provided. schema: type: integer description: '' nullable: true - name: mode in: query description: | The editor mode for multipart products. Options: Normal, Iframe, EmbeddedIframe. Possible values: `0` - Normal `1` - Iframe `2` - EmbeddedIframe schema: allOf: - $ref: '#/components/schemas/InfigoMultipartEditorMode' description: | Possible values: - `0` - Normal - `1` - Iframe - `2` - EmbeddedIframe x-nullable: true - name: enableEditOptions in: query description: | When enabled in iframe mode, shows an 'Edit Options' button allowing users to return to the product page to modify attribute selections while preserving the job. schema: type: boolean description: '' nullable: true - name: hideElements in: query description: | Array of UI element names to hide in the editor. Valid values: 'addToBasket'. This allows external systems to customize the editor UI based on their integration needs. schema: type: array items: type: string description: '' nullable: true description: | Array of UI element names to hide in the editor. Valid values: 'addToBasket'. This allows external systems to customize the editor UI based on their integration needs. nullable: true responses: '200': description: This link is used to embed the editor within an iFrame content: text/plain: schema: type: string description: '' nullable: true application/json: schema: type: string description: '' nullable: true '400': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true '404': description: This indicates that the product with the supplied ID or SKU or customer with the supplied ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /editor/duplicatejob: description: 'Using this operation, you can create a one-to-one clone of an existing job, and a new job ID will be provided as a result.' get: tags: - Editor summary: Duplicate job description: 'Using this operation, you can create a one-to-one clone of an existing job, and a new job ID will be provided as a result.' operationId: Editor_DuplicateJob parameters: - name: jobId in: query description: | The Job ID with Prefix is used to identify supported Dynamic and Infigo Products. For example, you may use the prefix **d50** to specify a Job ID. required: true schema: type: string description: '' - name: addInBasketStatus in: query description: | This flag controls whether the in-basket status should be added to the duplicated job. schema: type: boolean description: '' responses: '200': description: 'After the operation, a new Job ID will be provided as the result.' content: text/plain: schema: type: string description: '' nullable: true application/json: schema: type: string description: '' nullable: true '400': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true '404': description: This indicates that the supplied job ID could not be located within the Infigo system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /editor/createjob: description: Creates a new job for a product using variable data from an existing MegaEdit job. The returned editor link is for the specific job created. post: tags: - Editor summary: Create job description: Creates a new job for a product using variable data from an existing MegaEdit job. The returned editor link is for the specific job created. operationId: Editor_CreateJob requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiEditorLinkToRequest' responses: '200': description: Job created successfully. content: application/json: schema: $ref: '#/components/schemas/InfigoApiEditorResult' '400': description: 'Validation failed (e.g. unknown customer, product or base job). Errors lists the failing fields.' content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetails' '500': description: The job could not be created due to a server error. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetails' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /v2/editor/duplicatejob: description: 'Creates an exact copy of an existing job including all variable data, artwork, and customizations. The duplicated job receives a new unique ID while preserving all design elements from the original. Useful for creating variations of existing orders or allowing customers to reorder with modifications. This V2 endpoint returns a structured response model with additional metadata compared to the V1 DuplicateJob endpoint.' post: tags: - EditorV2 summary: Duplicate job description: 'Creates an exact copy of an existing job including all variable data, artwork, and customizations. The duplicated job receives a new unique ID while preserving all design elements from the original. Useful for creating variations of existing orders or allowing customers to reorder with modifications. This V2 endpoint returns a structured response model with additional metadata compared to the V1 DuplicateJob endpoint.' operationId: EditorV2_DuplicateJob requestBody: description: Duplication request containing the source job ID and optional configuration for the new job. content: application/json: schema: $ref: '#/components/schemas/InfigoDuplicateJobRequest' responses: '200': description: Job duplicated successfully. Response includes the new job ID. content: application/json: schema: $ref: '#/components/schemas/InfigoJobDuplicatedResponse' '400': description: 'Validation failed, including when the source job ID is not found or cannot be duplicated. Errors lists the failing fields.' content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetails' '500': description: The job could not be duplicated due to a server error. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetails' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '/hotfolder/{id}': description: This operation retrieves the active hotfolders that are visible via the API for a specific print location id. get: tags: - HotFolder summary: List hot folders by print location description: This operation retrieves the active hotfolders that are visible via the API for a specific print location id. operationId: HotFolder_ListHotFoldersByPrintLocation parameters: - name: id in: path description: | The numeric (integer) print location id, e.g. "3". A non-integer value is rejected with 403. required: true schema: type: string description: '' responses: '200': description: 'The active, API-visible hotfolders of the print location.' content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoHotFolder' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoHotFolder' description: '' '404': description: This signifies that there are no active hotfolders available for the requested print location. content: text/plain: schema: type: string description: '' nullable: true '403': description: Either authentication failed or the provided print location id is not a valid integer. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /hotfolder: description: This operation retrieves a list of all active hotfolders that are marked to be visible via the API. get: tags: - HotFolder summary: List hot folders description: This operation retrieves a list of all active hotfolders that are marked to be visible via the API. operationId: HotFolder_ListHotFolders responses: '200': description: 'All active, API-visible hotfolders.' content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoHotFolder' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoHotFolder' description: '' '404': description: No active hotfolders visible via the API were found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /infigoorderproduct/updatestatus: description: 'This operation allows you to update the status of an InfigoOrderProduct record by specifying its ID. JobType selects the product type (v, s, m, d, or g for a Symphony item group, which only records OutputDownloaded); any other JobType, or a status the product type does not record, is a no-op that still returns 204.' post: tags: - InfigoOrderProduct summary: Update order product status description: 'This operation allows you to update the status of an InfigoOrderProduct record by specifying its ID. JobType selects the product type (v, s, m, d, or g for a Symphony item group, which only records OutputDownloaded); any other JobType, or a status the product type does not record, is a no-op that still returns 204.' operationId: InfigoOrderProduct_UpdateOrderProductStatus requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoOrderProduct' application/xml: schema: $ref: '#/components/schemas/InfigoOrderProduct' responses: '204': description: Status update successful '404': description: The status could not be updated (e.g. the record with the given id was not found). content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /job: description: 'This will bring the next available item to the the download queue, the return will have a unique download Id.' get: tags: - Job summary: Get next job description: 'This will bring the next available item to the the download queue, the return will have a unique download Id.' operationId: Job_GetNextJob parameters: - name: id in: query description: | The numeric (integer) id of the hot folder whose queue to read, e.g. "12". Use List hot folders to find hot folder ids. required: true schema: type: string description: '' responses: '200': description: 'The next job awaiting processing in the queue, or null when no job is queued for the hot folder.' content: application/json: schema: allOf: - $ref: '#/components/schemas/InfigoJob' nullable: true application/xml: schema: allOf: - $ref: '#/components/schemas/InfigoJob' nullable: true x-nullable: true '404': description: The job queue could not be read for the given hot folder (e.g. the id is not a numeric hot folder id or no such hot folder exists). content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /job/: description: 'Updates the status of an existing job in the download queue. Use this to mark jobs as completed, failed, or in progress. Job status updates are used to track processing progress and trigger cleanup of completed downloads. Related endpoints: Get.' post: tags: - Job summary: Update job description: 'Updates the status of an existing job in the download queue. Use this to mark jobs as completed, failed, or in progress. Job status updates are used to track processing progress and trigger cleanup of completed downloads. Related endpoints: Get.' operationId: Job_UpdateJobStatus requestBody: description: Job status update containing the download ID and new status value. content: application/json: schema: $ref: '#/components/schemas/InfigoSetJobModel' application/xml: schema: $ref: '#/components/schemas/InfigoSetJobModel' responses: '204': description: Job status updated successfully. '404': description: Job with the specified download ID not found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /misexternalref/updateexternalid: description: This operation updates ExternalId of a MisExternalRef post: tags: - MisExternalRef summary: Update external ID description: This operation updates ExternalId of a MisExternalRef operationId: MisExternalRef_UpdateExternalId requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateMisExternalRefRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateMisExternalRefRequest' responses: '200': description: ExternalId was updated successfully content: text/plain: schema: type: string description: '' nullable: true application/json: schema: type: string description: '' nullable: true '400': description: Validation for provided details failed content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '404': description: No order line was found for the supplied job id (EntityType JobId). The body is a JSON-encoded string message. content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '/order/list/{id}': description: This operation allows you to obtain a list of order IDs associated with the specified user. get: tags: - Order summary: List order IDs by customer description: This operation allows you to obtain a list of order IDs associated with the specified user. operationId: Order_ListOrderIdsByCustomer parameters: - name: id in: path description: | Customer guid required: true schema: type: string description: '' format: uuid - name: filterByStatus in: query description: | Optional order status filter. Omit to return orders of every status. Possible values: `10` - Open - Order created but payment not yet received. `20` - Paid - Payment received and confirmed. `30` - Shipped - Order has been shipped to the customer. `40` - Complete - Order fully processed and closed. `50` - Cancelled - Order was cancelled before completion. `60` - Delivered - Order delivered to the customer. schema: allOf: - $ref: '#/components/schemas/InfigoOrderStatus' description: | Possible values: - `10` - Open - Order created but payment not yet received. - `20` - Paid - Payment received and confirmed. - `30` - Shipped - Order has been shipped to the customer. - `40` - Complete - Order fully processed and closed. - `50` - Cancelled - Order was cancelled before completion. - `60` - Delivered - Order delivered to the customer. x-nullable: true responses: '200': description: Order ids content: application/json: schema: type: array items: type: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '404': description: This message indicates that the customer with the provided GUID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /order/list/: description: 'Retrieves a list of all order IDs in the system. Supports filtering by order status and date range. Use this endpoint for order management dashboards, reporting, or batch processing workflows. Related endpoints: Detail, ListByCustomer.' get: tags: - Order summary: Search orders description: 'Retrieves a list of all order IDs in the system. Supports filtering by order status and date range. Use this endpoint for order management dashboards, reporting, or batch processing workflows. Related endpoints: Detail, ListByCustomer.' operationId: Order_SearchOrders parameters: - name: filterByStatus in: query description: | Filter orders by status. Options: Open (not complete/cancelled), Paid, Shipped, Delivered, Complete, Cancelled. Omit to return orders of every status. Possible values: `10` - Open - Order created but payment not yet received. `20` - Paid - Payment received and confirmed. `30` - Shipped - Order has been shipped to the customer. `40` - Complete - Order fully processed and closed. `50` - Cancelled - Order was cancelled before completion. `60` - Delivered - Order delivered to the customer. schema: $ref: '#/components/schemas/InfigoOrderStatus' - name: orderedAfter in: query description: | Return only orders placed after this UTC datetime. Format: ISO 8601. schema: type: string description: '' format: date-time nullable: true - name: orderedBefore in: query description: | Return only orders placed before this UTC datetime. Format: ISO 8601. schema: type: string description: '' format: date-time nullable: true responses: '200': description: Array of order IDs matching the filter criteria. content: application/json: schema: type: array items: type: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/detail/{id}': description: Retrieve order details by id get: tags: - Order summary: Get order description: Retrieve order details by id operationId: Order_GetOrder parameters: - name: id in: path description: | Order id required: true schema: type: integer description: '' responses: '200': description: Order details content: application/json: schema: $ref: '#/components/schemas/InfigoOrderItem' application/xml: schema: $ref: '#/components/schemas/InfigoOrderItem' '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/setpurchaseordernumber/{id}': description: This operation allows you to modify the optional purchase order number associated with a specific order ID. post: tags: - Order summary: Set purchase order number description: This operation allows you to modify the optional purchase order number associated with a specific order ID. operationId: Order_SetPurchaseOrderNumber parameters: - name: id in: path description: | Order id required: true schema: type: integer description: '' - name: purchaseOrderNumber in: query description: | The new purchase order number required: true schema: type: string description: '' responses: '204': description: Indicates that order was successful updated in Infigo '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/settrackingnumber/{id}': description: This operation allows you to update the tracking number ID for a specific order. post: tags: - Order summary: Set tracking number description: This operation allows you to update the tracking number ID for a specific order. operationId: Order_SetTrackingNumber parameters: - name: id in: path description: | Order id required: true schema: type: integer description: '' - name: trackingNumber in: query description: | New tracking number schema: type: string description: '' nullable: true responses: '204': description: Indicates that order was successful updated in Infigo '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/orderstatus/{id}': description: 'This operation allows you to update the status of an order. Supported target statuses: Paid, Shipped, Delivered, Complete, Cancelled. If the order''s current state does not allow the requested transition (e.g. it is already cancelled), nothing is changed and the call still succeeds with 204.' post: tags: - Order summary: Update order status description: 'This operation allows you to update the status of an order. Supported target statuses: Paid, Shipped, Delivered, Complete, Cancelled. If the order''s current state does not allow the requested transition (e.g. it is already cancelled), nothing is changed and the call still succeeds with 204.' operationId: Order_UpdateOrderStatus parameters: - name: id in: path description: | Order id required: true schema: type: integer description: '' - name: newStatus in: query description: | New status of the order Possible values: `10` - Open - Order created but payment not yet received. `20` - Paid - Payment received and confirmed. `30` - Shipped - Order has been shipped to the customer. `40` - Complete - Order fully processed and closed. `50` - Cancelled - Order was cancelled before completion. `60` - Delivered - Order delivered to the customer. required: true schema: allOf: - $ref: '#/components/schemas/InfigoOrderStatus' description: | Order lifecycle status. Progresses forward only (Open→Paid→Shipped→Complete) or to Cancelled. Possible values: - `10` - Open - Order created but payment not yet received. - `20` - Paid - Payment received and confirmed. - `30` - Shipped - Order has been shipped to the customer. - `40` - Complete - Order fully processed and closed. - `50` - Cancelled - Order was cancelled before completion. - `60` - Delivered - Order delivered to the customer. responses: '204': description: Indicates that order was successful updated in Infigo '400': description: Shipping the order failed (newStatus Shipped); the plain-text body lists the shipping errors. content: text/plain: schema: type: string description: '' nullable: true '403': description: 'The requested status cannot be set through the API (Open, or a value that is not a defined status); plain-text body "Invalid new order status {newStatus}". Also returned when authorization fails.' content: text/plain: schema: type: string description: '' nullable: true '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/reorder/{id}': description: 'Recreates an existing order by adding all of its items to the customer''s shopping basket. This does not immediately place a new order - items are added to the basket for review and checkout. Useful for repeat orders or order duplication scenarios. The original order remains unchanged. Related endpoints: PlaceOrder, Detail.' post: tags: - Order summary: Reorder description: 'Recreates an existing order by adding all of its items to the customer''s shopping basket. This does not immediately place a new order - items are added to the basket for review and checkout. Useful for repeat orders or order duplication scenarios. The original order remains unchanged. Related endpoints: PlaceOrder, Detail.' operationId: Order_Reorder parameters: - name: id in: path description: | The ID of the existing order to recreate. Use List or ListByCustomer to find order IDs. required: true schema: type: integer description: '' - name: customerId in: query description: | Optional customer ID to place the reorder for. If not specified, uses the original order's customer. Allows placing repeat orders for different customers. schema: type: integer description: '' nullable: true responses: '204': description: Order items have been successfully added to the basket. Customer can proceed to checkout. '400': description: 'Order cannot be reordered under the store''s reorder rules, e.g. because a job''s output file has been replaced (plain-text reason).' content: text/plain: schema: type: string description: '' nullable: true '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /order/placeorder: description: 'This action initiates the placement of a new order. All items in the current shopping basket of the user will be included in the order. Optionally, you can specify a shipping and billing address, as well as a shipping method, to be used for this order.' post: tags: - Order summary: Place order description: 'This action initiates the placement of a new order. All items in the current shopping basket of the user will be included in the order. Optionally, you can specify a shipping and billing address, as well as a shipping method, to be used for this order.' operationId: Order_PlaceOrder parameters: - name: id in: query description: | Customer guid required: true schema: type: string description: '' format: uuid requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoPlaceOrderHelper' application/xml: schema: $ref: '#/components/schemas/InfigoPlaceOrderHelper' responses: '200': description: The order has been successfully created; the body is the id of the new order. content: text/plain: schema: type: integer description: '' application/json: schema: type: integer description: '' '403': description: This message indicates that there are no items in the basket for the requested user. content: text/plain: schema: type: string description: '' nullable: true '404': description: Indicates that the requested customer could not be found in the system. content: text/plain: schema: type: string description: '' nullable: true '409': description: The order could not be placed; the plain-text body lists the placement errors. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/invoice/{id}': description: This operation allows you to obtain the invoice for a specific order. get: tags: - Order summary: Get invoice description: This operation allows you to obtain the invoice for a specific order. operationId: Order_GetInvoice parameters: - name: id in: path description: | Order id required: true schema: type: integer description: '' responses: '200': description: Invoice PDF content: application/octet-stream: schema: type: string description: File content as binary data format: binary '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/order/pdfpackagingslip/{id}': description: This operation allows you to obtain the PDF packaging slip for a specific order. post: tags: - Order summary: Get packing slip PDF description: This operation allows you to obtain the PDF packaging slip for a specific order. operationId: Order_GetPackingSlipPdf parameters: - name: id in: path description: | The unique identifier of the order to generate a packaging slip for. required: true schema: type: integer description: '' requestBody: description: 'This option allows you to enforce the template to populate details from a defined collection, where the key corresponds to the field names. If not enforced, the template will fill details based on the specified order.' content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: '' responses: '200': description: PDF packaging slip content: application/octet-stream: schema: type: string description: File content as binary data format: binary '404': description: Indicates that the order with the provided ID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /order/recordorder: description: 'Creates and submits a complete order in a single API call. This is the primary endpoint for external system integrations that need to place orders programmatically (ERP, MIS, e-commerce platforms). Supports full order specification including customer details, line items with products and customizations, addresses, payment information, and shipping method. For complex integrations, use ValidatePrePlaceOrder first to validate the order before submission. Related endpoints: ValidatePrePlaceOrder, Detail, Invoice.' post: tags: - Order summary: Record order description: 'Creates and submits a complete order in a single API call. This is the primary endpoint for external system integrations that need to place orders programmatically (ERP, MIS, e-commerce platforms). Supports full order specification including customer details, line items with products and customizations, addresses, payment information, and shipping method. For complex integrations, use ValidatePrePlaceOrder first to validate the order before submission. Related endpoints: ValidatePrePlaceOrder, Detail, Invoice.' operationId: Order_RecordOrder requestBody: description: 'Complete order specification including customer, line items, addresses, payment, and shipping details.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiRecordOrder' application/xml: schema: $ref: '#/components/schemas/InfigoApiRecordOrder' responses: '200': description: Order successfully created. Response includes CatfishOrderId for tracking. content: application/json: schema: $ref: '#/components/schemas/InfigoRecordOrderApiResponse' application/xml: schema: $ref: '#/components/schemas/InfigoRecordOrderApiResponse' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /order/importhistoricalorder: description: 'Imports a single historical (back-dated) order. Unlike RecordOrder this persists the supplied CreatedOnUtc and financial values verbatim, accepts only StaticPDF and Nop product lines, and produces no customer email, MIS push, RabbitMQ publish, entity event or stock adjustment. Re-importing the same ExternalOrderId returns the existing order (AlreadyImported) without creating a duplicate. Related endpoints: RecordOrder.' post: tags: - Order summary: Import historical order description: 'Imports a single historical (back-dated) order. Unlike RecordOrder this persists the supplied CreatedOnUtc and financial values verbatim, accepts only StaticPDF and Nop product lines, and produces no customer email, MIS push, RabbitMQ publish, entity event or stock adjustment. Re-importing the same ExternalOrderId returns the existing order (AlreadyImported) without creating a duplicate. Related endpoints: RecordOrder.' operationId: Order_ImportHistoricalOrder requestBody: description: 'Historical order specification including customer, back-dated CreatedOnUtc, verbatim financials, addresses and StaticPDF/Nop line items.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiHistoricalOrder' application/xml: schema: $ref: '#/components/schemas/InfigoApiHistoricalOrder' responses: '200': description: 'Order imported (or already imported). Response includes CatfishOrderId, AlreadyImported, OrderGuid and any non-blocking warnings.' content: application/json: schema: $ref: '#/components/schemas/InfigoImportHistoricalOrderApiResponse' application/xml: schema: $ref: '#/components/schemas/InfigoImportHistoricalOrderApiResponse' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /order/preorder: description: 'Validates an order request before submission without actually creating the order. Use this endpoint to verify that all order details are correct, products are available, shipping methods are valid, and attribute configurations are valid. This prevents failed order submissions and provides detailed error messages for any issues found. Recommended for complex integrations to validate orders before calling RecordOrder. Related endpoints: RecordOrder.' post: tags: - Order summary: Validate pre-place order description: 'Validates an order request before submission without actually creating the order. Use this endpoint to verify that all order details are correct, products are available, shipping methods are valid, and attribute configurations are valid. This prevents failed order submissions and provides detailed error messages for any issues found. Recommended for complex integrations to validate orders before calling RecordOrder. Related endpoints: RecordOrder.' operationId: Order_ValidatePrePlaceOrder requestBody: description: Order specification to validate. Uses the same format as RecordOrder. content: application/json: schema: $ref: '#/components/schemas/InfigoApiRecordOrder' application/xml: schema: $ref: '#/components/schemas/InfigoApiRecordOrder' responses: '200': description: Order validation passed - the order can be safely submitted via RecordOrder. content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/basketitems: description: This operation allows you to obtain a list of order line item IDs that the specified user currently has in their basket. get: tags: - OrderlineItem summary: List basket items description: This operation allows you to obtain a list of order line item IDs that the specified user currently has in their basket. operationId: OrderlineItem_ListBasketItems parameters: - name: id in: query description: | Customer Guid required: true schema: type: string description: '' format: uuid responses: '200': description: Basket items ids content: application/json: schema: type: array items: type: string description: '' nullable: true description: '' application/xml: schema: type: array items: type: string description: '' nullable: true description: '' '400': description: The provided Customer Guid format is incorrect. Please ensure you provide a valid Guid. content: text/plain: schema: type: string description: '' nullable: true '404': description: This message indicates that the customer with the provided GUID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/savedprojects: description: This operation allows you to retrieve a list of order line item IDs that the specified user has saved for future editing. get: tags: - OrderlineItem summary: List saved projects description: This operation allows you to retrieve a list of order line item IDs that the specified user has saved for future editing. operationId: OrderlineItem_ListSavedProjects parameters: - name: id in: query description: | Customer Guid required: true schema: type: string description: '' format: uuid responses: '200': description: Saved project order line item ids content: application/json: schema: type: array items: type: string description: '' nullable: true description: '' application/xml: schema: type: array items: type: string description: '' nullable: true description: '' '400': description: The provided Customer Guid format is incorrect. Please ensure you provide a valid Guid. content: text/plain: schema: type: string description: '' nullable: true '404': description: This message indicates that the customer with the provided GUID could not be located in the system. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/reorder: description: This action duplicates an existing order line item and adds it to the current basket. It does not automatically place an order. An id that is not in the prefixed job id format is ignored and the call succeeds without adding anything. post: tags: - OrderlineItem summary: Reorder order line description: This action duplicates an existing order line item and adds it to the current basket. It does not automatically place an order. An id that is not in the prefixed job id format is ignored and the call succeeds without adding anything. operationId: OrderlineItem_ReorderOrderLine parameters: - name: id in: query description: | Order line item id with its type prefix (n, s, v, m, d or y), e.g. v123. required: true schema: type: string description: '' responses: '204': description: Indicates that the order has been successfully added to the basket. '400': description: The order line item cannot be reordered (plain-text reason). content: text/plain: schema: type: string description: '' nullable: true '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/orderlineitem/searchbynotes/{notes}': description: 'This operation allows you to search for order line items based on their associated notes. The search can be performed as either an exact match (default) or a contains match, depending on the specified criteria. Results are not paginated.' get: tags: - OrderlineItem summary: Search by notes description: 'This operation allows you to search for order line items based on their associated notes. The search can be performed as either an exact match (default) or a contains match, depending on the specified criteria. Results are not paginated.' operationId: OrderlineItem_SearchByNotes parameters: - name: notes in: path description: | The notes text to search for. An empty value returns an empty list. required: true schema: type: string description: '' - name: exact in: query description: | If enabled, this will execute an exact search; otherwise, it will perform a partial match. Defaults to true (exact match). schema: type: boolean description: '' default: 'True' responses: '200': description: These are the order line items that meet the specified criteria (empty when notes is empty or nothing matches). content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoOrderlineItem' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoOrderlineItem' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/createoutputfor: description: 'Initiates output generation for a specific job. The output can be delivered via callback URL or placed in a hot folder. Supports variable, dynamic, and multipart products. Output creation is queued and processed asynchronously. Use DirectDownload flag to retrieve output directly from Catfish instead of callback delivery. If an identical output creation request is already registered for the job, nothing is queued and the call still succeeds. Related endpoints: Download, JobTicket.' post: tags: - OrderlineItem summary: Create output description: 'Initiates output generation for a specific job. The output can be delivered via callback URL or placed in a hot folder. Supports variable, dynamic, and multipart products. Output creation is queued and processed asynchronously. Use DirectDownload flag to retrieve output directly from Catfish instead of callback delivery. If an identical output creation request is already registered for the job, nothing is queued and the call still succeeds. Related endpoints: Download, JobTicket.' operationId: OrderlineItem_CreateOutput parameters: - name: id in: query description: | The Job ID with Prefix is used to identify supported Dynamic and Infigo Products. For example, you may use the prefix **d50** to specify a Job ID. required: true schema: type: string description: '' requestBody: description: Output creation configuration specifying delivery method (callback URL or hot folder) and download options. content: application/json: schema: $ref: '#/components/schemas/InfigoOutputCreationRequest' application/xml: schema: $ref: '#/components/schemas/InfigoOutputCreationRequest' responses: '204': description: Output creation has been queued successfully (or an identical request was already queued). '400': description: Invalid request - body is empty or the item is not a product with a working folder. content: text/plain: schema: type: string description: '' nullable: true '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' content: text/plain: schema: type: string description: '' nullable: true '500': description: 'Error creating output, neither a hot folder id nor a callback URL was supplied, or the product type is not variable, dynamic or multipart (plain-text reason).' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /orderlineitem/get: description: This operation allows you to obtain specific details for a particular order line item. get: tags: - OrderlineItem summary: Get order line item description: This operation allows you to obtain specific details for a particular order line item. operationId: OrderlineItem_GetOrderLineItem parameters: - name: id in: query description: | This identifier refers to either a job or a shopping cart item. required: true schema: type: string description: '' responses: '200': description: 'The order line item, or null when no order line item or basket item matches the id.' content: application/json: schema: allOf: - $ref: '#/components/schemas/InfigoOrderlineItem' nullable: true application/xml: schema: allOf: - $ref: '#/components/schemas/InfigoOrderlineItem' nullable: true x-nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/delete: description: This action deletes the specified order line item. Please note that only items that have not been ordered yet can be deleted. delete: tags: - OrderlineItem summary: Delete order line item description: This action deletes the specified order line item. Please note that only items that have not been ordered yet can be deleted. operationId: OrderlineItem_DeleteOrderLineItem parameters: - name: id in: query description: | This identifier refers to either a job or a shopping cart item. required: true schema: type: string description: '' responses: '200': description: Indicates that the orderline item was deleted successfully '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/updatecartitem: description: This action allows you to modify the quantity of a specific order line item. Please note that this is only valid if the item has not been ordered yet. Setting the quantity to 0 will result in the item's deletion. post: tags: - OrderlineItem summary: Update cart item description: This action allows you to modify the quantity of a specific order line item. Please note that this is only valid if the item has not been ordered yet. Setting the quantity to 0 will result in the item's deletion. operationId: OrderlineItem_UpdateCartItem parameters: - name: id in: query description: | Shopping cart item id required: true schema: type: string description: '' - name: quantity in: query description: | New quantity required: true schema: type: integer description: '' responses: '200': description: Indicates that the orderline item quantity was updated successfully (or the item was deleted when quantity is 0) '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/updateitemstatus: description: 'Updates the production status of an order line item. Use this endpoint to track job progress through production workflow stages (e.g., InArtworking, InProduction, InFinishing, Shipped). Only applicable to ordered items - basket items cannot have status updates. Status changes are recorded in the print order history for audit and tracking purposes. Related endpoints: Get, DeleteItemStatus.' post: tags: - OrderlineItem summary: Update item status description: 'Updates the production status of an order line item. Use this endpoint to track job progress through production workflow stages (e.g., InArtworking, InProduction, InFinishing, Shipped). Only applicable to ordered items - basket items cannot have status updates. Status changes are recorded in the print order history for audit and tracking purposes. Related endpoints: Get, DeleteItemStatus.' operationId: OrderlineItem_UpdateItemStatus parameters: - name: id in: query description: | Job id required: true schema: type: string description: '' - name: newStatus in: query description: | New production status. Options include: OutputVerified, Shipped, OnHold, Printed, InReprographics, InProduction, InPacking, InFinishing, InArtworking, AwaitingProof, AwaitingParts, AwaitingData, ReadyForCollection, Blocked, MisOrderProcessed, MisAssetsOk, MisAssetsFailed, Cancelled. Possible values: `8` - Printed - Item has been printed. `9` - Shipped - Item has been shipped to customer. `11` - AwaitingData - Waiting for additional data or information. `12` - AwaitingParts - Waiting for required parts or materials. `13` - AwaitingProof - Awaiting customer proof approval. `14` - InArtworking - Item in artworking for design modifications. `15` - InFinishing - Item in finishing (binding, laminating, etc.). `16` - InPacking - Item being packed for shipping. `17` - InProduction - Item in production/manufacturing. `18` - InReprographics - Item in reprographics processing. `19` - OnHold - Item on hold pending issue resolution. `26` - OutputVerified - Output verified and ready for production. `46` - ReadyForCollection - Ready for customer collection (pickup orders). `49` - Blocked - Blocked due to error requiring attention. `51` - MisOrderProcessed - MIS has processed the order. `52` - MisAssetsOk - MIS confirmed assets are valid. `53` - MisAssetsFailed - MIS reported asset failure. `73` - Cancelled - Item cancelled; will not be fulfilled. required: true schema: $ref: '#/components/schemas/InfigoItemStatusUpdate' responses: '200': description: Order line item status updated successfully. '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '409': description: Item not yet ordered or invalid status transition. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/v2/notes/: description: This action allows you to update the notes of an order line item. Please note that this operation is only possible once the order line item has been ordered. put: tags: - OrderlineItem summary: Update order line note description: This action allows you to update the notes of an order line item. Please note that this operation is only possible once the order line item has been ordered. operationId: OrderlineItem_UpdateOrderLineNote requestBody: description: The job id of the order line item and the new notes to store against it. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateNotesRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateNotesRequest' required: true responses: '204': description: Indicates that the orderline item was updated successfully '404': description: The order line item was not found or has not been ordered yet (JSON error object). content: application/json: schema: $ref: '#/components/schemas/InfigoApiNotFoundErrorResponse' application/xml: schema: $ref: '#/components/schemas/InfigoApiNotFoundErrorResponse' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/updateitemnotes: description: This action allows you to update the notes for an order line item. This operation is only possible once the order line item has been ordered. post: tags: - OrderlineItem summary: Update item notes (legacy) description: This action allows you to update the notes for an order line item. This operation is only possible once the order line item has been ordered. operationId: OrderlineItem_UpdateItemNotesLegacy parameters: - name: id in: query description: | Job id required: true schema: type: string description: '' requestBody: description: 'The new notes to store against this order line item, sent as a JSON string literal in the body (e.g. "Deliver to reception").' content: application/json: schema: type: string required: true responses: '200': description: Indicates that the orderline item was updated successfully '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '409': description: The order line item has not been ordered yet. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true deprecated: true /orderlineitem/listorderlineitemids/: description: 'Retrieves a list of order line item IDs at the print location associated with the current API token. Filters by product type (Variable, MultiPart, Static, Dynamic). Print location is determined by the API authentication token. Use this endpoint for print queue management and production workflow integration. Related endpoints: Get, UpdateItemStatus.' get: tags: - OrderlineItem summary: List order lines at print location description: 'Retrieves a list of order line item IDs at the print location associated with the current API token. Filters by product type (Variable, MultiPart, Static, Dynamic). Print location is determined by the API authentication token. Use this endpoint for print queue management and production workflow integration. Related endpoints: Get, UpdateItemStatus.' operationId: OrderlineItem_ListOrderLinesAtPrintLocation parameters: - name: itemType in: query description: | Product type to filter by. Options: Variable (v), MultiPart (m), Static (s), Dynamic (d). Normal (n) is accepted but always returns an empty list. Possible values: `10` - Normal - Standard e-commerce product without editor customization. `20` - Variable - Variable data product allowing customer personalization via the editor. `30` - Static - Static PDF product with fixed, non-editable design. `40` - MultiPart - Multi-part product containing multiple components or documents. `50` - Dynamic - Dynamic product with programmatically generated content. `70` - Symphony - Symphony integration product for external workflow processing. required: true schema: $ref: '#/components/schemas/InfigoOrderlineItemItemType' responses: '200': description: Array of job IDs matching the specified item type at the print location. content: application/json: schema: type: array items: type: string description: '' nullable: true description: '' application/xml: schema: type: array items: type: string description: '' nullable: true description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/jobticket: description: This operation allows you to obtain the ticket associated with a specific job. get: tags: - OrderlineItem summary: Get job ticket description: This operation allows you to obtain the ticket associated with a specific job. operationId: OrderlineItem_GetJobTicket parameters: - name: id in: query description: | Job id required: true schema: type: string description: '' responses: '200': description: Job ticket PDF content: application/octet-stream: schema: type: string description: File content as binary data format: binary '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/download: description: This operation enables you to download the output generated for a specific job. get: tags: - OrderlineItem summary: Download output description: This operation enables you to download the output generated for a specific job. operationId: OrderlineItem_DownloadOutput parameters: - name: id in: query description: | Job id required: true schema: type: string description: '' responses: '200': description: Download Output PDF content: application/octet-stream: schema: type: string description: File content as binary data format: binary '400': description: 'The item''s product type does not support output download (only static, variable, multipart and dynamic products do).' content: text/plain: schema: type: string description: '' nullable: true '404': description: 'The job was not found, its output has not been created yet, or the output file is missing.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /orderlineitem/downloadsplit: description: This operation enables you to download the split output files as a ZIP archive for a specific job. get: tags: - OrderlineItem summary: Download split output description: This operation enables you to download the split output files as a ZIP archive for a specific job. operationId: OrderlineItem_DownloadSplitOutput parameters: - name: id in: query description: | The Job ID with prefix identifying the product type. Only the following prefixes support page split: **m** (multi-part), **d** (dynamic), **v** (infigo), **s** (static PDF). For example: d50, m12, v7, s100. required: true schema: type: string description: '' responses: '200': description: Download Split Output ZIP. content: application/octet-stream: schema: type: string description: File content as binary data format: binary '400': description: Invalid job ID format. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' application/xml: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '404': description: Orderline by provided id was not found content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' application/xml: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '422': description: The split download could not be processed. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' application/xml: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '500': description: An unexpected error occurred; the detail includes a log reference. content: application/json: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' application/xml: schema: $ref: '#/components/schemas/InfigoProblemDetailsV2' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /orderlineitem/updateoutput: description: This operation allows you to update the output for a specific job. post: tags: - OrderlineItem summary: Update output description: This operation allows you to update the output for a specific job. operationId: OrderlineItem_UpdateOutput parameters: - name: id in: query description: | Job id required: true schema: type: string description: '' requestBody: description: '' content: multipart/form-data: schema: required: - File type: object properties: File: type: string format: binary responses: '200': description: Output was updated '400': description: The output update failed content: text/plain: schema: type: string description: '' nullable: true '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '406': description: Request is not properly formatted content: text/plain: schema: type: string description: '' nullable: true '415': description: Provide file if not of pdf type content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/orderlineitem/deleteitemstatus/{itemId}': description: This action is used to delete a requested job status associated with a job. post: tags: - OrderlineItem summary: Delete item status description: This action is used to delete a requested job status associated with a job. operationId: OrderlineItem_DeleteItemStatus parameters: - name: itemId in: path description: | Job id required: true schema: type: string description: '' - name: statusId in: query description: | Job status to delete Possible values: `0` - Nothing `1` - Creating `2` - InBasket `3` - Ordered `4` - OutputCreationStarted `5` - OutputCreated `6` - OutputCreationFailed `7` - InHotFolder `8` - Printed `9` - Shipped `10` - AwaitingApproval `11` - AwaitingData `12` - AwaitingParts `13` - AwaitingProof `14` - InArtworking `15` - InFinishing `16` - InPacking `17` - InProduction `18` - InReprographics `19` - OnHold `20` - FutureOrder `21` - UnapprovedOrder `22` - Rejected `23` - Approved `24` - RecreationRequested `25` - OutputDownloaded `26` - OutputVerified `27` - SentEmail `28` - SentEmailFailed `29` - SmsDispatched `30` - EmailBounced `31` - EmailBouncedAndPrintJobCreated `32` - PrintJobVersion `33` - NoEmailBounceActionRequired `34` - SmsDispatching `35` - MisNotified `36` - MisFailed `37` - TemplateProductCreated `38` - TemplateProductCreationFailed `39` - ExternalOutputRequested `40` - ExternalOutputJobClosed `41` - ActionRun `42` - MisNotificationRetrigger `43` - CustomStatus `44` - CustomStatusHidden `45` - MisAdditionalActionRequired `46` - ReadyForCollection `47` - MisManifested `48` - CopyToHotFolderFailed `49` - Blocked `50` - ArtworkUploaded `51` - CopyToHotFolderSkipped `52` - MisOrderProcessed `53` - MisAssetsOk `54` - MisAssetsFailed `55` - PartiallyApproved `56` - JobDataDeleted `57` - ValidationFailed `58` - ValidationFinished `59` - MisPartiallyFailed `60` - ApprovalJobUpdated `61` - OutputDelete `62` - MisShipped `63` - MisSkipped `64` - AwaitingFinalize `65` - ShippedQuantity `66` - MisCustomStatus `67` - Cancelled `68` - JobTicketDownloaded `69` - JobTicketVerified `70` - StatusManuallyRemoved required: true schema: allOf: - $ref: '#/components/schemas/InfigoPrintOrderHistoryStatusTypeEnum' description: | Possible values: - `0` - Nothing - `1` - Creating - `2` - InBasket - `3` - Ordered - `4` - OutputCreationStarted - `5` - OutputCreated - `6` - OutputCreationFailed - `7` - InHotFolder - `8` - Printed - `9` - Shipped - `10` - AwaitingApproval - `11` - AwaitingData - `12` - AwaitingParts - `13` - AwaitingProof - `14` - InArtworking - `15` - InFinishing - `16` - InPacking - `17` - InProduction - `18` - InReprographics - `19` - OnHold - `20` - FutureOrder - `21` - UnapprovedOrder - `22` - Rejected - `23` - Approved - `24` - RecreationRequested - `25` - OutputDownloaded - `26` - OutputVerified - `27` - SentEmail - `28` - SentEmailFailed - `29` - SmsDispatched - `30` - EmailBounced - `31` - EmailBouncedAndPrintJobCreated - `32` - PrintJobVersion - `33` - NoEmailBounceActionRequired - `34` - SmsDispatching - `35` - MisNotified - `36` - MisFailed - `37` - TemplateProductCreated - `38` - TemplateProductCreationFailed - `39` - ExternalOutputRequested - `40` - ExternalOutputJobClosed - `41` - ActionRun - `42` - MisNotificationRetrigger - `43` - CustomStatus - `44` - CustomStatusHidden - `45` - MisAdditionalActionRequired - `46` - ReadyForCollection - `47` - MisManifested - `48` - CopyToHotFolderFailed - `49` - Blocked - `50` - ArtworkUploaded - `51` - CopyToHotFolderSkipped - `52` - MisOrderProcessed - `53` - MisAssetsOk - `54` - MisAssetsFailed - `55` - PartiallyApproved - `56` - JobDataDeleted - `57` - ValidationFailed - `58` - ValidationFinished - `59` - MisPartiallyFailed - `60` - ApprovalJobUpdated - `61` - OutputDelete - `62` - MisShipped - `63` - MisSkipped - `64` - AwaitingFinalize - `65` - ShippedQuantity - `66` - MisCustomStatus - `67` - Cancelled - `68` - JobTicketDownloaded - `69` - JobTicketVerified - `70` - StatusManuallyRemoved responses: '200': description: Job status deleted with success '400': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/printlocation/{id}': description: 'Retrieves a specific print location by its name (not its numeric id), even though the parameter is called id. Returns the print location''s id, name, description and account id.' get: tags: - PrintLocation summary: Get print location description: 'Retrieves a specific print location by its name (not its numeric id), even though the parameter is called id. Returns the print location''s id, name, description and account id.' operationId: PrintLocation_GetPrintLocation parameters: - name: id in: path description: | The print location name to look up (matched against the name, not the numeric id). required: true schema: type: string description: '' responses: '200': description: Print location content: application/json: schema: $ref: '#/components/schemas/InfigoPrintLocation' application/xml: schema: $ref: '#/components/schemas/InfigoPrintLocation' '404': description: No print location with the requested name was found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /printlocation: description: 'Returns the print locations available for your account, ordered by id. Each print location includes its id, name, description and account id. The list is capped at the first 20 print locations; there is no paging to retrieve more. API authentication is required.' get: tags: - PrintLocation summary: List print locations description: 'Returns the print locations available for your account, ordered by id. Each print location includes its id, name, description and account id. The list is capped at the first 20 print locations; there is no paging to retrieve more. API authentication is required.' operationId: PrintLocation_ListPrintLocations responses: '200': description: Print locations (at most 20) content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoPrintLocation' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoPrintLocation' description: '' '404': description: No print locations found for this account. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /catalog/groups: description: This operation returns a list of all product groups paginated available within the system. get: tags: - ProductGroup summary: List product groups description: This operation returns a list of all product groups paginated available within the system. operationId: ProductGroup_ListProductGroups parameters: - name: PageIndex in: query description: | Zero-based page index for pagination. Default is 0 (first page). schema: type: integer description: | Zero-based page index for pagination. Default is 0 (first page). - name: PerPage in: query description: | Number of items to return per page. Default returns all items. schema: type: integer description: | Number of items to return per page. Default returns all items. responses: '200': description: Successfully retrieved product groups content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoApiProductGroupInfo' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoApiProductGroupInfo' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true post: tags: - ProductGroup summary: Create product group description: Created a new product group with provided details. operationId: ProductGroup_CreateProductGroup requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoCreateProductGroupRequest' application/xml: schema: $ref: '#/components/schemas/InfigoCreateProductGroupRequest' responses: '200': description: Product group was created successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Validation for provided details failed content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '/catalog/groups/{id}': description: This operation retrieves detailed information about a product group. get: tags: - ProductGroup summary: Get product group description: This operation retrieves detailed information about a product group. operationId: ProductGroup_GetProductGroup parameters: - name: id in: path description: | The unique identifier of the product group to retrieve. required: true schema: type: integer description: '' responses: '200': description: Details about product group retrieved successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiProductGroupInfo' application/xml: schema: $ref: '#/components/schemas/InfigoApiProductGroupInfo' '404': description: Product group with provided identifier was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true post: tags: - ProductGroup summary: Update product group description: Update a existing product group with the provided identifier. operationId: ProductGroup_UpdateProductGroup parameters: - name: id in: path description: | The unique identifier of the product group to update. required: true schema: type: integer description: '' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateProductGroupRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateProductGroupRequest' responses: '200': description: Product group was updated successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: 'Validation for provided details failed, or no product group with the provided identifier exists.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '409': description: Concurrency conflict while updating the product group. Please try again. content: text/plain: schema: type: string description: '' nullable: true '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /quote/create: description: This action allows the creation of a quote on behalf of a customer for a valid product. The generated quote can be used as a reference for future orders. post: tags: - Quote summary: Create quote description: This action allows the creation of a quote on behalf of a customer for a valid product. The generated quote can be used as a reference for future orders. operationId: Quote_CreateQuote requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiQuoteCreate' application/xml: schema: $ref: '#/components/schemas/InfigoApiQuoteCreate' responses: '200': description: 'Quote created successfully. CatfishQuoteId holds the new quote id, or CatfishQuoteIds when clones were requested.' content: application/json: schema: $ref: '#/components/schemas/InfigoCreateQuoteApiResponse' application/xml: schema: $ref: '#/components/schemas/InfigoCreateQuoteApiResponse' '400': description: Validation failed or an unexpected server error occurred; the response lists the errors. content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /quote/update: description: This action is used to update an existing quote for a customer. post: tags: - Quote summary: Update quote description: This action is used to update an existing quote for a customer. operationId: Quote_UpdateQuote requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiQuoteEdit' application/xml: schema: $ref: '#/components/schemas/InfigoApiQuoteEdit' responses: '200': description: Quote updated successfully content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: 'Validation failed, the quote was not found, or an unexpected server error occurred; the response lists the errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/quote/{quoteId}': description: 'Retrieves detailed information about a specific quote by its unique identifier. Returns the quote''s line items, pricing, customer information, and current status.' get: tags: - Quote summary: Get quote description: 'Retrieves detailed information about a specific quote by its unique identifier. Returns the quote''s line items, pricing, customer information, and current status.' operationId: Quote_GetQuote parameters: - name: quoteId in: path description: | The unique identifier of the quote to retrieve. required: true schema: type: integer description: '' responses: '200': description: The quote details. content: application/json: schema: $ref: '#/components/schemas/InfigoApiGetQuote' application/xml: schema: $ref: '#/components/schemas/InfigoApiGetQuote' '400': description: 'Quote with supplied Id was not found, or an unexpected server error occurred.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/quote/{quoteId}/delete': description: Permanently deletes a quote by its unique identifier. The quote cannot be deleted if it is currently associated with any shopping cart items. post: tags: - Quote summary: Delete quote description: Permanently deletes a quote by its unique identifier. The quote cannot be deleted if it is currently associated with any shopping cart items. operationId: Quote_DeleteQuote parameters: - name: quoteId in: path description: | The unique identifier of the quote to delete. required: true schema: type: integer description: '' responses: '200': description: The quote was deleted. content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: 'The quote was not found, is used by a shopping cart item, or an unexpected server error occurred; the response lists the errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /quote/bycustomer: description: 'This operation allows you to retrieve a list of quote IDs attached to a customer. Note: pagination is not supported' get: tags: - Quote summary: List quote IDs by customer description: 'This operation allows you to retrieve a list of quote IDs attached to a customer. Note: pagination is not supported' operationId: Quote_ListQuoteIdsByCustomer parameters: - name: customerId in: query description: | The customer identifier, passed in the query string. It can be the customer's numeric `Id`, `Guid`, `Username` or `Email`. required: true schema: type: string description: '' - name: isHiddenInclude in: query description: | Whether quotes hidden from the customer are included in the returned list. required: true schema: type: boolean description: '' responses: '200': description: CatfishQuoteIds lists the customer's quote ids (empty when the customer has none). content: application/json: schema: $ref: '#/components/schemas/InfigoQuoteIdsApiResponse' application/xml: schema: $ref: '#/components/schemas/InfigoQuoteIdsApiResponse' '400': description: 'Customer with the supplied identifier was not found, or an unexpected server error occurred.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /ssocookie: description: 'Returns cookie ticket based on Email address passed in. It will also create a new user in the system if it doesnt exist. The cookie name is also passed along. If the cookie name is not passed, the AppHarbor security plug-in is used.' get: tags: - SSOCookie summary: Get authentication cookie description: 'Returns cookie ticket based on Email address passed in. It will also create a new user in the system if it doesnt exist. The cookie name is also passed along. If the cookie name is not passed, the AppHarbor security plug-in is used.' operationId: SSOCookie_GetAuthenticationCookie parameters: - name: id in: query description: | The customer's email address or GUID. A numeric customer Id or a username is not accepted. required: true schema: type: string description: '' responses: '200': description: The system has successfully generated a token based on the provided information. content: application/json: schema: $ref: '#/components/schemas/InfigoApiCustomerToken' application/xml: schema: $ref: '#/components/schemas/InfigoApiCustomerToken' '404': description: 'The token could not be created: the customer could not be found or created (e.g. registration is prohibited or the identifier is not an email/GUID), or the customer is a system administrator or system account.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /ssourl: description: 'Returns an individual URL to login a user. It will create the user if required and returns the login URL which will automatically login the user into Infigo. Additionally, it will return the cookie ticket and a creation flag.' get: tags: - SSOUrl summary: Generate SSO URL description: 'Returns an individual URL to login a user. It will create the user if required and returns the login URL which will automatically login the user into Infigo. Additionally, it will return the cookie ticket and a creation flag.' operationId: SSOUrl_GenerateSsoUrl parameters: - name: id in: query description: | The customer's email address or GUID. A numeric customer Id or a username is not accepted. required: true schema: type: string description: '' - name: returnUrl in: query description: | The URL the user should be redirected to after successful authorization. Can be null to return to the home page schema: type: string description: '' nullable: true - name: errorUrl in: query description: | The URL the user should be redirected to after a failed authorization. Can be null to return to the home page schema: type: string description: '' nullable: true - name: logoutUrl in: query description: | The URL the user should be redirected to after logout. Requires 'LogoutUrl' customer additional attribute. If null, the user will only be logged out from Infigo without redirection. schema: type: string description: '' nullable: true responses: '200': description: Successfully retrieved customer SSO content: application/json: schema: $ref: '#/components/schemas/InfigoApiCustomerSsoResult' application/xml: schema: $ref: '#/components/schemas/InfigoApiCustomerSsoResult' '400': description: A logoutUrl was supplied but the 'LogoutUrl' customer additional attribute is not configured. content: text/plain: schema: type: string description: '' nullable: true '500': description: 'The login information could not be created, e.g. the customer could not be found or created from the identifier, or the customer is a system administrator or system account.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /storagefolder: description: Will return the first type of a storage folder found. API Auth Token is required. get: tags: - StorageFolder summary: Get storage folder description: Will return the first type of a storage folder found. API Auth Token is required. operationId: StorageFolder_GetStorageFolder parameters: - name: id in: query description: | Type of storage folder required: true schema: $ref: '#/components/schemas/InfigoStorageFolderTypeString' responses: '200': description: Returns storage folder details content: application/json: schema: $ref: '#/components/schemas/InfigoStorageFolder' application/xml: schema: $ref: '#/components/schemas/InfigoStorageFolder' '404': description: 'The type is not a valid storage folder type, or no storage folder of that type exists.' content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /storefront: description: 'Retrieves a list of all storefronts in the platform. Returns configuration details, status, and settings for each storefront. Requires platform-level authorization.' get: tags: - Storefront summary: List storefronts description: | Retrieves a list of all storefronts in the platform. Returns configuration details, status, and settings for each storefront. Requires platform-level authorization.**Available only for platform API Tokens** operationId: Storefront_ListStorefronts responses: '200': description: List of all storefronts content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoGetStorefrontAdminModel' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoGetStorefrontAdminModel' description: '' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true post: tags: - Storefront summary: Create storefront description: | Creates a new storefront with the specified configuration. Includes bundle setup, domain aliases, and initial settings. Requires platform-level authorization.**Available only for platform API Tokens** operationId: Storefront_CreateStorefront requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoCreateStorefrontModel' application/xml: schema: $ref: '#/components/schemas/InfigoCreateStorefrontModel' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoCreateStorefrontModelResult' application/xml: schema: $ref: '#/components/schemas/InfigoCreateStorefrontModelResult' '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/storefront/{identifier}': description: 'Retrieves detailed information about a specific storefront by its ID or name. Returns configuration, bundles, aliases, and status information.' get: tags: - Storefront summary: Get storefront description: | Retrieves detailed information about a specific storefront by its ID or name. Returns configuration, bundles, aliases, and status information.**Available only for platform API Tokens** operationId: Storefront_GetStorefront parameters: - name: identifier in: path description: | Storefront Id or Name required: true schema: type: string description: '' responses: '200': description: Storefront details content: application/json: schema: $ref: '#/components/schemas/InfigoGetStorefrontAdminModel' application/xml: schema: $ref: '#/components/schemas/InfigoGetStorefrontAdminModel' '404': description: Storefront not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true put: tags: - Storefront summary: Update storefront description: | Updates an existing storefront's configuration. Can modify name, status, bundles, and domain aliases. The storefront must be in active status to be updated.**Available only for platform API Tokens** operationId: Storefront_UpdateStorefront parameters: - name: identifier in: path description: | Storefront Id or Name required: true schema: type: string description: '' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStorefrontModel' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStorefrontModel' responses: '200': description: The storefront was updated. The body is empty. '400': description: 'Validation failed, response will include a list of errors.' content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: Storefront by supplied identifier was not found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true delete: tags: - Storefront summary: Delete storefront description: | Disables and marks a storefront as deleted. The storefront will no longer be accessible but data is retained. Cannot delete an already deleted storefront.**Available only for platform API Tokens** operationId: Storefront_DeleteStorefront parameters: - name: identifier in: path description: | Storefront Id or Name required: true schema: type: string description: '' responses: '200': description: The storefront was deleted. The body is empty. '400': description: The storefront is already deleted. content: text/plain: schema: type: string description: '' nullable: true '404': description: Storefront by supplied identifier was not found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/storefront/{identifier}/token': description: Generates a new API authentication token for the specified storefront. The token can be used for API access to that storefront's resources. post: tags: - Storefront summary: Create API token description: | Generates a new API authentication token for the specified storefront. The token can be used for API access to that storefront's resources.**Available only for platform API Tokens** operationId: Storefront_CreateApiToken parameters: - name: identifier in: path description: | Storefront Id or Name required: true schema: type: string description: '' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoApiAuthenticationTokenModelResult' application/xml: schema: $ref: '#/components/schemas/InfigoApiAuthenticationTokenModelResult' '404': description: Storefront by supplied identifier was not found. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /storefront/current: description: Retrieves information about the storefront associated with the current API token. Returns the storefront's basic configuration and status. get: tags: - Storefront summary: Get current storefront description: Retrieves information about the storefront associated with the current API token. Returns the storefront's basic configuration and status. operationId: Storefront_GetCurrentStorefront responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoGetStorefrontModel' application/xml: schema: $ref: '#/components/schemas/InfigoGetStorefrontModel' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /storefront/current/scss: description: Uploads a custom CSS file to override the default editor styles for the storefront. The file is saved in both original and override locations. post: tags: - Storefront summary: Upload editor CSS description: Uploads a custom CSS file to override the default editor styles for the storefront. The file is saved in both original and override locations. operationId: Storefront_UploadEditorCss requestBody: description: '' content: multipart/form-data: schema: required: - File type: object properties: File: type: string format: binary responses: '204': description: CSS uploaded with success '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true get: tags: - Storefront summary: Get editor SCSS template description: Retrieves the SCSS template file used for customizing the editor appearance. This template can be modified and uploaded via UploadCss to change editor styles. operationId: Storefront_GetEditorScssTemplate responses: '200': description: 'Scss, or null when no SCSS template is available.' content: text/plain: schema: type: string description: '' nullable: true application/json: schema: type: string description: '' nullable: true x-nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /storefront/current/setup: description: Get the basic setup of the storefront get: tags: - Storefront summary: Get storefront setup description: Get the basic setup of the storefront operationId: Storefront_GetStorefrontSetup responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoStorefrontSetupModel' application/xml: schema: $ref: '#/components/schemas/InfigoStorefrontSetupModel' '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string /thumbnail/generate: description: |- ### POST /Thumbnail/Generate #### Summary - **Operation**: Generate a Thumbnail - **HTTP Method**: POST - **Tags**: Thumbnail Generation #### Request Body - **Format**: application/json - **Content**: - `Customer`: Optional customer identifier. Either customer ID, GUID, or email/username. A new guest user will be created if nothing provided. - `Product`: Product Identifier (SKU or Infigo Product ID). - `ProductAttributes`: A list of name/value pairs for product attributes. The attributes must be attached to the product. For attributes with preselected value, if nothing is provided to the API, the default value will be selected. - `Key`: The attribute name. - `Value`: The attribute value. - `VariableItems`: A list of variable set name/variable item name/value pairs. - `VariableSetName`: The name of the variable set. - `VariableItemName`: The name of the variable item. - `Value`: The value of the variable item. - `NotificationUrl`: Optional postback URL when the operation is complete. Either 200 or 403 in case something went wrong in the process of creating the thumbnail. An error message will come along with the request. #### Example Request ```json { "Customer": "customer123", "Product": "SKU12345", "ProductAttributes": [ { "Key": "Color", "Value": "Red" } ], "VariableItems": [ { "VariableSetName": "Variable set name here", "VariableItemName": "Text", "Value": "Sample text" }, { "VariableSetName": "Variable set name here", "VariableItemName": "RichText", "Value": "Sample rich text" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Boolean", "Value": "true" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Number", "Value": "123" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Date", "Value": "2024-05-20" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Time", "Value": "12:34:56" }, { "VariableSetName": "Variable set name here", "VariableItemName": "List", "Value": "["item1", "item2"]" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Color", "Value": "#FFFFFF" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Image as URL", "Value": "https://example.com/image.jpg" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Image from an existing album. In case of multiple albums or media with the same name, the first will always be picked.}", "Value": "{ \"AlbumName\": \"Default\", \"AlbumMedia\": \"mediaName.jpg\}" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Image as base64. Convert images to base64 and set it as value.}", "Value": "data:image/png;base64,HereIsTheDataString" } ], "NotificationUrl": "https://example.com/notify" } post: tags: - Thumbnail summary: Generate thumbnail description: |- ### POST /Thumbnail/Generate #### Summary - **Operation**: Generate a Thumbnail - **HTTP Method**: POST - **Tags**: Thumbnail Generation #### Request Body - **Format**: application/json - **Content**: - `Customer`: Optional customer identifier. Either customer ID, GUID, or email/username. A new guest user will be created if nothing provided. - `Product`: Product Identifier (SKU or Infigo Product ID). - `ProductAttributes`: A list of name/value pairs for product attributes. The attributes must be attached to the product. For attributes with preselected value, if nothing is provided to the API, the default value will be selected. - `Key`: The attribute name. - `Value`: The attribute value. - `VariableItems`: A list of variable set name/variable item name/value pairs. - `VariableSetName`: The name of the variable set. - `VariableItemName`: The name of the variable item. - `Value`: The value of the variable item. - `NotificationUrl`: Optional postback URL when the operation is complete. Either 200 or 403 in case something went wrong in the process of creating the thumbnail. An error message will come along with the request. #### Example Request ```json { "Customer": "customer123", "Product": "SKU12345", "ProductAttributes": [ { "Key": "Color", "Value": "Red" } ], "VariableItems": [ { "VariableSetName": "Variable set name here", "VariableItemName": "Text", "Value": "Sample text" }, { "VariableSetName": "Variable set name here", "VariableItemName": "RichText", "Value": "Sample rich text" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Boolean", "Value": "true" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Number", "Value": "123" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Date", "Value": "2024-05-20" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Time", "Value": "12:34:56" }, { "VariableSetName": "Variable set name here", "VariableItemName": "List", "Value": "["item1", "item2"]" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Color", "Value": "#FFFFFF" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Image as URL", "Value": "https://example.com/image.jpg" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Image from an existing album. In case of multiple albums or media with the same name, the first will always be picked.}", "Value": "{ \"AlbumName\": \"Default\", \"AlbumMedia\": \"mediaName.jpg\}" }, { "VariableSetName": "Variable set name here", "VariableItemName": "Image as base64. Convert images to base64 and set it as value.}", "Value": "data:image/png;base64,HereIsTheDataString" } ], "NotificationUrl": "https://example.com/notify" } operationId: Thumbnail_GenerateThumbnail requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiThumbnailRequest' application/xml: schema: $ref: '#/components/schemas/InfigoApiThumbnailRequest' responses: '200': description: |- #### Successful Response (200) - **Description**: A response that includes the thumbnail URL that will be available after the thumbnail is generated. ApiResult will include the request details. In case a new customer is being created, its GUID will be returned in the CustomerGuid field. Thumbnail URL will return 404 until the thumbnail is generated. If notification URL was set, a message will be sent once the image is available at that URL. #### Example Response ```json { "Success": true, "ContextInfo": { "ErrorList": [] }, "ApiResult": { "CustomerGuid": "5db34416-0687-4a71-8a19-ff1a55205096", "JobId": "d123", "EditLink": "{{StoreUrl}}/{{StorefrontName}}/CF/DynamicProduct/StartEditor/1?orderProductId=12", "ThumbnailLink": "{{StoreUrl}}/{{StorefrontName}}/CF/FileCache/Get/1cd51455-f078-4f0b-ade3-4b82c870f614?name=Dynamic%20with%20Variables", "Details": { "ProductId": "1234", "ProductSku": "ProductSku", "ProductAttributes": { "Key": "Value" }, "Variables": [ { "VariableSetName": "Variable set name", "VariableItemName": "Variable item name", "Value": "value" } ] }, "ActionId": "ed3e783b-c652-4adc-9bbd-e476cddf6cee" } } Validation and processing failures are also answered with 200: Success is false and ContextInfo.ErrorList lists the errors. content: application/json: schema: $ref: '#/components/schemas/InfigoApiThumbnailResponse' application/xml: schema: $ref: '#/components/schemas/InfigoApiThumbnailResponse' '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/thumbnail/getstatus/{actionId}': description: Gets the status of a thumbnail generation action. The actionId parameter is required to identify the specific action. get: tags: - Thumbnail summary: Get thumbnail status (deprecated) description: Gets the status of a thumbnail generation action. The actionId parameter is required to identify the specific action. operationId: Thumbnail_GetThumbnailStatus parameters: - name: actionId in: path description: | The unique identifier (GUID) of the thumbnail action to check status for. required: true schema: type: string description: '' format: uuid responses: '200': description: Record found successfully and details about it content: application/json: schema: $ref: '#/components/schemas/InfigoImmediateActionRecordDisplayModel' application/xml: schema: $ref: '#/components/schemas/InfigoImmediateActionRecordDisplayModel' '404': description: Action with provided it not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true deprecated: true /uploadcsv: description: Uploads a CSV file as a MultipartFormDataStream for the specified user. post: tags: - UploadCSV summary: Upload CSV file description: Uploads a CSV file as a MultipartFormDataStream for the specified user. operationId: UploadCSV_UploadCsvFile parameters: - name: id in: query description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. required: true schema: type: string description: '' - name: type in: query description: | How the CSV file is used. Defaults to UsedInEditor. Possible values: `0` - UsedInEditor - The CSV is stored as the customer's data source for the editor. `1` - BatchUpload - The CSV is processed as a batch upload for the customer. schema: allOf: - $ref: '#/components/schemas/InfigoCSVUploadType' description: | Possible values: - `0` - UsedInEditor - The CSV is stored as the customer's data source for the editor. - `1` - BatchUpload - The CSV is processed as a batch upload for the customer. x-nullable: true requestBody: description: '' content: multipart/form-data: schema: required: - File type: object properties: File: type: string description: The CSV file. Exactly one file part is expected; its form field name is not checked. format: binary responses: '200': description: The CSV file was uploaded. The body is empty. '400': description: The uploaded file could not be stored. The body is empty. content: text/plain: schema: type: string description: '' nullable: true '404': description: 'No customer was found for the supplied identifier, or the batch CSV could not be processed.' content: text/plain: schema: type: string description: '' nullable: true '406': description: The request body is not multipart/form-data. The body is a JSON string message. content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true '/uploadlocation/{id}': description: 'Returns details about an upload location looked up by its name (not its numeric id), even though the parameter is called id.' get: tags: - UploadLocation summary: Get upload location description: 'Returns details about an upload location looked up by its name (not its numeric id), even though the parameter is called id.' operationId: UploadLocation_GetUploadLocation parameters: - name: id in: path description: | The upload location name to look up (matched against the name, not the numeric id). required: true schema: type: string description: '' responses: '200': description: The upload location content: application/json: schema: $ref: '#/components/schemas/InfigoUploadLocation' application/xml: schema: $ref: '#/components/schemas/InfigoUploadLocation' '404': description: Upload location by supplied name was not found content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /uploadlocation/: description: Returns details about all upload locations. get: tags: - UploadLocation summary: List upload locations description: Returns details about all upload locations. operationId: UploadLocation_ListUploadLocations responses: '200': description: All upload locations content: application/json: schema: type: array items: $ref: '#/components/schemas/InfigoUploadLocation' description: '' application/xml: schema: type: array items: $ref: '#/components/schemas/InfigoUploadLocation' description: '' '404': description: The upload locations could not be read content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true /uploadlocation: description: Uploads a document as a MultipartFormDataStream to the specified upload location. post: tags: - UploadLocation summary: Upload document description: Uploads a document as a MultipartFormDataStream to the specified upload location. operationId: UploadLocation_UploadDocument parameters: - name: id in: query description: | The numeric (integer) id of the upload location, e.g. "5". A non-numeric value fails with 500. required: true schema: type: string description: '' requestBody: description: '' content: multipart/form-data: schema: required: - File type: object properties: File: type: string format: binary responses: '200': description: Document uploaded successfully '404': description: No upload location found with the provided id content: text/plain: schema: type: string description: '' nullable: true '406': description: The request is not multipart/form-data content: text/plain: schema: type: string description: '' nullable: true '401': description: Authorization details are invalid. content: text/plain: schema: type: string '403': description: Authorization details are invalid. content: text/plain: schema: type: string '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true components: schemas: Authorization: title: Authorization type: string description: | # Authentication and Security ## Overview To ensure secure access to Infigo's API endpoints, an API Token is required for authentication. This document covers authentication, security best practices, and rate limiting guidelines. --- ## API Token Authentication ### Requesting an API Token 1. **Create a Support Ticket** - Visit our Support Desk: https://infigosoftware.zendesk.com/hc/en-us/requests/new - Request a new API Token for your designated storefront 2. **Receive Your Token** - Our support team will generate and provide your unique API Token - Store this token securely - treat it like a password ### Using the API Token Our API uses **Basic Authentication** for secure access. The API Token serves as the username in the Basic Auth scheme. #### Configuration - **Authentication Type**: Basic Auth - **Username**: Your API Token - **Password**: Leave empty #### Example Authorization Header ``` Authorization: Basic YTFiYTAwMjEtMTRiZi00YWNmLThkYTQtNzVmYTVjMDllMjdi ``` #### Using Postman 1. Download and install [Postman](https://infigosoftware.zendesk.com/hc/en-us/articles/360048785512) 2. Navigate to the **Authorization** tab 3. Select **Basic Auth** as the type 4. Paste your API Token into the **Username** field 5. Leave the **Password** field empty --- ## Rate Limiting ### Overview To ensure fair usage and maintain service quality for all users, our API implements rate limiting. This prevents individual clients from consuming excessive resources and helps maintain optimal performance. ### Rate Limit Information Rate limits are enforced **per API Token** using a 10-second rolling window and are typically set to: - **Default**: 50 requests per 10-second window - Custom limits may be configured based on your subscription or agreement ### HTTP Headers Every API response includes the following rate limit headers: | Header | Description | |--------|-------------| | `X-RateLimit-Limit` | Maximum number of requests allowed per 10-second window | | `X-RateLimit-Remaining` | Number of requests remaining in the current window | | `X-RateLimit-Reset` | UTC timestamp when the rate limit window resets | | `Retry-After` | Number of seconds to wait before retrying (only on 429 responses) | #### Example Response Headers ``` X-RateLimit-Limit: 50 X-RateLimit-Remaining: 23 X-RateLimit-Reset: 2025-11-16T14:32:10Z ``` ### Handling Rate Limit Exceeded (HTTP 429) When you exceed your rate limit, the API will return: - **HTTP Status**: `429 Too Many Requests` - **Response Body**: `Rate limit exceeded. Please try again later.` - **Retry-After Header**: Indicates how many seconds to wait #### Example 429 Response ``` HTTP/1.1 429 Too Many Requests Content-Type: text/plain X-RateLimit-Limit: 50 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 2025-11-16T14:32:10Z Retry-After: 8 Rate limit exceeded. Please try again later. ``` ### Best Practices for Rate Limiting #### 1. Monitor Rate Limit Headers Always check the `X-RateLimit-Remaining` header in your responses to track how many requests you have left. ```csharp // Example: Check remaining requests var remaining = response.Headers.GetValues("X-RateLimit-Remaining").FirstOrDefault(); if (int.Parse(remaining) < 10) { // Approaching limit - slow down requests } ``` #### 2. Implement Exponential Backoff When you receive a 429 response, implement exponential backoff retry logic: ```csharp int retryCount = 0; int maxRetries = 3; int baseDelay = 1000; // 1 second while (retryCount < maxRetries) { var response = await SendRequest(); if (response.StatusCode == 429) { var retryAfter = response.Headers.GetValues("Retry-After").FirstOrDefault(); var delay = int.Parse(retryAfter) * 1000; // Convert to milliseconds // Use exponential backoff if Retry-After not available if (delay == 0) { delay = baseDelay * (int)Math.Pow(2, retryCount); } await Task.Delay(delay); retryCount++; continue; } return response; // Success } ``` #### 3. Cache Responses When Possible Reduce API calls by caching responses that don't change frequently: - Product catalogs - Category listings - Configuration data #### 4. Batch Requests Instead of making multiple individual requests, use batch endpoints when available: - Use bulk operations for creating or updating multiple resources - Combine related data requests where the API supports it #### 5. Implement Request Queuing For high-volume applications, implement a request queue to control the rate of outgoing requests: ```csharp // Example: Simple rate limiter using SemaphoreSlim private static SemaphoreSlim rateLimiter = new SemaphoreSlim(10, 10); // 10 concurrent requests private static Timer resetTimer; public async Task MakeRateLimitedRequest(string url) { await rateLimiter.WaitAsync(); try { return await httpClient.GetAsync(url); } finally { // Release semaphore after a delay to maintain rate _ = Task.Delay(200).ContinueWith(_ => rateLimiter.Release()); // 50 requests/10 seconds = 200ms between requests } } ``` #### 6. Spread Requests Over Time Avoid burst traffic patterns: - **Don't**: Send 50 requests at the start of each 10-second window - **Do**: Distribute requests evenly throughout the 10-second window (approximately 1 request every 200ms) #### 7. Handle 429 Responses Gracefully Never ignore 429 responses. Always: 1. Log the rate limit event 2. Respect the `Retry-After` header 3. Notify relevant parties if consistently hitting limits 4. Consider requesting a higher rate limit if needed ### Requesting Higher Rate Limits If your application consistently requires more than the default rate limit: 1. **Contact Support** - Create a ticket at https://infigosoftware.zendesk.com/hc/en-us/requests/new - Provide details about your use case and expected request volume 2. **Provide Justification** - Explain why higher limits are needed - Describe the business value and use case - Demonstrate that you've implemented rate limiting best practices 3. **Review and Approval** - Our team will review your request - Higher limits may require a specific agreement or subscription tier --- ## Security Best Practices ### 1. Protect Your API Token - **Never** commit API tokens to version control - Store tokens in environment variables or secure configuration systems - Use secrets management tools (Azure Key Vault, AWS Secrets Manager, etc.) - Rotate tokens periodically ### 2. Use HTTPS Only - **Always** use HTTPS endpoints - Never send API tokens over unencrypted HTTP connections ### 3. Implement Proper Error Handling - Don't expose API tokens in error messages or logs - Log authentication failures for security monitoring - Implement proper exception handling for network errors ### 4. Monitor API Usage - Track API response times and error rates - Set up alerts for unusual patterns or excessive 429 responses - Review logs regularly for security anomalies ### 5. Validate Responses - Always validate API responses before processing - Check HTTP status codes - Verify response content types and structure --- ## Troubleshooting ### Common Issues | Issue | Cause | Solution | |-------|-------|----------| | 401 Unauthorized | Invalid or missing API token | Verify token is correct and included in Authorization header | | 403 Forbidden | Token doesn't have required permissions | Contact support to verify token permissions | | 429 Too Many Requests | Rate limit exceeded | Implement backoff strategy, reduce request frequency | | 500 Internal Server Error | Server-side issue | Retry with exponential backoff, contact support if persistent | ### Getting Help If you encounter issues with authentication or rate limiting: 1. **Check Documentation**: Review this guide and API documentation 2. **Review Headers**: Examine request/response headers for diagnostic information 3. **Contact Support**: Create a ticket at https://infigosoftware.zendesk.com/hc/en-us/requests/new Include in your support ticket: - API Token (first/last 4 characters only) - Timestamp of the issue - Request details (endpoint, method, headers) - Response status code and headers - Any error messages received --- ## Additional Resources - API Documentation: [Link to main API docs] - Postman Guide: https://infigosoftware.zendesk.com/hc/en-us/articles/360048785512 - Support Desk: https://infigosoftware.zendesk.com/hc/en-us/requests/new --- *Last Updated: November 2025* InfigoApiCustomerToken: type: object properties: CookieName: type: string description: | The name of the authentication cookie that should be set in the browser. This name is typically configured per storefront and must match exactly when setting the cookie. Example: '.ASPXFORMSAUTH' or a custom storefront-specific cookie name. nullable: true Token: type: string description: | The encrypted authentication ticket value to be stored in the cookie. This token contains the user identity, expiration time, and other claims required for session validation. Set this as the cookie value with the CookieName to establish the authenticated session. The token has a limited validity period and should be used immediately. nullable: true description: | Contains authentication token information for establishing a customer session. Used in SSO responses to provide the necessary values for manual cookie-based authentication. InfigoImmediateActionRecordDisplayModel: type: object properties: Status: type: string description: | The current status of the immediate action (e.g., 'Pending', 'InProgress', 'Completed', 'Failed'). nullable: true Progress: type: integer description: | The progress percentage of the action execution, ranging from 0 to 100. CreatedOnUtc: type: string description: | The UTC timestamp when the immediate action record was created. format: date-time description: | Represents the display status of an immediate action record being executed in the system. Used to track and report on the progress of real-time operations. InfigoApiErrorDetail: type: object properties: Message: type: string description: | Description of what validation failed or what the error is. nullable: true Field: type: string description: | Name of the field that caused the error, if applicable. nullable: true AttemptedValue: description: | The value that was provided and failed validation. nullable: true description: | Details of a specific validation or field-level error. InfigoProblemDetails: type: object properties: Title: type: string description: | A short, human-readable summary of the problem type. nullable: true Status: type: integer description: | The HTTP status code for this problem. Detail: type: string description: | A human-readable explanation specific to this occurrence of the problem. nullable: true Instance: type: string description: | A URI reference that identifies the specific occurrence of the problem. nullable: true Errors: type: array items: $ref: '#/components/schemas/InfigoApiErrorDetail' description: | List of field-level error details. nullable: true description: | RFC 7807 problem detail response. InfigoApiAddressBookModel: type: object properties: Id: type: integer description: | The unique identifier of the address book. Null when creating a new address book. nullable: true Name: type: string description: | The name of the address book for display and identification purposes. nullable: true Description: type: string description: | A detailed description of the address book's purpose and contents. nullable: true ValidateRecords: type: boolean description: | Indicates whether addresses in this address book should be validated against address validation rules. AvailableForEveryone: type: boolean description: | Indicates whether this address book is accessible to all users or restricted to specific users. description: | Represents an address book that contains a collection of addresses for API operations. Address books can be shared across users or restricted to specific users with validation options. InfigoOrderByFilter: enum: - 0 - 1 type: integer description: | Specifies the field to order dynamic products by Possible values: - `0` - Id - Order by product ID - `1` - Name - Order by product name x-enumNames: - Id - Name x-enum-varnames: - Id - Name x-enum-descriptions: - Order by product ID - Order by product name x-ms-enum: name: OrderByFilter modelAsString: false values: - value: 0 name: Id description: Order by product ID - value: 1 name: Name description: Order by product name InfigoSortDirection: enum: - 0 - 1 type: integer description: | Specifies the direction for sorting results Possible values: - `0` - Asc - Sort in ascending order (A to Z, 0 to 9) - `1` - Desc - Sort in descending order (Z to A, 9 to 0) x-enumNames: - Asc - Desc x-enum-varnames: - Asc - Desc x-enum-descriptions: - 'Sort in ascending order (A to Z, 0 to 9)' - 'Sort in descending order (Z to A, 9 to 0)' x-ms-enum: name: SortDirection modelAsString: false values: - value: 0 name: Asc description: 'Sort in ascending order (A to Z, 0 to 9)' - value: 1 name: Desc description: 'Sort in descending order (Z to A, 9 to 0)' InfigoIApiError: type: object properties: ErrorMessage: type: string description: '' nullable: true Location: type: string description: '' nullable: true IsBadRequest: type: boolean description: '' description: '' InfigoContextInfo: type: object properties: ErrorList: type: array items: $ref: '#/components/schemas/InfigoIApiError' description: | List of errors that occurred during the operation. Each error contains a message and location information. nullable: true description: | Context information containing any errors, warnings, or messages from the operation. InfigoApiResponseObject: type: object properties: Success: type: boolean description: | Indicates whether the operation completed successfully. When false, check ContextInfo.ErrorList for error details. Code: type: string description: | A response code identifying the result type (e.g., 'OK', 'CREATED', 'ERROR'). nullable: true ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the operation. nullable: true HelpUrl: type: string description: | URL to documentation or help resources for troubleshooting issues with this endpoint. nullable: true Message: type: string description: | A human-readable message describing the result of the operation. nullable: true description: | Standard API response wrapper containing operation result status, error information, and helpful links. Used as the base response type for many API operations. InfigoAssignAddressBookToEnum: enum: - 0 - 1 - 2 type: integer description: | Specifies the entity type to which an address book can be assigned. Possible values: - `0` - Customer - Assign address book to a specific customer account. - `1` - Department - Assign address book to a department or organizational unit. - `2` - CustomerRole - Assign address book to a customer role group. x-enumNames: - Customer - Department - CustomerRole x-enum-varnames: - Customer - Department - CustomerRole x-enum-descriptions: - Assign address book to a specific customer account. - Assign address book to a department or organizational unit. - Assign address book to a customer role group. x-ms-enum: name: AssignAddressBookToEnum modelAsString: false values: - value: 0 name: Customer description: Assign address book to a specific customer account. - value: 1 name: Department description: Assign address book to a department or organizational unit. - value: 2 name: CustomerRole description: Assign address book to a customer role group. InfigoAssignAddressBookModel: type: object properties: Id: type: integer description: | The ID of the entity (e.g., customer ID, user group ID) to which the address book will be assigned. AddressBook: allOf: - $ref: '#/components/schemas/InfigoApiAddressBookModel' description: | The address book details to be assigned to the specified entity. nullable: true AssignAddressBookTo: allOf: - $ref: '#/components/schemas/InfigoAssignAddressBookToEnum' description: | Specifies the type of entity this address book is being assigned to (e.g., Customer, UserGroup). Possible values: - `0` - Customer - Assign address book to a specific customer account. - `1` - Department - Assign address book to a department or organizational unit. - `2` - CustomerRole - Assign address book to a customer role group. description: | Represents a request to assign an address book to a specific entity such as a customer or user group. InfigoApiMisConfig: required: - PluginSystemName - ExternalId type: object properties: PluginSystemName: type: string description: | The system name of the MIS plugin that this configuration applies to (e.g., 'Mis.TharsternEstimatePro', 'Mis.PrintIQ', 'Mis.Cerm'). nullable: true ExternalId: type: string description: | The external identifier used by the MIS system to reference this entity. Format depends on the specific MIS integration. nullable: true description: | MIS configuration entry linking an entity to an external system. Used for integration with print MIS, ERP, and other business systems. InfigoApiAddress: type: object properties: Id: type: integer description: | The unique identifier of the address. Null when creating a new address. nullable: true FirstName: type: string description: | The first name of the address recipient. nullable: true LastName: type: string description: | The last name of the address recipient. nullable: true CompanyName: type: string description: | The company/organization name at this address. nullable: true AddressLine1: type: string description: | The primary address line (street address, building number). nullable: true AddressLine2: type: string description: | The secondary address line (suite, floor, apartment, etc.). nullable: true Town: type: string description: | The city or town name. nullable: true ZipPostalCode: type: string description: | The ZIP or postal code. nullable: true StateProvince: type: string description: | The state, province, or region name. nullable: true Country: type: string description: | The country name or ISO country code. nullable: true Telephone: type: string description: | The telephone/phone number at this address. nullable: true FaxNumber: type: string description: | The fax number at this address. nullable: true Email: type: string description: | The email address associated with this address. nullable: true IsUsableAsShippingAddress: type: boolean description: | Indicates whether this address can be selected as a shipping destination. nullable: true IsUsableAsBillingAddress: type: boolean description: | Indicates whether this address can be selected as a billing address. nullable: true IsEditableName: type: boolean description: | Indicates whether the customer can edit the name fields of this address. nullable: true IsEditableAddress: type: boolean description: | Indicates whether the customer can edit the address fields. nullable: true IsEditableCompany: type: boolean description: | Indicates whether the customer can edit the company name field. nullable: true IsEditableContact: type: boolean description: | Indicates whether the customer can edit the contact fields (phone, email, fax). nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Address model representing a customer's billing or shipping address. Used for order fulfillment, invoicing, and customer address book management. InfigoAssignAddressToEnum: enum: - 0 - 1 - 2 type: integer description: | Specifies the entity type to which an individual address can be assigned. Possible values: - `0` - Customer - Assign address directly to a specific customer account. - `1` - Department - Assign address to a department or organizational unit. - `2` - AddressBook - Assign address to an address book for shared access. x-enumNames: - Customer - Department - AddressBook x-enum-varnames: - Customer - Department - AddressBook x-enum-descriptions: - Assign address directly to a specific customer account. - Assign address to a department or organizational unit. - Assign address to an address book for shared access. x-ms-enum: name: AssignAddressToEnum modelAsString: false values: - value: 0 name: Customer description: Assign address directly to a specific customer account. - value: 1 name: Department description: Assign address to a department or organizational unit. - value: 2 name: AddressBook description: Assign address to an address book for shared access. InfigoAssignApiAddressModel: type: object properties: Id: type: integer description: | The ID of the entity (e.g., customer ID, order ID, address book ID) to which the address will be assigned. Address: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The address details to be assigned to the specified entity. nullable: true AssignAddressTo: allOf: - $ref: '#/components/schemas/InfigoAssignAddressToEnum' description: | Specifies the type of entity this address is being assigned to (e.g., Customer, Order, AddressBook). Possible values: - `0` - Customer - Assign address directly to a specific customer account. - `1` - Department - Assign address to a department or organizational unit. - `2` - AddressBook - Assign address to an address book for shared access. description: | Represents a request to assign a specific address to an entity such as a customer, order, or address book. InfigoAuthentication: type: object properties: Name: type: string description: | The name or identifier of the authenticated entity or API consumer. nullable: true Id: type: integer description: | The unique identifier for this authentication record. ApiKey: type: string description: | The API key used for authenticating requests to the API. nullable: true AccountId: type: integer description: | The account ID associated with this authentication. PortalId: type: integer description: | The portal ID that this authentication is associated with, for multi-portal scenarios. description: | Represents authentication credentials and associated account information for API access. InfigoBatchJobStatusEnumString: enum: - Queued - Processing - Finished - Failed - PartiallyFinished type: string description: | Batch job processing status. Possible values: - `Queued` - Job is queued and waiting to be processed. - `Processing` - Job is currently being processed. - `Finished` - Job has completed successfully. - `Failed` - Job has failed during processing. - `PartiallyFinished` - Job has partially completed with some failures. x-enumNames: - Queued - Processing - Finished - Failed - PartiallyFinished x-enum-varnames: - Queued - Processing - Finished - Failed - PartiallyFinished x-enum-descriptions: - Job is queued and waiting to be processed. - Job is currently being processed. - Job has completed successfully. - Job has failed during processing. - Job has partially completed with some failures. x-ms-enum: name: BatchJobStatusEnum modelAsString: false values: - value: Queued name: Queued description: Job is queued and waiting to be processed. - value: Processing name: Processing description: Job is currently being processed. - value: Finished name: Finished description: Job has completed successfully. - value: Failed name: Failed description: Job has failed during processing. - value: PartiallyFinished name: PartiallyFinished description: Job has partially completed with some failures. InfigoBatchJobItemCountsModel: type: object properties: Total: type: integer description: | Total number of batch job items. Finished: type: integer description: | Number of batch job items that have finished successfully. Failed: type: integer description: | Number of batch job items that have failed. Pending: type: integer description: | Number of batch job items that are pending processing. description: | Counts of batch job items grouped by status. InfigoBatchJobItemStatusEnumString: enum: - Pending - Failed - Finished type: string description: | Status of a batch job item indicating its processing state Possible values: - `Pending` - Item is waiting to be processed - `Failed` - Item processing failed with an error - `Finished` - Item has been successfully processed x-enumNames: - Pending - Failed - Finished x-enum-varnames: - Pending - Failed - Finished x-enum-descriptions: - Item is waiting to be processed - Item processing failed with an error - Item has been successfully processed x-ms-enum: name: BatchJobItemStatusEnum modelAsString: false values: - value: Pending name: Pending description: Item is waiting to be processed - value: Failed name: Failed description: Item processing failed with an error - value: Finished name: Finished description: Item has been successfully processed InfigoBatchJobItemInfo: type: object properties: JobId: type: integer description: | The unique identifier of the batch job item Status: allOf: - $ref: '#/components/schemas/InfigoBatchJobItemStatusEnumString' description: | The current status of the batch job item Possible values: - `Pending` - Item is waiting to be processed - `Failed` - Item processing failed with an error - `Finished` - Item has been successfully processed Type: type: string description: | The type of batch job operation being performed. nullable: true ErrorMessage: type: string description: | Error message if the job item failed, null otherwise nullable: true Payload: type: object description: | The payload data associated with the batch job item. description: | Information about a batch job item including its status InfigoBatchJobItemsInfoModel: type: object properties: Status: allOf: - $ref: '#/components/schemas/InfigoBatchJobStatusEnumString' description: | The overall status of the batch job. Possible values: - `Queued` - Job is queued and waiting to be processed. - `Processing` - Job is currently being processed. - `Finished` - Job has completed successfully. - `Failed` - Job has failed during processing. - `PartiallyFinished` - Job has partially completed with some failures. ErrorMessage: type: string description: | Error message if the batch processing failed. Null if processing was successful. nullable: true Counts: allOf: - $ref: '#/components/schemas/InfigoBatchJobItemCountsModel' description: | Counts of batch job items grouped by status. nullable: true PageIndex: type: integer description: | Zero-based index of the current page of results. PageSize: type: integer description: | Number of items per page. TotalPages: type: integer description: | Total number of pages. TotalCount: type: integer description: | Total number of batch job items. BatchJobItems: type: array items: $ref: '#/components/schemas/InfigoBatchJobItemInfo' description: | List of batch job items with their current processing status and results. nullable: true description: | Response model containing batch job processing results. Includes status information for each job item and any error messages. InfigoBatchJobItemStatusEnum: enum: - 5 - 10 - 15 type: integer description: | Status of a batch job item indicating its processing state Possible values: - `5` - Pending - Item is waiting to be processed - `10` - Failed - Item processing failed with an error - `15` - Finished - Item has been successfully processed x-enumNames: - Pending - Failed - Finished x-enum-varnames: - Pending - Failed - Finished x-enum-descriptions: - Item is waiting to be processed - Item processing failed with an error - Item has been successfully processed x-ms-enum: name: BatchJobItemStatusEnum modelAsString: false values: - value: 5 name: Pending description: Item is waiting to be processed - value: 10 name: Failed description: Item processing failed with an error - value: 15 name: Finished description: Item has been successfully processed InfigoBatchJobCallbackModelJob: type: object properties: BatchJobItemStatus: type: string description: | The status of this individual batch job item nullable: true Type: type: string description: | The type of batch job operation nullable: true PayLoad: type: object description: | The payload data for this job item ErrorMessage: type: string description: | Error message if this job item failed, null otherwise nullable: true description: | Individual job item within a batch job callback InfigoBatchJobCallbackModel: type: object properties: BatchId: type: string description: | The unique identifier of the batch job nullable: true Status: type: string description: | The current status of the batch job nullable: true ErrorMessage: type: string description: | Error message if the batch job failed, null otherwise nullable: true Jobs: type: array items: $ref: '#/components/schemas/InfigoBatchJobCallbackModelJob' description: | List of individual job items in this batch nullable: true description: | Callback model containing batch job status and results InfigoBatchJobType: enum: - 0 - 1 type: integer description: | Type of batch job operation to be performed Possible values: - `0` - UpdateStockQuantity - Update stock quantity for products in bulk - `1` - UpdateOrder - Update order in batch. x-enumNames: - UpdateStockQuantity - UpdateOrder x-enum-varnames: - UpdateStockQuantity - UpdateOrder x-enum-descriptions: - Update stock quantity for products in bulk - Update order in batch. x-ms-enum: name: BatchJobType modelAsString: false values: - value: 0 name: UpdateStockQuantity description: Update stock quantity for products in bulk - value: 1 name: UpdateOrder description: Update order in batch. InfigoBatchDataType: enum: - 0 - 1 type: integer description: | Format of data used in batch job operations Possible values: - `0` - Json - Data is provided as a JSON string - `1` - FileName - Data is provided as a file path reference x-enumNames: - Json - FileName x-enum-varnames: - Json - FileName x-enum-descriptions: - Data is provided as a JSON string - Data is provided as a file path reference x-ms-enum: name: BatchDataType modelAsString: false values: - value: 0 name: Json description: Data is provided as a JSON string - value: 1 name: FileName description: Data is provided as a file path reference InfigoApiBatchJobsModelJob: required: - Type - DataType - PayLoad type: object properties: Type: allOf: - $ref: '#/components/schemas/InfigoBatchJobType' description: | The type of batch job to execute (e.g., output generation, data export). Possible values: - `0` - UpdateStockQuantity - Update stock quantity for products in bulk - `1` - UpdateOrder - Update order in batch. DataType: allOf: - $ref: '#/components/schemas/InfigoBatchDataType' description: | The format of the payload data. Possible values: - `0` - Json - Data is provided as a JSON string - `1` - FileName - Data is provided as a file path reference PayLoad: type: object description: | The job-specific payload containing parameters for job execution. Structure varies based on the job Type. nullable: true description: | Individual batch job definition containing type, data format, and payload. InfigoApiBatchJobsModel: required: - Jobs type: object properties: CallbackUrl: type: string description: | Optional webhook URL to be notified when all jobs in this batch are complete. The system will POST completion status to this URL. nullable: true IncludeJobsData: type: boolean description: | When true, the response will include detailed job data for each queued job. Default is false for better performance with large batches. nullable: true Jobs: type: array items: $ref: '#/components/schemas/InfigoApiBatchJobsModelJob' description: | The list of jobs to be queued for processing. Each job specifies its type, data format, and payload containing job-specific parameters. nullable: true description: | Request model for enqueueing batch jobs for asynchronous processing. Allows submitting multiple jobs of various types to be processed in the background. InfigoBudgetAdjustmentResult: type: object properties: CustomerId: type: string description: | The customer identifier supplied in the request. nullable: true Success: type: boolean description: | True when the adjustment was applied successfully. Message: type: string description: | The adjustment message, or the failure reason when Success is false. nullable: true description: | Outcome of a single budget adjustment within a batch. InfigoBudgetAdjustmentResponse: type: object properties: Results: type: array items: $ref: '#/components/schemas/InfigoBudgetAdjustmentResult' description: | One result per submitted adjustment, in request order. nullable: true description: | Per-item results for a budget adjustment request. InfigoApiErrorDetailV2: type: object properties: Message: type: string description: | Human-readable error message describing the validation failure. nullable: true Field: type: string description: | The name of the field that caused the error, if applicable. nullable: true description: | Field-level error detail. InfigoProblemDetailsV2: type: object properties: Title: type: string description: | A short, human-readable summary of the problem type. nullable: true Status: type: integer description: | The HTTP status code for this problem. Detail: type: string description: | A human-readable explanation specific to this occurrence of the problem. nullable: true Instance: type: string description: | A URI reference that identifies the specific occurrence of the problem. nullable: true AttemptedValue: description: | The value that was attempted and caused the error, if applicable. nullable: true Errors: type: array items: $ref: '#/components/schemas/InfigoApiErrorDetailV2' description: | List of field-level error details. nullable: true description: | RFC 7807 problem detail response. InfigoBudgetTopUpMode: enum: - 0 - 1 - 2 type: integer description: | Controls how the supplied amount is applied to the customer's current budget. Possible values: - `0` - TopUpOnly - Add the amount on top of the current budget every time. - `1` - TopUpTo - Raise the budget up to the amount if the current available total is below it; never removes existing budget. - `2` - TopUpStrict - Set the budget to exactly the amount, removing any excess. x-enumNames: - TopUpOnly - TopUpTo - TopUpStrict x-enum-varnames: - TopUpOnly - TopUpTo - TopUpStrict x-enum-descriptions: - Add the amount on top of the current budget every time. - Raise the budget up to the amount if the current available total is below it; never removes existing budget. - 'Set the budget to exactly the amount, removing any excess.' x-ms-enum: name: BudgetTopUpMode modelAsString: false values: - value: 0 name: TopUpOnly description: Add the amount on top of the current budget every time. - value: 1 name: TopUpTo description: Raise the budget up to the amount if the current available total is below it; never removes existing budget. - value: 2 name: TopUpStrict description: 'Set the budget to exactly the amount, removing any excess.' InfigoBudgetAdjustmentRequest: required: - Amount - TopUpMode type: object properties: CustomerId: type: string description: | Customer identifier. Resolved by Id, Guid, Username, or Email. nullable: true Amount: type: number description: | Positive budget amount to apply, interpreted according to the top-up mode. Required. format: decimal nullable: true TopUpMode: allOf: - $ref: '#/components/schemas/InfigoBudgetTopUpMode' description: | How the amount is applied to the current budget. Required. Possible values: - `0` - TopUpOnly - Add the amount on top of the current budget every time. - `1` - TopUpTo - Raise the budget up to the amount if the current available total is below it; never removes existing budget. - `2` - TopUpStrict - Set the budget to exactly the amount, removing any excess. x-nullable: true SendEmails: type: boolean description: | When true, sends the budget-applied notification email to the customer. nullable: true description: | A single budget adjustment for one customer. InfigoApiBudget: type: object properties: Amount: type: number description: | The total budget amount. format: decimal Used: type: number description: | The amount of the budget already consumed. format: decimal Updated: type: string description: | When the budget was last updated (UTC). format: date-time Created: type: string description: | When the budget was created (UTC). format: date-time description: | A single budget entry applicable to a customer. Mirrors the admin Budgets tab. InfigoCustomerBudgetsResponse: type: object properties: CustomerId: type: string description: | The customer identifier supplied in the request. nullable: true AvailableTotal: type: number description: | The customer's available budget total across all valid budgets (not just the current page). format: decimal Budgets: type: array items: $ref: '#/components/schemas/InfigoApiBudget' description: | The individual budget entries applicable to the customer, for the current page. nullable: true PageIndex: type: integer description: | Zero-based index of the current page. PerPage: type: integer description: | Number of budget entries per page. TotalCount: type: integer description: | Total number of budget entries across all pages. TotalPages: type: integer description: | Total number of pages. description: | The budgets currently applicable to a customer. InfigoCapabilityResponse: type: object properties: SettingName: type: string description: | The name/key of the capability setting. nullable: true SettingValue: type: string description: | The current value of the capability setting. Value format depends on the setting type (string, boolean, number, JSON). nullable: true description: | Response model containing a capability setting value. Returns the name-value pair for a specific configuration setting. InfigoError: type: object properties: PropertyName: type: string description: | The name of the property that failed validation. nullable: true ErrorMessage: type: string description: | The error message describing why the validation failed. nullable: true AttemptedValue: description: | The actual value that was attempted and caused the validation failure. nullable: true description: | Represents a specific validation error for a property or field in the API request. InfigoApiErrorModel: type: object properties: Message: type: string description: | The general error message describing the overall nature of the error. nullable: true Errors: type: array items: $ref: '#/components/schemas/InfigoError' description: | A collection of specific validation errors that occurred during the request processing. nullable: true description: | Represents a structured API error response containing a general error message and detailed validation errors. InfigoCapabilityCategory: enum: - 0 type: integer description: | Categories of system capabilities that can be queried for status. Possible values: - `0` - MisPlugin - MIS plugin capability; checks MIS integration configuration and status. x-enumNames: - MisPlugin x-enum-varnames: - MisPlugin x-enum-descriptions: - MIS plugin capability; checks MIS integration configuration and status. x-ms-enum: name: CapabilityCategory modelAsString: false values: - value: 0 name: MisPlugin description: MIS plugin capability; checks MIS integration configuration and status. InfigoMisCapabilityModel: required: - PluginName - SettingName type: object properties: PluginName: type: string description: | The system name of the MIS plugin to check (e.g., 'MIS.PrintIQ', 'MIS.Symphony'). Must match an installed and configured MIS plugin. nullable: true SettingName: type: string description: | The specific setting name to retrieve from the MIS plugin configuration. Available settings vary by plugin type. nullable: true description: | Context model for checking MIS plugin capabilities. Pass this structure in the Context field when Category is MisPlugin. InfigoCheckStatusCapabilityRequest: required: - Category - Context type: object properties: Category: allOf: - $ref: '#/components/schemas/InfigoCapabilityCategory' description: | The capability category to check. Determines which type of capability configuration will be queried (e.g., MIS integration, payment, shipping). Possible values: - `0` - MisPlugin - MIS plugin capability; checks MIS integration configuration and status. Context: type: object oneOf: - $ref: '#/components/schemas/InfigoMisCapabilityModel' description: | The capability-specific context data required for the status check. Structure varies based on the Category. For MIS capabilities, use MisCapabilityModel structure. nullable: true description: | Request model for checking the status and configuration of a specific capability. Used to verify feature availability and retrieve capability-specific settings. InfigoCreateCategoryRequest: required: - Name type: object properties: Name: type: string description: | The display name for the category. This name appears in the storefront navigation, admin panel, and can be used in breadcrumbs. Should be concise and descriptive of the products it will contain. Example: 'Business Cards', 'Marketing Materials', 'Apparel'. nullable: true Description: type: string description: | Detailed description of the category's contents and purpose. This text may be displayed on the category page in the storefront and helps customers understand what products they'll find. Supports HTML formatting in most themes. Leave empty if no description is needed. nullable: true ParentCategoryId: type: integer description: | The ID of the parent category to create this category under. When specified, the new category becomes a sub-category, creating a hierarchical structure (e.g., 'Print Products' > 'Business Cards'). Leave null or omit to create a root-level category. Use CategoryList endpoint to find available parent category IDs. nullable: true description: | Request model for creating a new category in the product catalog. Categories organize products into a hierarchical structure for easier navigation and filtering. InfigoProductSpecificationAttributeInfo: type: object properties: Id: type: integer description: | The unique identifier of this specification attribute mapping. AttributeName: type: string description: | The name of the specification attribute (e.g., 'Weight', 'Material', 'Color'). nullable: true AttributeOption: type: string description: | The value/option for this specification (e.g., '500g', 'Cotton', 'Blue'). nullable: true description: | Specification attribute information for a product. Specification attributes describe fixed product characteristics (e.g., weight, dimensions, material) displayed as a data table. InfigoItemType: enum: - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 80 type: integer description: | Identifies the kind of product item and the production/personalisation workflow it follows. Possible values: - `10` - Normal - A standard product with no special production workflow. - `20` - Variable - A variable-data product configured through selectable attribute options. - `30` - Static - A static product with no personalisation or online editing. - `40` - MultiPart - A multi-part product composed of several constituent parts. - `50` - Dynamic - A dynamic product personalised through the online editor. - `60` - Sms - An SMS product type. - `70` - Symphony - A Symphony dynamic-editor product. - `80` - Custom - A custom product type with bespoke handling. x-enumNames: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-enum-varnames: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-enum-descriptions: - A standard product with no special production workflow. - A variable-data product configured through selectable attribute options. - A static product with no personalisation or online editing. - A multi-part product composed of several constituent parts. - A dynamic product personalised through the online editor. - An SMS product type. - A Symphony dynamic-editor product. - A custom product type with bespoke handling. x-ms-enum: name: ItemType modelAsString: false values: - value: 10 name: Normal description: A standard product with no special production workflow. - value: 20 name: Variable description: A variable-data product configured through selectable attribute options. - value: 30 name: Static description: A static product with no personalisation or online editing. - value: 40 name: MultiPart description: A multi-part product composed of several constituent parts. - value: 50 name: Dynamic description: A dynamic product personalised through the online editor. - value: 60 name: Sms description: An SMS product type. - value: 70 name: Symphony description: A Symphony dynamic-editor product. - value: 80 name: Custom description: A custom product type with bespoke handling. InfigoApiQuantitySelectorMode: enum: - 0 - 1 type: integer description: | Quantity selection mode determining how customers specify order quantities. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs x-enum-descriptions: - 'Select quantity as individual units (1, 2, 3, etc.).' - Select quantity as packs; each pack contains OrderPackQuantity units. x-ms-enum: name: ApiQuantitySelectorMode modelAsString: false values: - value: 0 name: Units description: 'Select quantity as individual units (1, 2, 3, etc.).' - value: 1 name: Packs description: Select quantity as packs; each pack contains OrderPackQuantity units. InfigoAttributeControlType: enum: - 1 - 2 - 3 - 4 - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 999 type: integer description: | Represents an attribute control type for product attributes Possible values: - `1` - DropdownList - Dropdown list allowing single selection from predefined options - `2` - RadioList - Radio button list allowing single selection from predefined options - `3` - Checkboxes - Checkbox list allowing multiple selections from predefined options - `4` - TextBox - Single-line text input field for free-form text entry - `10` - MultilineTextbox - Multi-line text area for longer free-form text entry - `20` - Datepicker - Date picker control for selecting dates - `30` - FileUpload - File upload control for attaching files to the product - `40` - Info - Informational display only, not an input control - `50` - HtmlSchema - HTML schema attribute for structured data - `60` - System - System attribute used internally, not visible in the storefront - `70` - Number - Numeric input field for entering numbers - `999` - Hidden - Hidden attribute used internally by Catfish extension x-enumNames: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden x-enum-varnames: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden x-enum-descriptions: - Dropdown list allowing single selection from predefined options - Radio button list allowing single selection from predefined options - Checkbox list allowing multiple selections from predefined options - Single-line text input field for free-form text entry - Multi-line text area for longer free-form text entry - Date picker control for selecting dates - File upload control for attaching files to the product - 'Informational display only, not an input control' - HTML schema attribute for structured data - 'System attribute used internally, not visible in the storefront' - Numeric input field for entering numbers - Hidden attribute used internally by Catfish extension x-ms-enum: name: AttributeControlType modelAsString: false values: - value: 1 name: DropdownList description: Dropdown list allowing single selection from predefined options - value: 2 name: RadioList description: Radio button list allowing single selection from predefined options - value: 3 name: Checkboxes description: Checkbox list allowing multiple selections from predefined options - value: 4 name: TextBox description: Single-line text input field for free-form text entry - value: 10 name: MultilineTextbox description: Multi-line text area for longer free-form text entry - value: 20 name: Datepicker description: Date picker control for selecting dates - value: 30 name: FileUpload description: File upload control for attaching files to the product - value: 40 name: Info description: 'Informational display only, not an input control' - value: 50 name: HtmlSchema description: HTML schema attribute for structured data - value: 60 name: System description: 'System attribute used internally, not visible in the storefront' - value: 70 name: Number description: Numeric input field for entering numbers - value: 999 name: Hidden description: Hidden attribute used internally by Catfish extension InfigoProductAttributeValueInfo: type: object properties: Id: type: integer description: | The unique identifier of this attribute value. Name: type: string description: | The internal/system name of this attribute value. nullable: true FriendlyName: type: string description: | The customer-facing display name for this option. nullable: true HtmlInfo: type: string description: | HTML content providing additional information about this option. May include images, color swatches, or formatted descriptions. nullable: true DisplayOrder: type: integer description: | The sort order for displaying this option among other attribute values. Lower values appear first. IsPreSelected: type: boolean description: | Indicates whether this option is pre-selected by default when the product loads. IsDisabled: type: boolean description: | Indicates whether this option is disabled and cannot be selected. Useful for out-of-stock or temporarily unavailable options. PriceAdjustment: type: number description: | The price adjustment applied when this option is selected. Positive values increase the price, negative values decrease it. format: decimal PriceAdjustmentType: type: string description: | The type of price adjustment: 'Absolute' for fixed amount or 'Percentage' for percent of base price. nullable: true WeightAdjustment: type: number description: | The weight adjustment in the configured weight units when this option is selected. format: decimal LengthAdjustment: type: number description: | The length adjustment in configured dimension units when this option is selected. format: decimal nullable: true WidthAdjustment: type: number description: | The width adjustment in configured dimension units when this option is selected. format: decimal nullable: true HeightAdjustment: type: number description: | The height adjustment in configured dimension units when this option is selected. format: decimal nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Product attribute value information representing a selectable option for a product attribute. Contains pricing adjustments and display settings. InfigoProductAttributeInfo: type: object properties: Id: type: integer description: | The unique identifier of the product attribute mapping. Name: type: string description: | The display name of the attribute shown to customers. nullable: true Description: type: string description: | Additional description or instructions for this attribute. May contain HTML. nullable: true AttributeControlType: allOf: - $ref: '#/components/schemas/InfigoAttributeControlType' description: | The UI control type used to display this attribute (e.g., dropdown, radio buttons, checkboxes, text box). Possible values: - `1` - DropdownList - Dropdown list allowing single selection from predefined options - `2` - RadioList - Radio button list allowing single selection from predefined options - `3` - Checkboxes - Checkbox list allowing multiple selections from predefined options - `4` - TextBox - Single-line text input field for free-form text entry - `10` - MultilineTextbox - Multi-line text area for longer free-form text entry - `20` - Datepicker - Date picker control for selecting dates - `30` - FileUpload - File upload control for attaching files to the product - `40` - Info - Informational display only, not an input control - `50` - HtmlSchema - HTML schema attribute for structured data - `60` - System - System attribute used internally, not visible in the storefront - `70` - Number - Numeric input field for entering numbers - `999` - Hidden - Hidden attribute used internally by Catfish extension IsRequired: type: boolean description: | Indicates whether the customer must select a value for this attribute before ordering. ProductAttributeValues: type: array items: $ref: '#/components/schemas/InfigoProductAttributeValueInfo' description: | List of available values/options for this attribute. For dropdown or radio attributes, these are the selectable options. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Product attribute information model representing a configurable attribute (e.g., size, color, paper type) that customers can select when ordering a product. InfigoBackorderMode: enum: - 0 - 1 - 2 type: integer description: | Represents a backorder mode for inventory management Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: name: BackorderMode modelAsString: false values: - value: 0 name: NoBackorders - value: 1 name: AllowQtyBelow0 - value: 2 name: AllowQtyBelow0AndNotifyCustomer InfigoProductAttributeCombination: type: object properties: Id: type: integer description: | The unique identifier of this attribute combination. ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: | The list of product attributes with their selected values that define this combination. nullable: true AllowOutOfStockOrders: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Determines how out-of-stock orders are handled for this combination. NoBackorders prevents ordering when stock is zero. Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer Sku: type: string description: | The unique SKU (Stock Keeping Unit) for this specific attribute combination. Used for inventory tracking and integration with external systems. nullable: true Priority: type: integer description: | The priority/sort order for this combination. Lower values have higher priority and are matched first when determining which combination applies. StockValue: type: integer description: | The current stock quantity available for this specific combination. NotifyAdminForQuantityBelow: type: integer description: '' MinimumBasketQuantity: type: integer description: | The minimum quantity that can be ordered for this combination. Overrides the product-level minimum if set. nullable: true MaximumBasketQuantity: type: integer description: | The maximum quantity that can be ordered for this combination. Overrides the product-level maximum if set. nullable: true Published: type: boolean description: | Indicates whether this combination is published and available for ordering. Unpublished combinations are hidden from customers. MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Product attribute combination representing a specific variant of a product. Contains SKU, stock, and settings for a particular set of attribute selections. InfigoManageInventoryMethod: enum: - 0 - 1 - 2 type: integer description: | Represents the method used to manage and track product variant inventory. Possible values: - `0` - DontManageStock - `1` - ManageStock - `2` - ManageStockByAttributes x-enumNames: - DontManageStock - ManageStock - ManageStockByAttributes x-enum-varnames: - DontManageStock - ManageStock - ManageStockByAttributes x-enum-descriptions: - DontManageStock - ManageStock - ManageStockByAttributes x-ms-enum: name: ManageInventoryMethod modelAsString: false values: - value: 0 name: DontManageStock - value: 1 name: ManageStock - value: 2 name: ManageStockByAttributes InfigoLowStockActivity: enum: - 0 - 1 - 2 - 3 - 4 type: integer description: | Represents the action taken when a product variant reaches its low-stock threshold. Possible values: - `0` - Nothing - Take no action when stock runs low. - `1` - EnableOrDisableBuyButton - Enable or disable the buy button based on stock availability. - `2` - PublishOrUnpublish - Publish or unpublish the product based on stock availability. - `3` - OnlyDisableBuyButton - Disable the buy button when stock runs low. - `4` - OnlyUnpublish - Unpublish the product when stock runs low. x-enumNames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enum-varnames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enum-descriptions: - Take no action when stock runs low. - Enable or disable the buy button based on stock availability. - Publish or unpublish the product based on stock availability. - Disable the buy button when stock runs low. - Unpublish the product when stock runs low. x-ms-enum: name: LowStockActivity modelAsString: false values: - value: 0 name: Nothing description: Take no action when stock runs low. - value: 1 name: EnableOrDisableBuyButton description: Enable or disable the buy button based on stock availability. - value: 2 name: PublishOrUnpublish description: Publish or unpublish the product based on stock availability. - value: 3 name: OnlyDisableBuyButton description: Disable the buy button when stock runs low. - value: 4 name: OnlyUnpublish description: Unpublish the product when stock runs low. InfigoAdditionalShippingChargeType: enum: - 0 - 1 type: integer description: | Determines how an additional shipping charge is applied to an order line. Possible values: - `0` - PerUnit - Apply the additional shipping charge per unit (multiplied by quantity). - `1` - PerOrderLine - Apply the additional shipping charge once per order line regardless of quantity. x-enumNames: - PerUnit - PerOrderLine x-enum-varnames: - PerUnit - PerOrderLine x-enum-descriptions: - Apply the additional shipping charge per unit (multiplied by quantity). - Apply the additional shipping charge once per order line regardless of quantity. x-ms-enum: name: AdditionalShippingChargeType modelAsString: false values: - value: 0 name: PerUnit description: Apply the additional shipping charge per unit (multiplied by quantity). - value: 1 name: PerOrderLine description: Apply the additional shipping charge once per order line regardless of quantity. InfigoShareTiersEnum: enum: - 0 - 1 - 2 - 3 type: integer description: | Controls how quantity-tier pricing is shared across products and attributes in the cart. Possible values: - `0` - NoShare - `1` - SameProducts - `2` - SameProductsAndAttributes - `3` - SameProductsAndSelectedAttributes x-enumNames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enum-varnames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enum-descriptions: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-ms-enum: name: ShareTiersEnum modelAsString: false values: - value: 0 name: NoShare - value: 1 name: SameProducts - value: 2 name: SameProductsAndAttributes - value: 3 name: SameProductsAndSelectedAttributes InfigoDownloadActivationType: enum: - 1 - 10 type: integer description: | Represents when a downloadable product becomes available to the customer. Possible values: - `1` - WhenOrderIsPaid - Activate the download once the order has been paid. - `10` - Manually - Activate the download manually by an administrator. x-enumNames: - WhenOrderIsPaid - Manually x-enum-varnames: - WhenOrderIsPaid - Manually x-enum-descriptions: - Activate the download once the order has been paid. - Activate the download manually by an administrator. x-ms-enum: name: DownloadActivationType modelAsString: false values: - value: 1 name: WhenOrderIsPaid description: Activate the download once the order has been paid. - value: 10 name: Manually description: Activate the download manually by an administrator. InfigoRecurringProductCyclePeriod: enum: - 0 - 10 - 20 - 30 type: integer description: | Represents the unit of time between cycles of a recurring product. Possible values: - `0` - Days - The recurring cycle is measured in days. - `10` - Weeks - The recurring cycle is measured in weeks. - `20` - Months - The recurring cycle is measured in months. - `30` - Years - The recurring cycle is measured in years. x-enumNames: - Days - Weeks - Months - Years x-enum-varnames: - Days - Weeks - Months - Years x-enum-descriptions: - The recurring cycle is measured in days. - The recurring cycle is measured in weeks. - The recurring cycle is measured in months. - The recurring cycle is measured in years. x-ms-enum: name: RecurringProductCyclePeriod modelAsString: false values: - value: 0 name: Days description: The recurring cycle is measured in days. - value: 10 name: Weeks description: The recurring cycle is measured in weeks. - value: 20 name: Months description: The recurring cycle is measured in months. - value: 30 name: Years description: The recurring cycle is measured in years. InfigoGiftCardType: enum: - 0 - 1 type: integer description: | Represents whether a gift card is delivered virtually or as a physical item. Possible values: - `0` - Virtual - A virtual gift card delivered electronically. - `1` - Physical - A physical gift card shipped to the customer. x-enumNames: - Virtual - Physical x-enum-varnames: - Virtual - Physical x-enum-descriptions: - A virtual gift card delivered electronically. - A physical gift card shipped to the customer. x-ms-enum: name: GiftCardType modelAsString: false values: - value: 0 name: Virtual description: A virtual gift card delivered electronically. - value: 1 name: Physical description: A physical gift card shipped to the customer. InfigoProductInfo: type: object properties: ShortDescription: type: string description: | A brief summary description of the product, typically displayed in product listings and search results. Should be concise and highlight key product features. nullable: true SpecificationAttributes: type: array items: $ref: '#/components/schemas/InfigoProductSpecificationAttributeInfo' description: | List of specification attributes associated with this product. Specification attributes provide detailed product specifications like dimensions, weight, material, etc. for comparison shopping. nullable: true Id: type: integer description: '' Name: type: string description: '' nullable: true LongDescription: type: string description: '' nullable: true Type: allOf: - $ref: '#/components/schemas/InfigoItemType' description: | Possible values: - `10` - Normal - A standard product with no special production workflow. - `20` - Variable - A variable-data product configured through selectable attribute options. - `30` - Static - A static product with no personalisation or online editing. - `40` - MultiPart - A multi-part product composed of several constituent parts. - `50` - Dynamic - A dynamic product personalised through the online editor. - `60` - Sms - An SMS product type. - `70` - Symphony - A Symphony dynamic-editor product. - `80` - Custom - A custom product type with bespoke handling. Price: type: number description: '' format: decimal StockValue: type: integer description: '' Sku: type: string description: '' nullable: true OrderPackQuantity: type: integer description: '' QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. PreviewUrls: type: array items: type: string description: '' nullable: true description: '' nullable: true ThumbnailUrls: type: array items: type: string description: '' nullable: true description: '' nullable: true Tags: type: array items: type: string description: '' nullable: true description: '' nullable: true IsShippingEnabled: type: boolean description: '' ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: '' nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombination' description: '' nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true ManageInventoryMethod: allOf: - $ref: '#/components/schemas/InfigoManageInventoryMethod' description: | Possible values: - `0` - DontManageStock - `1` - ManageStock - `2` - ManageStockByAttributes DisplayStockAvailability: type: boolean description: '' DisplayStockQuantity: type: boolean description: '' MinStockQuantity: type: integer description: '' LowStockActivity: allOf: - $ref: '#/components/schemas/InfigoLowStockActivity' description: | Possible values: - `0` - Nothing - Take no action when stock runs low. - `1` - EnableOrDisableBuyButton - Enable or disable the buy button based on stock availability. - `2` - PublishOrUnpublish - Publish or unpublish the product based on stock availability. - `3` - OnlyDisableBuyButton - Disable the buy button when stock runs low. - `4` - OnlyUnpublish - Unpublish the product when stock runs low. NotifyAdminForQuantityBelow: type: integer description: '' BackorderMode: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer AllowBackInStockSubscriptions: type: boolean description: '' OldPrice: type: number description: '' format: decimal ProductCost: type: number description: '' format: decimal SpecialPrice: type: number description: '' format: decimal nullable: true SpecialPriceStartDateTimeUtc: type: string description: '' format: date-time nullable: true SpecialPriceEndDateTimeUtc: type: string description: '' format: date-time nullable: true CallForPrice: type: boolean description: '' CustomerEntersPrice: type: boolean description: '' MinimumCustomerEnteredPrice: type: number description: '' format: decimal MaximumCustomerEnteredPrice: type: number description: '' format: decimal DisableBuyButton: type: boolean description: '' DisableWishlistButton: type: boolean description: '' RequiresQuote: type: boolean description: '' IsFreeShipping: type: boolean description: '' AdditionalShippingCharge: type: number description: '' format: decimal AdditionalShippingChargeType: allOf: - $ref: '#/components/schemas/InfigoAdditionalShippingChargeType' description: | Possible values: - `0` - PerUnit - Apply the additional shipping charge per unit (multiplied by quantity). - `1` - PerOrderLine - Apply the additional shipping charge once per order line regardless of quantity. Weight: type: number description: '' format: decimal Length: type: number description: '' format: decimal Width: type: number description: '' format: decimal Height: type: number description: '' format: decimal UseMultiTierSpread: type: boolean description: '' UseInterpolationForTierPricing: type: boolean description: '' ShareTiersOnCart: allOf: - $ref: '#/components/schemas/InfigoShareTiersEnum' description: | Possible values: - `0` - NoShare - `1` - SameProducts - `2` - SameProductsAndAttributes - `3` - SameProductsAndSelectedAttributes IsTaxExempt: type: boolean description: '' TaxCategoryIds: type: array items: type: integer description: '' description: '' nullable: true DisplayOrder: type: integer description: '' EnableDeliveryCountdown: type: boolean description: '' IsDownload: type: boolean description: '' UnlimitedDownloads: type: boolean description: '' MaxNumberOfDownloads: type: integer description: '' DownloadExpirationDays: type: integer description: '' nullable: true DownloadActivationType: allOf: - $ref: '#/components/schemas/InfigoDownloadActivationType' description: | Possible values: - `1` - WhenOrderIsPaid - Activate the download once the order has been paid. - `10` - Manually - Activate the download manually by an administrator. HasSampleDownload: type: boolean description: '' HasUserAgreement: type: boolean description: '' UserAgreementText: type: string description: '' nullable: true IsRecurring: type: boolean description: '' RecurringCycleLength: type: integer description: '' RecurringCyclePeriod: allOf: - $ref: '#/components/schemas/InfigoRecurringProductCyclePeriod' description: | Possible values: - `0` - Days - The recurring cycle is measured in days. - `10` - Weeks - The recurring cycle is measured in weeks. - `20` - Months - The recurring cycle is measured in months. - `30` - Years - The recurring cycle is measured in years. RecurringTotalCycles: type: integer description: '' IsGiftCard: type: boolean description: '' GiftCardType: allOf: - $ref: '#/components/schemas/InfigoGiftCardType' description: | Possible values: - `0` - Virtual - A virtual gift card delivered electronically. - `1` - Physical - A physical gift card shipped to the customer. IsPrepayProduct: type: boolean description: '' nullable: true PrepayAmount: type: number description: '' format: decimal nullable: true Published: type: boolean description: '' ShowOnHomePage: type: boolean description: '' HomePageProductOrder: type: integer description: '' nullable: true ShowProductInSearch: type: boolean description: '' AllowToUseProductWhereNotSearchable: type: boolean description: '' AllowCustomerReviews: type: boolean description: '' RequestPriceOnLandingPage: type: boolean description: '' RequiresApproval: type: boolean description: '' AdditionalDescription: type: string description: '' nullable: true AdditionalTabText: type: string description: '' nullable: true TeaserDetails: type: string description: '' nullable: true SearchTerms: type: string description: '' nullable: true EmbedVideoCode: type: string description: '' nullable: true Preview360: type: string description: '' nullable: true description: | Product information response model returned by catalog search and product detail endpoints. Contains core product data including pricing, stock, descriptions, and specification attributes. InfigoApiBaseTierPrice: type: object properties: Quantity: type: integer description: | The minimum quantity required to qualify for this tier price. When order quantity meets or exceeds this value, the tier price applies. Price: type: number description: | The unit price per item at this quantity tier. Lower prices at higher quantities provide volume discounts. format: decimal description: | Represents a tier price point for quantity-based pricing. Defines a minimum quantity threshold and the corresponding unit price at that quantity level. InfigoProductAttributeValuePriceAdjustmentTypeEnum: enum: - 0 - 1 type: integer description: | Type of price adjustment applied to a product attribute value Possible values: - `0` - Percent - Price adjustment as a percentage of the base price - `1` - Absolute - Price adjustment as an absolute fixed amount x-enumNames: - Percent - Absolute x-enum-varnames: - Percent - Absolute x-enum-descriptions: - Price adjustment as a percentage of the base price - Price adjustment as an absolute fixed amount x-ms-enum: name: ProductAttributeValuePriceAdjustmentTypeEnum modelAsString: false values: - value: 0 name: Percent description: Price adjustment as a percentage of the base price - value: 1 name: Absolute description: Price adjustment as an absolute fixed amount InfigoProductAttributeValueRequest: type: object properties: Name: type: string description: | The name of the product attribute value. nullable: true FriendlyName: type: string description: | A user-friendly name for the product attribute value. nullable: true HtmlInfo: type: string description: | HTML content providing additional information about the product attribute value. nullable: true DisplayOrder: type: integer description: | The display order of the product attribute value in the UI. IsDisabled: type: boolean description: | Indicates whether the product attribute value is disabled and should not be available for selection. IsPreselected: type: boolean description: | Indicates whether the product attribute value is selected by default. ProductionOffsetAdjustment: type: integer description: | The adjustment to the product's production time when this value is selected. PriceAdjustment: type: number description: | The price adjustment applied to the product's base price when this value is selected. format: decimal WeightAdjustment: type: number description: | The weight adjustment applied to the product when this value is selected. format: decimal WidthAdjustment: type: number description: | The adjustment applied to the product's width when this value is selected. format: decimal HeightAdjustment: type: number description: | The adjustment applied to the product's height when this value is selected. format: decimal LengthAdjustment: type: number description: | The adjustment applied to the product's length when this value is selected. format: decimal PriceAdjustmentType: allOf: - $ref: '#/components/schemas/InfigoProductAttributeValuePriceAdjustmentTypeEnum' description: | The type of price adjustment applied, indicating whether it's an absolute value or a percentage. Possible values: - `0` - Percent - Price adjustment as a percentage of the base price - `1` - Absolute - Price adjustment as an absolute fixed amount description: | Request model for a product attribute value. Inherits all properties from BaseProductAttributeValueRequest for defining selectable options like colors, sizes, or finishing types. InfigoProductAttributeRequest: type: object properties: ProductAttributeValues: type: array items: $ref: '#/components/schemas/InfigoProductAttributeValueRequest' description: | A list of product attribute values to assign to product attribute. An empty list will delete the assigned attributes values. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true Id: type: integer description: | The ID of the product attribute you want to assign to the product. nullable: true Name: type: string description: | The name of the product attribute. Not mandatory if ID provided nullable: true ProductPageLabel: type: string description: | The label of the product attribute that will be displayed on the product page. Please use "Description" instead of ProductPageLabel(obsolete) to pass the value nullable: true IsRequired: type: boolean description: | Indicates whether the product attribute is required. DisplayOrder: type: integer description: | The display order of the product attribute in the UI. IsHidden: type: boolean description: | Indicates whether the product attribute is hidden from the UI. AttributeControlType: allOf: - $ref: '#/components/schemas/InfigoAttributeControlType' description: | The UI control type used to render this attribute on the product page (e.g., dropdown list, radio buttons, checkbox, text field). Possible values: - `1` - DropdownList - Dropdown list allowing single selection from predefined options - `2` - RadioList - Radio button list allowing single selection from predefined options - `3` - Checkboxes - Checkbox list allowing multiple selections from predefined options - `4` - TextBox - Single-line text input field for free-form text entry - `10` - MultilineTextbox - Multi-line text area for longer free-form text entry - `20` - Datepicker - Date picker control for selecting dates - `30` - FileUpload - File upload control for attaching files to the product - `40` - Info - Informational display only, not an input control - `50` - HtmlSchema - HTML schema attribute for structured data - `60` - System - System attribute used internally, not visible in the storefront - `70` - Number - Numeric input field for entering numbers - `999` - Hidden - Hidden attribute used internally by Catfish extension description: | Request model for configuring a product attribute assignment. Extends the base attribute configuration with values and MIS integration settings. InfigoCreateProductRequest: required: - Name type: object properties: TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiBaseTierPrice' description: | List of tier pricing rules for quantity-based discounts. Tier prices allow you to offer reduced prices when customers order larger quantities (e.g., 10% off for 100+ units, 20% off for 500+ units). Leave empty if no volume discounts apply. Tiers should be ordered by quantity ascending. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeRequest' description: | List of product attributes to configure for this product. Product attributes define customizable options that customers can select (e.g., size, color, paper type, finishing options). Each attribute can have multiple values with optional price adjustments. When provided, replaces any existing attribute configuration. nullable: true IsShippingEnabled: type: boolean description: | Indicates whether the product requires shipping. Set to true for physical products that need delivery, false for digital products, downloads, or services. When enabled, shipping calculations apply during checkout. Default is false. nullable: true CreateFromProductId: type: integer description: | ID of an existing product to copy properties from. When specified, the new product inherits settings, attributes, and configurations from the source product, reducing setup time for similar products. Properties explicitly set in this request will override the copied values. nullable: true MinimumBasketQuantity: type: integer description: | Minimum quantity that must be ordered. Prevents orders below this threshold - useful for products with minimum production runs or bulk-only items. When set, customers cannot add fewer items to their basket. Leave null for no minimum restriction. nullable: true DefaultBasketQuantity: type: integer description: | Default quantity pre-filled in the quantity selector when customers view the product. Use to suggest common order quantities and streamline the purchasing process. Should be between MinimumBasketQuantity and MaximumBasketQuantity if those are set. nullable: true MaximumBasketQuantity: type: integer description: | Maximum quantity that can be ordered in a single order. Useful for limiting orders due to production capacity, promotional restrictions, or inventory constraints. Leave null for no maximum restriction. nullable: true OrderPackQuantity: type: integer description: | Quantity increment for ordering (pack size). When set, customers can only order in multiples of this value (e.g., if set to 50, customers can order 50, 100, 150, etc.). Useful for products sold in packs or bundles. nullable: true Price: type: number description: | Base price of the product in the store's default currency. This is the starting price before any tier pricing, attribute adjustments, or discounts are applied. For variable products, this typically represents the minimum configuration price. format: decimal nullable: true QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Controls how customers select quantity on the product page. Options include dropdown, text input, or predefined quantity buttons. The optimal mode depends on your product's typical order quantities and customer ordering patterns. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. x-nullable: true Name: type: string description: | The display name of the product shown in the storefront, search results, and order confirmations. Should be clear and descriptive. Maximum recommended length is 200 characters for optimal display across all themes. nullable: true Description: type: string description: | Short description of the product, typically displayed in product listings and search results. Keep concise (1-2 sentences) to encourage click-through to the full product page. Supports HTML formatting. nullable: true FullDescription: type: string description: | Detailed product description displayed on the product detail page. Use this for comprehensive product information, specifications, features, and benefits. Supports full HTML formatting including images, tables, and embedded media. nullable: true Tags: type: array items: type: string description: '' nullable: true description: | Array of tag names to associate with the product. Tags enable customers to find products through tag-based navigation and improve search discoverability. Tags that don't exist will be created automatically. Example: ['eco-friendly', 'premium', 'bestseller']. nullable: true CategoryIds: type: array items: type: integer description: '' description: | Array of category IDs to assign the product to. A product can belong to multiple categories for cross-listing. At least one category is recommended for the product to appear in storefront navigation. Use the CategoryList endpoint to find available category IDs. nullable: true ProductGroupId: type: integer description: | Links the product to a product group for grouped product management. Product groups allow coordinated pricing, inventory, and promotional rules across related products. Leave null if the product is not part of a group. nullable: true SKU: type: string description: | Stock Keeping Unit - a unique identifier for inventory tracking and external system integration. Must be unique across all products if provided. Used by the SearchProductsBySKU and UpdateStockBySku endpoints. Typically follows your organization's SKU naming convention (e.g., 'BC-GLOSS-500'). nullable: true description: | Request model for creating a new product in the catalog. Extends BaseCreateProductRequest with tier pricing and product attributes. InfigoUpdateProductRequest: required: - ProductId - Name type: object properties: ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeRequest' description: | List of product attributes to update for this product. When provided, this completely replaces the existing attribute configuration. To preserve existing attributes, omit this property or pass null. To remove all attributes, pass an empty list. Each attribute in the list should include its full configuration including all values and price adjustments. nullable: true ProductId: type: integer description: | The unique identifier of the product to update. This is required to identify which product to modify. Use the ProductList or SearchProducts endpoints to find product IDs. Price: type: number description: | Updated base price of the product in the store's default currency. Only provide this if you want to change the price. Omitting this field or setting to null will preserve the current price. Price changes take effect immediately for new orders. format: decimal nullable: true IsShippingEnabled: type: boolean description: | Updated shipping requirement flag. Set to true to enable shipping calculations for this product, false to disable. Useful when converting between physical and digital product types. nullable: true Name: type: string description: | The display name of the product shown in the storefront, search results, and order confirmations. Should be clear and descriptive. Maximum recommended length is 200 characters for optimal display across all themes. nullable: true Description: type: string description: | Short description of the product, typically displayed in product listings and search results. Keep concise (1-2 sentences) to encourage click-through to the full product page. Supports HTML formatting. nullable: true FullDescription: type: string description: | Detailed product description displayed on the product detail page. Use this for comprehensive product information, specifications, features, and benefits. Supports full HTML formatting including images, tables, and embedded media. nullable: true Tags: type: array items: type: string description: '' nullable: true description: | Array of tag names to associate with the product. Tags enable customers to find products through tag-based navigation and improve search discoverability. Tags that don't exist will be created automatically. Example: ['eco-friendly', 'premium', 'bestseller']. nullable: true CategoryIds: type: array items: type: integer description: '' description: | Array of category IDs to assign the product to. A product can belong to multiple categories for cross-listing. At least one category is recommended for the product to appear in storefront navigation. Use the CategoryList endpoint to find available category IDs. nullable: true ProductGroupId: type: integer description: | Links the product to a product group for grouped product management. Product groups allow coordinated pricing, inventory, and promotional rules across related products. Leave null if the product is not part of a group. nullable: true SKU: type: string description: | Stock Keeping Unit - a unique identifier for inventory tracking and external system integration. Must be unique across all products if provided. Used by the SearchProductsBySKU and UpdateStockBySku endpoints. Typically follows your organization's SKU naming convention (e.g., 'BC-GLOSS-500'). nullable: true description: | Request model for updating an existing product in the catalog. Extends BaseUpdateProductRequest with product attribute configuration. InfigoUpdateStockQuantityResultModel: type: object properties: Success: type: boolean description: | Indicates whether the stock update operation completed successfully. When false, check ContextInfo.ErrorList for details about what went wrong. ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Contains additional context about the operation including any error messages. Check the ErrorList property when Success is false to understand why the update failed (e.g., invalid product ID, inventory method mismatch, validation errors). nullable: true description: | Response model containing the result of a stock quantity update operation. InfigoUpdateStockAttribute: required: - Key - Value type: object properties: Key: type: string description: | Attribute name nullable: true Value: type: string description: | Attribute value nullable: true description: | Key-value pair model used for product variant attributes and checkout attributes when recording orders through the API. InfigoUpdateStockQuantityModel: required: - ProductId - StockValue type: object properties: ProductId: type: integer description: | The unique identifier of the product whose stock level should be updated. The product must exist and have inventory management enabled. Use ProductList or SearchProducts to find valid product IDs. StockValue: type: integer description: | The stock quantity value to apply. Interpretation depends on IsAbsoluteAdjustment: When absolute (true): Sets stock to this exact value. When relative (false): Positive values add to stock, negative values subtract from stock. Example: StockValue=100 with IsAbsoluteAdjustment=true sets stock to 100 units. IsAbsoluteAdjustment: type: boolean description: | If is set to `true`, it will be set to this value. If set to `false`, it will subtract or append. nullable: true Attributes: type: array items: $ref: '#/components/schemas/InfigoUpdateStockAttribute' description: | For products with attribute-based inventory management (ManageStockByAttributes), specify the attribute combination to update. Each entry maps an attribute name to its selected value. Required when the product uses variant-level stock tracking. Omit for products with simple stock management. nullable: true description: | Request model for updating product stock quantity. Supports both absolute and relative stock adjustments. InfigoCategoryInfo: type: object properties: Id: type: integer description: | The unique identifier of the category. Use this ID when assigning products to categories or creating sub-categories. Name: type: string description: | The display name of the category as shown in the storefront navigation and admin panel. nullable: true Description: type: string description: | The HTML description of the category, typically displayed on the category landing page in the storefront. nullable: true ThumbnailUrl: type: string description: | URL to the category's thumbnail image, sized according to the thumbnailSize parameter or system default. Used for category listings and navigation menus. nullable: true PreviewUrl: type: string description: | URL to the category's preview/full-size image, sized according to the previewSize parameter or system default. Used for category detail pages and banners. nullable: true ProductIds: type: array items: type: integer description: '' description: | Array of product IDs that belong directly to this category. Does not include products in sub-categories. Use these IDs with the ProductDetails endpoint to retrieve full product information. nullable: true SubCategoryIds: type: array items: type: integer description: '' description: | Array of sub-category IDs that are direct children of this category. Use these IDs with the CategoryDetails endpoint to navigate the category hierarchy. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Response model containing detailed information about a product category. Returned by the CategoryDetails endpoint. InfigoProductTemplateSyncInfo: type: object properties: CategoryId: type: integer description: | The unique identifier of the product category. CategoryName: type: string description: | The name of the product category. nullable: true ProductId: type: integer description: | Infigo product id ProductName: type: string description: | The name of the product. nullable: true ProductType: type: string description: | The letter identifier for the product type. nullable: true Timestamp: type: string description: | The timestamp when the product template was last synchronized, in UTC. format: date-time Sha256Hash: type: string description: | SHA-256 hash of the product template content for integrity verification. Used to detect changes and ensure data consistency. nullable: true MessageSentUtc: type: string description: | The UTC timestamp when this synchronization message was sent. format: date-time description: | Product template synchronization information model. Contains metadata about a product template's sync state, including identifiers, timestamps, and hash verification. InfigoProductSortingEnumString: enum: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity type: string description: | Represents the field by which products can be sorted Possible values: - `Position` - Sort by display order position - `Name` - Sort by product name alphabetically - `Price` - Sort by product price - `CreatedOn` - Sort by product creation date - `Sku` - Sort by product SKU - `Published` - Sort by product published state - `Id` - Sort by product ID - `ProductType` - Sort by product type (e.g., Stock) - `VariantName` - Sort by product variant name - `Group` - Sort by product group - `StockQuantity` - Sort by available stock quantity x-enumNames: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity x-enum-varnames: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity x-enum-descriptions: - Sort by display order position - Sort by product name alphabetically - Sort by product price - Sort by product creation date - Sort by product SKU - Sort by product published state - Sort by product ID - 'Sort by product type (e.g., Stock)' - Sort by product variant name - Sort by product group - Sort by available stock quantity x-ms-enum: name: ProductSortingEnum modelAsString: false values: - value: Position name: Position description: Sort by display order position - value: Name name: Name description: Sort by product name alphabetically - value: Price name: Price description: Sort by product price - value: CreatedOn name: CreatedOn description: Sort by product creation date - value: Sku name: Sku description: Sort by product SKU - value: Published name: Published description: Sort by product published state - value: Id name: Id description: Sort by product ID - value: ProductType name: ProductType description: 'Sort by product type (e.g., Stock)' - value: VariantName name: VariantName description: Sort by product variant name - value: Group name: Group description: Sort by product group - value: StockQuantity name: StockQuantity description: Sort by available stock quantity InfigoSkuEntityType: enum: - 0 - 1 type: integer description: | Entity type indicating whether a SKU belongs to a product or variant. Possible values: - `0` - Product - SKU belongs to the main product. - `1` - ProductAttributeCombination - SKU belongs to a product attribute combination (variant). x-enumNames: - Product - ProductAttributeCombination x-enum-varnames: - Product - ProductAttributeCombination x-enum-descriptions: - SKU belongs to the main product. - SKU belongs to a product attribute combination (variant). x-ms-enum: name: SkuEntityType modelAsString: false values: - value: 0 name: Product description: SKU belongs to the main product. - value: 1 name: ProductAttributeCombination description: SKU belongs to a product attribute combination (variant). InfigoSearchBySkuResponseModel: type: object properties: Type: allOf: - $ref: '#/components/schemas/InfigoSkuEntityType' description: | Indicates whether this result is a Product or ProductAttributeCombination. Determines which property (Product or ProductAttributeCombination) contains the data. Possible values: - `0` - Product - SKU belongs to the main product. - `1` - ProductAttributeCombination - SKU belongs to a product attribute combination (variant). Product: allOf: - $ref: '#/components/schemas/InfigoProductInfo' description: | The product information when Type is Product. Contains full product details including pricing, stock, and attributes. nullable: true ProductAttributeCombination: allOf: - $ref: '#/components/schemas/InfigoProductAttributeCombination' description: | The attribute combination when Type is ProductAttributeCombination. Contains variant-specific SKU, stock, and pricing for a specific attribute combination. nullable: true description: | Response model for SKU search results. Contains either a product or a product attribute combination depending on whether the SKU matched a main product or a variant. InfigoUpdateStockQuantityResultSkuItemModel: type: object properties: Id: type: integer description: | The unique identifier of the product or attribute combination that was updated. Type: allOf: - $ref: '#/components/schemas/InfigoSkuEntityType' description: | Indicates whether this is a main product or a product attribute combination (variant). Possible values: - `0` - Product - SKU belongs to the main product. - `1` - ProductAttributeCombination - SKU belongs to a product attribute combination (variant). SKU: type: string description: | The SKU (Stock Keeping Unit) of the item that was updated. nullable: true OldStockValue: type: integer description: | The stock quantity before the update was applied. NewStockValue: type: integer description: | The stock quantity after the update was applied. description: | Result model for a single item updated in a stock update by SKU operation. Provides before and after stock values for auditing and verification. InfigoUpdateStockBySkuResponseModel: type: object properties: Success: type: boolean description: | Indicates whether the stock update operation completed successfully. Returns true if no errors occurred, false otherwise. Check ContextInfo.ErrorList for details. ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or informational messages generated during the stock update operation. nullable: true UpdatedItems: type: array items: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultSkuItemModel' description: | List of items that were updated by this operation. Each entry contains the old and new stock values for a product or attribute combination. nullable: true description: | Response model for stock update by SKU operations. Contains the result status, any errors encountered, and details of all items that were updated. InfigoUpdateStockBySkuRequest: required: - SKU - StockValue type: object properties: SKU: type: string description: | The SKU (Stock Keeping Unit) of the product or variant to update. This identifies which inventory record to modify. nullable: true IncludeAttributeCombination: type: boolean description: | A flag that indicates whether to order based on attribute combinations or not. nullable: true RequireExactMatch: type: boolean description: | If enabled, this will execute an exact search; otherwise, it will perform a partial match. nullable: true StockValue: type: integer description: | The stock value to apply. Interpretation depends on IsAbsoluteAdjustment: if absolute, this is the new total stock; if relative, this is added to (positive) or subtracted from (negative) the current stock. IsAbsoluteAdjustment: type: boolean description: | If is set to `true`, it will be set to this value. If set to `false`, it will subtract or append. description: | Request model for updating product stock levels by SKU. Supports both absolute and relative adjustments, and can target products or attribute combinations. InfigoApiTierPrice: required: - Quantity - Price type: object properties: Quantity: type: integer description: | The minimum quantity threshold for this tier price to apply. When ordering this quantity or more, this price is used. Price: type: number description: | The unit price applied when this tier quantity is reached or exceeded. format: decimal Role: type: string description: | The customer role system name to restrict this tier price to. Omit to apply to all customers, or specify a role like 'Premium' or 'Wholesale'. nullable: true description: | Tier pricing entry defining a price break at a specific quantity threshold. Used for volume-based pricing where larger orders receive discounts. InfigoProductSpecificationAttributeInfoV2: type: object properties: Id: type: integer description: | The unique identifier of the specification attribute mapping nullable: true AttributeName: type: string description: | The name of the specification attribute nullable: true AttributeOption: type: string description: | The value/option of the specification attribute nullable: true ShowOnProductPage: type: boolean description: | Indicates whether this specification attribute should be displayed on the product page HideFromCustomer: type: boolean description: | Indicates whether this specification attribute should be hidden from customers DisplayOrder: type: integer description: | The display order for this specification attribute MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Represents specification attribute information for a product in API version 2 InfigoApiVariableSetHeader: type: object properties: Id: type: integer description: | The unique identifier of the variable set Name: type: string description: | The name of the variable set nullable: true description: | The header information for the variable set InfigoBaseApiVariableItem: type: object properties: Id: type: integer description: | The unique identifier of the variable item Name: type: string description: | The name of the variable item nullable: true ContextType: type: integer description: | The context type of the variable item (mirrors VariableItem.ContextType) Type: type: integer description: | The variable type (mirrors VariableItem.VariableType) description: | Base class for variable items containing common properties InfigoApiVariableSet_1_BaseApiVariableItem: type: object properties: Set: allOf: - $ref: '#/components/schemas/InfigoApiVariableSetHeader' description: | The header information for the variable set nullable: true Items: type: array items: $ref: '#/components/schemas/InfigoBaseApiVariableItem' description: | The list of variable items in the set nullable: true description: | Represents a variable set containing header information and a list of variable items InfigoPricingScriptInfo: type: object properties: Id: type: integer description: | The unique identifier of the pricing script. Name: type: string description: | The name of the pricing script. nullable: true Config: type: object description: | The configuration for this product's usage of the pricing script. description: | The pricing script attached to this product, if any. InfigoProductInfoV2: type: object properties: Description: type: string description: | The full HTML description of the product displayed on the product detail page. nullable: true AdminComment: type: string description: | Internal administrative comment for this product. Not visible to customers, used for internal notes and communication between administrators. nullable: true CategoryIds: type: array items: type: integer description: '' description: | List of category IDs this product belongs to. A product can be assigned to multiple categories. nullable: true AvailableStartDateTimeUtc: type: string description: | The UTC date and time when this product becomes available for purchase. If set, the product is hidden until this date. format: date-time nullable: true AvailableEndDateTimeUtc: type: string description: | The UTC date and time when this product is no longer available for purchase. If set, the product becomes hidden after this date. format: date-time nullable: true SkipProductDetails: type: boolean description: | When true, customers are taken directly to the editor/cart without showing the product details page. Useful for simple products. DefaultBasketQuantity: type: integer description: | The default quantity pre-filled in the quantity selector when adding to basket. MinimumBasketQuantity: type: integer description: | The minimum quantity that can be ordered for this product. Customers cannot add less than this amount to their basket. MaximumBasketQuantity: type: integer description: | The maximum quantity that can be ordered for this product in a single order. Set to 0 for unlimited. HasQuantityBasedPricing: type: boolean description: | Indicates whether this product uses quantity-based tier pricing. When true, price decreases as quantity increases based on TierPrices. ShowOrderlineTotal: type: boolean description: | When true, displays the total line item cost in the order interface. Useful for products where per-unit pricing might be confusing. TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiTierPrice' description: | List of tier pricing entries defining price breaks at different quantities. Only applicable when HasQuantityBasedPricing is true. nullable: true ProductGroupId: type: integer description: | The ID of the product group this product belongs to. Product groups enable bundling and related product features. nullable: true SpecificationAttributes: type: array items: $ref: '#/components/schemas/InfigoProductSpecificationAttributeInfoV2' description: | List of specification attributes for this product. Specification attributes display as a structured data table on the product page. nullable: true Variables: type: array items: $ref: '#/components/schemas/InfigoApiVariableSet_1_BaseApiVariableItem' description: | List of variable sets defining personalization fields available in the editor. Each variable set contains input fields customers can customize. nullable: true PricingScript: allOf: - $ref: '#/components/schemas/InfigoPricingScriptInfo' description: | The pricing script attached to this product, if any. nullable: true Id: type: integer description: '' Name: type: string description: '' nullable: true LongDescription: type: string description: '' nullable: true Type: allOf: - $ref: '#/components/schemas/InfigoItemType' description: | Possible values: - `10` - Normal - A standard product with no special production workflow. - `20` - Variable - A variable-data product configured through selectable attribute options. - `30` - Static - A static product with no personalisation or online editing. - `40` - MultiPart - A multi-part product composed of several constituent parts. - `50` - Dynamic - A dynamic product personalised through the online editor. - `60` - Sms - An SMS product type. - `70` - Symphony - A Symphony dynamic-editor product. - `80` - Custom - A custom product type with bespoke handling. Price: type: number description: '' format: decimal StockValue: type: integer description: '' Sku: type: string description: '' nullable: true OrderPackQuantity: type: integer description: '' QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. PreviewUrls: type: array items: type: string description: '' nullable: true description: '' nullable: true ThumbnailUrls: type: array items: type: string description: '' nullable: true description: '' nullable: true Tags: type: array items: type: string description: '' nullable: true description: '' nullable: true IsShippingEnabled: type: boolean description: '' ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: '' nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombination' description: '' nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true ManageInventoryMethod: allOf: - $ref: '#/components/schemas/InfigoManageInventoryMethod' description: | Possible values: - `0` - DontManageStock - `1` - ManageStock - `2` - ManageStockByAttributes DisplayStockAvailability: type: boolean description: '' DisplayStockQuantity: type: boolean description: '' MinStockQuantity: type: integer description: '' LowStockActivity: allOf: - $ref: '#/components/schemas/InfigoLowStockActivity' description: | Possible values: - `0` - Nothing - Take no action when stock runs low. - `1` - EnableOrDisableBuyButton - Enable or disable the buy button based on stock availability. - `2` - PublishOrUnpublish - Publish or unpublish the product based on stock availability. - `3` - OnlyDisableBuyButton - Disable the buy button when stock runs low. - `4` - OnlyUnpublish - Unpublish the product when stock runs low. NotifyAdminForQuantityBelow: type: integer description: '' BackorderMode: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer AllowBackInStockSubscriptions: type: boolean description: '' OldPrice: type: number description: '' format: decimal ProductCost: type: number description: '' format: decimal SpecialPrice: type: number description: '' format: decimal nullable: true SpecialPriceStartDateTimeUtc: type: string description: '' format: date-time nullable: true SpecialPriceEndDateTimeUtc: type: string description: '' format: date-time nullable: true CallForPrice: type: boolean description: '' CustomerEntersPrice: type: boolean description: '' MinimumCustomerEnteredPrice: type: number description: '' format: decimal MaximumCustomerEnteredPrice: type: number description: '' format: decimal DisableBuyButton: type: boolean description: '' DisableWishlistButton: type: boolean description: '' RequiresQuote: type: boolean description: '' IsFreeShipping: type: boolean description: '' AdditionalShippingCharge: type: number description: '' format: decimal AdditionalShippingChargeType: allOf: - $ref: '#/components/schemas/InfigoAdditionalShippingChargeType' description: | Possible values: - `0` - PerUnit - Apply the additional shipping charge per unit (multiplied by quantity). - `1` - PerOrderLine - Apply the additional shipping charge once per order line regardless of quantity. Weight: type: number description: '' format: decimal Length: type: number description: '' format: decimal Width: type: number description: '' format: decimal Height: type: number description: '' format: decimal UseMultiTierSpread: type: boolean description: '' UseInterpolationForTierPricing: type: boolean description: '' ShareTiersOnCart: allOf: - $ref: '#/components/schemas/InfigoShareTiersEnum' description: | Possible values: - `0` - NoShare - `1` - SameProducts - `2` - SameProductsAndAttributes - `3` - SameProductsAndSelectedAttributes IsTaxExempt: type: boolean description: '' TaxCategoryIds: type: array items: type: integer description: '' description: '' nullable: true DisplayOrder: type: integer description: '' EnableDeliveryCountdown: type: boolean description: '' IsDownload: type: boolean description: '' UnlimitedDownloads: type: boolean description: '' MaxNumberOfDownloads: type: integer description: '' DownloadExpirationDays: type: integer description: '' nullable: true DownloadActivationType: allOf: - $ref: '#/components/schemas/InfigoDownloadActivationType' description: | Possible values: - `1` - WhenOrderIsPaid - Activate the download once the order has been paid. - `10` - Manually - Activate the download manually by an administrator. HasSampleDownload: type: boolean description: '' HasUserAgreement: type: boolean description: '' UserAgreementText: type: string description: '' nullable: true IsRecurring: type: boolean description: '' RecurringCycleLength: type: integer description: '' RecurringCyclePeriod: allOf: - $ref: '#/components/schemas/InfigoRecurringProductCyclePeriod' description: | Possible values: - `0` - Days - The recurring cycle is measured in days. - `10` - Weeks - The recurring cycle is measured in weeks. - `20` - Months - The recurring cycle is measured in months. - `30` - Years - The recurring cycle is measured in years. RecurringTotalCycles: type: integer description: '' IsGiftCard: type: boolean description: '' GiftCardType: allOf: - $ref: '#/components/schemas/InfigoGiftCardType' description: | Possible values: - `0` - Virtual - A virtual gift card delivered electronically. - `1` - Physical - A physical gift card shipped to the customer. IsPrepayProduct: type: boolean description: '' nullable: true PrepayAmount: type: number description: '' format: decimal nullable: true Published: type: boolean description: '' ShowOnHomePage: type: boolean description: '' HomePageProductOrder: type: integer description: '' nullable: true ShowProductInSearch: type: boolean description: '' AllowToUseProductWhereNotSearchable: type: boolean description: '' AllowCustomerReviews: type: boolean description: '' RequestPriceOnLandingPage: type: boolean description: '' RequiresApproval: type: boolean description: '' AdditionalDescription: type: string description: '' nullable: true AdditionalTabText: type: string description: '' nullable: true TeaserDetails: type: string description: '' nullable: true SearchTerms: type: string description: '' nullable: true EmbedVideoCode: type: string description: '' nullable: true Preview360: type: string description: '' nullable: true description: | Extended product information model (V2) with additional properties for advanced product management. Includes scheduling, quantity controls, tier pricing, and variable data support. InfigoCreateProductInfoV2: type: object properties: Id: type: integer description: | The unique identifier of the newly created product description: | Represents the response information after creating a product in API version 2 InfigoSpecificationAttributeRequest: type: object properties: Id: type: integer description: | The unique identifier of the specification attribute mapping (optional for create, required for update) nullable: true AttributeName: type: string description: | The name of the specification attribute nullable: true AttributeOption: type: string description: | The value/option of the specification attribute nullable: true ShowOnProductPage: type: boolean description: | Indicates whether this specification attribute should be displayed on the product page HideFromCustomer: type: boolean description: | Indicates whether this specification attribute should be hidden from customers DisplayOrder: type: integer description: | The display order for this specification attribute MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Represents a request to create or update a product specification attribute InfigoProductAttributeValueRequestV2: type: object properties: MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true Name: type: string description: | The name of the product attribute value. nullable: true FriendlyName: type: string description: | A user-friendly name for the product attribute value. nullable: true HtmlInfo: type: string description: | HTML content providing additional information about the product attribute value. nullable: true DisplayOrder: type: integer description: | The display order of the product attribute value in the UI. IsDisabled: type: boolean description: | Indicates whether the product attribute value is disabled and should not be available for selection. IsPreselected: type: boolean description: | Indicates whether the product attribute value is selected by default. ProductionOffsetAdjustment: type: integer description: | The adjustment to the product's production time when this value is selected. PriceAdjustment: type: number description: | The price adjustment applied to the product's base price when this value is selected. format: decimal WeightAdjustment: type: number description: | The weight adjustment applied to the product when this value is selected. format: decimal WidthAdjustment: type: number description: | The adjustment applied to the product's width when this value is selected. format: decimal HeightAdjustment: type: number description: | The adjustment applied to the product's height when this value is selected. format: decimal LengthAdjustment: type: number description: | The adjustment applied to the product's length when this value is selected. format: decimal PriceAdjustmentType: allOf: - $ref: '#/components/schemas/InfigoProductAttributeValuePriceAdjustmentTypeEnum' description: | The type of price adjustment applied, indicating whether it's an absolute value or a percentage. Possible values: - `0` - Percent - Price adjustment as a percentage of the base price - `1` - Absolute - Price adjustment as an absolute fixed amount description: | V2 request model for a product attribute value with MIS integration support. Extends base value configuration with value-specific MIS external references. InfigoProductAttributeRequestV2: type: object properties: ProductAttributeValues: type: array items: $ref: '#/components/schemas/InfigoProductAttributeValueRequestV2' description: | List of attribute values with their configurations. Each value represents a selectable option (e.g., 'Red', 'Blue') with individual MIS integration settings. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true Id: type: integer description: | The ID of the product attribute you want to assign to the product. nullable: true Name: type: string description: | The name of the product attribute. Not mandatory if ID provided nullable: true ProductPageLabel: type: string description: | The label of the product attribute that will be displayed on the product page. Please use "Description" instead of ProductPageLabel(obsolete) to pass the value nullable: true IsRequired: type: boolean description: | Indicates whether the product attribute is required. DisplayOrder: type: integer description: | The display order of the product attribute in the UI. IsHidden: type: boolean description: | Indicates whether the product attribute is hidden from the UI. AttributeControlType: allOf: - $ref: '#/components/schemas/InfigoAttributeControlType' description: | The UI control type used to render this attribute on the product page (e.g., dropdown list, radio buttons, checkbox, text field). Possible values: - `1` - DropdownList - Dropdown list allowing single selection from predefined options - `2` - RadioList - Radio button list allowing single selection from predefined options - `3` - Checkboxes - Checkbox list allowing multiple selections from predefined options - `4` - TextBox - Single-line text input field for free-form text entry - `10` - MultilineTextbox - Multi-line text area for longer free-form text entry - `20` - Datepicker - Date picker control for selecting dates - `30` - FileUpload - File upload control for attaching files to the product - `40` - Info - Informational display only, not an input control - `50` - HtmlSchema - HTML schema attribute for structured data - `60` - System - System attribute used internally, not visible in the storefront - `70` - Number - Numeric input field for entering numbers - `999` - Hidden - Hidden attribute used internally by Catfish extension description: | V2 request model for configuring a product attribute assignment. Extends the base attribute configuration with value-level MIS integration support. InfigoAttributeCombinationItem: type: object properties: ProductAttributeId: type: integer description: | The ID of the product attribute that is assigned to the group ProductAttributeValue: type: string description: | The value for the specified attribute. Should be an existing one, otherwise it will fail. nullable: true description: | Represents an individual attribute value within a product attribute combination InfigoProductAttributeCombinationRequest: type: object properties: AttributeCombinationItems: type: array items: $ref: '#/components/schemas/InfigoAttributeCombinationItem' description: | A list of attribute combinations to assign to the product group. On update, an empty list will unassign them all from the group. Also, combinations that are assigned to the product but not provided in the update list will be unassigned. nullable: true StockQuantity: type: integer description: | Indicates the stock for the combination NotifyAdminForQuantityBelow: type: integer description: | Indicates the threshold below which a low-stock email is sent to the store owner AllowOutOfStockOrders: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Indicates whether customers are allowed to place out of stock orders Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer MinimumBasketQuantity: type: integer description: | Indicates the minimum quantity an order can be placed for this combination nullable: true MaximumBasketQuantity: type: integer description: | Indicates the maximum quantity an order can be placed for this combination nullable: true Sku: type: string description: | Indicates the SKU for this combination nullable: true Priority: type: integer description: | Indicates the priority of the combination Published: type: boolean description: | Indicates whether this combination will be published MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Represents a request to create or update a product attribute combination InfigoPricingScriptRequest: type: object properties: Id: type: integer description: | The ID of the pricing script to attach. Either this or 'name' must be provided. nullable: true Name: type: string description: | The name of the pricing script to attach. Either this or 'id' must be provided. nullable: true Config: type: object description: | Optional JSON configuration for the pricing script. This will be stored as the configuration for this specific product's usage of the pricing script. description: | Optional pricing script to attach to the product during creation. InfigoCreateProductRequestV2: required: - Name type: object properties: Published: type: boolean description: | Indicates whether the product is published and visible to customers. When true, the product appears in the catalog and can be purchased. When false, the product is hidden from customers but remains accessible to administrators. When null, uses the system default (typically published). nullable: true AvailableStartDateTimeUtc: type: string description: | Start date and time (in UTC) when the product becomes available for purchase. Before this date, the product will not be visible or purchasable by customers. Use for scheduled product launches or time-limited availability. Leave null for immediate availability. format: date-time nullable: true AvailableEndDateTimeUtc: type: string description: | End date and time (in UTC) when the product is no longer available for purchase. After this date, the product becomes unavailable to customers. Use for seasonal products, limited-time offers, or products being phased out. Leave null for indefinite availability. format: date-time nullable: true SkipProductDetails: type: boolean description: | When true, skips generating or displaying detailed product information pages. Useful for simple products that don't require extensive descriptions or when product details are managed externally. The product may still be orderable through other interfaces like quick order forms. HasQuantityBasedPricing: type: boolean description: | Indicates whether this product uses quantity-based pricing (volume discounts). When true, different price tiers apply based on order quantity, specified in the TierPrices collection. Enables bulk discount structures where unit price decreases as quantity increases. ShowOrderlineTotal: type: boolean description: | Controls whether the order line total is displayed to customers during checkout and on order confirmation. When true, shows the extended price (unit price × quantity) for each line item. When false, only shows unit pricing, useful for certain pricing models or customer agreements. UseMultiTierSpread: type: boolean description: | When true, applies the multi-tier spread pricing model, distributing tier prices across quantity bands rather than charging a single tier price for the entire order quantity. Leave null to use the system default. nullable: true UseInterpolationForTierPricing: type: boolean description: | When true, interpolates prices between defined tier thresholds so quantities that fall between tiers receive a calculated price rather than the nearest tier price. Leave null to use the system default. nullable: true ShareTiersOnCart: allOf: - $ref: '#/components/schemas/InfigoShareTiersEnum' description: | Controls how quantity-based tier pricing is shared across multiple cart lines of this product, determining whether quantities are aggregated to qualify for higher discount tiers. Possible values: - `0` - NoShare - `1` - SameProducts - `2` - SameProductsAndAttributes - `3` - SameProductsAndSelectedAttributes x-nullable: true AdminComment: type: string description: | Internal administrative notes about this product. Visible only to administrators and not shown to customers. Use for tracking product status, special handling instructions, or internal documentation. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | Management Information System (MIS) configurations that integrate this product with external production or fulfillment systems. Each configuration defines how the product maps to external systems for order processing, inventory management, or production workflows. Required for products that need MIS integration for fulfillment. nullable: true SpecificationAttributes: type: array items: $ref: '#/components/schemas/InfigoSpecificationAttributeRequest' description: | Product specifications and technical attributes displayed on the product detail page. These are informational attributes (e.g., dimensions, material, color) that describe the product but don't affect pricing or inventory. Different from ProductAttributes which are customer-selectable options. nullable: true TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiTierPrice' description: | Volume-based pricing tiers that offer discounts for larger quantity purchases. Each tier defines a quantity threshold and corresponding price. When HasQuantityBasedPricing is true, the system applies the appropriate tier price based on order quantity. Tiers should be ordered from lowest to highest quantity. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeRequestV2' description: | Customer-selectable product attributes that define product variations and options (e.g., size, color, finish, custom text). Each attribute can have multiple values, may affect pricing, and can be required or optional. Used to create configurable products with multiple variants. nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombinationRequest' description: | Specific combinations of product attributes that define distinct product variants with their own SKU, price, and inventory. Each combination represents a unique variant (e.g., 'Red-Large', 'Blue-Small') with its own stock keeping and pricing rules. Used for products with multiple attributes that create distinct purchasable variants. nullable: true PricingScript: allOf: - $ref: '#/components/schemas/InfigoPricingScriptRequest' description: | Optional pricing script to attach to the product during creation. nullable: true ManageInventoryMethod: allOf: - $ref: '#/components/schemas/InfigoManageInventoryMethod' description: | Determines how inventory is tracked for the product (for example not tracked, tracked by product, or tracked by attribute combination), controlling whether stock levels are decremented when the product is purchased. Possible values: - `0` - DontManageStock - `1` - ManageStock - `2` - ManageStockByAttributes x-nullable: true StockValue: type: integer description: | The current quantity of the product in stock. Used when inventory is tracked by product to determine availability and to trigger low-stock or out-of-stock handling. nullable: true DisplayStockAvailability: type: boolean description: | When true, displays the product's stock availability status (in stock or out of stock) to customers on the product page. nullable: true DisplayStockQuantity: type: boolean description: | When true, displays the exact remaining stock quantity to customers rather than only an in-stock/out-of-stock indicator. nullable: true MinStockQuantity: type: integer description: | The minimum stock quantity at which low-stock handling is triggered. When stock falls to or below this value, the action configured in LowStockActivity is applied. nullable: true LowStockActivity: allOf: - $ref: '#/components/schemas/InfigoLowStockActivity' description: | Determines the action taken when stock reaches the minimum quantity, such as doing nothing, disabling the buy button, or unpublishing the product. Possible values: - `0` - Nothing - Take no action when stock runs low. - `1` - EnableOrDisableBuyButton - Enable or disable the buy button based on stock availability. - `2` - PublishOrUnpublish - Publish or unpublish the product based on stock availability. - `3` - OnlyDisableBuyButton - Disable the buy button when stock runs low. - `4` - OnlyUnpublish - Unpublish the product when stock runs low. x-nullable: true NotifyAdminForQuantityBelow: type: integer description: | The stock quantity threshold below which an administrator notification is sent, alerting staff to replenish inventory. nullable: true BackorderMode: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Controls backorder behaviour when the product is out of stock, for example disallowing backorders, allowing them, or allowing them with customer notification. Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer x-nullable: true AllowBackInStockSubscriptions: type: boolean description: | When true, allows customers to subscribe to be notified when an out-of-stock product becomes available again. nullable: true OldPrice: type: number description: | The product's former or recommended retail price, displayed alongside the current price to indicate a discount or saving. format: decimal nullable: true ProductCost: type: number description: | The internal cost of the product to the merchant. Used for margin and profit reporting and is not shown to customers. format: decimal nullable: true SpecialPrice: type: number description: | A promotional price that overrides the normal price for a limited period defined by SpecialPriceStartDateTimeUtc and SpecialPriceEndDateTimeUtc. format: decimal nullable: true SpecialPriceStartDateTimeUtc: type: string description: | Start date and time (in UTC) from which the SpecialPrice becomes effective. Leave null to apply the special price immediately. format: date-time nullable: true SpecialPriceEndDateTimeUtc: type: string description: | End date and time (in UTC) after which the SpecialPrice no longer applies and the product reverts to its normal price. Leave null for an indefinite special price. format: date-time nullable: true CallForPrice: type: boolean description: | When true, hides the product price and prompts customers to contact the merchant for pricing instead of purchasing directly. nullable: true CustomerEntersPrice: type: boolean description: | When true, allows the customer to enter their own price for the product (for example donations or pay-what-you-want items), constrained by the minimum and maximum entered price values. nullable: true MinimumCustomerEnteredPrice: type: number description: | The lowest price a customer may enter when CustomerEntersPrice is enabled. format: decimal nullable: true MaximumCustomerEnteredPrice: type: number description: | The highest price a customer may enter when CustomerEntersPrice is enabled. format: decimal nullable: true DisableBuyButton: type: boolean description: | When true, hides or disables the Add to Cart / Buy button, preventing direct purchase of the product. nullable: true DisableWishlistButton: type: boolean description: | When true, hides or disables the Add to Wishlist button for the product. nullable: true RequiresQuote: type: boolean description: | When true, the product cannot be purchased directly and instead requires the customer to request a quote. nullable: true IsFreeShipping: type: boolean description: | When true, the product ships free of charge and is excluded from shipping cost calculations. nullable: true AdditionalShippingCharge: type: number description: | An extra shipping charge applied specifically to this product, added on top of the standard shipping cost. format: decimal nullable: true AdditionalShippingChargeType: allOf: - $ref: '#/components/schemas/InfigoAdditionalShippingChargeType' description: | Determines how the AdditionalShippingCharge is applied, for example a flat charge per order line or a charge multiplied by quantity. Possible values: - `0` - PerUnit - Apply the additional shipping charge per unit (multiplied by quantity). - `1` - PerOrderLine - Apply the additional shipping charge once per order line regardless of quantity. x-nullable: true Weight: type: number description: | The shipping weight of the product, used for weight-based shipping rate calculations. format: decimal nullable: true Length: type: number description: | The length dimension of the product, used for dimensional shipping calculations and packaging. format: decimal nullable: true Width: type: number description: | The width dimension of the product, used for dimensional shipping calculations and packaging. format: decimal nullable: true Height: type: number description: | The height dimension of the product, used for dimensional shipping calculations and packaging. format: decimal nullable: true IsTaxExempt: type: boolean description: | When true, the product is exempt from tax and no tax is applied during checkout. nullable: true TaxCategoryIds: type: array items: type: integer description: '' description: | The identifiers of the tax categories assigned to the product, determining which tax rules and rates apply. nullable: true DisplayOrder: type: integer description: | Controls the sort position of the product within listings; lower values appear first. nullable: true EnableDeliveryCountdown: type: boolean description: | When true, displays a delivery countdown timer indicating the cut-off time for next-day or expedited dispatch. nullable: true IsDownload: type: boolean description: | When true, the product is a downloadable item delivered electronically rather than physically shipped. nullable: true UnlimitedDownloads: type: boolean description: | When true, allows the customer to download the product an unlimited number of times. When false, the MaxNumberOfDownloads limit applies. nullable: true MaxNumberOfDownloads: type: integer description: | The maximum number of times a customer may download the product when UnlimitedDownloads is false. nullable: true DownloadExpirationDays: type: integer description: | The number of days after purchase during which the download remains available to the customer. Leave null for no expiration. nullable: true DownloadActivationType: allOf: - $ref: '#/components/schemas/InfigoDownloadActivationType' description: | Determines when a downloadable product becomes available, for example immediately after purchase or only after the order is marked complete. Possible values: - `1` - WhenOrderIsPaid - Activate the download once the order has been paid. - `10` - Manually - Activate the download manually by an administrator. x-nullable: true HasSampleDownload: type: boolean description: | When true, a free sample download is offered to customers before purchase. nullable: true HasUserAgreement: type: boolean description: | When true, the customer must accept a user agreement (defined by UserAgreementText) before downloading the product. nullable: true UserAgreementText: type: string description: | The text of the user agreement that customers must accept before downloading the product, shown when HasUserAgreement is true. nullable: true IsRecurring: type: boolean description: | When true, the product is a recurring/subscription product billed automatically at the interval defined by the recurring cycle settings. nullable: true RecurringCycleLength: type: integer description: | The length of each recurring billing cycle, expressed in the unit defined by RecurringCyclePeriod. nullable: true RecurringCyclePeriod: allOf: - $ref: '#/components/schemas/InfigoRecurringProductCyclePeriod' description: | The unit of the recurring billing cycle, for example days, weeks, months, or years. Possible values: - `0` - Days - The recurring cycle is measured in days. - `10` - Weeks - The recurring cycle is measured in weeks. - `20` - Months - The recurring cycle is measured in months. - `30` - Years - The recurring cycle is measured in years. x-nullable: true RecurringTotalCycles: type: integer description: | The total number of recurring billing cycles before the subscription ends. Use to limit a subscription to a fixed number of payments. nullable: true IsGiftCard: type: boolean description: | When true, the product is a gift card that issues a redeemable balance to the recipient upon purchase. nullable: true GiftCardType: allOf: - $ref: '#/components/schemas/InfigoGiftCardType' description: | Determines the gift card delivery type, for example virtual (emailed to a recipient) or physical (shipped). Possible values: - `0` - Virtual - A virtual gift card delivered electronically. - `1` - Physical - A physical gift card shipped to the customer. x-nullable: true IsPrepayProduct: type: boolean description: | When true, the product is a prepay item where the customer pays an upfront amount defined by PrepayAmount. nullable: true PrepayAmount: type: number description: | The upfront amount the customer prepays when IsPrepayProduct is enabled. format: decimal nullable: true ShowOnHomePage: type: boolean description: | When true, features the product on the storefront home page. nullable: true HomePageProductOrder: type: integer description: | Controls the sort position of the product among featured products on the home page; lower values appear first. nullable: true ShowProductInSearch: type: boolean description: | When true, includes the product in storefront search results. nullable: true AllowToUseProductWhereNotSearchable: type: boolean description: | When true, allows the product to be used or ordered through direct links and other interfaces even when it is excluded from search. nullable: true AllowCustomerReviews: type: boolean description: | When true, allows customers to submit ratings and reviews for the product. nullable: true RequestPriceOnLandingPage: type: boolean description: | When true, displays a request-a-price option on the product landing page instead of a standard price. nullable: true RequiresApproval: type: boolean description: | When true, orders for this product require administrator approval before they can be processed. nullable: true AdditionalDescription: type: string description: | Supplementary descriptive content for the product, shown in an additional section of the product detail page. nullable: true AdditionalTabText: type: string description: | Content displayed in an additional custom tab on the product detail page. nullable: true TeaserDetails: type: string description: | Short teaser or summary text used in product listings and promotional placements. nullable: true SearchTerms: type: string description: | Custom keywords used to improve the discoverability of the product in search. Separate terms with commas or spaces. nullable: true EmbedVideoCode: type: string description: | HTML or embed code for a product video displayed on the product detail page. nullable: true Preview360: type: string description: | Configuration or markup for a 360-degree product preview, allowing customers to view the product from all angles. nullable: true IsShippingEnabled: type: boolean description: | Indicates whether the product requires shipping. Set to true for physical products that need delivery, false for digital products, downloads, or services. When enabled, shipping calculations apply during checkout. Default is false. nullable: true CreateFromProductId: type: integer description: | ID of an existing product to copy properties from. When specified, the new product inherits settings, attributes, and configurations from the source product, reducing setup time for similar products. Properties explicitly set in this request will override the copied values. nullable: true MinimumBasketQuantity: type: integer description: | Minimum quantity that must be ordered. Prevents orders below this threshold - useful for products with minimum production runs or bulk-only items. When set, customers cannot add fewer items to their basket. Leave null for no minimum restriction. nullable: true DefaultBasketQuantity: type: integer description: | Default quantity pre-filled in the quantity selector when customers view the product. Use to suggest common order quantities and streamline the purchasing process. Should be between MinimumBasketQuantity and MaximumBasketQuantity if those are set. nullable: true MaximumBasketQuantity: type: integer description: | Maximum quantity that can be ordered in a single order. Useful for limiting orders due to production capacity, promotional restrictions, or inventory constraints. Leave null for no maximum restriction. nullable: true OrderPackQuantity: type: integer description: | Quantity increment for ordering (pack size). When set, customers can only order in multiples of this value (e.g., if set to 50, customers can order 50, 100, 150, etc.). Useful for products sold in packs or bundles. nullable: true Price: type: number description: | Base price of the product in the store's default currency. This is the starting price before any tier pricing, attribute adjustments, or discounts are applied. For variable products, this typically represents the minimum configuration price. format: decimal nullable: true QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Controls how customers select quantity on the product page. Options include dropdown, text input, or predefined quantity buttons. The optimal mode depends on your product's typical order quantities and customer ordering patterns. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. x-nullable: true Name: type: string description: | The display name of the product shown in the storefront, search results, and order confirmations. Should be clear and descriptive. Maximum recommended length is 200 characters for optimal display across all themes. nullable: true Description: type: string description: | Short description of the product, typically displayed in product listings and search results. Keep concise (1-2 sentences) to encourage click-through to the full product page. Supports HTML formatting. nullable: true FullDescription: type: string description: | Detailed product description displayed on the product detail page. Use this for comprehensive product information, specifications, features, and benefits. Supports full HTML formatting including images, tables, and embedded media. nullable: true Tags: type: array items: type: string description: '' nullable: true description: | Array of tag names to associate with the product. Tags enable customers to find products through tag-based navigation and improve search discoverability. Tags that don't exist will be created automatically. Example: ['eco-friendly', 'premium', 'bestseller']. nullable: true CategoryIds: type: array items: type: integer description: '' description: | Array of category IDs to assign the product to. A product can belong to multiple categories for cross-listing. At least one category is recommended for the product to appear in storefront navigation. Use the CategoryList endpoint to find available category IDs. nullable: true ProductGroupId: type: integer description: | Links the product to a product group for grouped product management. Product groups allow coordinated pricing, inventory, and promotional rules across related products. Leave null if the product is not part of a group. nullable: true SKU: type: string description: | Stock Keeping Unit - a unique identifier for inventory tracking and external system integration. Must be unique across all products if provided. Used by the SearchProductsBySKU and UpdateStockBySku endpoints. Typically follows your organization's SKU naming convention (e.g., 'BC-GLOSS-500'). nullable: true description: | Base request model for product creation containing common properties for new product setup. InfigoUpdateProductInfoV2: type: object properties: Id: type: integer description: | The unique identifier of the updated product description: | Represents the response information after updating a product in API version 2 InfigoUpdateProductRequestV2: required: - ProductId - Name type: object properties: AdminComment: type: string description: | Internal administrative notes about this product. Visible only to administrators and not shown to customers. Use for tracking product status, special handling instructions, or internal documentation. nullable: true Published: type: boolean description: | Indicates whether the product is published and visible to customers. When true, the product appears in the catalog and can be purchased. When false, the product is hidden from customers but remains accessible to administrators. When null, preserves the current publication status. nullable: true AvailableStartDateTimeUtc: type: string description: | Start date and time (in UTC) when the product becomes available for purchase. Before this date, the product will not be visible or purchasable by customers. Use for scheduled product launches or time-limited availability. Leave null to preserve current setting. format: date-time nullable: true AvailableEndDateTimeUtc: type: string description: | End date and time (in UTC) when the product is no longer available for purchase. After this date, the product becomes unavailable to customers. Use for seasonal products, limited-time offers, or products being phased out. Leave null to preserve current setting. format: date-time nullable: true SkipProductDetails: type: boolean description: | When true, skips generating or displaying detailed product information pages. Useful for simple products that don't require extensive descriptions or when product details are managed externally. The product may still be orderable through other interfaces like quick order forms. HasQuantityBasedPricing: type: boolean description: | Indicates whether this product uses quantity-based pricing (volume discounts). When true, different price tiers apply based on order quantity, specified in the TierPrices collection. Enables bulk discount structures where unit price decreases as quantity increases. ShowOrderlineTotal: type: boolean description: | Controls whether the order line total is displayed to customers during checkout and on order confirmation. When true, shows the extended price (unit price × quantity) for each line item. When false, only shows unit pricing, useful for certain pricing models or customer agreements. UseMultiTierSpread: type: boolean description: | When true, spreads quantity-based pricing across multiple tiers rather than applying a single tier price to the whole quantity, so different portions of the ordered quantity are priced at their respective tier rates. Leave null to preserve the current setting. nullable: true UseInterpolationForTierPricing: type: boolean description: | When true, interpolates prices between defined tier thresholds instead of using discrete tier steps, producing a smoothed unit price for quantities that fall between tiers. Leave null to preserve the current setting. nullable: true ShareTiersOnCart: allOf: - $ref: '#/components/schemas/InfigoShareTiersEnum' description: | Controls how quantity tier pricing is shared across matching line items in the cart, for example whether quantities of the same product are combined to qualify for higher discount tiers. Leave null to preserve the current setting. Possible values: - `0` - NoShare - `1` - SameProducts - `2` - SameProductsAndAttributes - `3` - SameProductsAndSelectedAttributes x-nullable: true MinimumBasketQuantity: type: integer description: | Minimum quantity that must be ordered. Prevents orders below this threshold - useful for products with minimum production runs or bulk-only items. When set, customers cannot add fewer items to their basket. Leave null to preserve current setting or remove restriction. nullable: true DefaultBasketQuantity: type: integer description: | Default quantity pre-filled in the quantity selector when customers view the product. Use to suggest common order quantities and streamline the purchasing process. Should be between MinimumBasketQuantity and MaximumBasketQuantity if those are set. Leave null to preserve current setting. nullable: true MaximumBasketQuantity: type: integer description: | Maximum quantity that can be ordered in a single order. Useful for limiting orders due to production capacity, promotional restrictions, or inventory constraints. Leave null to preserve current setting or remove restriction. nullable: true OrderPackQuantity: type: integer description: | Quantity increment for ordering (pack size). When set, customers can only order in multiples of this value (e.g., if set to 50, customers can order 50, 100, 150, etc.). Useful for products sold in packs or bundles. Leave null to preserve current setting. nullable: true QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Controls how customers select quantity on the product page. Options include dropdown, text input, or predefined quantity buttons. The optimal mode depends on your product's typical order quantities and customer ordering patterns. Leave null to preserve current setting. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. x-nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | Management Information System (MIS) configurations that integrate this product with external production or fulfillment systems. Each configuration defines how the product maps to external systems for order processing, inventory management, or production workflows. Provide this collection to update MIS integration settings. nullable: true SpecificationAttributes: type: array items: $ref: '#/components/schemas/InfigoSpecificationAttributeRequest' description: | Product specifications and technical attributes displayed on the product detail page. These are informational attributes (e.g., dimensions, material, color) that describe the product but don't affect pricing or inventory. Different from ProductAttributes which are customer-selectable options. Provide this collection to replace existing specifications. nullable: true TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiTierPrice' description: | Volume-based pricing tiers that offer discounts for larger quantity purchases. Each tier defines a quantity threshold and corresponding price. When HasQuantityBasedPricing is true, the system applies the appropriate tier price based on order quantity. Provide this collection to replace existing tier pricing. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeRequestV2' description: | Customer-selectable product attributes that define product variations and options (e.g., size, color, finish, custom text). Each attribute can have multiple values, may affect pricing, and can be required or optional. Provide this collection to replace existing product attributes. nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombinationRequest' description: | Specific combinations of product attributes that define distinct product variants with their own SKU, price, and inventory. Each combination represents a unique variant (e.g., 'Red-Large', 'Blue-Small') with its own stock keeping and pricing rules. Provide this collection to replace existing attribute combinations. nullable: true PricingScript: allOf: - $ref: '#/components/schemas/InfigoPricingScriptRequest' description: | Optional pricing script to attach to or update on the product. nullable: true ManageInventoryMethod: allOf: - $ref: '#/components/schemas/InfigoManageInventoryMethod' description: | Determines how inventory is tracked for this product, such as not tracked, tracked by product, or tracked by attribute combination. Leave null to preserve the current setting. Possible values: - `0` - DontManageStock - `1` - ManageStock - `2` - ManageStockByAttributes x-nullable: true StockValue: type: integer description: | Current stock quantity available for this product when inventory is tracked at the product level. Leave null to preserve the current setting. nullable: true DisplayStockAvailability: type: boolean description: | When true, displays stock availability status (such as in stock or out of stock) to customers on the product page. Leave null to preserve the current setting. nullable: true DisplayStockQuantity: type: boolean description: | When true, shows the exact remaining stock quantity to customers in addition to availability status. Leave null to preserve the current setting. nullable: true MinStockQuantity: type: integer description: | Stock level at which the configured low-stock activity is triggered. When stock reaches this value the product is treated as low in stock. Leave null to preserve the current setting. nullable: true LowStockActivity: allOf: - $ref: '#/components/schemas/InfigoLowStockActivity' description: | Action taken automatically when stock reaches the minimum stock quantity, such as doing nothing, disabling the buy button, or unpublishing the product. Leave null to preserve the current setting. Possible values: - `0` - Nothing - Take no action when stock runs low. - `1` - EnableOrDisableBuyButton - Enable or disable the buy button based on stock availability. - `2` - PublishOrUnpublish - Publish or unpublish the product based on stock availability. - `3` - OnlyDisableBuyButton - Disable the buy button when stock runs low. - `4` - OnlyUnpublish - Unpublish the product when stock runs low. x-nullable: true NotifyAdminForQuantityBelow: type: integer description: | Stock threshold below which an administrator notification is sent, enabling timely restocking. Leave null to preserve the current setting. nullable: true BackorderMode: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Controls how out-of-stock orders are handled, such as disallowing backorders, allowing them, or allowing them while notifying the customer. Leave null to preserve the current setting. Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer x-nullable: true AllowBackInStockSubscriptions: type: boolean description: | When true, allows customers to subscribe for a notification when an out-of-stock product becomes available again. Leave null to preserve the current setting. nullable: true OldPrice: type: number description: | Previous or reference price used to show a discount or strikethrough comparison against the current price. Leave null to preserve the current setting. format: decimal nullable: true ProductCost: type: number description: | Internal cost of the product used for margin and profit calculations. Not shown to customers. Leave null to preserve the current setting. format: decimal nullable: true SpecialPrice: type: number description: | Temporary promotional price applied while the special price date range is active. Leave null to preserve the current setting. format: decimal nullable: true SpecialPriceStartDateTimeUtc: type: string description: | Start date and time (in UTC) from which the special promotional price becomes effective. Leave null to preserve the current setting. format: date-time nullable: true SpecialPriceEndDateTimeUtc: type: string description: | End date and time (in UTC) after which the special promotional price no longer applies. Leave null to preserve the current setting. format: date-time nullable: true CallForPrice: type: boolean description: | When true, hides the price and prompts customers to contact the store for pricing instead of purchasing directly. Leave null to preserve the current setting. nullable: true CustomerEntersPrice: type: boolean description: | When true, allows the customer to enter their own price for the product, for example for donations or pay-what-you-want items. Leave null to preserve the current setting. nullable: true MinimumCustomerEnteredPrice: type: number description: | Minimum price a customer is allowed to enter when customer-entered pricing is enabled. Leave null to preserve the current setting. format: decimal nullable: true MaximumCustomerEnteredPrice: type: number description: | Maximum price a customer is allowed to enter when customer-entered pricing is enabled. Leave null to preserve the current setting. format: decimal nullable: true DisableBuyButton: type: boolean description: | When true, hides the add-to-cart/buy button so the product cannot be purchased directly while remaining visible in the catalog. Leave null to preserve the current setting. nullable: true DisableWishlistButton: type: boolean description: | When true, hides the add-to-wishlist button for this product. Leave null to preserve the current setting. nullable: true RequiresQuote: type: boolean description: | When true, the product must be quoted before purchase, routing customers through a quote request rather than direct checkout. Leave null to preserve the current setting. nullable: true IsFreeShipping: type: boolean description: | When true, this product ships free of charge and is excluded from shipping cost calculations. Leave null to preserve the current setting. nullable: true AdditionalShippingCharge: type: number description: | Extra shipping charge added specifically for this product on top of standard shipping rates. Leave null to preserve the current setting. format: decimal nullable: true AdditionalShippingChargeType: allOf: - $ref: '#/components/schemas/InfigoAdditionalShippingChargeType' description: | Determines how the additional shipping charge is applied, such as a flat amount per order or multiplied by item quantity. Leave null to preserve the current setting. Possible values: - `0` - PerUnit - Apply the additional shipping charge per unit (multiplied by quantity). - `1` - PerOrderLine - Apply the additional shipping charge once per order line regardless of quantity. x-nullable: true Weight: type: number description: | Physical weight of the product used for shipping cost calculations. Leave null to preserve the current setting. format: decimal nullable: true Length: type: number description: | Physical length dimension of the product used for shipping and packaging calculations. Leave null to preserve the current setting. format: decimal nullable: true Width: type: number description: | Physical width dimension of the product used for shipping and packaging calculations. Leave null to preserve the current setting. format: decimal nullable: true Height: type: number description: | Physical height dimension of the product used for shipping and packaging calculations. Leave null to preserve the current setting. format: decimal nullable: true IsTaxExempt: type: boolean description: | When true, the product is exempt from tax and no tax is calculated on its sale. Leave null to preserve the current setting. nullable: true TaxCategoryIds: type: array items: type: integer description: '' description: | Identifiers of the tax categories assigned to this product, determining which tax rates apply. Leave null to preserve the current setting. nullable: true DisplayOrder: type: integer description: | Sort order used to position the product relative to others in listings, with lower values displayed first. Leave null to preserve the current setting. nullable: true EnableDeliveryCountdown: type: boolean description: | When true, shows a delivery countdown timer indicating the cutoff time for same-day or next-day dispatch. Leave null to preserve the current setting. nullable: true IsDownload: type: boolean description: | When true, marks the product as a downloadable digital item rather than a physical product. Leave null to preserve the current setting. nullable: true UnlimitedDownloads: type: boolean description: | When true, allows the customer to download the digital product an unlimited number of times. Leave null to preserve the current setting. nullable: true MaxNumberOfDownloads: type: integer description: | Maximum number of times the digital product can be downloaded when downloads are limited. Leave null to preserve the current setting. nullable: true DownloadExpirationDays: type: integer description: | Number of days after purchase during which the digital product remains available for download before the link expires. Leave null to preserve the current setting. nullable: true DownloadActivationType: allOf: - $ref: '#/components/schemas/InfigoDownloadActivationType' description: | Controls when a digital download becomes available, such as immediately after purchase or after manual approval. Leave null to preserve the current setting. Possible values: - `1` - WhenOrderIsPaid - Activate the download once the order has been paid. - `10` - Manually - Activate the download manually by an administrator. x-nullable: true HasSampleDownload: type: boolean description: | When true, provides a downloadable sample or preview of the digital product before purchase. Leave null to preserve the current setting. nullable: true HasUserAgreement: type: boolean description: | When true, requires the customer to accept a user agreement before purchasing or downloading the product. Leave null to preserve the current setting. nullable: true UserAgreementText: type: string description: | Text of the user agreement that customers must accept when a user agreement is required for this product. nullable: true IsRecurring: type: boolean description: | When true, marks the product as a recurring subscription that bills on a repeating schedule. Leave null to preserve the current setting. nullable: true RecurringCycleLength: type: integer description: | Length of each recurring billing cycle, measured in the units defined by the recurring cycle period. Leave null to preserve the current setting. nullable: true RecurringCyclePeriod: allOf: - $ref: '#/components/schemas/InfigoRecurringProductCyclePeriod' description: | Time unit for the recurring billing cycle, such as days, weeks, months, or years. Leave null to preserve the current setting. Possible values: - `0` - Days - The recurring cycle is measured in days. - `10` - Weeks - The recurring cycle is measured in weeks. - `20` - Months - The recurring cycle is measured in months. - `30` - Years - The recurring cycle is measured in years. x-nullable: true RecurringTotalCycles: type: integer description: | Total number of recurring billing cycles before the subscription ends. Leave null to preserve the current setting. nullable: true IsGiftCard: type: boolean description: | When true, marks the product as a gift card that issues a redeemable balance upon purchase. Leave null to preserve the current setting. nullable: true GiftCardType: allOf: - $ref: '#/components/schemas/InfigoGiftCardType' description: | Type of gift card, such as virtual (delivered by email) or physical (shipped to the customer). Leave null to preserve the current setting. Possible values: - `0` - Virtual - A virtual gift card delivered electronically. - `1` - Physical - A physical gift card shipped to the customer. x-nullable: true IsPrepayProduct: type: boolean description: | When true, marks the product as a prepay item where the customer pays an amount in advance toward future purchases. Leave null to preserve the current setting. nullable: true PrepayAmount: type: number description: | Amount the customer prepays when purchasing this prepay product. Leave null to preserve the current setting. format: decimal nullable: true ShowOnHomePage: type: boolean description: | When true, features this product on the storefront home page. Leave null to preserve the current setting. nullable: true HomePageProductOrder: type: integer description: | Sort order used to position this product among featured products on the home page, with lower values displayed first. Leave null to preserve the current setting. nullable: true ShowProductInSearch: type: boolean description: | When true, includes this product in storefront search results. Leave null to preserve the current setting. nullable: true AllowToUseProductWhereNotSearchable: type: boolean description: | When true, allows the product to be used or ordered through direct links even when it is excluded from search. Leave null to preserve the current setting. nullable: true AllowCustomerReviews: type: boolean description: | When true, allows customers to leave reviews and ratings on this product. Leave null to preserve the current setting. nullable: true RequestPriceOnLandingPage: type: boolean description: | When true, displays a request-a-price call to action on the product landing page instead of a fixed price. Leave null to preserve the current setting. nullable: true RequiresApproval: type: boolean description: | When true, orders for this product require approval before they can be processed. Leave null to preserve the current setting. nullable: true AdditionalDescription: type: string description: | Supplementary product description shown in addition to the main product description. nullable: true AdditionalTabText: type: string description: | Content displayed in an additional tab on the product detail page, used for extra information such as care instructions or specifications. nullable: true TeaserDetails: type: string description: | Short teaser or summary text used to preview the product in listings or promotional areas. nullable: true SearchTerms: type: string description: | Custom keywords used to improve the discoverability of the product in search. Separate terms with commas or spaces. nullable: true EmbedVideoCode: type: string description: | Embed code or markup for a product video displayed on the product detail page. nullable: true Preview360: type: string description: | Reference or markup for a 360-degree product preview shown on the product detail page. nullable: true ProductId: type: integer description: | The unique identifier of the product to update. This is required to identify which product to modify. Use the ProductList or SearchProducts endpoints to find product IDs. Price: type: number description: | Updated base price of the product in the store's default currency. Only provide this if you want to change the price. Omitting this field or setting to null will preserve the current price. Price changes take effect immediately for new orders. format: decimal nullable: true IsShippingEnabled: type: boolean description: | Updated shipping requirement flag. Set to true to enable shipping calculations for this product, false to disable. Useful when converting between physical and digital product types. nullable: true Name: type: string description: | The display name of the product shown in the storefront, search results, and order confirmations. Should be clear and descriptive. Maximum recommended length is 200 characters for optimal display across all themes. nullable: true Description: type: string description: | Short description of the product, typically displayed in product listings and search results. Keep concise (1-2 sentences) to encourage click-through to the full product page. Supports HTML formatting. nullable: true FullDescription: type: string description: | Detailed product description displayed on the product detail page. Use this for comprehensive product information, specifications, features, and benefits. Supports full HTML formatting including images, tables, and embedded media. nullable: true Tags: type: array items: type: string description: '' nullable: true description: | Array of tag names to associate with the product. Tags enable customers to find products through tag-based navigation and improve search discoverability. Tags that don't exist will be created automatically. Example: ['eco-friendly', 'premium', 'bestseller']. nullable: true CategoryIds: type: array items: type: integer description: '' description: | Array of category IDs to assign the product to. A product can belong to multiple categories for cross-listing. At least one category is recommended for the product to appear in storefront navigation. Use the CategoryList endpoint to find available category IDs. nullable: true ProductGroupId: type: integer description: | Links the product to a product group for grouped product management. Product groups allow coordinated pricing, inventory, and promotional rules across related products. Leave null if the product is not part of a group. nullable: true SKU: type: string description: | Stock Keeping Unit - a unique identifier for inventory tracking and external system integration. Must be unique across all products if provided. Used by the SearchProductsBySKU and UpdateStockBySku endpoints. Typically follows your organization's SKU naming convention (e.g., 'BC-GLOSS-500'). nullable: true description: | Base request model for product updates containing common properties for modifying existing products. InfigoApiCustomerAttribute: required: - Key type: object properties: Key: type: string description: | The attribute key/name identifying the custom field. nullable: true Value: type: string description: | The value stored for this custom attribute. nullable: true description: | Custom attribute key-value pair for storing additional customer data. Used for custom fields configured for customer records. InfigoApiCustomerStatus: enum: - 0 - 1 - 2 type: integer description: | Customer account status indicating the activation state and access permissions. Possible values: - `0` - NotActive - Account is deactivated; customer cannot log in or access the storefront. - `1` - Active - Account is active; customer can log in and place orders normally. - `2` - Invited - Customer has been invited but has not yet completed account activation. x-enumNames: - NotActive - Active - Invited x-enum-varnames: - NotActive - Active - Invited x-enum-descriptions: - Account is deactivated; customer cannot log in or access the storefront. - Account is active; customer can log in and place orders normally. - Customer has been invited but has not yet completed account activation. x-ms-enum: name: ApiCustomerStatus modelAsString: false values: - value: 0 name: NotActive description: Account is deactivated; customer cannot log in or access the storefront. - value: 1 name: Active description: Account is active; customer can log in and place orders normally. - value: 2 name: Invited description: Customer has been invited but has not yet completed account activation. InfigoApiCustomer: type: object properties: Password: type: string description: | The customer's password. Required when creating a new customer. When updating, leave null to keep existing password. Never returned in GET responses. nullable: true TimeZoneId: type: string description: | The customer's timezone ID for localizing dates and times (e.g., 'Europe/London', 'America/New_York'). nullable: true IsTaxExempt: type: boolean description: | Indicates whether the customer is exempt from tax calculations. nullable: true AffiliateId: type: integer description: | The affiliate ID if this customer was referred by an affiliate marketing partner. nullable: true PrintLocationId: type: string description: | The ID of the preferred print location for this customer's orders. nullable: true PrintLocationName: type: string description: | The display name of the customer's preferred print location. Read-only. nullable: true AdditionalAttributes: type: array items: $ref: '#/components/schemas/InfigoApiCustomerAttribute' description: | Additional custom attributes configured for customer records. nullable: true PromotionCardNumber: type: string description: | The customer's loyalty/promotion card number. nullable: true PromotionCardPoints: type: integer description: | The current points balance on the customer's promotion card. nullable: true BillingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The customer's default billing address. nullable: true ShippingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The customer's default shipping address. nullable: true WorkflowTrustLevelEnabled: type: boolean description: | Indicates whether workflow trust level approval is enabled for this customer. nullable: true WorkflowTrustLevel: type: number description: | The customer's trust level threshold for automatic order approval. Orders above this value require approval. format: decimal nullable: true Approvers: type: array items: type: string description: '' nullable: true description: | List of customer identifiers who can approve orders for this customer. nullable: true BudgetManagers: type: array items: type: string description: '' nullable: true description: | List of customer identifiers who manage budget for this customer. nullable: true AdminContent: type: string description: | Administrative notes/content visible only in the admin panel. nullable: true LastIpAddress: type: string description: | The IP address from the customer's last visit. nullable: true LastVisitedPage: type: string description: | The last page URL visited by the customer. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true LoginMessage: type: string description: | Custom message displayed to the customer upon login. nullable: true Language: type: string description: | The customer's working language, specified as a language culture code (e.g., 'en-US'), two-letter ISO code (e.g., 'en'), or system name (e.g., 'English'). nullable: true Currency: type: string description: | The customer's working currency, specified as a currency code (e.g., 'USD', 'EUR', 'GBP'). nullable: true ApplyDefaultStyling: type: boolean description: | Whether to apply default styling for this customer's editor experience. NotifyMis: type: boolean description: | Whether to send notifications to MIS when this customer is created/updated. CustomCheckbox: type: boolean description: | Custom checkbox field for additional customer configuration. nullable: true RewardPointsBalance: type: integer description: | The customer's current reward points balance. Read-only; use UpdateRewardPoints API to modify. nullable: true AvailableBudgetTotal: type: number description: | The customer's available budget total across all valid budgets. Only populated when the customer list is requested with includeBudgetData=true; otherwise null. Read-only. format: decimal nullable: true Addresses: type: array items: $ref: '#/components/schemas/InfigoApiAddress' description: | Array of all addresses associated with this customer. nullable: true Id: type: integer description: '' nullable: true Guid: type: string description: '' format: uuid nullable: true Username: type: string description: '' nullable: true Email: type: string description: '' nullable: true Active: type: boolean description: '' nullable: true Status: allOf: - $ref: '#/components/schemas/InfigoApiCustomerStatus' description: | Possible values: - `0` - NotActive - Account is deactivated; customer cannot log in or access the storefront. - `1` - Active - Account is active; customer can log in and place orders normally. - `2` - Invited - Customer has been invited but has not yet completed account activation. x-nullable: true Title: type: string description: '' nullable: true Gender: type: string description: '' nullable: true FullName: type: string description: '' nullable: true FirstName: type: string description: '' nullable: true LastName: type: string description: '' nullable: true DateOfBirth: type: string description: '' format: date-time nullable: true Custom1: type: string description: '' nullable: true Custom2: type: string description: '' nullable: true Custom3: type: string description: '' nullable: true IsAdmin: type: boolean description: '' CustomerRoles: type: array items: type: string description: '' nullable: true description: '' nullable: true Department: type: string description: '' nullable: true VatNumber: type: string description: '' nullable: true VatNumberStatus: type: integer description: '' nullable: true CompanyName: type: string description: '' nullable: true AddressLine1: type: string description: '' nullable: true AddressLine2: type: string description: '' nullable: true City: type: string description: '' nullable: true ZipPostalCode: type: string description: '' nullable: true StateProvince: type: string description: '' nullable: true Country: type: string description: '' nullable: true Phone: type: string description: '' nullable: true Fax: type: string description: '' nullable: true CreatedOn: type: string description: '' format: date-time nullable: true LastActivityDate: type: string description: '' format: date-time nullable: true description: | Full customer create/update API model. Contains personal details, addresses, roles, workflow approval settings, promotion data, and MIS integration data. InfigoCreateOrUpdateCustomerApiResponse: type: object properties: CustomerId: type: integer description: | The numeric id of the created or updated customer. Success: type: boolean description: | Indicates whether the operation completed successfully. When false, check ContextInfo.ErrorList for error details. Code: type: string description: | A response code identifying the result type (e.g., 'OK', 'CREATED', 'ERROR'). nullable: true ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the operation. nullable: true HelpUrl: type: string description: | URL to documentation or help resources for troubleshooting issues with this endpoint. nullable: true Message: type: string description: | A human-readable message describing the result of the operation. nullable: true description: | Response returned by Create or update customer: the standard API response wrapper plus the id of the saved customer. InfigoUpdateRewardPoints: required: - RewardPoints type: object properties: RewardPoints: type: integer description: | The reward points value. Interpretation depends on IsAbsoluteAdjustment: If absolute, this is the new total balance. If relative, this is added to (positive) or subtracted from (negative) the current balance. IsAbsoluteAdjustment: type: boolean description: | If is set to `true`, it will be set to this value. If set to `false`, it will subtract or append. Message: type: string description: | A message describing the reason for the adjustment. This message is stored in the reward points history for auditing purposes. nullable: true description: | Request model for updating a customer's reward points balance. Supports both absolute (set to specific value) and relative (add/subtract) adjustments. InfigoApiPagedResult_1_ApiCustomer: type: object properties: Data: type: array items: $ref: '#/components/schemas/InfigoApiCustomer' description: | The list of items for the current page. nullable: true PerPage: type: integer description: | Number of items per page. PageIndex: type: integer description: | Zero-based index of the current page. TotalCount: type: integer description: | Total number of items across all pages. TotalPages: type: integer description: | Total number of pages. description: | Paginated result wrapper. InfigoApiOrderDirection: enum: - 0 - 1 type: integer description: | Sort direction for API results. Possible values: - `0` - Asc - Sort results in ascending order. - `1` - Desc - Sort results in descending order. x-enumNames: - Asc - Desc x-enum-varnames: - Asc - Desc x-enum-descriptions: - Sort results in ascending order. - Sort results in descending order. x-ms-enum: name: ApiOrderDirection modelAsString: false values: - value: 0 name: Asc description: Sort results in ascending order. - value: 1 name: Desc description: Sort results in descending order. InfigoApiCustomerOrderBy: enum: - 0 - 1 - 2 - 3 type: integer description: | Fields available to sort customers by. Possible values: - `0` - Id - Sort by customer identifier. - `1` - FirstName - Sort by customer first name. - `2` - LastName - Sort by customer last name. - `3` - Email - Sort by customer email address. x-enumNames: - Id - FirstName - LastName - Email x-enum-varnames: - Id - FirstName - LastName - Email x-enum-descriptions: - Sort by customer identifier. - Sort by customer first name. - Sort by customer last name. - Sort by customer email address. x-ms-enum: name: ApiCustomerOrderBy modelAsString: false values: - value: 0 name: Id description: Sort by customer identifier. - value: 1 name: FirstName description: Sort by customer first name. - value: 2 name: LastName description: Sort by customer last name. - value: 3 name: Email description: Sort by customer email address. InfigoTouchJobResponseModel: type: object properties: IsSuccess: type: boolean description: | Indicates whether the touch operation was successful. True if the job session was refreshed, false if errors occurred. Errors: type: array items: type: string description: '' nullable: true description: | List of error messages if the operation failed. Empty when IsSuccess is true. nullable: true description: | Response model for the TouchJob operation indicating whether the job session was successfully refreshed/extended. Used to keep editor sessions alive. InfigoMultipartEditorMode: enum: - 0 - 1 - 2 type: integer description: | Possible values: - `0` - Normal - `1` - Iframe - `2` - EmbeddedIframe x-enumNames: - Normal - Iframe - EmbeddedIframe x-enum-varnames: - Normal - Iframe - EmbeddedIframe x-enum-descriptions: - Normal - Iframe - EmbeddedIframe x-ms-enum: name: MultipartEditorMode modelAsString: false values: - value: 0 name: Normal - value: 1 name: Iframe - value: 2 name: EmbeddedIframe InfigoItem: required: - VariableSetName - VariableItemName type: object properties: VariableSetName: type: string description: | Variable set name. nullable: true VariableItemName: type: string description: | Variable item name. nullable: true Value: type: string description: | Value (optional). nullable: true description: | Represents a single variable item within the request InfigoApiJobDetails: type: object properties: ProductId: type: integer description: | The Infigo product ID identifying which product this job is for. ProductSku: type: string description: | The SKU (Stock Keeping Unit) of the product being edited in this job. nullable: true ProductAttributes: type: object additionalProperties: type: string description: '' nullable: true description: | Dictionary of selected product attributes and their values for this job. Keys are attribute names, values are the selected option values (e.g., 'Size' => 'A4', 'Color' => 'Red'). Variables: type: array items: $ref: '#/components/schemas/InfigoItem' description: | Array of variable items containing the variable set name, variable name, and value. These represent customizable fields in the product template (e.g., text fields, images). nullable: true description: | Detailed information about the product/job InfigoApiEditorResult: type: object properties: CustomerGuid: type: string description: | The unique identifier (GUID) of the customer associated with this editor session format: uuid JobId: type: string description: | The unique identifier of the job created for this editor session nullable: true EditorLink: type: string description: | The URL link to open the editor for this job nullable: true ThumbnailLink: type: string description: | The optional URL link to the generated thumbnail image nullable: true ProductDetails: allOf: - $ref: '#/components/schemas/InfigoApiJobDetails' description: | Detailed information about the product/job nullable: true ActionId: type: string description: | The optional unique identifier (GUID) of the action associated with this editor session format: uuid nullable: true description: | Represents the result of an editor link request containing job information and editor URLs InfigoApiEditorLinkToRequest: type: object properties: BaseJobId: type: string description: | Optional BaseJob id. The variable items from the base job are fetched and merged with the ones in this request (with the new ones overriding). nullable: true Quantity: type: integer description: | Quantity for the product. nullable: true GenerateThumbnail: type: boolean description: | If true, a thumbnail with the variable values will be generated. nullable: true ErrorUrl: type: string description: | Error URL for the iFrame to display in case of an authentication error. nullable: true Customer: type: string description: | Optional Customer identifier. Either customer id, guid, or email/username. A new user will be created if nothing provided nullable: true Product: type: string description: | Product Identifier (SKU or Infigo Product Id or BaseJobId). In case the BaseJobId provided, we will use the product that relates to the job. nullable: true ProductAttributes: type: object additionalProperties: type: string description: '' nullable: true description: | Product Attributes (list of name/value pairs). nullable: true VariableItems: type: array items: $ref: '#/components/schemas/InfigoItem' description: | Variable list (list of variable set name/variable item name/value). nullable: true NotificationUrl: type: string description: | Optional postback URL when the thumbnail is ready. nullable: true description: | Represents a request to link to the MegaEdit editor with optional variable data and configuration InfigoJobDuplicatedResponse: type: object properties: JobId: type: string description: | The unique identifier (Job ID) of the newly created duplicate job. Use this ID to access the duplicated job in subsequent API calls or editor operations. nullable: true description: | Response model returned after successfully duplicating an editor job. Contains the unique identifier of the newly created duplicate job. InfigoDuplicateJobRequest: type: object properties: JobId: type: string description: | Job Id. Supported prefixes: `d` (Dynamic), `m` (MultiPart) nullable: true Customer: type: string description: | Optional Customer identifier. Either customer id, guid, or email/username. If not provided, the original job's customer will be used nullable: true AddInBasketStatus: type: boolean description: | This flag controls whether the in-basket status should be added to the duplicated job. Default is false nullable: true description: | Represents a request to duplicate an existing job for a customer InfigoHotFolder: type: object properties: Id: type: integer description: | The unique identifier of the hot folder. AccountId: type: integer description: | The storefront/account ID this hot folder belongs to. Name: type: string description: | The display name of the hot folder for identification in the admin interface. nullable: true Description: type: string description: | A detailed description of the hot folder's purpose and processing rules. nullable: true Folder: type: string description: | The file system path or network location being monitored for incoming files. nullable: true Enabled: type: boolean description: | Indicates whether the hot folder is actively monitoring for new files. When false, files are not processed. PrintLocationId: type: integer description: | The optional print location ID to associate processed jobs with a specific print location. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS configuration mappings for integrating hot folder jobs with external MIS systems. nullable: true description: | Represents a hot folder configuration for automated file processing. Hot folders monitor designated locations for incoming files and automatically process them according to configured rules. InfigoStatusTypeEnum: enum: - 25 - 26 - 68 - 69 type: integer description: | Tracks the processing stages of order products through external system interactions. Possible values: - `25` - OutputDownloaded - Output file has been downloaded by an external system. - `26` - OutputVerified - Output file has been verified as correct by an external system. - `68` - JobTicketDownloaded - Job ticket has been downloaded by an external system. - `69` - JobTicketVerified - Job ticket has been verified as correct by an external system. x-enumNames: - OutputDownloaded - OutputVerified - JobTicketDownloaded - JobTicketVerified x-enum-varnames: - OutputDownloaded - OutputVerified - JobTicketDownloaded - JobTicketVerified x-enum-descriptions: - Output file has been downloaded by an external system. - Output file has been verified as correct by an external system. - Job ticket has been downloaded by an external system. - Job ticket has been verified as correct by an external system. x-ms-enum: name: StatusTypeEnum modelAsString: false values: - value: 25 name: OutputDownloaded description: Output file has been downloaded by an external system. - value: 26 name: OutputVerified description: Output file has been verified as correct by an external system. - value: 68 name: JobTicketDownloaded description: Job ticket has been downloaded by an external system. - value: 69 name: JobTicketVerified description: Job ticket has been verified as correct by an external system. InfigoOrderProduct: required: - Id - Status - JobType type: object properties: Id: type: integer description: | The unique identifier of the Infigo order product to update. Status: allOf: - $ref: '#/components/schemas/InfigoStatusTypeEnum' description: | The new status to set for the order product. Represents processing milestones such as output download, verification, and job ticket handling. Possible values: - `25` - OutputDownloaded - Output file has been downloaded by an external system. - `26` - OutputVerified - Output file has been verified as correct by an external system. - `68` - JobTicketDownloaded - Job ticket has been downloaded by an external system. - `69` - JobTicketVerified - Job ticket has been verified as correct by an external system. JobType: type: string description: | The type of job being updated. Values: 'v'=Variable (Infigo), 's'=Static PDF, 'm'=MultiPart, 'd'=Dynamic, 'g'=Symphony Group. Determines which service handles the status update. nullable: true description: | Request model for updating the status of an Infigo order product. Used to track job processing stages including output generation and job ticket handling. InfigoJobStatusEnum: enum: - 0 - 1 - 2 - 3 type: integer description: | Status of a download job indicating its current state Possible values: - `0` - Created - Job has been created but download has not started - `1` - Downloading - Job is currently downloading the file - `2` - Downloaded - Job has successfully completed the download - `3` - Failed - Job failed to complete the download x-enumNames: - Created - Downloading - Downloaded - Failed x-enum-varnames: - Created - Downloading - Downloaded - Failed x-enum-descriptions: - Job has been created but download has not started - Job is currently downloading the file - Job has successfully completed the download - Job failed to complete the download x-ms-enum: name: JobStatusEnum modelAsString: false values: - value: 0 name: Created description: Job has been created but download has not started - value: 1 name: Downloading description: Job is currently downloading the file - value: 2 name: Downloaded description: Job has successfully completed the download - value: 3 name: Failed description: Job failed to complete the download InfigoJob: type: object properties: HotFolderId: type: integer description: | The ID of the hot folder this job belongs to. FileName: type: string description: | The original file name of the uploaded file. nullable: true DownloadId: type: string description: | The unique download identifier (GUID) for retrieving the processed file. nullable: true Status: allOf: - $ref: '#/components/schemas/InfigoJobStatusEnum' description: | The current processing status of the job. Values vary by job type and processing stage. Possible values: - `0` - Created - Job has been created but download has not started - `1` - Downloading - Job is currently downloading the file - `2` - Downloaded - Job has successfully completed the download - `3` - Failed - Job failed to complete the download FileSize: type: integer description: | The size of the uploaded file in bytes. format: int64 IntegrityVerification: type: string description: | A hash or checksum value for verifying file integrity after upload/download. nullable: true IsCurrentAccountIdEntity: type: boolean description: '' AccountId: type: integer description: '' ExternalGuid: type: string description: '' format: uuid UpdatedOnUtc: type: string description: '' format: date-time CreatedOnUtc: type: string description: '' format: date-time ConcurrencyTimeStamp: type: array items: type: integer description: '' description: '' nullable: true Id: type: integer description: '' description: | Represents a file processing job in the hot folder system. Jobs track files uploaded for processing through hot folders with their status and verification information. InfigoSetJobModel: required: - DownloadId - Status type: object properties: DownloadId: type: string description: | The unique identifier (GUID) of the download job to update. This ID is returned when creating or querying jobs. format: uuid Status: allOf: - $ref: '#/components/schemas/InfigoJobStatusEnum' description: | The new status to set for the job. See JobStatusEnum for valid values including Pending, Processing, Completed, Failed states. Possible values: - `0` - Created - Job has been created but download has not started - `1` - Downloading - Job is currently downloading the file - `2` - Downloaded - Job has successfully completed the download - `3` - Failed - Job failed to complete the download description: | Request model for updating the status of a download job. Used to track the processing state of files in the download system. InfigoMisEntityTypeModel: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 type: integer description: | Entity types that can be linked to external MIS systems via external references. Possible values: - `0` - ProductVariant - Product variant (SKU-level product entity). - `1` - Order - Order record. - `2` - Address - Customer or company address. - `3` - Customer - Customer account. - `4` - Department - Department within a B2B organization. - `5` - SymphonyItemPrint - Symphony print item. - `6` - SymphonyItemGroup - Symphony item group. - `7` - ProductVariantAttribute - Product variant attribute definition. - `8` - ProductVariantAttributeValue - Product variant attribute value. - `9` - ProductGroupAttribute - Product group attribute definition. - `10` - ProductGroupAttributeValue - Product group attribute value. - `11` - CheckoutAttribute - Checkout attribute. - `12` - ProductSpecificationAttribute - Product specification attribute. - `13` - DeliveryMethod - Delivery/shipping method. - `14` - MisApi - MIS API configuration. - `15` - ProductVariantAttributeCombination - Product variant attribute combination (variant). - `16` - ProductGroupAttributeCombination - Product group attribute combination. - `17` - ProductGroup - Product group. - `18` - OrderLine - Order line item (job). - `19` - CheckoutAttributeValue - Checkout attribute value. - `20` - Language - Language configuration. - `21` - Country - Country configuration. - `22` - SavedQuote - Saved quote. - `23` - HotFolder - Hot folder configuration. - `24` - UploadLocation - Upload location configuration. - `25` - Category - Product category. - `26` - MessageTemplate - Email/message template. - `27` - Supplier - Supplier record. - `28` - EditableContent - Editable content block. - `29` - TaxCategory - Tax category. - `30` - CustomerRole - Customer role/group. - `31` - Storefront - `32` - RequestContextGroup - Request context group. - `33` - ShoppingCartItem - Shopping cart item. - `34` - ApiAuthToken - API authentication token. - `35` - JobId - Job identifier. - `36` - Discount - Discount / promo code. x-enumNames: - ProductVariant - Order - Address - Customer - Department - SymphonyItemPrint - SymphonyItemGroup - ProductVariantAttribute - ProductVariantAttributeValue - ProductGroupAttribute - ProductGroupAttributeValue - CheckoutAttribute - ProductSpecificationAttribute - DeliveryMethod - MisApi - ProductVariantAttributeCombination - ProductGroupAttributeCombination - ProductGroup - OrderLine - CheckoutAttributeValue - Language - Country - SavedQuote - HotFolder - UploadLocation - Category - MessageTemplate - Supplier - EditableContent - TaxCategory - CustomerRole - Storefront - RequestContextGroup - ShoppingCartItem - ApiAuthToken - JobId - Discount x-enum-varnames: - ProductVariant - Order - Address - Customer - Department - SymphonyItemPrint - SymphonyItemGroup - ProductVariantAttribute - ProductVariantAttributeValue - ProductGroupAttribute - ProductGroupAttributeValue - CheckoutAttribute - ProductSpecificationAttribute - DeliveryMethod - MisApi - ProductVariantAttributeCombination - ProductGroupAttributeCombination - ProductGroup - OrderLine - CheckoutAttributeValue - Language - Country - SavedQuote - HotFolder - UploadLocation - Category - MessageTemplate - Supplier - EditableContent - TaxCategory - CustomerRole - Storefront - RequestContextGroup - ShoppingCartItem - ApiAuthToken - JobId - Discount x-enum-descriptions: - Product variant (SKU-level product entity). - Order record. - Customer or company address. - Customer account. - Department within a B2B organization. - Symphony print item. - Symphony item group. - Product variant attribute definition. - Product variant attribute value. - Product group attribute definition. - Product group attribute value. - Checkout attribute. - Product specification attribute. - Delivery/shipping method. - MIS API configuration. - Product variant attribute combination (variant). - Product group attribute combination. - Product group. - Order line item (job). - Checkout attribute value. - Language configuration. - Country configuration. - Saved quote. - Hot folder configuration. - Upload location configuration. - Product category. - Email/message template. - Supplier record. - Editable content block. - Tax category. - Customer role/group. - Storefront - Request context group. - Shopping cart item. - API authentication token. - Job identifier. - Discount / promo code. x-ms-enum: name: MisEntityTypeModel modelAsString: false values: - value: 0 name: ProductVariant description: Product variant (SKU-level product entity). - value: 1 name: Order description: Order record. - value: 2 name: Address description: Customer or company address. - value: 3 name: Customer description: Customer account. - value: 4 name: Department description: Department within a B2B organization. - value: 5 name: SymphonyItemPrint description: Symphony print item. - value: 6 name: SymphonyItemGroup description: Symphony item group. - value: 7 name: ProductVariantAttribute description: Product variant attribute definition. - value: 8 name: ProductVariantAttributeValue description: Product variant attribute value. - value: 9 name: ProductGroupAttribute description: Product group attribute definition. - value: 10 name: ProductGroupAttributeValue description: Product group attribute value. - value: 11 name: CheckoutAttribute description: Checkout attribute. - value: 12 name: ProductSpecificationAttribute description: Product specification attribute. - value: 13 name: DeliveryMethod description: Delivery/shipping method. - value: 14 name: MisApi description: MIS API configuration. - value: 15 name: ProductVariantAttributeCombination description: Product variant attribute combination (variant). - value: 16 name: ProductGroupAttributeCombination description: Product group attribute combination. - value: 17 name: ProductGroup description: Product group. - value: 18 name: OrderLine description: Order line item (job). - value: 19 name: CheckoutAttributeValue description: Checkout attribute value. - value: 20 name: Language description: Language configuration. - value: 21 name: Country description: Country configuration. - value: 22 name: SavedQuote description: Saved quote. - value: 23 name: HotFolder description: Hot folder configuration. - value: 24 name: UploadLocation description: Upload location configuration. - value: 25 name: Category description: Product category. - value: 26 name: MessageTemplate description: Email/message template. - value: 27 name: Supplier description: Supplier record. - value: 28 name: EditableContent description: Editable content block. - value: 29 name: TaxCategory description: Tax category. - value: 30 name: CustomerRole description: Customer role/group. - value: 31 name: Storefront - value: 32 name: RequestContextGroup description: Request context group. - value: 33 name: ShoppingCartItem description: Shopping cart item. - value: 34 name: ApiAuthToken description: API authentication token. - value: 35 name: JobId description: Job identifier. - value: 36 name: Discount description: Discount / promo code. InfigoUpdateMisExternalRefRequest: required: - Id - MisPluginSystemName - EntityType type: object properties: Id: type: string description: | The Infigo entity identifier (e.g., order ID, customer ID, product variant ID). The format depends on the EntityType being updated. nullable: true ExternalId: type: string description: | The external identifier in the MIS system to link to this Infigo entity. Set to null or empty to remove an existing external reference. nullable: true MisPluginSystemName: type: string description: | The system name of the MIS plugin managing this external reference (e.g., 'MIS.PrintIQ', 'MIS.Symphony', 'MIS.Custom'). Must match an installed MIS plugin. nullable: true EntityType: allOf: - $ref: '#/components/schemas/InfigoMisEntityTypeModel' description: | The type of entity being linked. Determines which Infigo entity table the external reference will be associated with. Possible values: - `0` - ProductVariant - Product variant (SKU-level product entity). - `1` - Order - Order record. - `2` - Address - Customer or company address. - `3` - Customer - Customer account. - `4` - Department - Department within a B2B organization. - `5` - SymphonyItemPrint - Symphony print item. - `6` - SymphonyItemGroup - Symphony item group. - `7` - ProductVariantAttribute - Product variant attribute definition. - `8` - ProductVariantAttributeValue - Product variant attribute value. - `9` - ProductGroupAttribute - Product group attribute definition. - `10` - ProductGroupAttributeValue - Product group attribute value. - `11` - CheckoutAttribute - Checkout attribute. - `12` - ProductSpecificationAttribute - Product specification attribute. - `13` - DeliveryMethod - Delivery/shipping method. - `14` - MisApi - MIS API configuration. - `15` - ProductVariantAttributeCombination - Product variant attribute combination (variant). - `16` - ProductGroupAttributeCombination - Product group attribute combination. - `17` - ProductGroup - Product group. - `18` - OrderLine - Order line item (job). - `19` - CheckoutAttributeValue - Checkout attribute value. - `20` - Language - Language configuration. - `21` - Country - Country configuration. - `22` - SavedQuote - Saved quote. - `23` - HotFolder - Hot folder configuration. - `24` - UploadLocation - Upload location configuration. - `25` - Category - Product category. - `26` - MessageTemplate - Email/message template. - `27` - Supplier - Supplier record. - `28` - EditableContent - Editable content block. - `29` - TaxCategory - Tax category. - `30` - CustomerRole - Customer role/group. - `31` - Storefront - `32` - RequestContextGroup - Request context group. - `33` - ShoppingCartItem - Shopping cart item. - `34` - ApiAuthToken - API authentication token. - `35` - JobId - Job identifier. - `36` - Discount - Discount / promo code. description: | Request model for updating the external reference ID linking an Infigo entity to an external MIS system. Used to establish bidirectional sync between systems. InfigoOrderStatus: enum: - 10 - 20 - 30 - 40 - 50 - 60 type: integer description: | Order lifecycle status. Progresses forward only (Open→Paid→Shipped→Complete) or to Cancelled. Possible values: - `10` - Open - Order created but payment not yet received. - `20` - Paid - Payment received and confirmed. - `30` - Shipped - Order has been shipped to the customer. - `40` - Complete - Order fully processed and closed. - `50` - Cancelled - Order was cancelled before completion. - `60` - Delivered - Order delivered to the customer. x-enumNames: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enum-varnames: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enum-descriptions: - Order created but payment not yet received. - Payment received and confirmed. - Order has been shipped to the customer. - Order fully processed and closed. - Order was cancelled before completion. - Order delivered to the customer. x-ms-enum: name: OrderStatus modelAsString: false values: - value: 10 name: Open description: Order created but payment not yet received. - value: 20 name: Paid description: Payment received and confirmed. - value: 30 name: Shipped description: Order has been shipped to the customer. - value: 40 name: Complete description: Order fully processed and closed. - value: 50 name: Cancelled description: Order was cancelled before completion. - value: 60 name: Delivered description: Order delivered to the customer. InfigoApiCustomTags: type: object properties: CustomTag1: type: string description: | First custom tag for categorization. Can be used for department, project, or cost center. nullable: true CustomTag2: type: string description: | Second custom tag for additional categorization. nullable: true CustomTag3: type: string description: | Third custom tag for additional categorization. nullable: true CustomTag4: type: string description: | Fourth custom tag for additional categorization. nullable: true description: | Custom tags associated with this order for categorization and filtering. InfigoOrderStateValues: enum: - 10 - 20 - 30 - 40 type: integer description: | Order processing workflow state. Possible values: - `10` - Pending - Order awaiting processing. - `20` - Processing - Order actively being processed. - `30` - Complete - Order processing completed. - `40` - Cancelled - Order processing was cancelled. x-enumNames: - Pending - Processing - Complete - Cancelled x-enum-varnames: - Pending - Processing - Complete - Cancelled x-enum-descriptions: - Order awaiting processing. - Order actively being processed. - Order processing completed. - Order processing was cancelled. x-ms-enum: name: OrderStateValues modelAsString: false values: - value: 10 name: Pending description: Order awaiting processing. - value: 20 name: Processing description: Order actively being processed. - value: 30 name: Complete description: Order processing completed. - value: 40 name: Cancelled description: Order processing was cancelled. InfigoShippingStateValues: enum: - 10 - 20 - 30 - 40 type: integer description: | Shipping fulfillment status for the order. Possible values: - `10` - ShippingNotRequired - Order contains only digital products; no shipping required. - `20` - NotYetShipped - Order awaiting shipment. - `30` - Shipped - Order has been dispatched to carrier. - `40` - Delivered - Order delivered to recipient. x-enumNames: - ShippingNotRequired - NotYetShipped - Shipped - Delivered x-enum-varnames: - ShippingNotRequired - NotYetShipped - Shipped - Delivered x-enum-descriptions: - Order contains only digital products; no shipping required. - Order awaiting shipment. - Order has been dispatched to carrier. - Order delivered to recipient. x-ms-enum: name: ShippingStateValues modelAsString: false values: - value: 10 name: ShippingNotRequired description: Order contains only digital products; no shipping required. - value: 20 name: NotYetShipped description: Order awaiting shipment. - value: 30 name: Shipped description: Order has been dispatched to carrier. - value: 40 name: Delivered description: Order delivered to recipient. InfigoPaymentStateValues: enum: - 10 - 20 - 30 - 35 - 40 - 50 - 60 type: integer description: | Payment processing status for the order. Possible values: - `10` - Pending - Payment initiated but not yet processed. - `20` - Authorized - Payment authorized but not yet captured. - `30` - Paid - Payment captured and funds received. - `35` - PartiallyRefunded - A portion of the payment has been refunded. - `40` - Refunded - Full payment amount has been refunded. - `50` - Voided - Payment authorization was voided before capture. - `60` - Cancelled - Payment was cancelled. x-enumNames: - Pending - Authorized - Paid - PartiallyRefunded - Refunded - Voided - Cancelled x-enum-varnames: - Pending - Authorized - Paid - PartiallyRefunded - Refunded - Voided - Cancelled x-enum-descriptions: - Payment initiated but not yet processed. - Payment authorized but not yet captured. - Payment captured and funds received. - A portion of the payment has been refunded. - Full payment amount has been refunded. - Payment authorization was voided before capture. - Payment was cancelled. x-ms-enum: name: PaymentStateValues modelAsString: false values: - value: 10 name: Pending description: Payment initiated but not yet processed. - value: 20 name: Authorized description: Payment authorized but not yet captured. - value: 30 name: Paid description: Payment captured and funds received. - value: 35 name: PartiallyRefunded description: A portion of the payment has been refunded. - value: 40 name: Refunded description: Full payment amount has been refunded. - value: 50 name: Voided description: Payment authorization was voided before capture. - value: 60 name: Cancelled description: Payment was cancelled. InfigoCheckoutAttributeValue: type: object properties: Id: type: string description: | The unique identifier of the checkout attribute value. nullable: true Content: type: string description: | The content/value of the checkout attribute as entered or selected by the customer. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS configuration mappings for this checkout attribute value for external system integration. nullable: true description: | Represents a selected value for a checkout attribute in an order. InfigoCheckoutAttribute: type: object properties: Id: type: integer description: | The unique identifier of the checkout attribute definition. Name: type: string description: | The display name of the checkout attribute as shown to customers. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS configuration mappings for this checkout attribute for external system integration. nullable: true Values: type: array items: $ref: '#/components/schemas/InfigoCheckoutAttributeValue' description: | The values selected for this checkout attribute in the order. nullable: true description: | Represents a checkout attribute configured for the store and selected during order checkout. Checkout attributes capture additional order-level information like gift options, delivery instructions, etc. InfigoApiTaxRate: type: object properties: Rate: type: number description: | The tax rate as a decimal value (e.g., 0.10 for 10%) format: decimal TaxCategoryId: type: integer description: | The unique identifier of the tax category TaxCategoryName: type: string description: | The name of the tax category nullable: true Value: type: number description: | The calculated tax value amount format: decimal description: | Represents tax rate information for a product or order InfigoOrderItem: type: object properties: Id: type: integer description: | The unique identifier of the order in the system database. OrderGuid: type: string description: | A globally unique identifier (GUID) for the order, used for cross-system references and external integrations. format: uuid CustomerId: type: integer description: | The unique identifier of the customer who placed this order. CustomerEmail: type: string description: | The email address of the customer at the time the order was placed. nullable: true CustomerUserName: type: string description: | The username of the customer who placed the order. nullable: true UserIdentifier: type: string description: | The external user identifier (GUID) for the customer, used in SSO and external system integrations. format: uuid CustomerLanguageId: type: integer description: | The language ID preference of the customer at order time, determines localization of communications. CustomerIp: type: string description: | The IP address from which the order was placed, useful for fraud detection and geographic analysis. nullable: true OrderLineItems: type: array items: type: string description: '' nullable: true description: | Array of order line item identifiers (job IDs) included in this order. Use OrderlineItem API endpoints to retrieve detailed information about each line item. nullable: true DepartmentId: type: integer description: | The department ID if the customer belongs to a department structure (B2B scenarios). Null for non-departmental orders. nullable: true Status: allOf: - $ref: '#/components/schemas/InfigoOrderStatus' description: | The overall order status representing the order lifecycle stage. Values: 10=Open, 20=Paid, 30=Shipped, 40=Complete, 50=Cancelled, 60=Delivered. Possible values: - `10` - Open - Order created but payment not yet received. - `20` - Paid - Payment received and confirmed. - `30` - Shipped - Order has been shipped to the customer. - `40` - Complete - Order fully processed and closed. - `50` - Cancelled - Order was cancelled before completion. - `60` - Delivered - Order delivered to the customer. BillingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The billing address associated with this order, used for invoicing and payment verification. nullable: true ShippingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The shipping/delivery address for this order. May differ from billing address. nullable: true ShippingType: type: string description: | The human-readable shipping method name selected by the customer (e.g., 'Standard Delivery', 'Express'). nullable: true CustomerCurrencyCode: type: string description: | The three-letter ISO currency code used for this order (e.g., 'GBP', 'USD', 'EUR'). nullable: true ShippingCost: type: number description: | The shipping cost charged for this order in the order's currency. format: decimal Tax: type: number description: | The total tax amount for the order in the order's currency. format: decimal OrderTotal: type: number description: | The grand total of the order including all line items, shipping, and tax. This is the final amount charged. format: decimal PurchaseOrderNumber: type: string description: | The purchase order number provided by the customer for their internal reference (B2B scenarios). nullable: true OrderDate: type: string description: | The date and time when the order was placed (UTC). format: date-time nullable: true BudgetUsed: type: number description: | The amount of customer budget used for this order (for budget-controlled accounts). format: decimal CustomTags: allOf: - $ref: '#/components/schemas/InfigoApiCustomTags' description: | Custom tags associated with this order for categorization and filtering. nullable: true CustomData1: type: string description: | Custom data field for storing additional order-level information. Usage varies by implementation. nullable: true TrackingNumber: type: string description: | The shipment tracking number provided by the carrier for order tracking. nullable: true OrderState: allOf: - $ref: '#/components/schemas/InfigoOrderStateValues' description: | The order state in the workflow. Values: 10=Pending, 20=Processing, 30=Complete, 40=Cancelled. Possible values: - `10` - Pending - Order awaiting processing. - `20` - Processing - Order actively being processed. - `30` - Complete - Order processing completed. - `40` - Cancelled - Order processing was cancelled. ShippingState: allOf: - $ref: '#/components/schemas/InfigoShippingStateValues' description: | The shipping fulfillment state. Values: 10=ShippingNotRequired, 20=NotYetShipped, 30=Shipped, 40=Delivered. Possible values: - `10` - ShippingNotRequired - Order contains only digital products; no shipping required. - `20` - NotYetShipped - Order awaiting shipment. - `30` - Shipped - Order has been dispatched to carrier. - `40` - Delivered - Order delivered to recipient. PaymentState: allOf: - $ref: '#/components/schemas/InfigoPaymentStateValues' description: | The payment processing state. Values: 10=Pending, 20=Authorized, 30=Paid, 35=PartiallyRefunded, 40=Refunded, 50=Voided, 60=Cancelled. Possible values: - `10` - Pending - Payment initiated but not yet processed. - `20` - Authorized - Payment authorized but not yet captured. - `30` - Paid - Payment captured and funds received. - `35` - PartiallyRefunded - A portion of the payment has been refunded. - `40` - Refunded - Full payment amount has been refunded. - `50` - Voided - Payment authorization was voided before capture. - `60` - Cancelled - Payment was cancelled. MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS configuration mappings for integration with external MIS systems. nullable: true CheckoutAttributes: type: array items: $ref: '#/components/schemas/InfigoCheckoutAttribute' description: | List of checkout attributes and their values selected during the checkout process (e.g., gift wrapping, special instructions). nullable: true Data: type: object additionalProperties: type: string description: '' nullable: true description: | Custom API metadata stored as key-value pairs. Use this for storing arbitrary order-level data for integrations. CurrencyRate: type: number description: | The exchange rate between the customer's currency and the store's primary currency at order time. format: decimal VatNumber: type: string description: | The customer's VAT/Tax registration number if provided during checkout (B2B scenarios). nullable: true OrderSubtotalInclTax: type: number description: | Order subtotal including tax (sum of all line item prices before shipping and order-level discounts). format: decimal OrderSubtotalExclTax: type: number description: | Order subtotal excluding tax (sum of all line item prices before shipping and order-level discounts). format: decimal OrderSubTotalDiscountInclTax: type: number description: | Subtotal discount amount including tax (promotional discounts applied at order level). format: decimal OrderSubTotalDiscountExclTax: type: number description: | Subtotal discount amount excluding tax (promotional discounts applied at order level). format: decimal DiscountCodes: type: array items: type: string description: '' nullable: true description: | List of discount/coupon codes applied to this order. nullable: true TaxRates: type: string description: | Tax rates breakdown as a formatted string (legacy format, use TaxRatesList for structured data). nullable: true TaxRatesList: type: array items: $ref: '#/components/schemas/InfigoApiTaxRate' description: | Structured list of tax rates applied to the order with amounts per rate. nullable: true OrderTax: type: number description: | Total tax amount calculated for the order. format: decimal OrderDiscount: type: number description: | Total discount amount applied to the order. format: decimal RefundedAmount: type: number description: | Amount that has been refunded from this order (partial or full refunds). format: decimal OrderWeight: type: number description: | Total physical weight of the order for shipping calculations. format: decimal RewardPointsWereAdded: type: boolean description: | Indicates whether reward points were earned and added to the customer's account for this order. AffiliateId: type: integer description: | The affiliate ID if this order was attributed to an affiliate marketing partner. nullable: true PaymentMethodSystemName: type: string description: | The system name identifier of the payment method used (e.g., 'Payments.Stripe', 'Payments.PayPal'). nullable: true PaymentMethodAdditionalFeeInclTax: type: number description: | Additional fee charged by the payment method including tax (e.g., payment processing surcharge). format: decimal PaymentMethodAdditionalFeeExclTax: type: number description: | Additional fee charged by the payment method excluding tax. format: decimal AuthorizationTransactionId: type: string description: | Transaction ID from the payment authorization request. nullable: true AuthorizationTransactionCode: type: string description: | Authorization code returned by the payment gateway. nullable: true AuthorizationTransactionResult: type: string description: | Result message from the payment authorization (success/failure details). nullable: true CaptureTransactionId: type: string description: | Transaction ID from the payment capture/settlement. nullable: true CaptureTransactionResult: type: string description: | Result message from the payment capture/settlement. nullable: true SubscriptionTransactionId: type: string description: | Subscription/recurring payment transaction ID if applicable. nullable: true ActualShippingMethod: type: string description: | The actual shipping method name as displayed to the customer. nullable: true ShippingMethodSystemName: type: string description: | The system name identifier of the shipping method used. nullable: true ShippingMethodCode: type: string description: | The shipping method code for integration with fulfillment systems. nullable: true ShippingRateComputationMethodSystemName: type: string description: | The system name of the shipping rate computation plugin that calculated the shipping cost. nullable: true OrderShippingInclTax: type: number description: | Shipping cost including tax. format: decimal OrderShippingExclTax: type: number description: | Shipping cost excluding tax. format: decimal ShippingTaxRate: type: number description: | The tax rate applied to shipping charges. format: decimal ShippedDateUtc: type: string description: | The date and time when the order was shipped (UTC). format: date-time nullable: true DeliveryDateUtc: type: string description: | The date and time when the order was delivered (UTC). format: date-time nullable: true DispatchBy: type: string description: | The target date by which the order should be dispatched. format: date-time nullable: true DeliverBy: type: string description: | The target date by which the order should be delivered. format: date-time nullable: true OrderProcessingFeeExclTax: type: number description: | Order processing fee excluding tax (administrative fee for processing the order). format: decimal OrderProcessingFeeInclTax: type: number description: | Order processing fee including tax. format: decimal OrderLineHandlingFeeExclTax: type: number description: | Order line handling fee excluding tax (fee per order line for handling). format: decimal OrderLineHandlingFeeInclTax: type: number description: | Order line handling fee including tax. format: decimal ProductHandlingFeeExclTax: type: number description: | Product handling fee excluding tax (fee for special product handling requirements). format: decimal ProductHandlingFeeInclTax: type: number description: | Product handling fee including tax. format: decimal description: | Comprehensive order model containing complete order details including customer information, line items, addresses, payment details, shipping information, and financial totals. This is the primary response model for order retrieval APIs. InfigoPlaceOrderHelper: type: object properties: shippingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The shipping/delivery address for this order. When provided, overrides the customer's default shipping address. If not specified, the customer's default shipping address will be used. Must include all required address fields for the storefront's configured shipping countries. nullable: true billingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The billing address for this order. When provided, overrides the customer's default billing address. If not specified, the customer's default billing address will be used. Required for payment processing and invoice generation. nullable: true shippingMethod: type: string description: | The shipping method system name to use for this order (e.g., 'Shipping.FixedRate', 'FreeShipping'). If not specified, the store's default shipping method will be applied. Must be a valid, enabled shipping method for the storefront. nullable: true paid: type: boolean description: | When true, the order will be marked as paid immediately upon creation. Use this for orders paid externally or for B2B invoicing scenarios. Default is false, meaning the order will have a Pending payment status. default: 'False' nullable: true description: | Request model containing optional configuration for the PlaceOrder API operation. Allows overriding default addresses, shipping method, and payment status when placing an order. InfigoKeyValuePair_2_String_String: type: object properties: Key: type: string description: '' nullable: true Value: type: string description: '' nullable: true description: '' InfigoRecordOrderApiResponse: type: object properties: CatfishOrderId: type: integer description: | The Catfish id of the order that was placed. nullable: true Success: type: boolean description: | Indicates whether the operation completed successfully. When false, check ContextInfo.ErrorList for error details. Code: type: string description: | A response code identifying the result type (e.g., 'OK', 'CREATED', 'ERROR'). nullable: true ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the operation. nullable: true HelpUrl: type: string description: | URL to documentation or help resources for troubleshooting issues with this endpoint. nullable: true Message: type: string description: | A human-readable message describing the result of the operation. nullable: true description: | Response returned by Record order: the standard API response wrapper plus the id of the placed order. Extra fields are omitted from XML responses. InfigoApiRecordOrderKeyValue: required: - Key - Value type: object properties: Key: type: string description: | The attribute name or identifier. For product attributes, this is the attribute system name. nullable: true Value: type: string description: | The selected value for this attribute. For predefined options, use the option value or ID. nullable: true description: | Key-value pair model used for product variant attributes and checkout attributes when recording orders through the API. InfigoApiOrderLineItem: type: object properties: ProductSKU: type: string description: | The product SKU (Stock Keeping Unit) identifying which product to order. Used to match the line item to a catalog product. nullable: true NopProductId: type: integer description: | The internal Nop product ID. Alternative to ProductSku for product identification. Takes precedence over ProductSku if both are provided. PdfExternalUrl: type: string description: | The URL to the PDF for generating multipart product output. Required if the orderline is for a Multipart product. Note: Ordering without artwork, product configuration, is not supported via API. nullable: true ProductVariantAttributes: type: array items: $ref: '#/components/schemas/InfigoApiRecordOrderKeyValue' description: | List of product variant attribute selections for this line item. Each entry represents a selected option (e.g., size, color, paper type). nullable: true PdfHash: type: string description: | The hash of the PdfExternalUrl used to verify the integrity of the PDF. Ensures the PDF file has not been modified since the hash was generated. nullable: true Quantity: type: integer description: | The quantity of items to order for this line item. ShippedQuantity: type: integer description: | The quantity that has already been shipped. Used for partial fulfillment tracking. JobId: type: string description: | The Job ID reference linking this order line to an editor job. Can be a number or a number with type prefix (e.g., 'ME_12345'). nullable: true ExtraData: type: object additionalProperties: type: string description: '' nullable: true description: | Additional key-value data to store with this line item for integration purposes. CustomTags: allOf: - $ref: '#/components/schemas/InfigoApiCustomTags' description: | Custom tags for categorizing and filtering this order line item. nullable: true CustomData1: type: string description: | Custom data field for storing additional line item-level information. nullable: true DeliveryType: type: array items: type: string description: '' nullable: true description: | Array of delivery type identifiers for this line item. Determines how the item should be fulfilled (e.g., 'download', 'ship'). nullable: true description: | Represents a single line item in an order recorded through the API. Contains product identification, quantity, job reference, and customization data. InfigoApiRecordOrder: required: - CatfishCustomerId - OrderLineItems type: object properties: ExternalOrderId: type: string description: | The External Order ID serves as a unique identifier for each order, particularly when Infigo is configured to use it as a reference field. This uniqueness ensures that the same order is not placed more than once. This field is not required but is preferred — if omitted, a default GUID will be generated automatically. nullable: true CallbackUrl: type: string description: | Webhook URL to receive order processing notifications. When provided, the system will POST status updates to this URL as the order progresses. nullable: true CatfishCustomerId: type: string description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. nullable: true CatfishDeliveryMethod: type: string description: | The delivery/shipping method system name to use for this order (e.g., 'Shipping.FixedRate', 'FreeShipping'). If not specified, uses the default method. nullable: true IsPaymentPaid: type: boolean description: | Indicates whether the order should be marked as paid. When true, the order bypasses payment processing. PurchaseOrderNumber: type: string description: | The customer's purchase order number for their internal reference (B2B scenarios). nullable: true DeliveryAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The shipping/delivery address for this order. If not provided, uses customer's default. nullable: true BillingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The billing address for this order. If not provided, uses customer's default. nullable: true OrderLineItems: type: array items: $ref: '#/components/schemas/InfigoApiOrderLineItem' description: | List of order line items to include in the order. Each item represents a product/job to be fulfilled. nullable: true CheckoutAttributes: type: array items: $ref: '#/components/schemas/InfigoApiRecordOrderKeyValue' description: | Checkout attribute values to apply to this order (e.g., gift wrapping, special instructions). nullable: true ExtraData: type: object additionalProperties: type: string description: '' nullable: true description: | Additional key-value data to store with the order for integration purposes. nullable: true CustomTags: allOf: - $ref: '#/components/schemas/InfigoApiCustomTags' description: | Custom tags to categorize and filter this order. nullable: true CustomData1: type: string description: | Custom data field for storing additional order-level information. nullable: true RequestContextGroupId: type: integer description: | The request context group ID for grouping related orders. nullable: true PaymentMethodSystemName: type: string description: | Optional payment method system name to associate with the order. When provided, this value is forwarded to the payment processing pipeline. When omitted or empty, the default empty-string fallback is used. nullable: true description: | Request model for recording an order through the API. Used to create orders from external systems with complete control over line items, addresses, and order metadata. InfigoImportHistoricalOrderApiResponse: type: object properties: CatfishOrderId: type: integer description: | The Catfish id of the imported order, or of the existing order when it was already imported. nullable: true AlreadyImported: type: boolean description: | True when an order with the same ExternalOrderId/OrderGuid already existed (the existing order is returned and no duplicate is created). nullable: true OrderGuid: type: string description: | The GUID of the imported (or existing) order. JSON-encoded (with embedded quotes) on servers with Api:WriteExtraResponseFieldsAsJson off. nullable: true Warnings: description: | Non-blocking warnings (e.g. supplied financial totals that disagree with the values computed from the order lines): a JSON array of strings, or a JSON-encoded array string on servers with Api:WriteExtraResponseFieldsAsJson off. nullable: true Success: type: boolean description: | Indicates whether the operation completed successfully. When false, check ContextInfo.ErrorList for error details. Code: type: string description: | A response code identifying the result type (e.g., 'OK', 'CREATED', 'ERROR'). nullable: true ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the operation. nullable: true HelpUrl: type: string description: | URL to documentation or help resources for troubleshooting issues with this endpoint. nullable: true Message: type: string description: | A human-readable message describing the result of the operation. nullable: true description: | Response returned by Import historical order: the standard API response wrapper plus the imported (or already existing) order details. Extra fields are omitted from XML responses. InfigoApiHistoricalOrderLine: required: - NopProductId - Quantity type: object properties: NopProductId: type: integer description: | The internal Nop product (variant) ID identifying the product to add. Takes precedence over ProductSku. ProductSKU: type: string description: | The product SKU. Alternative to NopProductId for product identification. nullable: true Quantity: type: integer description: | The quantity ordered for this line item. ProductVariantAttributes: type: array items: $ref: '#/components/schemas/InfigoApiRecordOrderKeyValue' description: | Product variant attribute selections supplied as structured key-value pairs. Rendered into the stored XML and descriptions server-side. nullable: true UnitPriceInclTax: type: number description: | Unit price including tax. format: decimal nullable: true UnitPriceExclTax: type: number description: | Unit price excluding tax. format: decimal nullable: true PriceInclTax: type: number description: | Line total price including tax. format: decimal nullable: true PriceExclTax: type: number description: | Line total price excluding tax. format: decimal nullable: true DiscountAmountInclTax: type: number description: | Line discount amount including tax. format: decimal nullable: true DiscountAmountExclTax: type: number description: | Line discount amount excluding tax. format: decimal nullable: true TierPricePart1: type: number description: | Tier price component 1. format: decimal nullable: true TierPricePart2: type: number description: | Tier price component 2. format: decimal nullable: true TierPricePart3: type: number description: | Tier price component 3. format: decimal nullable: true TierPricePart4: type: number description: | Tier price component 4. format: decimal nullable: true ProductCost: type: number description: | Per-line product cost. No order-line cost column exists, so this is recorded against the order's OrderMonetary. format: decimal nullable: true Sku: type: string description: | The SKU recorded against the order line (overrides the product's SKU when supplied). nullable: true DisplayOrder: type: integer description: | The display order of this line within the order. nullable: true PackQuantity: type: integer description: | The pack quantity for this line. nullable: true IsCancelled: type: boolean description: | Whether this line is cancelled. nullable: true ShippedQuantity: type: integer description: | The quantity already shipped for this line. nullable: true Notes: type: string description: | Free-text notes recorded against this line. nullable: true DeliveryType: type: array items: type: string description: '' nullable: true description: | Delivery type identifiers for this line item. nullable: true DispatchBy: type: string description: | The date this line was dispatched, in UTC. format: date-time nullable: true DeliverBy: type: string description: | The date this line was delivered, in UTC. format: date-time nullable: true CustomTags: allOf: - $ref: '#/components/schemas/InfigoApiCustomTags' description: | Custom tags for categorizing and filtering this order line item. nullable: true CustomData1: type: string description: | Custom data field for storing additional line item-level information. nullable: true ExtraData: type: object additionalProperties: type: string description: '' nullable: true description: | Additional key-value data to store with this line item for integration purposes. nullable: true description: | A single line item of a historical order import. Only StaticPDF and Nop product types are accepted. All per-line pricing columns are persisted verbatim; attributes are supplied as structured key-value pairs, never raw XML. InfigoApiHistoricalOrder: required: - CatfishCustomerId - CreatedOnUtc - OrderLineItems type: object properties: ExternalOrderId: type: string description: | External order identifier used for idempotency. Preferred but optional — if omitted, a deterministic OrderGuid is derived so re-runs still de-duplicate. Re-importing the same ExternalOrderId returns the existing order. nullable: true CatfishCustomerId: type: string description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. nullable: true CreatedOnUtc: type: string description: | The original (back-dated) creation date of the order in UTC. Persisted verbatim as the order's CreatedOnUtc. format: date-time IsPaymentPaid: type: boolean description: | Indicates whether the imported order should be marked as paid. When true, PaymentStatus is set to Paid and PaidDateUtc is recorded, but no MIS payment-status notification is sent. PaidDateUtc: type: string description: | The date the order was paid in UTC. When omitted and IsPaymentPaid is true, CreatedOnUtc is used. format: date-time nullable: true PurchaseOrderNumber: type: string description: | The customer's purchase order number for their internal reference (B2B scenarios). nullable: true CatfishDeliveryMethod: type: string description: | The delivery/shipping method system name recorded for this order. Informational only — no live rate is computed. nullable: true PaymentMethodSystemName: type: string description: | The payment method system name recorded for this order. nullable: true DeliveryAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The shipping/delivery address. If provided it is cloned onto the order; if omitted, the customer's default address is cloned. nullable: true BillingAddress: allOf: - $ref: '#/components/schemas/InfigoApiAddress' description: | The billing address. If provided it is cloned onto the order; if omitted, the customer's default address is cloned. nullable: true OrderLineItems: type: array items: $ref: '#/components/schemas/InfigoApiHistoricalOrderLine' description: | Order line items. Only StaticPDF and Nop product types are accepted in this iteration; other types are rejected. nullable: true CheckoutAttributes: type: array items: $ref: '#/components/schemas/InfigoApiRecordOrderKeyValue' description: | Checkout attribute values supplied as structured key-value pairs. Rendered into the stored XML and description server-side — never supplied as raw XML. nullable: true ExtraData: type: object additionalProperties: type: string description: '' nullable: true description: | Additional key-value data to store with the order for integration purposes. nullable: true CustomTags: allOf: - $ref: '#/components/schemas/InfigoApiCustomTags' description: | Custom tags to categorize and filter this order. nullable: true CustomData1: type: string description: | Custom data field for storing additional order-level information. nullable: true CurrencyCode: type: string description: | The currency code the order was placed in (e.g., 'GBP'). Defaults to the customer's currency when omitted. nullable: true CurrencyRate: type: number description: | The currency exchange rate used at the time of the original order. Defaults to 1 when omitted. format: decimal nullable: true OrderSubtotalInclTax: type: number description: | Order subtotal including tax. Persisted verbatim when supplied; computed from lines when null. format: decimal nullable: true OrderSubtotalExclTax: type: number description: | Order subtotal excluding tax. Persisted verbatim when supplied; computed from lines when null. format: decimal nullable: true OrderSubTotalDiscountInclTax: type: number description: | Order subtotal discount including tax. format: decimal nullable: true OrderSubTotalDiscountExclTax: type: number description: | Order subtotal discount excluding tax. format: decimal nullable: true OrderShippingInclTax: type: number description: | Shipping total including tax. format: decimal nullable: true OrderShippingExclTax: type: number description: | Shipping total excluding tax. format: decimal nullable: true PaymentMethodAdditionalFeeInclTax: type: number description: | Payment method additional fee including tax. format: decimal nullable: true PaymentMethodAdditionalFeeExclTax: type: number description: | Payment method additional fee excluding tax. format: decimal nullable: true TaxRates: type: array items: $ref: '#/components/schemas/InfigoApiTaxRate' description: | Tax rate breakdown supplied as structured entries. Rendered server-side into the Rate:Value:TaxCategoryId order format; each entry's TaxCategoryId must exist. Never derived from a single incl-excl figure. nullable: true OrderTax: type: number description: | Total order tax. Computed from TaxRates/lines when null. format: decimal nullable: true OrderDiscount: type: number description: | Total order-level discount amount. format: decimal nullable: true OrderTotal: type: number description: | The order grand total. Persisted verbatim when supplied; computed from the other figures when null. format: decimal nullable: true BudgetUsed: type: number description: | Budget amount used against this order. Recorded on the order only — live budget balances are not re-decremented on backfill. format: decimal nullable: true RefundedAmount: type: number description: | Amount refunded against this order. format: decimal nullable: true OrderProcessingFeeExclTax: type: number description: | Order processing fee excluding tax. Recorded on the mandatory OrderMonetary row (zero when omitted). format: decimal nullable: true OrderProcessingFeeInclTax: type: number description: | Order processing fee including tax. Recorded on the mandatory OrderMonetary row (zero when omitted). format: decimal nullable: true OrderLineHandlingFeeExclTax: type: number description: | Order line handling fee excluding tax. Recorded on the mandatory OrderMonetary row (zero when omitted). format: decimal nullable: true OrderLineHandlingFeeInclTax: type: number description: | Order line handling fee including tax. Recorded on the mandatory OrderMonetary row (zero when omitted). format: decimal nullable: true description: | Request model for importing a historical (back-dated) order through the dedicated import endpoint. Unlike RecordOrder, financial values are persisted verbatim, the creation date is supplied by the caller, and no customer email, Connect push or stock adjustment is performed. InfigoItemStatus: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 46 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - 76 type: integer description: | Workflow status codes tracking the lifecycle of an order line item from creation through fulfillment. Possible values: - `0` - Nothing - Initial state before item creation. - `1` - Creating - Item is being created in the system. - `2` - InBasket - Item is in the shopping basket, not yet ordered. - `3` - Ordered - Item has been ordered and payment confirmed. - `4` - OutputCreationStarted - Print-ready output file generation has begun. - `5` - OutputCreated - Print-ready output files have been successfully generated. - `6` - OutputCreationFailed - Output file generation failed; requires investigation. - `7` - InHotFolder - Output files have been placed in a hot folder for printing. - `8` - Printed - Item has been printed. - `9` - Shipped - Item has been shipped to the customer. - `10` - AwaitingApproval - Item requires approval before proceeding. - `11` - AwaitingData - Item is waiting for variable data to be provided. - `12` - AwaitingParts - Item is waiting for component parts to be available. - `13` - AwaitingProof - Item is waiting for proof approval from customer. - `14` - InArtworking - Item is being processed by the artwork team. - `15` - InFinishing - Item is in the finishing stage (binding, cutting, etc.). - `16` - InPacking - Item is being packed for shipment. - `17` - InProduction - Item is in production/printing. - `18` - InReprographics - Item is in reprographics processing. - `19` - OnHold - Item is on hold; processing paused. - `20` - FutureOrder - Future-dated order; processing blocked until release date. - `21` - UnapprovedOrder - Order requires approval; acts as a processing blocker. - `22` - Rejected - Item was rejected during approval workflow. - `23` - Approved - Item has been approved and can proceed. - `24` - RecreationRequested - Output recreation has been requested. - `25` - OutputDownloaded - Output files have been downloaded by an external system. - `26` - OutputVerified - Downloaded output has been verified by external system. - `27` - SentEmail - Email delivery completed successfully. - `28` - SentEmailFailed - Email delivery failed. - `29` - SmsDispatched - SMS delivery completed successfully. - `30` - EmailBounced - Email bounced back; delivery failed. - `31` - EmailBouncedAndPrintJobCreated - Email bounced and a print job copy was created as fallback. - `32` - PrintJobVersion - This job is a print copy created from another job (e.g., email bounce fallback). - `33` - NoEmailBounceActionRequired - Email bounce detected but no action required. - `34` - SmsDispatching - SMS is being dispatched. - `35` - MisNotified - MIS system has been notified about this item. - `36` - TemplateProductCreated - Template product was successfully created. - `37` - TemplateProductCreationFailed - Template product creation failed. - `38` - ExternalOutputRequested - External output generation has been requested. - `39` - ExternalOutputJobClosed - External output job has been closed. - `40` - ActionRun - Automated action has been executed on this item. - `41` - MisNotificationRetrigger - MIS notification is being retriggered. - `46` - ReadyForCollection - Item is ready for customer collection. - `49` - Blocked - Item is blocked from processing. - `50` - ArtworkUploaded - Customer artwork has been uploaded. - `51` - MisOrderProcessed - MIS has processed this order. - `52` - MisAssetsOk - MIS has confirmed assets are valid. - `53` - MisAssetsFailed - MIS asset validation failed. - `54` - MisFailed - MIS processing failed. - `55` - CustomStatus - Custom status applied via workflow or integration. - `56` - CustomStatusHidden - Hidden custom status for internal tracking. - `57` - MisAdditionalActionRequired - MIS requires additional action to proceed. - `58` - MisManifested - Item has been manifested in MIS for shipping. - `59` - CopyToHotFolderFailed - Failed to copy output to hot folder. - `60` - CopyToHotFolderSkipped - Hot folder copy was skipped (e.g., duplicate prevention). - `61` - PartiallyApproved - Item has received partial approval. - `62` - JobDataDeleted - Job data has been deleted (cleanup/GDPR). - `63` - ValidationFailed - Item failed validation checks. - `64` - ValidationFinished - Item passed validation checks. - `65` - ApprovalJobUpdated - Approval job has been updated. - `66` - MisPartiallyFailed - MIS processing partially failed. - `67` - OutputDeleted - Output files have been deleted. - `68` - MisShipped - MIS has confirmed shipment. - `69` - MisSkipped - MIS processing was skipped. - `70` - RequiresFinalize - Item requires finalization before completion. - `71` - ShippedQuantity - Partial quantity has been shipped. - `72` - MisCustomStatus - Custom status assigned by MIS integration. - `73` - Cancelled - Item has been cancelled. - `74` - JobTicketDownloaded - Job ticket has been downloaded. - `75` - JobTicketVerified - Job ticket has been verified. - `76` - StatusManuallyRemoved - Status was manually removed by an administrator. x-enumNames: - Nothing - Creating - InBasket - Ordered - OutputCreationStarted - OutputCreated - OutputCreationFailed - InHotFolder - Printed - Shipped - AwaitingApproval - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - FutureOrder - UnapprovedOrder - Rejected - Approved - RecreationRequested - OutputDownloaded - OutputVerified - SentEmail - SentEmailFailed - SmsDispatched - EmailBounced - EmailBouncedAndPrintJobCreated - PrintJobVersion - NoEmailBounceActionRequired - SmsDispatching - MisNotified - TemplateProductCreated - TemplateProductCreationFailed - ExternalOutputRequested - ExternalOutputJobClosed - ActionRun - MisNotificationRetrigger - ReadyForCollection - Blocked - ArtworkUploaded - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - MisFailed - CustomStatus - CustomStatusHidden - MisAdditionalActionRequired - MisManifested - CopyToHotFolderFailed - CopyToHotFolderSkipped - PartiallyApproved - JobDataDeleted - ValidationFailed - ValidationFinished - ApprovalJobUpdated - MisPartiallyFailed - OutputDeleted - MisShipped - MisSkipped - RequiresFinalize - ShippedQuantity - MisCustomStatus - Cancelled - JobTicketDownloaded - JobTicketVerified - StatusManuallyRemoved x-enum-varnames: - Nothing - Creating - InBasket - Ordered - OutputCreationStarted - OutputCreated - OutputCreationFailed - InHotFolder - Printed - Shipped - AwaitingApproval - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - FutureOrder - UnapprovedOrder - Rejected - Approved - RecreationRequested - OutputDownloaded - OutputVerified - SentEmail - SentEmailFailed - SmsDispatched - EmailBounced - EmailBouncedAndPrintJobCreated - PrintJobVersion - NoEmailBounceActionRequired - SmsDispatching - MisNotified - TemplateProductCreated - TemplateProductCreationFailed - ExternalOutputRequested - ExternalOutputJobClosed - ActionRun - MisNotificationRetrigger - ReadyForCollection - Blocked - ArtworkUploaded - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - MisFailed - CustomStatus - CustomStatusHidden - MisAdditionalActionRequired - MisManifested - CopyToHotFolderFailed - CopyToHotFolderSkipped - PartiallyApproved - JobDataDeleted - ValidationFailed - ValidationFinished - ApprovalJobUpdated - MisPartiallyFailed - OutputDeleted - MisShipped - MisSkipped - RequiresFinalize - ShippedQuantity - MisCustomStatus - Cancelled - JobTicketDownloaded - JobTicketVerified - StatusManuallyRemoved x-enum-descriptions: - Initial state before item creation. - Item is being created in the system. - 'Item is in the shopping basket, not yet ordered.' - Item has been ordered and payment confirmed. - Print-ready output file generation has begun. - Print-ready output files have been successfully generated. - Output file generation failed; requires investigation. - Output files have been placed in a hot folder for printing. - Item has been printed. - Item has been shipped to the customer. - Item requires approval before proceeding. - Item is waiting for variable data to be provided. - Item is waiting for component parts to be available. - Item is waiting for proof approval from customer. - Item is being processed by the artwork team. - 'Item is in the finishing stage (binding, cutting, etc.).' - Item is being packed for shipment. - Item is in production/printing. - Item is in reprographics processing. - Item is on hold; processing paused. - Future-dated order; processing blocked until release date. - Order requires approval; acts as a processing blocker. - Item was rejected during approval workflow. - Item has been approved and can proceed. - Output recreation has been requested. - Output files have been downloaded by an external system. - Downloaded output has been verified by external system. - Email delivery completed successfully. - Email delivery failed. - SMS delivery completed successfully. - Email bounced back; delivery failed. - Email bounced and a print job copy was created as fallback. - 'This job is a print copy created from another job (e.g., email bounce fallback).' - Email bounce detected but no action required. - SMS is being dispatched. - MIS system has been notified about this item. - Template product was successfully created. - Template product creation failed. - External output generation has been requested. - External output job has been closed. - Automated action has been executed on this item. - MIS notification is being retriggered. - Item is ready for customer collection. - Item is blocked from processing. - Customer artwork has been uploaded. - MIS has processed this order. - MIS has confirmed assets are valid. - MIS asset validation failed. - MIS processing failed. - Custom status applied via workflow or integration. - Hidden custom status for internal tracking. - MIS requires additional action to proceed. - Item has been manifested in MIS for shipping. - Failed to copy output to hot folder. - 'Hot folder copy was skipped (e.g., duplicate prevention).' - Item has received partial approval. - Job data has been deleted (cleanup/GDPR). - Item failed validation checks. - Item passed validation checks. - Approval job has been updated. - MIS processing partially failed. - Output files have been deleted. - MIS has confirmed shipment. - MIS processing was skipped. - Item requires finalization before completion. - Partial quantity has been shipped. - Custom status assigned by MIS integration. - Item has been cancelled. - Job ticket has been downloaded. - Job ticket has been verified. - Status was manually removed by an administrator. x-ms-enum: name: ItemStatus modelAsString: false values: - value: 0 name: Nothing description: Initial state before item creation. - value: 1 name: Creating description: Item is being created in the system. - value: 2 name: InBasket description: 'Item is in the shopping basket, not yet ordered.' - value: 3 name: Ordered description: Item has been ordered and payment confirmed. - value: 4 name: OutputCreationStarted description: Print-ready output file generation has begun. - value: 5 name: OutputCreated description: Print-ready output files have been successfully generated. - value: 6 name: OutputCreationFailed description: Output file generation failed; requires investigation. - value: 7 name: InHotFolder description: Output files have been placed in a hot folder for printing. - value: 8 name: Printed description: Item has been printed. - value: 9 name: Shipped description: Item has been shipped to the customer. - value: 10 name: AwaitingApproval description: Item requires approval before proceeding. - value: 11 name: AwaitingData description: Item is waiting for variable data to be provided. - value: 12 name: AwaitingParts description: Item is waiting for component parts to be available. - value: 13 name: AwaitingProof description: Item is waiting for proof approval from customer. - value: 14 name: InArtworking description: Item is being processed by the artwork team. - value: 15 name: InFinishing description: 'Item is in the finishing stage (binding, cutting, etc.).' - value: 16 name: InPacking description: Item is being packed for shipment. - value: 17 name: InProduction description: Item is in production/printing. - value: 18 name: InReprographics description: Item is in reprographics processing. - value: 19 name: OnHold description: Item is on hold; processing paused. - value: 20 name: FutureOrder description: Future-dated order; processing blocked until release date. - value: 21 name: UnapprovedOrder description: Order requires approval; acts as a processing blocker. - value: 22 name: Rejected description: Item was rejected during approval workflow. - value: 23 name: Approved description: Item has been approved and can proceed. - value: 24 name: RecreationRequested description: Output recreation has been requested. - value: 25 name: OutputDownloaded description: Output files have been downloaded by an external system. - value: 26 name: OutputVerified description: Downloaded output has been verified by external system. - value: 27 name: SentEmail description: Email delivery completed successfully. - value: 28 name: SentEmailFailed description: Email delivery failed. - value: 29 name: SmsDispatched description: SMS delivery completed successfully. - value: 30 name: EmailBounced description: Email bounced back; delivery failed. - value: 31 name: EmailBouncedAndPrintJobCreated description: Email bounced and a print job copy was created as fallback. - value: 32 name: PrintJobVersion description: 'This job is a print copy created from another job (e.g., email bounce fallback).' - value: 33 name: NoEmailBounceActionRequired description: Email bounce detected but no action required. - value: 34 name: SmsDispatching description: SMS is being dispatched. - value: 35 name: MisNotified description: MIS system has been notified about this item. - value: 36 name: TemplateProductCreated description: Template product was successfully created. - value: 37 name: TemplateProductCreationFailed description: Template product creation failed. - value: 38 name: ExternalOutputRequested description: External output generation has been requested. - value: 39 name: ExternalOutputJobClosed description: External output job has been closed. - value: 40 name: ActionRun description: Automated action has been executed on this item. - value: 41 name: MisNotificationRetrigger description: MIS notification is being retriggered. - value: 46 name: ReadyForCollection description: Item is ready for customer collection. - value: 49 name: Blocked description: Item is blocked from processing. - value: 50 name: ArtworkUploaded description: Customer artwork has been uploaded. - value: 51 name: MisOrderProcessed description: MIS has processed this order. - value: 52 name: MisAssetsOk description: MIS has confirmed assets are valid. - value: 53 name: MisAssetsFailed description: MIS asset validation failed. - value: 54 name: MisFailed description: MIS processing failed. - value: 55 name: CustomStatus description: Custom status applied via workflow or integration. - value: 56 name: CustomStatusHidden description: Hidden custom status for internal tracking. - value: 57 name: MisAdditionalActionRequired description: MIS requires additional action to proceed. - value: 58 name: MisManifested description: Item has been manifested in MIS for shipping. - value: 59 name: CopyToHotFolderFailed description: Failed to copy output to hot folder. - value: 60 name: CopyToHotFolderSkipped description: 'Hot folder copy was skipped (e.g., duplicate prevention).' - value: 61 name: PartiallyApproved description: Item has received partial approval. - value: 62 name: JobDataDeleted description: Job data has been deleted (cleanup/GDPR). - value: 63 name: ValidationFailed description: Item failed validation checks. - value: 64 name: ValidationFinished description: Item passed validation checks. - value: 65 name: ApprovalJobUpdated description: Approval job has been updated. - value: 66 name: MisPartiallyFailed description: MIS processing partially failed. - value: 67 name: OutputDeleted description: Output files have been deleted. - value: 68 name: MisShipped description: MIS has confirmed shipment. - value: 69 name: MisSkipped description: MIS processing was skipped. - value: 70 name: RequiresFinalize description: Item requires finalization before completion. - value: 71 name: ShippedQuantity description: Partial quantity has been shipped. - value: 72 name: MisCustomStatus description: Custom status assigned by MIS integration. - value: 73 name: Cancelled description: Item has been cancelled. - value: 74 name: JobTicketDownloaded description: Job ticket has been downloaded. - value: 75 name: JobTicketVerified description: Job ticket has been verified. - value: 76 name: StatusManuallyRemoved description: Status was manually removed by an administrator. InfigoOrderlineItemItemType: enum: - 10 - 20 - 30 - 40 - 50 - 70 type: integer description: | Product type classification determining how the item is processed and rendered. Possible values: - `10` - Normal - Standard e-commerce product without editor customization. - `20` - Variable - Variable data product allowing customer personalization via the editor. - `30` - Static - Static PDF product with fixed, non-editable design. - `40` - MultiPart - Multi-part product containing multiple components or documents. - `50` - Dynamic - Dynamic product with programmatically generated content. - `70` - Symphony - Symphony integration product for external workflow processing. x-enumNames: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-enum-varnames: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-enum-descriptions: - Standard e-commerce product without editor customization. - Variable data product allowing customer personalization via the editor. - 'Static PDF product with fixed, non-editable design.' - Multi-part product containing multiple components or documents. - Dynamic product with programmatically generated content. - Symphony integration product for external workflow processing. x-ms-enum: name: ItemType modelAsString: false values: - value: 10 name: Normal description: Standard e-commerce product without editor customization. - value: 20 name: Variable description: Variable data product allowing customer personalization via the editor. - value: 30 name: Static description: 'Static PDF product with fixed, non-editable design.' - value: 40 name: MultiPart description: Multi-part product containing multiple components or documents. - value: 50 name: Dynamic description: Dynamic product with programmatically generated content. - value: 70 name: Symphony description: Symphony integration product for external workflow processing. InfigoApiQuoteEntity: type: object properties: Id: type: integer description: '' CustomReference: type: string description: '' nullable: true description: | Quote information if this item was created from a quote. InfigoOrderLineItemHistoryItem: type: object properties: Status: allOf: - $ref: '#/components/schemas/InfigoItemStatus' description: | The status that was set at this point in history. Possible values: - `0` - Nothing - Initial state before item creation. - `1` - Creating - Item is being created in the system. - `2` - InBasket - Item is in the shopping basket, not yet ordered. - `3` - Ordered - Item has been ordered and payment confirmed. - `4` - OutputCreationStarted - Print-ready output file generation has begun. - `5` - OutputCreated - Print-ready output files have been successfully generated. - `6` - OutputCreationFailed - Output file generation failed; requires investigation. - `7` - InHotFolder - Output files have been placed in a hot folder for printing. - `8` - Printed - Item has been printed. - `9` - Shipped - Item has been shipped to the customer. - `10` - AwaitingApproval - Item requires approval before proceeding. - `11` - AwaitingData - Item is waiting for variable data to be provided. - `12` - AwaitingParts - Item is waiting for component parts to be available. - `13` - AwaitingProof - Item is waiting for proof approval from customer. - `14` - InArtworking - Item is being processed by the artwork team. - `15` - InFinishing - Item is in the finishing stage (binding, cutting, etc.). - `16` - InPacking - Item is being packed for shipment. - `17` - InProduction - Item is in production/printing. - `18` - InReprographics - Item is in reprographics processing. - `19` - OnHold - Item is on hold; processing paused. - `20` - FutureOrder - Future-dated order; processing blocked until release date. - `21` - UnapprovedOrder - Order requires approval; acts as a processing blocker. - `22` - Rejected - Item was rejected during approval workflow. - `23` - Approved - Item has been approved and can proceed. - `24` - RecreationRequested - Output recreation has been requested. - `25` - OutputDownloaded - Output files have been downloaded by an external system. - `26` - OutputVerified - Downloaded output has been verified by external system. - `27` - SentEmail - Email delivery completed successfully. - `28` - SentEmailFailed - Email delivery failed. - `29` - SmsDispatched - SMS delivery completed successfully. - `30` - EmailBounced - Email bounced back; delivery failed. - `31` - EmailBouncedAndPrintJobCreated - Email bounced and a print job copy was created as fallback. - `32` - PrintJobVersion - This job is a print copy created from another job (e.g., email bounce fallback). - `33` - NoEmailBounceActionRequired - Email bounce detected but no action required. - `34` - SmsDispatching - SMS is being dispatched. - `35` - MisNotified - MIS system has been notified about this item. - `36` - TemplateProductCreated - Template product was successfully created. - `37` - TemplateProductCreationFailed - Template product creation failed. - `38` - ExternalOutputRequested - External output generation has been requested. - `39` - ExternalOutputJobClosed - External output job has been closed. - `40` - ActionRun - Automated action has been executed on this item. - `41` - MisNotificationRetrigger - MIS notification is being retriggered. - `46` - ReadyForCollection - Item is ready for customer collection. - `49` - Blocked - Item is blocked from processing. - `50` - ArtworkUploaded - Customer artwork has been uploaded. - `51` - MisOrderProcessed - MIS has processed this order. - `52` - MisAssetsOk - MIS has confirmed assets are valid. - `53` - MisAssetsFailed - MIS asset validation failed. - `54` - MisFailed - MIS processing failed. - `55` - CustomStatus - Custom status applied via workflow or integration. - `56` - CustomStatusHidden - Hidden custom status for internal tracking. - `57` - MisAdditionalActionRequired - MIS requires additional action to proceed. - `58` - MisManifested - Item has been manifested in MIS for shipping. - `59` - CopyToHotFolderFailed - Failed to copy output to hot folder. - `60` - CopyToHotFolderSkipped - Hot folder copy was skipped (e.g., duplicate prevention). - `61` - PartiallyApproved - Item has received partial approval. - `62` - JobDataDeleted - Job data has been deleted (cleanup/GDPR). - `63` - ValidationFailed - Item failed validation checks. - `64` - ValidationFinished - Item passed validation checks. - `65` - ApprovalJobUpdated - Approval job has been updated. - `66` - MisPartiallyFailed - MIS processing partially failed. - `67` - OutputDeleted - Output files have been deleted. - `68` - MisShipped - MIS has confirmed shipment. - `69` - MisSkipped - MIS processing was skipped. - `70` - RequiresFinalize - Item requires finalization before completion. - `71` - ShippedQuantity - Partial quantity has been shipped. - `72` - MisCustomStatus - Custom status assigned by MIS integration. - `73` - Cancelled - Item has been cancelled. - `74` - JobTicketDownloaded - Job ticket has been downloaded. - `75` - JobTicketVerified - Job ticket has been verified. - `76` - StatusManuallyRemoved - Status was manually removed by an administrator. Timestamp: type: string description: | The UTC timestamp when this status change occurred. format: date-time Info: type: string description: | Additional information or notes about this status change. nullable: true description: | A history entry recording a status change for an order line item. Provides audit trail of status transitions throughout the order lifecycle. InfigoOrderLineItemGroup: type: object properties: Id: type: integer description: | Unique identifier of the product group. Name: type: string description: | Display name of the product group. nullable: true Description: type: string description: | Description of the product group. nullable: true description: | Product group this item belongs to. InfigoProductAttributeValue: type: object properties: Id: type: string description: | Unique identifier of the attribute value. nullable: true Content: type: string description: | The selected value content. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS integration mappings for this value. nullable: true description: | Selected value for a product attribute. InfigoProductAttribute: type: object properties: Id: type: integer description: | Unique identifier of the product attribute. Name: type: string description: | Display name of the product attribute. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS integration mappings for this attribute. nullable: true Values: type: array items: $ref: '#/components/schemas/InfigoProductAttributeValue' description: | Selected values for this attribute. nullable: true description: | Product attribute selected for this order line item. InfigoApiVariableItem: type: object properties: Value: type: string description: | The value of the variable item nullable: true ValueType: type: string description: | The data type of the variable value nullable: true Id: type: integer description: | The unique identifier of the variable item Name: type: string description: | The name of the variable item nullable: true ContextType: type: integer description: | The context type of the variable item (mirrors VariableItem.ContextType) Type: type: integer description: | The variable type (mirrors VariableItem.VariableType) description: | Represents a variable item with value and value type information InfigoApiVariableSet_1_ApiVariableItem: type: object properties: Set: allOf: - $ref: '#/components/schemas/InfigoApiVariableSetHeader' description: | The header information for the variable set nullable: true Items: type: array items: $ref: '#/components/schemas/InfigoApiVariableItem' description: | The list of variable items in the set nullable: true description: | Represents a variable set containing header information and a list of variable items InfigoPageSize: type: object properties: Width: type: number description: | The width of the page. format: double Height: type: number description: | The height of the page. format: double description: | Page dimensions of an asset. InfigoAssetDetail: type: object properties: Name: type: string description: | The name of the asset. nullable: true Url: type: string description: | The download URL for the asset. nullable: true PageCount: type: integer description: | The total number of pages in the asset. nullable: true PageSizes: type: array items: $ref: '#/components/schemas/InfigoPageSize' description: | The list of page sizes for each page in the asset. nullable: true MaxPageWidth: type: number description: | The maximum page width across all pages in the asset. format: double MaxPageHeight: type: number description: | The maximum page height across all pages in the asset. format: double description: | Asset detail for multipart products. InfigoGenericJobFile: type: object properties: Name: type: string description: | The name of the generic job file. nullable: true Url: type: string description: | The download URL for the generic job file. nullable: true description: | Generic job file reference. InfigoOrderlineItem: type: object properties: Id: type: string description: | Unique identifier (job ID) for this order line item. nullable: true OrderId: type: integer description: | The unique identifier of the order this line item belongs to. nullable: true OpvId: type: integer description: | Order product variant ID linking to the shopping cart entry. OrderLineItemGuid: type: string description: | Globally unique identifier for cross-system reference. format: uuid ProductId: type: integer description: | Product ID this line item was created from. CustomerId: type: integer description: | Customer ID who owns this line item. nullable: true Name: type: string description: | Display name of the product. nullable: true CreatedOnUtc: type: string description: | UTC timestamp when this line item was created. format: date-time Status: allOf: - $ref: '#/components/schemas/InfigoItemStatus' description: | Current workflow status code. Multiple statuses can be applied simultaneously to track progress. Possible values: - `0` - Nothing - Initial state before item creation. - `1` - Creating - Item is being created in the system. - `2` - InBasket - Item is in the shopping basket, not yet ordered. - `3` - Ordered - Item has been ordered and payment confirmed. - `4` - OutputCreationStarted - Print-ready output file generation has begun. - `5` - OutputCreated - Print-ready output files have been successfully generated. - `6` - OutputCreationFailed - Output file generation failed; requires investigation. - `7` - InHotFolder - Output files have been placed in a hot folder for printing. - `8` - Printed - Item has been printed. - `9` - Shipped - Item has been shipped to the customer. - `10` - AwaitingApproval - Item requires approval before proceeding. - `11` - AwaitingData - Item is waiting for variable data to be provided. - `12` - AwaitingParts - Item is waiting for component parts to be available. - `13` - AwaitingProof - Item is waiting for proof approval from customer. - `14` - InArtworking - Item is being processed by the artwork team. - `15` - InFinishing - Item is in the finishing stage (binding, cutting, etc.). - `16` - InPacking - Item is being packed for shipment. - `17` - InProduction - Item is in production/printing. - `18` - InReprographics - Item is in reprographics processing. - `19` - OnHold - Item is on hold; processing paused. - `20` - FutureOrder - Future-dated order; processing blocked until release date. - `21` - UnapprovedOrder - Order requires approval; acts as a processing blocker. - `22` - Rejected - Item was rejected during approval workflow. - `23` - Approved - Item has been approved and can proceed. - `24` - RecreationRequested - Output recreation has been requested. - `25` - OutputDownloaded - Output files have been downloaded by an external system. - `26` - OutputVerified - Downloaded output has been verified by external system. - `27` - SentEmail - Email delivery completed successfully. - `28` - SentEmailFailed - Email delivery failed. - `29` - SmsDispatched - SMS delivery completed successfully. - `30` - EmailBounced - Email bounced back; delivery failed. - `31` - EmailBouncedAndPrintJobCreated - Email bounced and a print job copy was created as fallback. - `32` - PrintJobVersion - This job is a print copy created from another job (e.g., email bounce fallback). - `33` - NoEmailBounceActionRequired - Email bounce detected but no action required. - `34` - SmsDispatching - SMS is being dispatched. - `35` - MisNotified - MIS system has been notified about this item. - `36` - TemplateProductCreated - Template product was successfully created. - `37` - TemplateProductCreationFailed - Template product creation failed. - `38` - ExternalOutputRequested - External output generation has been requested. - `39` - ExternalOutputJobClosed - External output job has been closed. - `40` - ActionRun - Automated action has been executed on this item. - `41` - MisNotificationRetrigger - MIS notification is being retriggered. - `46` - ReadyForCollection - Item is ready for customer collection. - `49` - Blocked - Item is blocked from processing. - `50` - ArtworkUploaded - Customer artwork has been uploaded. - `51` - MisOrderProcessed - MIS has processed this order. - `52` - MisAssetsOk - MIS has confirmed assets are valid. - `53` - MisAssetsFailed - MIS asset validation failed. - `54` - MisFailed - MIS processing failed. - `55` - CustomStatus - Custom status applied via workflow or integration. - `56` - CustomStatusHidden - Hidden custom status for internal tracking. - `57` - MisAdditionalActionRequired - MIS requires additional action to proceed. - `58` - MisManifested - Item has been manifested in MIS for shipping. - `59` - CopyToHotFolderFailed - Failed to copy output to hot folder. - `60` - CopyToHotFolderSkipped - Hot folder copy was skipped (e.g., duplicate prevention). - `61` - PartiallyApproved - Item has received partial approval. - `62` - JobDataDeleted - Job data has been deleted (cleanup/GDPR). - `63` - ValidationFailed - Item failed validation checks. - `64` - ValidationFinished - Item passed validation checks. - `65` - ApprovalJobUpdated - Approval job has been updated. - `66` - MisPartiallyFailed - MIS processing partially failed. - `67` - OutputDeleted - Output files have been deleted. - `68` - MisShipped - MIS has confirmed shipment. - `69` - MisSkipped - MIS processing was skipped. - `70` - RequiresFinalize - Item requires finalization before completion. - `71` - ShippedQuantity - Partial quantity has been shipped. - `72` - MisCustomStatus - Custom status assigned by MIS integration. - `73` - Cancelled - Item has been cancelled. - `74` - JobTicketDownloaded - Job ticket has been downloaded. - `75` - JobTicketVerified - Job ticket has been verified. - `76` - StatusManuallyRemoved - Status was manually removed by an administrator. IsCancelled: type: boolean description: | Indicates if the item has been cancelled. Type: allOf: - $ref: '#/components/schemas/InfigoOrderlineItemItemType' description: | Product type classification. Possible values: - `10` - Normal - Standard e-commerce product without editor customization. - `20` - Variable - Variable data product allowing customer personalization via the editor. - `30` - Static - Static PDF product with fixed, non-editable design. - `40` - MultiPart - Multi-part product containing multiple components or documents. - `50` - Dynamic - Dynamic product with programmatically generated content. - `70` - Symphony - Symphony integration product for external workflow processing. DownloadCount: type: integer description: | Number of times output files have been downloaded. PreviewUrls: type: array items: type: string description: '' nullable: true description: | URLs to preview images of the personalized product. nullable: true ThumbnailUrls: type: array items: type: string description: '' nullable: true description: | URLs to thumbnail images for display in lists. nullable: true Tags: type: array items: type: string description: '' nullable: true description: | Tags assigned to this item for categorization and filtering. nullable: true Price: type: number description: | Total price for this line item. format: decimal Quantity: type: integer description: | Ordered quantity. ShippedQuantity: type: integer description: | Quantity that has been shipped. Notes: type: string description: | Customer or admin notes attached to this item. nullable: true CustomName: type: string description: | Customer-defined name for personalized items. nullable: true Sku: type: string description: | Stock Keeping Unit code for inventory tracking. nullable: true UnitPriceInclTax: type: number description: | Unit price including tax. format: decimal UnitPriceExclTax: type: number description: | Unit price excluding tax. format: decimal SubTotalPriceInclTax: type: number description: | Subtotal (quantity × unit price) including tax. format: decimal SubTotalPriceExclTax: type: number description: | Subtotal (quantity × unit price) excluding tax. format: decimal DiscountAmountInclTax: type: number description: | Discount amount applied, including tax. format: decimal DiscountAmountExclTax: type: number description: | Discount amount applied, excluding tax. format: decimal Quote: allOf: - $ref: '#/components/schemas/InfigoApiQuoteEntity' description: | Quote information if this item was created from a quote. nullable: true CustomTags: allOf: - $ref: '#/components/schemas/InfigoApiCustomTags' description: | Custom tags for categorization and integration purposes. nullable: true CustomData1: type: string description: | Custom data field for integration-specific information. nullable: true History: type: array items: $ref: '#/components/schemas/InfigoOrderLineItemHistoryItem' description: | Status change history for audit trail. nullable: true Group: allOf: - $ref: '#/components/schemas/InfigoOrderLineItemGroup' description: | Product group this item belongs to. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS integration configuration mappings. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttribute' description: | Product attributes and selected values for this item. nullable: true DeliveryType: type: array items: type: string description: '' nullable: true description: | Delivery types applicable to this item (e.g., 'print', 'digital'). nullable: true LineNumber: type: integer description: | Position of this item within the order. Variables: type: array items: $ref: '#/components/schemas/InfigoApiVariableSet_1_ApiVariableItem' description: | Variable data sets containing personalization field values. nullable: true AssetDetails: type: array items: $ref: '#/components/schemas/InfigoAssetDetail' description: | Asset details for multipart products containing download URLs for each asset part. nullable: true GenericJobFiles: type: array items: $ref: '#/components/schemas/InfigoGenericJobFile' description: | Generic job files from the multipart product working folder. nullable: true description: | Represents an order line item (job) containing product details, pricing, fulfillment status, and customization data. Each order consists of one or more line items, where each item represents a product purchased by the customer. InfigoOutputCreationRequest: type: object properties: CallbackUrl: type: string description: | The webhook endpoint URL to be notified when output creation is complete. Required when HotFolderId is not provided. The system will POST output details to this URL. Example: 'https://your-server.com/api/output-ready' nullable: true HotFolderId: type: integer description: | The ID of the hot folder where the generated output file should be placed. Required when CallbackUrl is not provided. Use the HotFolder API to get available hot folder IDs. nullable: true DirectDownload: type: boolean description: | When true, the output will be available for direct download via the Download API. When false, the system will deliver the output to either the CallbackUrl or HotFolder. Default is false. nullable: true description: | Request model for creating print-ready output files from an order line item. Specifies how the generated output should be delivered - either via callback URL, hot folder, or direct download. InfigoItemStatusUpdate: enum: - 8 - 9 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 26 - 46 - 49 - 51 - 52 - 53 - 73 type: integer description: | Status values that can be applied to order line items via the UpdateItemStatus API. Possible values: - `8` - Printed - Item has been printed. - `9` - Shipped - Item has been shipped to customer. - `11` - AwaitingData - Waiting for additional data or information. - `12` - AwaitingParts - Waiting for required parts or materials. - `13` - AwaitingProof - Awaiting customer proof approval. - `14` - InArtworking - Item in artworking for design modifications. - `15` - InFinishing - Item in finishing (binding, laminating, etc.). - `16` - InPacking - Item being packed for shipping. - `17` - InProduction - Item in production/manufacturing. - `18` - InReprographics - Item in reprographics processing. - `19` - OnHold - Item on hold pending issue resolution. - `26` - OutputVerified - Output verified and ready for production. - `46` - ReadyForCollection - Ready for customer collection (pickup orders). - `49` - Blocked - Blocked due to error requiring attention. - `51` - MisOrderProcessed - MIS has processed the order. - `52` - MisAssetsOk - MIS confirmed assets are valid. - `53` - MisAssetsFailed - MIS reported asset failure. - `73` - Cancelled - Item cancelled; will not be fulfilled. x-enumNames: - Printed - Shipped - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - OutputVerified - ReadyForCollection - Blocked - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - Cancelled x-enum-varnames: - Printed - Shipped - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - OutputVerified - ReadyForCollection - Blocked - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - Cancelled x-enum-descriptions: - Item has been printed. - Item has been shipped to customer. - Waiting for additional data or information. - Waiting for required parts or materials. - Awaiting customer proof approval. - Item in artworking for design modifications. - 'Item in finishing (binding, laminating, etc.).' - Item being packed for shipping. - Item in production/manufacturing. - Item in reprographics processing. - Item on hold pending issue resolution. - Output verified and ready for production. - Ready for customer collection (pickup orders). - Blocked due to error requiring attention. - MIS has processed the order. - MIS confirmed assets are valid. - MIS reported asset failure. - Item cancelled; will not be fulfilled. x-ms-enum: name: ItemStatusUpdate modelAsString: false values: - value: 8 name: Printed description: Item has been printed. - value: 9 name: Shipped description: Item has been shipped to customer. - value: 11 name: AwaitingData description: Waiting for additional data or information. - value: 12 name: AwaitingParts description: Waiting for required parts or materials. - value: 13 name: AwaitingProof description: Awaiting customer proof approval. - value: 14 name: InArtworking description: Item in artworking for design modifications. - value: 15 name: InFinishing description: 'Item in finishing (binding, laminating, etc.).' - value: 16 name: InPacking description: Item being packed for shipping. - value: 17 name: InProduction description: Item in production/manufacturing. - value: 18 name: InReprographics description: Item in reprographics processing. - value: 19 name: OnHold description: Item on hold pending issue resolution. - value: 26 name: OutputVerified description: Output verified and ready for production. - value: 46 name: ReadyForCollection description: Ready for customer collection (pickup orders). - value: 49 name: Blocked description: Blocked due to error requiring attention. - value: 51 name: MisOrderProcessed description: MIS has processed the order. - value: 52 name: MisAssetsOk description: MIS confirmed assets are valid. - value: 53 name: MisAssetsFailed description: MIS reported asset failure. - value: 73 name: Cancelled description: Item cancelled; will not be fulfilled. InfigoApiNotFoundErrorResponseDetail: type: object properties: code: type: integer description: | The HTTP status code, always 404. message: type: string description: | A human-readable description of what could not be found. nullable: true description: | The not-found error details. InfigoApiNotFoundErrorResponse: type: object properties: error: allOf: - $ref: '#/components/schemas/InfigoApiNotFoundErrorResponseDetail' description: | The not-found error details. nullable: true description: | JSON 404 body written by endpoints that report a missing resource as an error object: {"error": {"code": 404, "message": "..."}}. InfigoUpdateNotesRequest: required: - JobId - Notes type: object properties: JobId: type: string description: | The unique identifier (Job ID) of the order line item to update. This is the same ID used in other OrderlineItem API operations. nullable: true Notes: type: string description: | The new notes content to set for the order line item. This will replace any existing notes. Pass an empty string to clear notes. nullable: true description: | Request model for updating the notes/comments associated with an order line item. Notes can contain production instructions, customer requests, or internal comments. InfigoPrintOrderHistoryStatusTypeEnum: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 type: integer description: | Possible values: - `0` - Nothing - `1` - Creating - `2` - InBasket - `3` - Ordered - `4` - OutputCreationStarted - `5` - OutputCreated - `6` - OutputCreationFailed - `7` - InHotFolder - `8` - Printed - `9` - Shipped - `10` - AwaitingApproval - `11` - AwaitingData - `12` - AwaitingParts - `13` - AwaitingProof - `14` - InArtworking - `15` - InFinishing - `16` - InPacking - `17` - InProduction - `18` - InReprographics - `19` - OnHold - `20` - FutureOrder - `21` - UnapprovedOrder - `22` - Rejected - `23` - Approved - `24` - RecreationRequested - `25` - OutputDownloaded - `26` - OutputVerified - `27` - SentEmail - `28` - SentEmailFailed - `29` - SmsDispatched - `30` - EmailBounced - `31` - EmailBouncedAndPrintJobCreated - `32` - PrintJobVersion - `33` - NoEmailBounceActionRequired - `34` - SmsDispatching - `35` - MisNotified - `36` - MisFailed - `37` - TemplateProductCreated - `38` - TemplateProductCreationFailed - `39` - ExternalOutputRequested - `40` - ExternalOutputJobClosed - `41` - ActionRun - `42` - MisNotificationRetrigger - `43` - CustomStatus - `44` - CustomStatusHidden - `45` - MisAdditionalActionRequired - `46` - ReadyForCollection - `47` - MisManifested - `48` - CopyToHotFolderFailed - `49` - Blocked - `50` - ArtworkUploaded - `51` - CopyToHotFolderSkipped - `52` - MisOrderProcessed - `53` - MisAssetsOk - `54` - MisAssetsFailed - `55` - PartiallyApproved - `56` - JobDataDeleted - `57` - ValidationFailed - `58` - ValidationFinished - `59` - MisPartiallyFailed - `60` - ApprovalJobUpdated - `61` - OutputDelete - `62` - MisShipped - `63` - MisSkipped - `64` - AwaitingFinalize - `65` - ShippedQuantity - `66` - MisCustomStatus - `67` - Cancelled - `68` - JobTicketDownloaded - `69` - JobTicketVerified - `70` - StatusManuallyRemoved x-enumNames: - Nothing - Creating - InBasket - Ordered - OutputCreationStarted - OutputCreated - OutputCreationFailed - InHotFolder - Printed - Shipped - AwaitingApproval - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - FutureOrder - UnapprovedOrder - Rejected - Approved - RecreationRequested - OutputDownloaded - OutputVerified - SentEmail - SentEmailFailed - SmsDispatched - EmailBounced - EmailBouncedAndPrintJobCreated - PrintJobVersion - NoEmailBounceActionRequired - SmsDispatching - MisNotified - MisFailed - TemplateProductCreated - TemplateProductCreationFailed - ExternalOutputRequested - ExternalOutputJobClosed - ActionRun - MisNotificationRetrigger - CustomStatus - CustomStatusHidden - MisAdditionalActionRequired - ReadyForCollection - MisManifested - CopyToHotFolderFailed - Blocked - ArtworkUploaded - CopyToHotFolderSkipped - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - PartiallyApproved - JobDataDeleted - ValidationFailed - ValidationFinished - MisPartiallyFailed - ApprovalJobUpdated - OutputDelete - MisShipped - MisSkipped - AwaitingFinalize - ShippedQuantity - MisCustomStatus - Cancelled - JobTicketDownloaded - JobTicketVerified - StatusManuallyRemoved x-enum-varnames: - Nothing - Creating - InBasket - Ordered - OutputCreationStarted - OutputCreated - OutputCreationFailed - InHotFolder - Printed - Shipped - AwaitingApproval - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - FutureOrder - UnapprovedOrder - Rejected - Approved - RecreationRequested - OutputDownloaded - OutputVerified - SentEmail - SentEmailFailed - SmsDispatched - EmailBounced - EmailBouncedAndPrintJobCreated - PrintJobVersion - NoEmailBounceActionRequired - SmsDispatching - MisNotified - MisFailed - TemplateProductCreated - TemplateProductCreationFailed - ExternalOutputRequested - ExternalOutputJobClosed - ActionRun - MisNotificationRetrigger - CustomStatus - CustomStatusHidden - MisAdditionalActionRequired - ReadyForCollection - MisManifested - CopyToHotFolderFailed - Blocked - ArtworkUploaded - CopyToHotFolderSkipped - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - PartiallyApproved - JobDataDeleted - ValidationFailed - ValidationFinished - MisPartiallyFailed - ApprovalJobUpdated - OutputDelete - MisShipped - MisSkipped - AwaitingFinalize - ShippedQuantity - MisCustomStatus - Cancelled - JobTicketDownloaded - JobTicketVerified - StatusManuallyRemoved x-enum-descriptions: - Nothing - Creating - InBasket - Ordered - OutputCreationStarted - OutputCreated - OutputCreationFailed - InHotFolder - Printed - Shipped - AwaitingApproval - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - FutureOrder - UnapprovedOrder - Rejected - Approved - RecreationRequested - OutputDownloaded - OutputVerified - SentEmail - SentEmailFailed - SmsDispatched - EmailBounced - EmailBouncedAndPrintJobCreated - PrintJobVersion - NoEmailBounceActionRequired - SmsDispatching - MisNotified - MisFailed - TemplateProductCreated - TemplateProductCreationFailed - ExternalOutputRequested - ExternalOutputJobClosed - ActionRun - MisNotificationRetrigger - CustomStatus - CustomStatusHidden - MisAdditionalActionRequired - ReadyForCollection - MisManifested - CopyToHotFolderFailed - Blocked - ArtworkUploaded - CopyToHotFolderSkipped - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - PartiallyApproved - JobDataDeleted - ValidationFailed - ValidationFinished - MisPartiallyFailed - ApprovalJobUpdated - OutputDelete - MisShipped - MisSkipped - AwaitingFinalize - ShippedQuantity - MisCustomStatus - Cancelled - JobTicketDownloaded - JobTicketVerified - StatusManuallyRemoved x-ms-enum: name: StatusTypeEnum modelAsString: false values: - value: 0 name: Nothing - value: 1 name: Creating - value: 2 name: InBasket - value: 3 name: Ordered - value: 4 name: OutputCreationStarted - value: 5 name: OutputCreated - value: 6 name: OutputCreationFailed - value: 7 name: InHotFolder - value: 8 name: Printed - value: 9 name: Shipped - value: 10 name: AwaitingApproval - value: 11 name: AwaitingData - value: 12 name: AwaitingParts - value: 13 name: AwaitingProof - value: 14 name: InArtworking - value: 15 name: InFinishing - value: 16 name: InPacking - value: 17 name: InProduction - value: 18 name: InReprographics - value: 19 name: OnHold - value: 20 name: FutureOrder - value: 21 name: UnapprovedOrder - value: 22 name: Rejected - value: 23 name: Approved - value: 24 name: RecreationRequested - value: 25 name: OutputDownloaded - value: 26 name: OutputVerified - value: 27 name: SentEmail - value: 28 name: SentEmailFailed - value: 29 name: SmsDispatched - value: 30 name: EmailBounced - value: 31 name: EmailBouncedAndPrintJobCreated - value: 32 name: PrintJobVersion - value: 33 name: NoEmailBounceActionRequired - value: 34 name: SmsDispatching - value: 35 name: MisNotified - value: 36 name: MisFailed - value: 37 name: TemplateProductCreated - value: 38 name: TemplateProductCreationFailed - value: 39 name: ExternalOutputRequested - value: 40 name: ExternalOutputJobClosed - value: 41 name: ActionRun - value: 42 name: MisNotificationRetrigger - value: 43 name: CustomStatus - value: 44 name: CustomStatusHidden - value: 45 name: MisAdditionalActionRequired - value: 46 name: ReadyForCollection - value: 47 name: MisManifested - value: 48 name: CopyToHotFolderFailed - value: 49 name: Blocked - value: 50 name: ArtworkUploaded - value: 51 name: CopyToHotFolderSkipped - value: 52 name: MisOrderProcessed - value: 53 name: MisAssetsOk - value: 54 name: MisAssetsFailed - value: 55 name: PartiallyApproved - value: 56 name: JobDataDeleted - value: 57 name: ValidationFailed - value: 58 name: ValidationFinished - value: 59 name: MisPartiallyFailed - value: 60 name: ApprovalJobUpdated - value: 61 name: OutputDelete - value: 62 name: MisShipped - value: 63 name: MisSkipped - value: 64 name: AwaitingFinalize - value: 65 name: ShippedQuantity - value: 66 name: MisCustomStatus - value: 67 name: Cancelled - value: 68 name: JobTicketDownloaded - value: 69 name: JobTicketVerified - value: 70 name: StatusManuallyRemoved InfigoPrintLocation: type: object properties: Id: type: integer description: | The unique identifier of the print location. Name: type: string description: | The display name of the print location (e.g., 'Main Facility', 'East Coast Print Center'). nullable: true Description: type: string description: | A detailed description of the print location including its capabilities, address, or other relevant information. nullable: true AccountId: type: integer description: | The storefront/account ID this print location belongs to. description: | Represents a print location/print facility where jobs can be routed for production. Print locations allow orders to be directed to specific printing facilities based on geographic location, equipment capabilities, or business rules. InfigoProductGroupAttributeCombination: type: object properties: Id: type: integer description: | The unique identifier of this attribute combination. ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: | The list of product attributes with their selected values that define this combination. nullable: true AllowOutOfStockOrders: allOf: - $ref: '#/components/schemas/InfigoBackorderMode' description: | Determines how out-of-stock orders are handled for this combination. NoBackorders prevents ordering when stock is zero. Possible values: - `0` - NoBackorders - `1` - AllowQtyBelow0 - `2` - AllowQtyBelow0AndNotifyCustomer Sku: type: string description: | The unique SKU (Stock Keeping Unit) for this specific attribute combination. Used for inventory tracking and integration with external systems. nullable: true Priority: type: integer description: | The priority/sort order for this combination. Lower values have higher priority and are matched first when determining which combination applies. StockValue: type: integer description: | The current stock quantity available for this specific combination. NotifyAdminForQuantityBelow: type: integer description: '' MinimumBasketQuantity: type: integer description: | The minimum quantity that can be ordered for this combination. Overrides the product-level minimum if set. nullable: true MaximumBasketQuantity: type: integer description: | The maximum quantity that can be ordered for this combination. Overrides the product-level maximum if set. nullable: true Published: type: boolean description: | Indicates whether this combination is published and available for ordering. Unpublished combinations are hidden from customers. MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Base model for product attribute combinations (variants). Represents a specific combination of attribute values with its own SKU, stock level, and settings. InfigoApiProductGroupInfo: type: object properties: GroupId: type: integer description: | The unique identifier of the product group. AdminComment: type: string description: | Administrative comment or notes about this product group. Visible only in admin panel, not shown to customers. nullable: true Name: type: string description: | The descriptive name of the product group displayed to customers and admins. nullable: true AvailableStartDateTimeUtc: type: string description: | The start date and time (UTC) when products in this group become available for purchase. Products are not orderable before this time. format: date-time nullable: true AvailableEndDateTimeUtc: type: string description: | The end date and time (UTC) when products in this group are no longer available for purchase. Products cannot be ordered after this time. format: date-time nullable: true DefaultBasketQuantity: type: integer description: | The default quantity pre-filled in the shopping cart when adding products from this group. MinimumBasketQuantity: type: integer description: | The minimum quantity that must be ordered for products in this group. MaximumBasketQuantity: type: integer description: | The maximum quantity that can be ordered for products in this group. OrderPackQuantity: type: integer description: | The pack quantity for products in this group. Determines quantity increments based on QuantitySelectorMode (e.g., pack of 10, pack of 25). QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Defines how quantity selection works for products in this group. Controls whether customers order by units, packs, or other measures. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. Price: type: number description: | The base price for products in this group. May be overridden by tier pricing if HasQuantityBasedPricing is enabled. format: decimal HasQuantityBasedPricing: type: boolean description: | Indicates whether quantity-based tier pricing is enabled for products in this group. When true, prices decrease at higher quantities as defined in TierPrices. nullable: true ShowOrderlineTotal: type: boolean description: | Indicates whether to display the total price per order line based on quantity. When true, shows total = price × quantity for each line item. TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiTierPrice' description: | List of tier price points for quantity-based pricing. Each tier defines a quantity threshold and corresponding unit price. Only applies when HasQuantityBasedPricing is true. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: | List of product attributes assigned to this group (e.g., size, color, material). Customers select from these attributes when ordering products from the group. nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductGroupAttributeCombination' description: | List of attribute combinations that define valid selections and their specific configurations. Each combination can have unique SKU, price, stock, and other overrides. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Product group information model containing all configuration and pricing details for a product group. Product groups allow managing multiple related products with shared attributes, pricing, and availability settings. InfigoProductGroupAttributeValueRequest: type: object properties: MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS (Management Information System) configuration settings for this attribute value. nullable: true Name: type: string description: | The name of the product attribute value. nullable: true FriendlyName: type: string description: | A user-friendly name for the product attribute value. nullable: true HtmlInfo: type: string description: | HTML content providing additional information about the product attribute value. nullable: true DisplayOrder: type: integer description: | The display order of the product attribute value in the UI. IsDisabled: type: boolean description: | Indicates whether the product attribute value is disabled and should not be available for selection. IsPreselected: type: boolean description: | Indicates whether the product attribute value is selected by default. ProductionOffsetAdjustment: type: integer description: | The adjustment to the product's production time when this value is selected. PriceAdjustment: type: number description: | The price adjustment applied to the product's base price when this value is selected. format: decimal WeightAdjustment: type: number description: | The weight adjustment applied to the product when this value is selected. format: decimal WidthAdjustment: type: number description: | The adjustment applied to the product's width when this value is selected. format: decimal HeightAdjustment: type: number description: | The adjustment applied to the product's height when this value is selected. format: decimal LengthAdjustment: type: number description: | The adjustment applied to the product's length when this value is selected. format: decimal PriceAdjustmentType: allOf: - $ref: '#/components/schemas/InfigoProductAttributeValuePriceAdjustmentTypeEnum' description: | The type of price adjustment applied, indicating whether it's an absolute value or a percentage. Possible values: - `0` - Percent - Price adjustment as a percentage of the base price - `1` - Absolute - Price adjustment as an absolute fixed amount description: | Represents a request to set an attribute value for a product group, with optional MIS configurations. InfigoProductGroupAttributeRequest: type: object properties: ProductAttributeValues: type: array items: $ref: '#/components/schemas/InfigoProductGroupAttributeValueRequest' description: | A list of product attribute values to assign to product attribute. An empty list will delete the assigned attributes values. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true Id: type: integer description: | The ID of the product attribute you want to assign to the product. nullable: true Name: type: string description: | The name of the product attribute. Not mandatory if ID provided nullable: true ProductPageLabel: type: string description: | The label of the product attribute that will be displayed on the product page. Please use "Description" instead of ProductPageLabel(obsolete) to pass the value nullable: true IsRequired: type: boolean description: | Indicates whether the product attribute is required. DisplayOrder: type: integer description: | The display order of the product attribute in the UI. IsHidden: type: boolean description: | Indicates whether the product attribute is hidden from the UI. AttributeControlType: allOf: - $ref: '#/components/schemas/InfigoAttributeControlType' description: | The UI control type used to render this attribute on the product page (e.g., dropdown list, radio buttons, checkbox, text field). Possible values: - `1` - DropdownList - Dropdown list allowing single selection from predefined options - `2` - RadioList - Radio button list allowing single selection from predefined options - `3` - Checkboxes - Checkbox list allowing multiple selections from predefined options - `4` - TextBox - Single-line text input field for free-form text entry - `10` - MultilineTextbox - Multi-line text area for longer free-form text entry - `20` - Datepicker - Date picker control for selecting dates - `30` - FileUpload - File upload control for attaching files to the product - `40` - Info - Informational display only, not an input control - `50` - HtmlSchema - HTML schema attribute for structured data - `60` - System - System attribute used internally, not visible in the storefront - `70` - Number - Numeric input field for entering numbers - `999` - Hidden - Hidden attribute used internally by Catfish extension description: | Base request model for product attribute configuration. Contains common properties for assigning and configuring product attributes like size, color, or material options. InfigoCreateProductGroupRequest: type: object properties: AdminComment: type: string description: | Internal administrative notes for this product group. Not visible to customers. nullable: true Name: type: string description: | The name for the group. nullable: true AvailableStartDateTimeUtc: type: string description: | Indicated the start of the products availability. Provide value in UTC, as it will be converted in storefront timezone format: date-time nullable: true AvailableEndDateTimeUtc: type: string description: | Indicated the end of the products availability. Provide value in UTC, as it will be converted in storefront timezone format: date-time nullable: true DefaultBasketQuantity: type: integer description: | The default quantity pre-filled in the basket when adding products from this group. nullable: true MinimumBasketQuantity: type: integer description: | The minimum order quantity allowed for products in this group. nullable: true MaximumBasketQuantity: type: integer description: | The maximum order quantity allowed for products in this group. nullable: true OrderPackQuantity: type: integer description: | Indicates the quantity for packing depending on QuantitySelectorMode. nullable: true QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Indicates the unit for packing. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. Price: type: number description: | The price products in a group will inherit. format: decimal nullable: true HasQuantityBasedPricing: type: boolean description: | Indicated whether the products in the group will have quantity based pricing. nullable: true ShowOrderlineTotal: type: boolean description: | Indicated whether the products in the group will have show tier prices per orderline. TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiTierPrice' description: | A list of tier prices to provide when HasQuantityBasedPricing is enabled. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductGroupAttributeRequest' description: | A list of group attributes to assign to group. An empty list will delete the assigned attributes values. nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombinationRequest' description: | A list of group attributes combinations out of assigned attributes to the group. An empty list will delete the assigned attributes values. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Request model for creating a new product group. Inherits all configuration properties from BaseProductGroupRequest including name, pricing, attributes, and availability settings. InfigoUpdateProductGroupRequest: type: object properties: Id: type: integer description: | The unique identifier of the product group to update. Must match an existing product group in the system. AdminComment: type: string description: | Internal administrative notes for this product group. Not visible to customers. nullable: true Name: type: string description: | The name for the group. nullable: true AvailableStartDateTimeUtc: type: string description: | Indicated the start of the products availability. Provide value in UTC, as it will be converted in storefront timezone format: date-time nullable: true AvailableEndDateTimeUtc: type: string description: | Indicated the end of the products availability. Provide value in UTC, as it will be converted in storefront timezone format: date-time nullable: true DefaultBasketQuantity: type: integer description: | The default quantity pre-filled in the basket when adding products from this group. nullable: true MinimumBasketQuantity: type: integer description: | The minimum order quantity allowed for products in this group. nullable: true MaximumBasketQuantity: type: integer description: | The maximum order quantity allowed for products in this group. nullable: true OrderPackQuantity: type: integer description: | Indicates the quantity for packing depending on QuantitySelectorMode. nullable: true QuantitySelectorMode: allOf: - $ref: '#/components/schemas/InfigoApiQuantitySelectorMode' description: | Indicates the unit for packing. Possible values: - `0` - Units - Select quantity as individual units (1, 2, 3, etc.). - `1` - Packs - Select quantity as packs; each pack contains OrderPackQuantity units. Price: type: number description: | The price products in a group will inherit. format: decimal nullable: true HasQuantityBasedPricing: type: boolean description: | Indicated whether the products in the group will have quantity based pricing. nullable: true ShowOrderlineTotal: type: boolean description: | Indicated whether the products in the group will have show tier prices per orderline. TierPrices: type: array items: $ref: '#/components/schemas/InfigoApiTierPrice' description: | A list of tier prices to provide when HasQuantityBasedPricing is enabled. nullable: true ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductGroupAttributeRequest' description: | A list of group attributes to assign to group. An empty list will delete the assigned attributes values. nullable: true AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombinationRequest' description: | A list of group attributes combinations out of assigned attributes to the group. An empty list will delete the assigned attributes values. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | This will include the reference/link between this entity and an external system, with management handled by a MIS Plugin. nullable: true description: | Request model for updating an existing product group. Inherits all configuration properties from BaseProductGroupRequest and requires the Id of the group to update. InfigoCreateQuoteApiResponse: type: object properties: CatfishQuoteId: type: integer description: | The id of the created quote. Present only when a single quote was created (NumberOfClones not set or 0). nullable: true CatfishQuoteIds: description: | The ids of the created quote and its clones: a JSON array of integers, or a JSON-encoded array string on servers with Api:WriteExtraResponseFieldsAsJson off. Present only when clones were requested (NumberOfClones greater than 0). nullable: true Success: type: boolean description: | Indicates whether the operation completed successfully. When false, check ContextInfo.ErrorList for error details. Code: type: string description: | A response code identifying the result type (e.g., 'OK', 'CREATED', 'ERROR'). nullable: true ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the operation. nullable: true HelpUrl: type: string description: | URL to documentation or help resources for troubleshooting issues with this endpoint. nullable: true Message: type: string description: | A human-readable message describing the result of the operation. nullable: true description: | Response returned by Create quote: the standard API response wrapper plus the id(s) of the created quote(s). Exactly one of CatfishQuoteId or CatfishQuoteIds is present. Extra fields are omitted from XML responses. InfigoApiProductVariantKeyValue: type: object properties: Key: type: string description: | Attribute name nullable: true Value: type: string description: | Attribute value nullable: true description: | Represents a product variant attribute as a key-value pair InfigoQuoteMarkupType: enum: - 0 - 1 - 2 - 3 type: integer description: | Pricing adjustment method applied to quote calculations. Possible values: - `0` - None - No markup applied; base price is used directly. - `1` - Percentage - Markup calculated as a percentage of the base price. - `2` - Absolute - Markup is a fixed monetary amount added to the base price. - `3` - Fixed - Override price; replaces calculated price with a fixed value. x-enumNames: - None - Percentage - Absolute - Fixed x-enum-varnames: - None - Percentage - Absolute - Fixed x-enum-descriptions: - No markup applied; base price is used directly. - Markup calculated as a percentage of the base price. - Markup is a fixed monetary amount added to the base price. - Override price; replaces calculated price with a fixed value. x-ms-enum: name: QuoteMarkupType modelAsString: false values: - value: 0 name: None description: No markup applied; base price is used directly. - value: 1 name: Percentage description: Markup calculated as a percentage of the base price. - value: 2 name: Absolute description: Markup is a fixed monetary amount added to the base price. - value: 3 name: Fixed description: Override price; replaces calculated price with a fixed value. InfigoQuoteUsageType: enum: - 0 - 1 - 2 - 3 type: integer description: | Determines how many times a quote can be used for ordering Possible values: - `0` - Infinite - Quote can be used unlimited times with no restrictions. - `1` - OneTime - Quote can only be used once, then becomes unavailable. - `2` - NTimes - Quote can be used a specific number of times as configured. - `3` - Request - Quote is a request that requires approval before use. x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request x-enum-descriptions: - Quote can be used unlimited times with no restrictions. - 'Quote can only be used once, then becomes unavailable.' - Quote can be used a specific number of times as configured. - Quote is a request that requires approval before use. x-ms-enum: name: QuoteUsageType modelAsString: false values: - value: 0 name: Infinite description: Quote can be used unlimited times with no restrictions. - value: 1 name: OneTime description: 'Quote can only be used once, then becomes unavailable.' - value: 2 name: NTimes description: Quote can be used a specific number of times as configured. - value: 3 name: Request description: Quote is a request that requires approval before use. InfigoQuoteAttributeMetaData: type: object properties: Name: type: string description: | Attribute System name nullable: true Locked: type: boolean description: | This field indicates whether an attribute with the name `(Name)` is locked and cannot be changed. description: | Represents metadata for a specific attribute within a quote InfigoQuoteMetaData: type: object properties: Attributes: type: array items: $ref: '#/components/schemas/InfigoQuoteAttributeMetaData' description: | The collection of attribute metadata for this quote nullable: true LockQuantity: type: boolean description: | If this option is set to `true`, the quantity selector will be disabled. LockMarkup: type: boolean description: | If this option is set to `true`, the markup selector will be disabled. description: | Additional metadata for quote configuration. InfigoApiQuoteCreate: required: - Name - CatfishCustomerId type: object properties: NumberOfClones: type: integer description: | This field specifies how many clones of the same quote should be created. default: '0' nullable: true CreatedByCustomerId: type: string description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. nullable: true Id: type: integer description: | Quote ID. Ignored for create operations; required for updates. Name: maxLength: 2000 type: string description: | Display name for the quote. nullable: true example: SampleName CreatedOnUtc: type: string description: | UTC timestamp when the quote was created. format: date-time CustomReference: maxLength: 2000 type: string description: | Custom reference code for external system integration. nullable: true NopProductId: type: integer description: | Product ID this quote applies to. ProductVariantAttributes: type: array items: $ref: '#/components/schemas/InfigoApiProductVariantKeyValue' description: | Product attribute selections for this quote. For text attributes, any string value is valid. For dropdown attributes, use a valid attribute value name. nullable: true Quantity: type: integer description: | Order quantity. Must respect product minimum/maximum quantity and pack quantity constraints. Price: type: number description: | Fixed unit price override. When set, this price is used instead of calculated pricing. format: decimal nullable: true MarkupType: allOf: - $ref: '#/components/schemas/InfigoQuoteMarkupType' description: | Type of markup adjustment to apply to pricing. Possible values: - `0` - None - No markup applied; base price is used directly. - `1` - Percentage - Markup calculated as a percentage of the base price. - `2` - Absolute - Markup is a fixed monetary amount added to the base price. - `3` - Fixed - Override price; replaces calculated price with a fixed value. x-nullable: true MarkupAmount: type: number description: | Markup value. Interpretation depends on MarkupType: percentage, fixed amount, or absolute value. format: decimal nullable: true QuoteType: allOf: - $ref: '#/components/schemas/InfigoQuoteUsageType' description: | Controls how many times and by whom the quote can be used. Possible values: - `0` - Infinite - Quote can be used unlimited times with no restrictions. - `1` - OneTime - Quote can only be used once, then becomes unavailable. - `2` - NTimes - Quote can be used a specific number of times as configured. - `3` - Request - Quote is a request that requires approval before use. MaxUsageCount: type: integer description: | Maximum number of times quote can be used. Applicable when QuoteType is NTimes. nullable: true ParentQuoteId: type: integer description: | Parent quote ID for quote hierarchy/versioning. nullable: true InfoText: type: string description: | Additional information text displayed to users. nullable: true LifeSpanDays: type: integer description: | Quote validity period in days from creation date. nullable: true MetaData: allOf: - $ref: '#/components/schemas/InfigoQuoteMetaData' description: | Additional metadata for quote configuration. nullable: true CatfishCustomerId: type: string description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. nullable: true CustomTag: type: string description: | Custom tag for filtering and categorization. nullable: true description: | Base model for quote operations containing common pricing and configuration properties. InfigoQuoteStatus: enum: - 0 - 10 - 20 - 30 - 40 - 60 type: integer description: | Lifecycle status of a saved quote determining its availability for use. Possible values: - `0` - Active - Quote is active and available for ordering. - `10` - Inactive - Quote is temporarily inactive and cannot be used. - `20` - Completed - Quote has been fulfilled; all allowed uses have been consumed. - `30` - Expired - Quote has passed its validity period and is no longer usable. - `40` - Archived - Quote has been archived for historical reference but cannot be used. - `60` - Deleted - Quote has been deleted from the system. x-enumNames: - Active - Inactive - Completed - Expired - Archived - Deleted x-enum-varnames: - Active - Inactive - Completed - Expired - Archived - Deleted x-enum-descriptions: - Quote is active and available for ordering. - Quote is temporarily inactive and cannot be used. - Quote has been fulfilled; all allowed uses have been consumed. - Quote has passed its validity period and is no longer usable. - Quote has been archived for historical reference but cannot be used. - Quote has been deleted from the system. x-ms-enum: name: QuoteStatus modelAsString: false values: - value: 0 name: Active description: Quote is active and available for ordering. - value: 10 name: Inactive description: Quote is temporarily inactive and cannot be used. - value: 20 name: Completed description: Quote has been fulfilled; all allowed uses have been consumed. - value: 30 name: Expired description: Quote has passed its validity period and is no longer usable. - value: 40 name: Archived description: Quote has been archived for historical reference but cannot be used. - value: 60 name: Deleted description: Quote has been deleted from the system. InfigoApiQuoteEdit: required: - Name - CatfishCustomerId type: object properties: Status: allOf: - $ref: '#/components/schemas/InfigoQuoteStatus' description: | The updated status of the quote (e.g., Active, Expired). Possible values: - `0` - Active - Quote is active and available for ordering. - `10` - Inactive - Quote is temporarily inactive and cannot be used. - `20` - Completed - Quote has been fulfilled; all allowed uses have been consumed. - `30` - Expired - Quote has passed its validity period and is no longer usable. - `40` - Archived - Quote has been archived for historical reference but cannot be used. - `60` - Deleted - Quote has been deleted from the system. x-nullable: true CreatedByCustomerId: type: string description: | The unique identifier of the customer who created this quote. nullable: true Id: type: integer description: | Quote ID. Ignored for create operations; required for updates. Name: maxLength: 2000 type: string description: | Display name for the quote. nullable: true example: SampleName CreatedOnUtc: type: string description: | UTC timestamp when the quote was created. format: date-time CustomReference: maxLength: 2000 type: string description: | Custom reference code for external system integration. nullable: true NopProductId: type: integer description: | Product ID this quote applies to. ProductVariantAttributes: type: array items: $ref: '#/components/schemas/InfigoApiProductVariantKeyValue' description: | Product attribute selections for this quote. For text attributes, any string value is valid. For dropdown attributes, use a valid attribute value name. nullable: true Quantity: type: integer description: | Order quantity. Must respect product minimum/maximum quantity and pack quantity constraints. Price: type: number description: | Fixed unit price override. When set, this price is used instead of calculated pricing. format: decimal nullable: true MarkupType: allOf: - $ref: '#/components/schemas/InfigoQuoteMarkupType' description: | Type of markup adjustment to apply to pricing. Possible values: - `0` - None - No markup applied; base price is used directly. - `1` - Percentage - Markup calculated as a percentage of the base price. - `2` - Absolute - Markup is a fixed monetary amount added to the base price. - `3` - Fixed - Override price; replaces calculated price with a fixed value. x-nullable: true MarkupAmount: type: number description: | Markup value. Interpretation depends on MarkupType: percentage, fixed amount, or absolute value. format: decimal nullable: true QuoteType: allOf: - $ref: '#/components/schemas/InfigoQuoteUsageType' description: | Controls how many times and by whom the quote can be used. Possible values: - `0` - Infinite - Quote can be used unlimited times with no restrictions. - `1` - OneTime - Quote can only be used once, then becomes unavailable. - `2` - NTimes - Quote can be used a specific number of times as configured. - `3` - Request - Quote is a request that requires approval before use. MaxUsageCount: type: integer description: | Maximum number of times quote can be used. Applicable when QuoteType is NTimes. nullable: true ParentQuoteId: type: integer description: | Parent quote ID for quote hierarchy/versioning. nullable: true InfoText: type: string description: | Additional information text displayed to users. nullable: true LifeSpanDays: type: integer description: | Quote validity period in days from creation date. nullable: true MetaData: allOf: - $ref: '#/components/schemas/InfigoQuoteMetaData' description: | Additional metadata for quote configuration. nullable: true CatfishCustomerId: type: string description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. nullable: true CustomTag: type: string description: | Custom tag for filtering and categorization. nullable: true description: | Represents a request to edit an existing quote with updated properties. InfigoUsages: type: object properties: OrderId: type: string description: | The unique identifier of the order where this quote was used. nullable: true JobId: type: string description: | The unique identifier of the job associated with this quote usage. nullable: true description: | Represents a record of where a quote has been used, linking to orders and jobs. InfigoApiGetQuote: required: - Name - CatfishCustomerId type: object properties: CreatedByCustomerId: type: string description: | The unique identifier of the customer who created this quote, if different from the quote owner. nullable: true Usages: type: array items: $ref: '#/components/schemas/InfigoUsages' description: | A list of orders and jobs where this quote has been used. nullable: true MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS (Management Information System) configuration settings for this quote. nullable: true Status: allOf: - $ref: '#/components/schemas/InfigoQuoteStatus' description: | The current status of the quote (e.g., Active, Expired, Used). Possible values: - `0` - Active - Quote is active and available for ordering. - `10` - Inactive - Quote is temporarily inactive and cannot be used. - `20` - Completed - Quote has been fulfilled; all allowed uses have been consumed. - `30` - Expired - Quote has passed its validity period and is no longer usable. - `40` - Archived - Quote has been archived for historical reference but cannot be used. - `60` - Deleted - Quote has been deleted from the system. x-nullable: true Id: type: integer description: | Quote ID. Ignored for create operations; required for updates. Name: maxLength: 2000 type: string description: | Display name for the quote. nullable: true example: SampleName CreatedOnUtc: type: string description: | UTC timestamp when the quote was created. format: date-time CustomReference: maxLength: 2000 type: string description: | Custom reference code for external system integration. nullable: true NopProductId: type: integer description: | Product ID this quote applies to. ProductVariantAttributes: type: array items: $ref: '#/components/schemas/InfigoApiProductVariantKeyValue' description: | Product attribute selections for this quote. For text attributes, any string value is valid. For dropdown attributes, use a valid attribute value name. nullable: true Quantity: type: integer description: | Order quantity. Must respect product minimum/maximum quantity and pack quantity constraints. Price: type: number description: | Fixed unit price override. When set, this price is used instead of calculated pricing. format: decimal nullable: true MarkupType: allOf: - $ref: '#/components/schemas/InfigoQuoteMarkupType' description: | Type of markup adjustment to apply to pricing. Possible values: - `0` - None - No markup applied; base price is used directly. - `1` - Percentage - Markup calculated as a percentage of the base price. - `2` - Absolute - Markup is a fixed monetary amount added to the base price. - `3` - Fixed - Override price; replaces calculated price with a fixed value. x-nullable: true MarkupAmount: type: number description: | Markup value. Interpretation depends on MarkupType: percentage, fixed amount, or absolute value. format: decimal nullable: true QuoteType: allOf: - $ref: '#/components/schemas/InfigoQuoteUsageType' description: | Controls how many times and by whom the quote can be used. Possible values: - `0` - Infinite - Quote can be used unlimited times with no restrictions. - `1` - OneTime - Quote can only be used once, then becomes unavailable. - `2` - NTimes - Quote can be used a specific number of times as configured. - `3` - Request - Quote is a request that requires approval before use. MaxUsageCount: type: integer description: | Maximum number of times quote can be used. Applicable when QuoteType is NTimes. nullable: true ParentQuoteId: type: integer description: | Parent quote ID for quote hierarchy/versioning. nullable: true InfoText: type: string description: | Additional information text displayed to users. nullable: true LifeSpanDays: type: integer description: | Quote validity period in days from creation date. nullable: true MetaData: allOf: - $ref: '#/components/schemas/InfigoQuoteMetaData' description: | Additional metadata for quote configuration. nullable: true CatfishCustomerId: type: string description: | The customer identifier is a required parameter for this API, and it can be one of the following values: - `Id`: Use the customer's unique numeric identifier by including it in the **path**. - `Guid`: Use the customer's unique globally-unique identifier (GUID). Include it in the **query string**. - `Username`: Use the customer's username. Include it in the **query string**. - `Email`: Use the customer's email address. Include it in the **query string**. nullable: true CustomTag: type: string description: | Custom tag for filtering and categorization. nullable: true description: | Represents detailed quote information retrieved from the API, including usage history and status. InfigoQuoteIdsApiResponse: type: object properties: CatfishQuoteIds: description: | The ids of the customer's quotes: a JSON array of integers, or a JSON-encoded array string on servers with Api:WriteExtraResponseFieldsAsJson off. nullable: true Success: type: boolean description: | Indicates whether the operation completed successfully. When false, check ContextInfo.ErrorList for error details. Code: type: string description: | A response code identifying the result type (e.g., 'OK', 'CREATED', 'ERROR'). nullable: true ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the operation. nullable: true HelpUrl: type: string description: | URL to documentation or help resources for troubleshooting issues with this endpoint. nullable: true Message: type: string description: | A human-readable message describing the result of the operation. nullable: true description: | Response returned by List quote IDs by customer: the standard API response wrapper plus the customer's quote ids. Extra fields are omitted from XML responses. InfigoApiCustomerSsoResult: type: object properties: CreatedUser: type: boolean description: | Indicates whether a new customer account was created during this SSO request. When true, the customer did not exist previously and was automatically provisioned. When false, an existing customer account was matched and authenticated. Use this flag to trigger onboarding workflows for new users or customize the post-login experience. LoginUrl: type: string description: | The fully-qualified URL that will automatically authenticate the user when accessed. This URL contains the authentication token and handles the complete login flow. Redirect the user's browser to this URL to establish their authenticated session. The URL includes any return/error URLs specified in the original SSO request. nullable: true Token: allOf: - $ref: '#/components/schemas/InfigoApiCustomerToken' description: | Contains the authentication token details including the token value and cookie name. Use these values for manual session management or to set authentication cookies directly instead of using the LoginUrl redirect approach. nullable: true description: | Response model containing Single Sign-On (SSO) authentication results for a customer. Includes the login URL for automatic authentication, authentication token details, and a flag indicating whether a new user account was created during the SSO process. InfigoStorageFolder: type: object properties: Id: type: integer description: | The unique identifier of the storage folder. Type: type: integer description: | The type of storage folder indicating what content it holds (e.g., outputs, job tickets, uploads, templates). Values are defined by StorageFolderType enum. UNCPath: type: string description: | The Universal Naming Convention (UNC) path to the storage location. Example: '\\server\share\folder' for network paths or local paths like 'C:\Storage\Outputs'. nullable: true description: | Represents a storage folder configuration for file storage. Storage folders define locations where various types of files (outputs, job tickets, uploads, etc.) are stored. InfigoStorageFolderTypeString: enum: - Media - PDFTemplate - JobProcessing - HotFolder - Any - MultiPart - StorefrontSpecificStorage - UploadLocation - MegaEditCategory - MegaEditProduct - ExportLocation - Conflicts - MisTempData - AuditLogs - Temp - AdditionalData - Variables - Pictures - TroubleshootingRecording type: string description: | Possible values: - `Media` - `PDFTemplate` - `JobProcessing` - `HotFolder` - `Any` - `MultiPart` - `StorefrontSpecificStorage` - `UploadLocation` - `MegaEditCategory` - `MegaEditProduct` - `ExportLocation` - `Conflicts` - `MisTempData` - `AuditLogs` - `Temp` - `AdditionalData` - `Variables` - `Pictures` - `TroubleshootingRecording` x-enumNames: - Media - PDFTemplate - JobProcessing - HotFolder - Any - MultiPart - StorefrontSpecificStorage - UploadLocation - MegaEditCategory - MegaEditProduct - ExportLocation - Conflicts - MisTempData - AuditLogs - Temp - AdditionalData - Variables - Pictures - TroubleshootingRecording x-enum-varnames: - Media - PDFTemplate - JobProcessing - HotFolder - Any - MultiPart - StorefrontSpecificStorage - UploadLocation - MegaEditCategory - MegaEditProduct - ExportLocation - Conflicts - MisTempData - AuditLogs - Temp - AdditionalData - Variables - Pictures - TroubleshootingRecording x-enum-descriptions: - Media - PDFTemplate - JobProcessing - HotFolder - Any - MultiPart - StorefrontSpecificStorage - UploadLocation - MegaEditCategory - MegaEditProduct - ExportLocation - Conflicts - MisTempData - AuditLogs - Temp - AdditionalData - Variables - Pictures - TroubleshootingRecording x-ms-enum: name: StorageFolderType modelAsString: false values: - value: Media name: Media - value: PDFTemplate name: PDFTemplate - value: JobProcessing name: JobProcessing - value: HotFolder name: HotFolder - value: Any name: Any - value: MultiPart name: MultiPart - value: StorefrontSpecificStorage name: StorefrontSpecificStorage - value: UploadLocation name: UploadLocation - value: MegaEditCategory name: MegaEditCategory - value: MegaEditProduct name: MegaEditProduct - value: ExportLocation name: ExportLocation - value: Conflicts name: Conflicts - value: MisTempData name: MisTempData - value: AuditLogs name: AuditLogs - value: Temp name: Temp - value: AdditionalData name: AdditionalData - value: Variables name: Variables - value: Pictures name: Pictures - value: TroubleshootingRecording name: TroubleshootingRecording InfigoAccountAliasSslMode: enum: - 0 - 1 - 2 type: integer description: | SSL provisioning mode for a storefront binding. Possible values: - `0` - Unknown - SSL provisioning mode not specified. - `1` - ByInfigo - Infigo auto-provisions and renews the SSL certificate. - `2` - ByCustomer - Customer manages the SSL certificate. x-enumNames: - Unknown - ByInfigo - ByCustomer x-enum-varnames: - Unknown - ByInfigo - ByCustomer x-enum-descriptions: - SSL provisioning mode not specified. - Infigo auto-provisions and renews the SSL certificate. - Customer manages the SSL certificate. x-ms-enum: name: AccountAliasSslMode modelAsString: false values: - value: 0 name: Unknown description: SSL provisioning mode not specified. - value: 1 name: ByInfigo description: Infigo auto-provisions and renews the SSL certificate. - value: 2 name: ByCustomer description: Customer manages the SSL certificate. InfigoAccountAliasType: enum: - 0 - 1 type: integer description: | Type of storefront binding: an alias hostname or a fully-qualified domain. Possible values: - `0` - Alias - Alias binding (alternate hostname for the storefront). - `1` - Domain - Domain binding (fully-qualified domain mapped to the storefront). x-enumNames: - Alias - Domain x-enum-varnames: - Alias - Domain x-enum-descriptions: - Alias binding (alternate hostname for the storefront). - Domain binding (fully-qualified domain mapped to the storefront). x-ms-enum: name: AccountAliasType modelAsString: false values: - value: 0 name: Alias description: Alias binding (alternate hostname for the storefront). - value: 1 name: Domain description: Domain binding (fully-qualified domain mapped to the storefront). InfigoStorefrontAliasModel: type: object properties: Id: type: integer description: | Unique identifier of the storefront binding. Url: type: string description: | Hostname or URL of the binding. nullable: true SslModeId: allOf: - $ref: '#/components/schemas/InfigoAccountAliasSslMode' description: | Numeric SSL provisioning mode of the binding (see AccountAliasSslMode). Possible values: - `0` - Unknown - SSL provisioning mode not specified. - `1` - ByInfigo - Infigo auto-provisions and renews the SSL certificate. - `2` - ByCustomer - Customer manages the SSL certificate. SslMode: type: string description: | Human-readable SSL provisioning mode name. nullable: true BindingTypeId: allOf: - $ref: '#/components/schemas/InfigoAccountAliasType' description: | Numeric binding type of the binding (see AccountAliasType). Possible values: - `0` - Alias - Alias binding (alternate hostname for the storefront). - `1` - Domain - Domain binding (fully-qualified domain mapped to the storefront). BindingType: type: string description: | Human-readable binding type name. nullable: true description: | Storefront binding (alias or domain) with its SSL provisioning details. InfigoStatus: enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 type: integer description: | Enumeration of storefront operational states defining the lifecycle and availability of a storefront. Possible values: - `1` - Active - Storefront is fully operational and accepting traffic. - `2` - Inactive - Storefront is temporarily inactive but not deleted. - `3` - Disabled - Storefront has been administratively disabled. - `4` - Deleted - Storefront has been soft-deleted and is no longer accessible. - `5` - Test - Storefront is in test mode, typically for staging/QA purposes. - `6` - InitializationPending - Storefront creation is pending initialization. - `7` - Initializing - Storefront is currently being initialized with default data. - `8` - InitializationFailed - Storefront initialization failed and requires attention. x-enumNames: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-enum-varnames: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-enum-descriptions: - Storefront is fully operational and accepting traffic. - Storefront is temporarily inactive but not deleted. - Storefront has been administratively disabled. - Storefront has been soft-deleted and is no longer accessible. - 'Storefront is in test mode, typically for staging/QA purposes.' - Storefront creation is pending initialization. - Storefront is currently being initialized with default data. - Storefront initialization failed and requires attention. x-ms-enum: name: Status modelAsString: false values: - value: 1 name: Active description: Storefront is fully operational and accepting traffic. - value: 2 name: Inactive description: Storefront is temporarily inactive but not deleted. - value: 3 name: Disabled description: Storefront has been administratively disabled. - value: 4 name: Deleted description: Storefront has been soft-deleted and is no longer accessible. - value: 5 name: Test description: 'Storefront is in test mode, typically for staging/QA purposes.' - value: 6 name: InitializationPending description: Storefront creation is pending initialization. - value: 7 name: Initializing description: Storefront is currently being initialized with default data. - value: 8 name: InitializationFailed description: Storefront initialization failed and requires attention. InfigoGetStorefrontAdminModel: type: object properties: ApiAuthTokens: type: array items: type: string description: '' nullable: true description: | List of API authentication tokens associated with this storefront for programmatic access. nullable: true AliasDetails: type: array items: $ref: '#/components/schemas/InfigoStorefrontAliasModel' description: | Detailed list of storefront bindings (aliases and domains); populated by both the list and single-storefront endpoints. nullable: true Id: type: integer description: | The unique identifier of the storefront. Name: type: string description: | The display name of the storefront. nullable: true StatusId: allOf: - $ref: '#/components/schemas/InfigoStatus' description: | The numeric status code indicating the storefront's current operational state. Possible values: - `1` - Active - Storefront is fully operational and accepting traffic. - `2` - Inactive - Storefront is temporarily inactive but not deleted. - `3` - Disabled - Storefront has been administratively disabled. - `4` - Deleted - Storefront has been soft-deleted and is no longer accessible. - `5` - Test - Storefront is in test mode, typically for staging/QA purposes. - `6` - InitializationPending - Storefront creation is pending initialization. - `7` - Initializing - Storefront is currently being initialized with default data. - `8` - InitializationFailed - Storefront initialization failed and requires attention. StatusString: type: string description: | Human-readable status string derived from StatusId (e.g., 'Active', 'Inactive', 'Initializing'). nullable: true Aliases: type: array items: type: string description: '' nullable: true description: | List of URL aliases (domain names) that route to this storefront. nullable: true description: | Extended storefront model for administrative access, including API authentication tokens. InfigoCreateStorefrontModelResult: type: object properties: Id: type: integer description: | The unique identifier assigned to the newly created storefront. Use this ID for subsequent API calls to manage the storefront. Name: type: string description: | The confirmed name of the created storefront. nullable: true description: | Response model returned after successfully creating a new storefront. Contains the assigned ID and confirmed name for the new storefront. InfigoBundlesModel: required: - Name type: object properties: Name: type: string description: | The unique name identifier of the bundle to apply. Common bundles include integration modules, workflow configurations, and feature sets. nullable: true Options: description: | Basic configuration options for the bundle. The structure varies by bundle type. Consult bundle-specific documentation for available options. nullable: true AdvancedOptions: description: | Advanced configuration options for the bundle. If not specified, default advanced settings will be applied based on the bundle type. The structure varies by bundle type. nullable: true description: | Configuration model for a storefront feature bundle. Bundles define specific functionality and settings that can be applied to a storefront during creation or update. InfigoCreateStorefrontModel: required: - DefaultAlias - Name type: object properties: DefaultAlias: type: string description: | The primary URL alias (domain or subdomain) for accessing the storefront. This will be the main entry point for customers. Example: 'shop.example.com'. Additional aliases can be specified in the Aliases property. nullable: true Bundles: type: array items: $ref: '#/components/schemas/InfigoBundlesModel' description: | List of feature bundles to apply to the storefront. Bundles configure specific functionality like payment integrations, editor features, or workflow configurations. If not specified, default bundle configurations will be applied. nullable: true Name: type: string description: | The unique name for the storefront. This name is used for identification in the admin interface and may appear in URLs. Must be unique across all storefronts. nullable: true Description: type: string description: | A detailed description of the storefront's purpose, target audience, or business context. This is for administrative reference and is not typically displayed to customers. nullable: true Aliases: type: array items: type: string description: '' nullable: true description: | A list of URL aliases (domain names or subdomains) that will route to this storefront. Aliases allow the storefront to be accessed via multiple URLs. Example: ['shop.example.com', 'store.example.com'] nullable: true description: | Request model for creating a new storefront. Includes all required configuration such as name, aliases, and bundles that define the storefront's feature set. InfigoUpdateStorefrontModelStatus: enum: - 1 - 2 - 3 type: integer description: | Valid status values that can be set when updating a storefront. Only certain status transitions are permitted. Possible values: - `1` - Active - Set the storefront to fully operational, accepting customer traffic. - `2` - Inactive - Set the storefront to inactive, preventing customer access but preserving configuration. - `3` - Test - Set the storefront to test mode for QA/staging purposes. x-enumNames: - Active - Inactive - Test x-enum-varnames: - Active - Inactive - Test x-enum-descriptions: - 'Set the storefront to fully operational, accepting customer traffic.' - 'Set the storefront to inactive, preventing customer access but preserving configuration.' - Set the storefront to test mode for QA/staging purposes. x-ms-enum: name: Status modelAsString: false values: - value: 1 name: Active description: 'Set the storefront to fully operational, accepting customer traffic.' - value: 2 name: Inactive description: 'Set the storefront to inactive, preventing customer access but preserving configuration.' - value: 3 name: Test description: Set the storefront to test mode for QA/staging purposes. InfigoUpdateStorefrontModel: required: - Name type: object properties: StatusId: allOf: - $ref: '#/components/schemas/InfigoUpdateStorefrontModelStatus' description: | The new status for the storefront. Only certain status transitions are allowed. The storefront must be in Active status to be updated to Inactive or Test. Possible values: - `1` - Active - Set the storefront to fully operational, accepting customer traffic. - `2` - Inactive - Set the storefront to inactive, preventing customer access but preserving configuration. - `3` - Test - Set the storefront to test mode for QA/staging purposes. x-nullable: true Name: type: string description: | The unique name for the storefront. This name is used for identification in the admin interface and may appear in URLs. Must be unique across all storefronts. nullable: true Description: type: string description: | A detailed description of the storefront's purpose, target audience, or business context. This is for administrative reference and is not typically displayed to customers. nullable: true Aliases: type: array items: type: string description: '' nullable: true description: | A list of URL aliases (domain names or subdomains) that will route to this storefront. Aliases allow the storefront to be accessed via multiple URLs. Example: ['shop.example.com', 'store.example.com'] nullable: true description: | Request model for updating an existing storefront. All properties are optional - only specify the properties you want to change. InfigoApiAuthenticationTokenModelResult: type: object properties: ApiKey: type: string description: | The generated API key/token string. Store this securely as it cannot be retrieved again. Use this token in the Authorization header for API requests: 'Authorization: Bearer {ApiKey}' nullable: true description: | Response model containing a newly generated API authentication token. The token can be used to authenticate subsequent API requests for the storefront. InfigoGetStorefrontModel: type: object properties: Id: type: integer description: | The unique identifier of the storefront. Name: type: string description: | The display name of the storefront. nullable: true StatusId: allOf: - $ref: '#/components/schemas/InfigoStatus' description: | The numeric status code indicating the storefront's current operational state. Possible values: - `1` - Active - Storefront is fully operational and accepting traffic. - `2` - Inactive - Storefront is temporarily inactive but not deleted. - `3` - Disabled - Storefront has been administratively disabled. - `4` - Deleted - Storefront has been soft-deleted and is no longer accessible. - `5` - Test - Storefront is in test mode, typically for staging/QA purposes. - `6` - InitializationPending - Storefront creation is pending initialization. - `7` - Initializing - Storefront is currently being initialized with default data. - `8` - InitializationFailed - Storefront initialization failed and requires attention. StatusString: type: string description: | Human-readable status string derived from StatusId (e.g., 'Active', 'Inactive', 'Initializing'). nullable: true Aliases: type: array items: type: string description: '' nullable: true description: | List of URL aliases (domain names) that route to this storefront. nullable: true description: | Response model containing storefront details for the current API token context. Returns basic storefront information including identification, status, and URL aliases. InfigoStorefrontSetupModel: type: object properties: PackagingSlipFileNamePattern: type: string description: | The file name pattern template for packaging slip PDF generation. Supports placeholders like {OrderId}, {OrderDate}, {CustomerName} for dynamic naming. Example: 'PackingSlip_{OrderId}_{OrderDate:yyyyMMdd}.pdf' nullable: true InvoiceFileNamePattern: type: string description: | The file name pattern template for invoice PDF generation. Supports placeholders for dynamic naming based on order and customer data. Example: 'Invoice_{OrderId}_{CustomerName}.pdf' nullable: true JobTicketFileNamePattern: type: string description: | The file name pattern template for job ticket PDF generation. Job tickets contain production instructions for fulfillment. Example: 'JobTicket_{OrderLineItemId}_{ProductName}.pdf' nullable: true description: | Response model containing storefront document generation settings. Defines the file naming patterns used when generating order-related documents. InfigoApiResultInfo: type: object properties: CustomerGuid: type: string description: | The unique GUID identifying the customer who owns this job. Used for customer-specific job retrieval and permissions. format: uuid JobId: type: string description: | The unique job identifier assigned to this editor session. Can be used to retrieve, edit, or reference this specific job. nullable: true EditLink: type: string description: | The URL to access the editor interface for this job. Customer can use this link to continue editing the product. nullable: true ThumbnailLink: type: string description: | The URL to the generated thumbnail image for this job. Preview image showing the current state of the designed product. nullable: true Details: allOf: - $ref: '#/components/schemas/InfigoApiJobDetails' description: | Detailed information about the job including product ID, SKU, selected attributes, and variable values. nullable: true ActionId: type: string description: | Optional action identifier tracking this specific operation. Used for internal workflow and audit purposes. format: uuid nullable: true description: | Detailed result information including customer GUID, job ID, edit link, thumbnail link, and job details. InfigoApiThumbnailResponse: type: object properties: ContextInfo: allOf: - $ref: '#/components/schemas/InfigoContextInfo' description: | Context information containing any errors, warnings, or messages from the thumbnail generation operation. nullable: true ApiResult: allOf: - $ref: '#/components/schemas/InfigoApiResultInfo' description: | Detailed result information including customer GUID, job ID, edit link, thumbnail link, and job details. nullable: true Success: type: boolean description: '' description: | Response model returned after requesting a thumbnail generation. Contains success status, context information with errors if any, and the result details including thumbnail and edit links. InfigoApiThumbnailRequest: type: object properties: Customer: type: string description: | Optional Customer identifier. Either customer id, guid, or email/username. A new user will be created if nothing provided nullable: true Product: type: string description: | Product Identifier (SKU or Infigo Product Id or BaseJobId). In case the BaseJobId provided, we will use the product that relates to the job. nullable: true ProductAttributes: type: object additionalProperties: type: string description: '' nullable: true description: | Product Attributes (list of name/value pairs). nullable: true VariableItems: type: array items: $ref: '#/components/schemas/InfigoItem' description: | Variable list (list of variable set name/variable item name/value). nullable: true NotificationUrl: type: string description: | Optional postback URL when the thumbnail is ready. nullable: true description: | Request model for generating product thumbnails through the MegaEdit API. Inherits customer, product, attributes, and variable configuration from BaseMegaEditRequest. InfigoCSVUploadType: enum: - 0 - 1 type: integer description: | How the uploaded CSV file is used. Possible values: - `0` - UsedInEditor - The CSV is stored as the customer's data source for the editor. - `1` - BatchUpload - The CSV is processed as a batch upload for the customer. x-enumNames: - UsedInEditor - BatchUpload x-enum-varnames: - UsedInEditor - BatchUpload x-enum-descriptions: - The CSV is stored as the customer's data source for the editor. - The CSV is processed as a batch upload for the customer. x-ms-enum: name: CSVUploadType modelAsString: false values: - value: 0 name: UsedInEditor description: The CSV is stored as the customer's data source for the editor. - value: 1 name: BatchUpload description: The CSV is processed as a batch upload for the customer. InfigoUploadLocation: type: object properties: Id: type: integer description: | The unique identifier of the upload location. Name: type: string description: | The display name of the upload location for identification in admin interfaces and API responses. nullable: true Description: type: string description: | A detailed description of the upload location's purpose, accepted file types, or processing rules. nullable: true Enabled: type: boolean description: | Indicates whether the upload location is currently accepting file uploads. When false, upload attempts to this location will be rejected. MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS configuration mappings for integrating uploaded files with external MIS systems. nullable: true description: | Represents an upload location configuration where files can be uploaded via the API. Upload locations provide controlled entry points for file submissions with associated metadata and MIS integration. securitySchemes: Authorization: type: apiKey description: | # Authentication and Security ## Overview To ensure secure access to Infigo's API endpoints, an API Token is required for authentication. This document covers authentication, security best practices, and rate limiting guidelines. --- ## API Token Authentication ### Requesting an API Token 1. **Create a Support Ticket** - Visit our Support Desk: https://infigosoftware.zendesk.com/hc/en-us/requests/new - Request a new API Token for your designated storefront 2. **Receive Your Token** - Our support team will generate and provide your unique API Token - Store this token securely - treat it like a password ### Using the API Token Our API uses **Basic Authentication** for secure access. The API Token serves as the username in the Basic Auth scheme. #### Configuration - **Authentication Type**: Basic Auth - **Username**: Your API Token - **Password**: Leave empty #### Example Authorization Header ``` Authorization: Basic YTFiYTAwMjEtMTRiZi00YWNmLThkYTQtNzVmYTVjMDllMjdi ``` #### Using Postman 1. Download and install [Postman](https://infigosoftware.zendesk.com/hc/en-us/articles/360048785512) 2. Navigate to the **Authorization** tab 3. Select **Basic Auth** as the type 4. Paste your API Token into the **Username** field 5. Leave the **Password** field empty --- ## Rate Limiting ### Overview To ensure fair usage and maintain service quality for all users, our API implements rate limiting. This prevents individual clients from consuming excessive resources and helps maintain optimal performance. ### Rate Limit Information Rate limits are enforced **per API Token** using a 10-second rolling window and are typically set to: - **Default**: 50 requests per 10-second window - Custom limits may be configured based on your subscription or agreement ### HTTP Headers Every API response includes the following rate limit headers: | Header | Description | |--------|-------------| | `X-RateLimit-Limit` | Maximum number of requests allowed per 10-second window | | `X-RateLimit-Remaining` | Number of requests remaining in the current window | | `X-RateLimit-Reset` | UTC timestamp when the rate limit window resets | | `Retry-After` | Number of seconds to wait before retrying (only on 429 responses) | #### Example Response Headers ``` X-RateLimit-Limit: 50 X-RateLimit-Remaining: 23 X-RateLimit-Reset: 2025-11-16T14:32:10Z ``` ### Handling Rate Limit Exceeded (HTTP 429) When you exceed your rate limit, the API will return: - **HTTP Status**: `429 Too Many Requests` - **Response Body**: `Rate limit exceeded. Please try again later.` - **Retry-After Header**: Indicates how many seconds to wait #### Example 429 Response ``` HTTP/1.1 429 Too Many Requests Content-Type: text/plain X-RateLimit-Limit: 50 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 2025-11-16T14:32:10Z Retry-After: 8 Rate limit exceeded. Please try again later. ``` ### Best Practices for Rate Limiting #### 1. Monitor Rate Limit Headers Always check the `X-RateLimit-Remaining` header in your responses to track how many requests you have left. ```csharp // Example: Check remaining requests var remaining = response.Headers.GetValues("X-RateLimit-Remaining").FirstOrDefault(); if (int.Parse(remaining) < 10) { // Approaching limit - slow down requests } ``` #### 2. Implement Exponential Backoff When you receive a 429 response, implement exponential backoff retry logic: ```csharp int retryCount = 0; int maxRetries = 3; int baseDelay = 1000; // 1 second while (retryCount < maxRetries) { var response = await SendRequest(); if (response.StatusCode == 429) { var retryAfter = response.Headers.GetValues("Retry-After").FirstOrDefault(); var delay = int.Parse(retryAfter) * 1000; // Convert to milliseconds // Use exponential backoff if Retry-After not available if (delay == 0) { delay = baseDelay * (int)Math.Pow(2, retryCount); } await Task.Delay(delay); retryCount++; continue; } return response; // Success } ``` #### 3. Cache Responses When Possible Reduce API calls by caching responses that don't change frequently: - Product catalogs - Category listings - Configuration data #### 4. Batch Requests Instead of making multiple individual requests, use batch endpoints when available: - Use bulk operations for creating or updating multiple resources - Combine related data requests where the API supports it #### 5. Implement Request Queuing For high-volume applications, implement a request queue to control the rate of outgoing requests: ```csharp // Example: Simple rate limiter using SemaphoreSlim private static SemaphoreSlim rateLimiter = new SemaphoreSlim(10, 10); // 10 concurrent requests private static Timer resetTimer; public async Task MakeRateLimitedRequest(string url) { await rateLimiter.WaitAsync(); try { return await httpClient.GetAsync(url); } finally { // Release semaphore after a delay to maintain rate _ = Task.Delay(200).ContinueWith(_ => rateLimiter.Release()); // 50 requests/10 seconds = 200ms between requests } } ``` #### 6. Spread Requests Over Time Avoid burst traffic patterns: - **Don't**: Send 50 requests at the start of each 10-second window - **Do**: Distribute requests evenly throughout the 10-second window (approximately 1 request every 200ms) #### 7. Handle 429 Responses Gracefully Never ignore 429 responses. Always: 1. Log the rate limit event 2. Respect the `Retry-After` header 3. Notify relevant parties if consistently hitting limits 4. Consider requesting a higher rate limit if needed ### Requesting Higher Rate Limits If your application consistently requires more than the default rate limit: 1. **Contact Support** - Create a ticket at https://infigosoftware.zendesk.com/hc/en-us/requests/new - Provide details about your use case and expected request volume 2. **Provide Justification** - Explain why higher limits are needed - Describe the business value and use case - Demonstrate that you've implemented rate limiting best practices 3. **Review and Approval** - Our team will review your request - Higher limits may require a specific agreement or subscription tier --- ## Security Best Practices ### 1. Protect Your API Token - **Never** commit API tokens to version control - Store tokens in environment variables or secure configuration systems - Use secrets management tools (Azure Key Vault, AWS Secrets Manager, etc.) - Rotate tokens periodically ### 2. Use HTTPS Only - **Always** use HTTPS endpoints - Never send API tokens over unencrypted HTTP connections ### 3. Implement Proper Error Handling - Don't expose API tokens in error messages or logs - Log authentication failures for security monitoring - Implement proper exception handling for network errors ### 4. Monitor API Usage - Track API response times and error rates - Set up alerts for unusual patterns or excessive 429 responses - Review logs regularly for security anomalies ### 5. Validate Responses - Always validate API responses before processing - Check HTTP status codes - Verify response content types and structure --- ## Troubleshooting ### Common Issues | Issue | Cause | Solution | |-------|-------|----------| | 401 Unauthorized | Invalid or missing API token | Verify token is correct and included in Authorization header | | 403 Forbidden | Token doesn't have required permissions | Contact support to verify token permissions | | 429 Too Many Requests | Rate limit exceeded | Implement backoff strategy, reduce request frequency | | 500 Internal Server Error | Server-side issue | Retry with exponential backoff, contact support if persistent | ### Getting Help If you encounter issues with authentication or rate limiting: 1. **Check Documentation**: Review this guide and API documentation 2. **Review Headers**: Examine request/response headers for diagnostic information 3. **Contact Support**: Create a ticket at https://infigosoftware.zendesk.com/hc/en-us/requests/new Include in your support ticket: - API Token (first/last 4 characters only) - Timestamp of the issue - Request details (endpoint, method, headers) - Response status code and headers - Any error messages received --- ## Additional Resources - API Documentation: [Link to main API docs] - Postman Guide: https://infigosoftware.zendesk.com/hc/en-us/articles/360048785512 - Support Desk: https://infigosoftware.zendesk.com/hc/en-us/requests/new --- *Last Updated: November 2025* name: Authorization in: header security: - Authorization: [ ] tags: - name: Account description: '' - name: Action description: '' - name: AddressBook description: '' - name: Address description: '' - name: Auth description: '' - name: Batch description: '' - name: Budget description: '' - name: Capability description: '' - name: Catalog description: '' - name: CatalogV2 description: '' - name: Customer description: '' - name: CustomerV2 description: '' - name: Download description: '' - name: Editor description: '' - name: EditorV2 description: '' - name: HotFolder description: '' - name: InfigoOrderProduct description: '' - name: Job description: '' - name: MisExternalRef description: '' - name: Order description: '' - name: OrderlineItem description: '' - name: PrintLocation description: '' - name: ProductGroup description: '' - name: Quote description: '' - name: SSOCookie description: '' - name: SSOUrl description: '' - name: StorageFolder description: '' - name: Storefront description: '' - name: Thumbnail description: '' - name: UploadCSV description: '' - name: UploadLocation description: '' externalDocs: description: Infigo Academy url: https://www.youtube.com/@InfigoAcademy