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: '15696' 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/{id}': 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: Retrieve 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**' parameters: - name: id in: path 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: 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: 'This situation occurs when registration is prohibited in the system, and the attempt to find an existing customer fails.' content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' deprecated: true /ActionController/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 status of thumbnail description: Gets the status of a thumbnail generation action. The actionId parameter is required to identify the specific action. 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' application/xml: schema: $ref: '#/components/schemas/InfigoImmediateActionRecordDisplayModel' '404': description: Action with provided it not found content: application/json: schema: $ref: '#/components/schemas/InfigoApiNotFoundError' application/xml: schema: $ref: '#/components/schemas/InfigoApiNotFoundError' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /addressbook: description: This operation returns a list of all address books available within the system. get: tags: - AddressBook summary: Get address books description: This operation returns a list of all address books available within the system. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /addressbook/paginated: description: This operation returns a list of all address books paginated available within the system. get: tags: - AddressBook summary: Get address books paginated description: This operation returns a list of all address books paginated available within the system. parameters: - name: PageIndex in: query description: | Zero-based page index for pagination. Default is 0 (first page). required: true 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. required: true schema: type: integer description: | Number of items to return per page. Default returns all items. - 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 - name: OrderBy in: query description: | Field to order results by (e.g., Name, CreatedDate, ModifiedDate). Possible values: `0` - Id `1` - Name required: true schema: enum: - 0 - 1 type: string description: |+ Field to order results by (e.g., Name, CreatedDate, ModifiedDate). Possible values: `0` - Id `1` - Name x-enum-descriptions: - Id - Name x-ms-enum: - Id - Name x-enumNames: - Id - Name x-enum-varnames: - Id - Name - name: SortDirection in: query description: | Sort direction for the results - ascending or descending. Possible values: `0` - Asc `1` - Desc required: true schema: enum: - 0 - 1 type: string description: |+ Sort direction for the results - ascending or descending. Possible values: `0` - Asc `1` - Desc x-enum-descriptions: - Asc - Desc x-ms-enum: - Asc - Desc x-enumNames: - Asc - Desc x-enum-varnames: - Asc - Desc 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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. 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 '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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. 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 content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '500': description: Internal server error '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. 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 content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '404': description: Address book with provided identifier was not found '500': description: Internal server error '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. 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' '400': description: Validation for provided details failed '404': description: Address book with provided identifier was not found '500': description: Internal server error '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.' 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 content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '500': description: Internal server error '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: Get 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.' parameters: - name: customerId in: query description: | Customer ID to retrieve addresses for. required: true schema: type: integer description: '' - name: id in: path description: | Customer identifier. required: true 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/address/getbyid/{id}': description: This operation retrieves detailed information about an address with the provided address identifier. get: tags: - Address summary: Get an address description: This operation retrieves detailed information about an address with the provided address identifier. 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 '404': description: Address with provided identifier was not found '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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. 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 '400': description: Validation for provided details failed '404': description: Address with provided identifier was not found '500': description: Internal server error '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. 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 '400': description: Validation for provided details failed '404': description: Address with provided identifier was not found '500': description: Internal server error '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.' 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 '400': description: Validation for provided details failed '500': description: Internal server error '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/{id}': description: This operation retrieves the authentication record associated with a specific API Key get: tags: - Auth summary: Retrieve authentication record description: This operation retrieves the authentication record associated with a specific API Key parameters: - name: id in: path 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 '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/batch/get/{id}': description: Get job details with pagination and filtering. Use 'status' to filter items by status. Use 'pageIndex' (0-based) and 'perPage' to paginate. Use 'includePayload' to include item payloads. get: tags: - Batch summary: Get Job description: Get job details with pagination and filtering. Use 'status' to filter items by status. Use 'pageIndex' (0-based) and 'perPage' to paginate. Use 'includePayload' to include item payloads. parameters: - name: Id in: query description: | Should be in GUID format schema: type: string description: | Should be in GUID format nullable: true - name: Status in: query description: | Filter by item status (Pending, Failed, Finished). Omit for all items. Possible values: `5` - Pending `10` - Failed `15` - Finished schema: enum: - 5 - 10 - 15 type: string description: |+ Filter by item status (Pending, Failed, Finished). Omit for all items. Possible values: `5` - Pending `10` - Failed `15` - Finished nullable: true x-enum-descriptions: - Pending - Failed - Finished x-ms-enum: - Pending - Failed - Finished x-enumNames: - Pending - Failed - Finished x-enum-varnames: - Pending - Failed - Finished - name: IncludePayload in: query description: | Include item payloads in response required: true schema: type: boolean description: | Include item payloads in response - name: PageIndex in: query description: '' required: true schema: type: integer description: '' - name: PerPage in: query description: '' required: true schema: type: integer description: '' responses: '200': description: Batch job details including all job items and their statuses. content: application/json: schema: $ref: '#/components/schemas/InfigoBatchJobItemsInfoModel' application/xml: schema: $ref: '#/components/schemas/InfigoBatchJobItemsInfoModel' '404': description: Batch job with the specified GUID not found. content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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 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.' requestBody: description: Parameter 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 application/json: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /capability/checkstatus: description: 'Check capability status. Depending on the category, a specific context needs to be passed.' post: tags: - Capability summary: Status description: 'Check capability status. Depending on the category, a specific context needs to be passed.' 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 '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: Category List description: This operation returns a list of all root category identifiers available within the system. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' post: tags: - Catalog summary: Create a new 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.' requestBody: description: Parameter 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 application/json: 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: Product list description: Returns a list of all product identifier in a category or available in whole the system 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/catalog/product/{id}': description: Get detailed information for a product within the system get: tags: - Catalog summary: Product details description: Get detailed information for a product within the system 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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 a product description: Deleting a product from the system will not affect any orders that were placed with this product. 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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 a 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.' requestBody: description: Parameter 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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 a 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.' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateProductRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateProductRequest' responses: '200': description: A success flag will be returned to indicate whether the product was updated successfully. content: text/plain: schema: type: boolean description: '' application/json: schema: type: boolean 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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 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 '415': description: File is not a valid PDF '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' requestBody: description: Parameter 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. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultModel' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultModel' '400': description: Validation failed - the result will contain error details in the ContextInfo.ErrorList. content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultModel' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateStockQuantityResultModel' '500': description: Server error occurred during stock update - error details will be in the response. 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 '/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 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 successfully uploaded. '400': description: The file is not recognized as an image '406': description: The file is not recognized as an image '404': description: No product with the provided ID was found '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/catalog/category/{id}': description: Get detailed information for a category within the system get: tags: - Catalog summary: Category details description: Get detailed information for a category within the system parameters: - name: id in: path description: | Category id required: true schema: type: integer description: '' - name: thumbnailSize in: query description: | Optional width of the preview image schema: type: integer description: '' nullable: true - name: previewSize in: query description: | Optional width of the thumbnail 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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: Retrieve product artwork description: This will provide the Artwork file that was uploaded to an Infigo Product. Please note that only Infigo products are currently supported. parameters: - name: productId in: path description: | Infigo product Id required: true schema: type: integer description: '' responses: '200': description: Product artwork '404': description: No **Infigo** product with the provided ID was found. '405': description: 'If the Infigo platform is not configured to have Catfish sync enabled, you will receive a Method not allowed error.' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Synchronizes the client list with the server 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.' 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /catalog/product/syncremote: 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: Synchronizes the infigo product sync info with the server 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.' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' application/xml: schema: $ref: '#/components/schemas/InfigoProductTemplateSyncInfo' responses: '200': description: Retrieve a flag that indicates whether the client-side template and the template from the Infigo server have matching checksums. content: text/plain: schema: type: boolean description: '' application/json: schema: type: boolean description: '' '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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' parameters: - 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: integer description: | Minimum price filter. Only products with a price greater than or equal to this value will be included in results. 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: integer description: | Maximum price filter. Only products with a price less than or equal to this value will be included in results. 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. schema: type: integer description: | The number of products to return per page. Controls result set size for pagination. nullable: true - name: Order in: query description: | The sort order for results. Determines how products are ordered in the response. required: true schema: enum: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity type: string description: | The sort order for results. Determines how products are ordered in the response. x-enum-descriptions: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity x-ms-enum: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity 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 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' 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. - 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 - name: Order in: query description: | The sort order for results. Determines how products are ordered in the response. required: true schema: enum: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity type: string description: | The sort order for results. Determines how products are ordered in the response. x-enum-descriptions: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity x-ms-enum: - Position - Name - Price - CreatedOn - Sku - Published - Id - ProductType - VariantName - Group - StockQuantity 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 responses: '200': description: Products and attribute combinations that match the specified SKU criteria. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' requestBody: description: Parameter 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 application/json: 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: - Catalog V2 summary: Get 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.' parameters: - name: PageIndex in: query description: | Zero-based page index for pagination. Default is 0 (first page). required: true 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. required: true 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/catalog/v2/product/{id}': description: Get detailed information for a product within the system get: tags: - Catalog V2 summary: Product details description: Get detailed information for a product within the system 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: - Catalog V2 summary: Create a 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.' requestBody: description: Parameter 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, 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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.' put: tags: - Catalog V2 summary: Update a 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.' 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: Parameter 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, 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' post: tags: - Catalog V2 summary: Update a 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.' 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: Parameter 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, 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/customer/{id}': description: This operation retrieves detailed information about a customer based on the provided Customer identifier. get: tags: - Customer summary: Retrieve a customer description: This operation retrieves detailed information about a customer based on the provided Customer identifier. parameters: - name: id in: path 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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 a 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.' requestBody: description: Parameter 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/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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' get: tags: - Customer summary: Customer list 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.' 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/customer/delete/{customerId}': description: Delete an existing Customer record post: tags: - Customer summary: Delete a customer description: Delete an existing Customer record parameters: - name: customerId in: path 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: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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.' parameters: - name: customerId in: path 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: '' requestBody: description: Parameter 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /customer/v2: description: 'Returns a paginated list of customer details with optional filtering by roles, status, activity dates, and creation dates.' get: tags: - Customer V2 summary: Get customers description: 'Returns a paginated list of customer details with optional filtering by roles, status, activity dates, and creation dates.' parameters: - 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. - name: Status in: query description: | Filter by customer status. Multiple statuses can be specified. Possible values: `0` - NotActive `1` - Active `2` - Invited schema: type: array items: enum: - 0 - 1 - 2 type: string description: |+ Customer account status indicating the activation state and access permissions. Possible values: `0` - NotActive `1` - Active `2` - Invited x-enum-descriptions: - NotActive - Active - Invited x-ms-enum: - NotActive - Active - Invited x-enumNames: - NotActive - Active - Invited x-enum-varnames: - NotActive - Active - Invited description: | Filter by customer status. Multiple statuses can be specified. - 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 `1` - Desc schema: enum: - 0 - 1 type: string description: |+ Customers sorting direction. Defaults to 'Asc'. Possible values: `0` - Asc `1` - Desc nullable: true x-enum-descriptions: - Asc - Desc x-ms-enum: - Asc - Desc x-enumNames: - Asc - Desc x-enum-varnames: - Asc - Desc - name: OrderBy in: query description: | Customers sorting by column. Defaults to 'Id'. Possible values: `0` - Id `1` - FirstName `2` - LastName `3` - Email schema: enum: - 0 - 1 - 2 - 3 type: string description: |+ Customers sorting by column. Defaults to 'Id'. Possible values: `0` - Id `1` - FirstName `2` - LastName `3` - Email nullable: true x-enum-descriptions: - Id - FirstName - LastName - Email x-ms-enum: - Id - FirstName - LastName - Email x-enumNames: - Id - FirstName - LastName - Email x-enum-varnames: - Id - FirstName - LastName - Email - name: PageIndex in: query description: '' required: true schema: type: integer description: '' - name: PerPage in: query description: '' required: true schema: type: integer description: '' responses: '200': description: Successfully retrieved customers content: application/json: schema: $ref: '#/components/schemas/InfigoApiPagedResult_1_ApiCustomer' application/xml: schema: $ref: '#/components/schemas/InfigoApiPagedResult_1_ApiCustomer' '400': description: Invalid input 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 '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/download/{id}': description: This operation returns the download location based on the provided ID. get: tags: - Download summary: Retrieve download location description: This operation returns the download location based on the provided ID. parameters: - name: id in: path 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' 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' application/xml: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Link for editor 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' 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: enum: - 0 - 1 - 2 type: string description: |+ Possible values: `0` - Normal `1` - Iframe `2` - EmbeddedIframe nullable: true x-enum-descriptions: - Normal - Iframe - EmbeddedIframe x-ms-enum: - Normal - Iframe - EmbeddedIframe x-enumNames: - Normal - Iframe - EmbeddedIframe x-enum-varnames: - Normal - Iframe - EmbeddedIframe - 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 application/json: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' 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 application/json: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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. requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiEditorLinkToRequest' application/xml: schema: $ref: '#/components/schemas/InfigoApiEditorLinkToRequest' responses: '200': description: Job created successfully. content: application/json: schema: $ref: '#/components/schemas/InfigoApiEditorResult' application/xml: schema: $ref: '#/components/schemas/InfigoApiEditorResult' '403': description: Validation error or failure in creating the job. content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorResponse' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorResponse' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: - Editor V2 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.' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoDuplicateJobRequest' application/xml: 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' application/xml: schema: $ref: '#/components/schemas/InfigoJobDuplicatedResponse' '400': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true application/json: schema: type: string description: '' nullable: true '404': description: Source job ID not found in the system. content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/hotfolder/{id}': description: This operation retrieves a list of hotfolders associated with a specific Print Location ID. get: tags: - HotFolder summary: Get hotfolders by print location description: This operation retrieves a list of hotfolders associated with a specific Print Location ID. parameters: - name: id in: path description: | Print location Id required: true schema: type: string description: '' responses: '200': description: '' 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 application/json: schema: type: string description: '' nullable: true '403': description: This message indicates that either the authentication process has failed or the provided hotfolder is not a valid integer. content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /hotfolder: description: This operation retrieves a list of all active hotfolders that are marked to be visible via the API. get: tags: - HotFolder summary: Get all description: This operation retrieves a list of all active hotfolders that are marked to be visible via the API. responses: '200': description: '' 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /infigoorderproduct/updatestatus: description: This operation allows you to update the status of an InfigoOrderProduct record by specifying its ID. post: tags: - InfigoOrderProduct summary: Update Job description: This operation allows you to update the status of an InfigoOrderProduct record by specifying its ID. requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoOrderProduct' application/xml: schema: $ref: '#/components/schemas/InfigoOrderProduct' responses: '204': description: Status update successful '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/job/{id}': 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: Retrieve a job description: 'This will bring the next available item to the the download queue, the return will have a unique download Id.' parameters: - name: id in: path description: | Hotfolder Id required: true schema: type: string description: '' responses: '200': description: This refers to the next job that is awaiting processing in the queue. content: application/json: schema: $ref: '#/components/schemas/InfigoJob' application/xml: schema: $ref: '#/components/schemas/InfigoJob' '404': description: Indicates that there are no active jobs currently available. content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoSetJobModel' application/xml: schema: $ref: '#/components/schemas/InfigoSetJobModel' responses: '200': description: Job status updated successfully. '404': description: Job with the specified download ID not found. content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /misexternalref/updateexternalid: description: This operation updates ExternalId of a MisExternalRef post: tags: - MisExternalRef summary: Update ExternalId description: This operation updates ExternalId of a MisExternalRef 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' '500': description: Internal server error '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: Retrieve customer orders description: This operation allows you to obtain a list of order IDs associated with the specified user. parameters: - name: id in: path description: | Customer guid required: true schema: type: string description: '' format: uuid - name: filterByStatus in: query description: | Order status Possible values: `10` - Open `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered schema: enum: - 10 - 20 - 30 - 40 - 50 - 60 type: string description: |+ Possible values: `10` - Open `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered nullable: true x-enum-descriptions: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-ms-enum: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enumNames: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enum-varnames: - Open - Paid - Shipped - Complete - Cancelled - Delivered 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. '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Retrieve 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.' parameters: - name: filterByStatus in: query description: | Filter orders by status. Options: Open (not complete/cancelled), Paid, Shipped, Complete, Cancelled. Possible values: `10` - Open `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered schema: enum: - 10 - 20 - 30 - 40 - 50 - 60 type: string description: |+ Possible values: `10` - Open `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered nullable: true x-enum-descriptions: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-ms-enum: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enumNames: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enum-varnames: - Open - Paid - Shipped - Complete - Cancelled - Delivered - 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/order/detail/{id}': description: Retrieve order details by id get: tags: - Order summary: Retrieve a order description: Retrieve order details by id 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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 PO Number description: This operation allows you to modify the optional purchase order number associated with a specific order ID. 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: '200': 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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. 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/order/orderstatus/{id}': description: This operation allows you to update the status of an order. post: tags: - Order summary: Change status description: This operation allows you to update the status of an order. 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 `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered required: true schema: enum: - 10 - 20 - 30 - 40 - 50 - 60 type: string description: |+ Order lifecycle status. Progresses forward only (Open→Paid→Shipped→Complete) or to Cancelled. Possible values: `10` - Open `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered x-enum-descriptions: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-ms-enum: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enumNames: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enum-varnames: - Open - Paid - Shipped - Complete - Cancelled - Delivered responses: '200': description: Indicates that order was successful updated in Infigo '403': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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.' 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: '200': description: Order items have been successfully added to the basket. Customer can proceed to checkout. '400': description: Order cannot be reordered - may contain discontinued products or violate order constraints. content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/order/placeorder/{id}': 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.' parameters: - name: id in: path 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: This message serves as confirmation that the order has been successfully created. '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 application/json: 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 application/json: schema: type: string description: '' nullable: true '409': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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. 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/order/pdfpackagingslip/{id}': description: This operation allows you to obtain the PDF packaging slip for a specific order. post: tags: - Order summary: Get the pdf packaging slip description: This operation allows you to obtain the PDF packaging slip for a specific order. 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: Parameter 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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.' requestBody: description: Parameter 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/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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Pre-Place Order Validation 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.' requestBody: description: Parameter 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/basketitems/{id}': 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: Retrieve basket list description: This operation allows you to obtain a list of order line item IDs that the specified user currently has in their basket. parameters: - name: id in: path 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: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '400': description: The provided Customer Guid format is incorrect. Please ensure you provide a valid Guid. 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. '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/savedprojects/{id}': 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: Retrieve saved project list description: This operation allows you to retrieve a list of order line item IDs that the specified user has saved for future editing. parameters: - name: id in: path 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: integer description: '' description: '' application/xml: schema: type: array items: type: integer description: '' description: '' '400': description: The provided Customer Guid format is incorrect. Please ensure you provide a valid Guid. 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. '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/reorder/{id}': description: This action duplicates an existing order line item and adds it to the current basket. It does not automatically place an order. post: tags: - OrderlineItem summary: Reorder orderline description: This action duplicates an existing order line item and adds it to the current basket. It does not automatically place an order. parameters: - name: id in: path description: | Order line item id. required: true schema: type: string description: '' responses: '200': description: Indicates that the order has been successfully added to the basket. '400': description: 'Validation failed, response will include a list of errors.' content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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.' 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.' parameters: - name: notes in: path description: | Search notes 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. required: true schema: type: boolean description: '' default: 'True' responses: '200': description: These are the order line items that meet the specified criteria. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/createoutputfor/{id}': 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. 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. Related endpoints: Download, JobTicket.' parameters: - name: id in: path 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: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoOutputCreationRequest' application/xml: schema: $ref: '#/components/schemas/InfigoOutputCreationRequest' responses: '200': description: Output creation has been queued successfully. '400': description: Invalid request - body is empty or product type not supported. '404': description: 'If the reference provided in the request is not found, the response should contain a detailed error message.' '500': description: Error creating output - check response for details. '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/{id}': description: This operation allows you to obtain specific details for a particular order line item. get: tags: - OrderlineItem summary: Retrieve orderline item description: This operation allows you to obtain specific details for a particular order line item. parameters: - name: id in: path description: | This identifier refers to either a job or a shopping cart item. required: true schema: type: string description: '' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoOrderlineItem' application/xml: schema: $ref: '#/components/schemas/InfigoOrderlineItem' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/delete/{id}': description: This action deletes the specified order line item. Please note that only items that have not been ordered yet can be deleted. post: tags: - OrderlineItem summary: Delete a order line description: This action deletes the specified order line item. Please note that only items that have not been ordered yet can be deleted. parameters: - name: id in: path 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 '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' delete: tags: - OrderlineItem summary: Delete a order line description: This action deletes the specified order line item. Please note that only items that have not been ordered yet can be deleted. parameters: - name: id in: path 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 '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/updatecartitem/{id}': 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. parameters: - name: id in: path 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 was deleted successfully '404': description: Orderline by provided id was not found '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/updateitemstatus/{id}': 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 job 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.' parameters: - name: id in: path 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 `9` - Shipped `11` - AwaitingData `12` - AwaitingParts `13` - AwaitingProof `14` - InArtworking `15` - InFinishing `16` - InPacking `17` - InProduction `18` - InReprographics `19` - OnHold `26` - OutputVerified `46` - ReadyForCollection `49` - Blocked `51` - MisOrderProcessed `52` - MisAssetsOk `53` - MisAssetsFailed `73` - Cancelled required: true schema: enum: - 8 - 9 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 26 - 46 - 49 - 51 - 52 - 53 - 73 type: string description: |+ Status values that can be applied to order line items via the UpdateItemStatus API. Possible values: `8` - Printed `9` - Shipped `11` - AwaitingData `12` - AwaitingParts `13` - AwaitingProof `14` - InArtworking `15` - InFinishing `16` - InPacking `17` - InProduction `18` - InReprographics `19` - OnHold `26` - OutputVerified `46` - ReadyForCollection `49` - Blocked `51` - MisOrderProcessed `52` - MisAssetsOk `53` - MisAssetsFailed `73` - Cancelled x-enum-descriptions: - Printed - Shipped - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - OutputVerified - ReadyForCollection - Blocked - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - Cancelled x-ms-enum: - Printed - Shipped - AwaitingData - AwaitingParts - AwaitingProof - InArtworking - InFinishing - InPacking - InProduction - InReprographics - OnHold - OutputVerified - ReadyForCollection - Blocked - MisOrderProcessed - MisAssetsOk - MisAssetsFailed - Cancelled 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 responses: '200': description: Order line item status updated successfully. '404': description: Orderline by provided id was not found '409': description: Item not yet ordered or invalid status transition. '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /orderlineitem/v2/notes/: description: This action allows you to assign a new status to 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 item note description: This action allows you to assign a new status to an order line item. Please note that this operation is only possible once the order line item has been ordered. requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoUpdateNotesRequest' application/xml: schema: $ref: '#/components/schemas/InfigoUpdateNotesRequest' responses: '204': description: Indicates that the orderline item was updated successfully '404': description: Orderline by provided id was not found '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /OrderlineItemController/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 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. parameters: - name: id in: query description: | The unique identifier of the order line item. schema: type: string description: '' nullable: true requestBody: description: '' content: text/plain: schema: type: string responses: '200': description: Indicates that the orderline item was updated successfully '404': description: Orderline by provided id was not found '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' 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: Orderlines 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.' parameters: - name: itemType in: query description: | Product type to filter by. Options: Variable (v), MultiPart (m), Static (s), Dynamic (d), Normal (n). Possible values: `10` - Normal `20` - Variable `30` - Static `40` - MultiPart `50` - Dynamic `70` - Symphony required: true schema: enum: - 10 - 20 - 30 - 40 - 50 - 70 type: string description: |+ Product type classification determining how the item is processed and rendered. Possible values: `10` - Normal `20` - Variable `30` - Static `40` - MultiPart `50` - Dynamic `70` - Symphony x-enum-descriptions: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-ms-enum: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-enumNames: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-enum-varnames: - Normal - Variable - Static - MultiPart - Dynamic - Symphony 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/jobticket/{id}': 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. parameters: - name: id in: path 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/download/{id}': 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. parameters: - name: id in: path 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 '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/downloadsplit/{id}': 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. parameters: - name: id in: path 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' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/updateoutput/{id}': description: This operation allows you to update the output for a specific job. post: tags: - OrderlineItem summary: Download output description: This operation allows you to update the output for a specific job. parameters: - name: id in: path 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 '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true application/json: schema: type: string description: '' nullable: true '406': description: Request is not properly formatted '415': description: Provide file if not of pdf type '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/orderlineitem/deleteitemstatus/{itemId}': description: This action is used to delete a requested job status associated with a job. post: tags: - OrderlineItem summary: Delete job status description: This action is used to delete a requested job status associated with a job. 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: 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: string 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-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: - 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-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 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 application/json: schema: type: string description: '' nullable: true '404': description: Orderline by provided id was not found content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/printlocation/{id}': description: Retrieves a specific print location by its name. Returns detailed information about the print location including its configuration and associated services. get: tags: - PrintLocation summary: Retrieve print location description: Retrieves a specific print location by its name. Returns detailed information about the print location including its configuration and associated services. parameters: - name: id in: path description: | Print location name 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 active print location with requested id was found content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /printlocation/get: description: 'Returns a list of all print locations available for your account. Each print location includes its name, description, and configuration settings. API authentication is required.' get: tags: - PrintLocation summary: Retrieve all print locations description: 'Returns a list of all print locations available for your account. Each print location includes its name, description, and configuration settings. API authentication is required.' responses: '200': description: Print locations 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /printlocation: description: 'Returns a list of all print locations available for your account. Each print location includes its name, description, and configuration settings. API authentication is required.' get: tags: - PrintLocation summary: Retrieve all print locations description: 'Returns a list of all print locations available for your account. Each print location includes its name, description, and configuration settings. API authentication is required.' responses: '200': description: Print locations 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /catalog/groups: description: This operation returns a list of all product groups paginated available within the system. get: tags: - ProductGroup summary: Get product groups paginated description: This operation returns a list of all product groups paginated available within the system. parameters: - name: PageIndex in: query description: | Zero-based page index for pagination. Default is 0 (first page). required: true 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. required: true 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' post: tags: - ProductGroup summary: Create product group description: Created a new product group with provided details. 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 '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. 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 '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' post: tags: - ProductGroup summary: Update product group description: Update a existing product group with the provided identifier. 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 content: application/json: schema: $ref: '#/components/schemas/InfigoApiErrorModel' application/xml: schema: $ref: '#/components/schemas/InfigoApiErrorModel' '404': description: Product group with provided identifier was not found '409': description: Concurrency conflict while updating the product group. Please try again. '500': description: Internal server error '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 a 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. requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiQuoteCreate' application/xml: schema: $ref: '#/components/schemas/InfigoApiQuoteCreate' responses: '200': description: Quote created successfully 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /quote/update: description: This action is used to update an existing quote for a customer. post: tags: - Quote summary: Update a quote description: This action is used to update an existing quote for a customer. requestBody: description: Parameter content: application/json: schema: $ref: '#/components/schemas/InfigoApiQuoteEdit' application/xml: schema: $ref: '#/components/schemas/InfigoApiQuoteEdit' responses: '200': description: Quote created successfully 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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: Retrieve a 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.' parameters: - name: quoteId in: path description: | The unique identifier of the quote to retrieve. required: true schema: type: integer description: '' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoApiGetQuote' application/xml: schema: $ref: '#/components/schemas/InfigoApiGetQuote' '400': description: Quote with supplied Id was not found 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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 a 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. parameters: - name: quoteId in: path description: | The unique identifier of the quote to delete. required: true schema: type: integer description: '' responses: '200': description: '' 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Retrieve a list of quotes description: 'This operation allows you to retrieve a list of quote IDs attached to a customer. Note: pagination is not supported' parameters: - name: customerId 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: isHiddenInclude in: query description: | This option controls whether hidden quotes should be included in the returned list of quote representations. required: true schema: type: boolean description: '' responses: '200': description: Additional params `CatfishQuoteIds` will be included in response which will be a list of quote Ids content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '400': description: Customer with the supplied Id was not found 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/ssocookie/{id}': 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: - SSOCookie summary: Retrieve 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**' parameters: - name: id in: path description: | The email address of the customer to authenticate. 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: 'This situation occurs when registration is prohibited in the system, and the attempt to find an existing customer fails.' content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/ssourl/{id}': 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: Get 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.' parameters: - name: id in: path 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: 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' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/storagefolder/{id}': description: Will return the first type of a storage folder found. API Auth Token is required. get: tags: - StorageFolder summary: Retrieve a storage folder description: Will return the first type of a storage folder found. API Auth Token is required. parameters: - name: id in: path description: | Type of storage folder required: true schema: type: string description: '' responses: '200': description: Returns storage folder details content: application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '404': description: No storage folder was found by provided id 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Retrieve all 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** 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' 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** 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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: Retrieve 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** 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' put: tags: - Storefront summary: Update a 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** 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: '' 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: Storefront by supplied identifier was not found. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' delete: tags: - Storefront summary: Delete a 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** 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/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: Storefront by supplied identifier was not found. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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** 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' '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: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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 Api Token context storefront description: Retrieves information about the storefront associated with the current API token. Returns the storefront's basic configuration and status. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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: Add new css file to override existing editor styles. 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. 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' get: tags: - Storefront summary: Gets the SCSS Template used to customize the editor 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. responses: '200': description: Scss content: text/plain: schema: type: string description: '' nullable: true application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /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 responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoStorefrontSetupModel' application/xml: schema: $ref: '#/components/schemas/InfigoStorefrontSetupModel' '500': description: Internal server error '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" } 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" } } content: application/json: schema: $ref: '#/components/schemas/InfigoApiThumbnailResponse' application/xml: schema: $ref: '#/components/schemas/InfigoApiThumbnailResponse' '403': description: A success flag that will be false in case of any validation errors. ContextInfo object contains a list of validation 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 '500': description: Internal server error content: text/plain: schema: type: string description: '' nullable: true application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/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: '[Deprecated, please use the method from Action sections] Get status of thumbnail' description: Gets the status of a thumbnail generation action. The actionId parameter is required to identify the specific action. 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' deprecated: true '/uploadcsv/{id}': 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. parameters: - name: id in: path 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: | Possible values: `0` - UsedInEditor `1` - BatchUpload schema: enum: - 0 - 1 type: string description: |+ Possible values: `0` - UsedInEditor `1` - BatchUpload nullable: true x-enum-descriptions: - UsedInEditor - BatchUpload x-ms-enum: - UsedInEditor - BatchUpload x-enumNames: - UsedInEditor - BatchUpload x-enum-varnames: - UsedInEditor - BatchUpload responses: '406': description: Please ensure that provided file is of type CSV '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' '/uploadlocation/{id}': description: Returns details about a upload location based on the name that has been passed in. get: tags: - UploadLocation summary: Retrieve an upload location description: Returns details about a upload location based on the name that has been passed in. parameters: - name: id in: path description: | Name of the upload location required: true schema: type: string description: '' responses: '200': description: '' 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 application/json: 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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' post: tags: - UploadLocation summary: Uploads a document description: Uploads a document as a MultipartFormDataStream to the specified upload location. parameters: - name: id in: path description: | Id of the upload location 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 '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /uploadlocation/: description: Returns details about all upload locations. get: tags: - UploadLocation summary: Retrieve a list description: Returns details about all upload locations. responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoUploadLocation' application/xml: schema: $ref: '#/components/schemas/InfigoUploadLocation' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' /uploadlocation/get: description: Returns details about all upload locations. get: tags: - UploadLocation summary: Retrieve a list description: Returns details about all upload locations. responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InfigoUploadLocation' application/xml: schema: $ref: '#/components/schemas/InfigoUploadLocation' '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 application/json: schema: $ref: '#/components/schemas/InfigoApiResponseObject' application/xml: schema: $ref: '#/components/schemas/InfigoApiResponseObject' 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. 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. 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: $ref: '#/components/schemas/InfigoContextInfo' 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. 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. InfigoApiNotFoundError: type: object properties: ErrorMessage: type: string description: | The error message describing what resource was not found. nullable: true Location: type: string description: | The location or endpoint where the not found error occurred. nullable: true IsBadRequest: type: boolean description: | Always returns false for not found errors, indicating this is not a malformed request but rather a missing resource. description: | Not found error response model returned when a requested resource does not exist (HTTP 404). Indicates the resource ID or identifier provided was not found in the system. 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. InfigoObject: type: object description: | The actual value that was attempted and caused the validation failure. 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: $ref: '#/components/schemas/InfigoObject' 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. description: | Represents a structured API error response containing a general error message and detailed validation errors. 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: $ref: '#/components/schemas/InfigoApiAddressBookModel' AssignAddressBookTo: enum: - 0 - 1 - 2 type: string description: |+ Specifies the type of entity this address book is being assigned to (e.g., Customer, UserGroup). Possible values: `0` - Customer `1` - Department `2` - CustomerRole x-enum-descriptions: - Customer - Department - CustomerRole x-ms-enum: - Customer - Department - CustomerRole x-enumNames: - Customer - Department - CustomerRole x-enum-varnames: - Customer - Department - CustomerRole description: | Represents a request to assign an address book to a specific entity such as a customer or user group. InfigoApiMisConfig: 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'). ExternalId: type: string description: | The external identifier used by the MIS system to reference this entity. Format depends on the specific MIS integration. 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. description: | Address model representing a customer's billing or shipping address. Used for order fulfillment, invoicing, and customer address book management. 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: $ref: '#/components/schemas/InfigoApiAddress' AssignAddressTo: enum: - 0 - 1 - 2 type: string description: |+ Specifies the type of entity this address is being assigned to (e.g., Customer, Order, AddressBook). Possible values: `0` - Customer `1` - Department `2` - AddressBook x-enum-descriptions: - Customer - Department - AddressBook x-ms-enum: - Customer - Department - AddressBook x-enumNames: - Customer - Department - AddressBook x-enum-varnames: - Customer - Department - AddressBook 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. 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. InfigoBatchJobItemInfo: type: object properties: JobId: type: integer description: | The unique identifier of the batch job item Status: enum: - 5 - 10 - 15 type: string description: |+ The current status of the batch job item Possible values: `5` - Pending `10` - Failed `15` - Finished x-enum-descriptions: - Pending - Failed - Finished x-ms-enum: - Pending - Failed - Finished x-enumNames: - Pending - Failed - Finished x-enum-varnames: - Pending - Failed - Finished 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: array properties: data: 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: enum: - 5 - 10 - 15 - 20 - 25 type: string description: |+ The overall status of the batch job. Possible values: `5` - Queued `10` - Processing `15` - Finished `20` - Failed `25` - PartiallyFinished x-enum-descriptions: - Queued - Processing - Finished - Failed - PartiallyFinished x-ms-enum: - Queued - Processing - Finished - Failed - PartiallyFinished x-enumNames: - Queued - Processing - Finished - Failed - PartiallyFinished x-enum-varnames: - Queued - Processing - Finished - Failed - PartiallyFinished ErrorMessage: type: string description: | Error message if the batch processing failed. Null if processing was successful. nullable: true Counts: $ref: '#/components/schemas/InfigoBatchJobItemCountsModel' 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. description: | Response model containing batch job processing results. Includes status information for each job item and any error messages. InfigoJob: 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: array properties: data: 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/InfigoJob' description: | List of individual job items in this batch description: | Callback model containing batch job status and results InfigoApiBatchJobsModel: 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/InfigoJob' description: | The list of jobs to be queued for processing. Each job specifies its type, data format, and payload containing job-specific parameters. description: | Request model for enqueueing batch jobs for asynchronous processing. Allows submitting multiple jobs of various types to be processed in the background. 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. InfigoMisCapabilityModel: 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. SettingName: type: string description: | The specific setting name to retrieve from the MIS plugin configuration. Available settings vary by plugin type. description: | Context model for checking MIS plugin capabilities. Pass this structure in the Context field when Category is MisPlugin. InfigoCheckStatusCapabilityRequest: type: object properties: Category: enum: - 0 type: string 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 x-enum-descriptions: - MisPlugin x-ms-enum: - MisPlugin x-enumNames: - MisPlugin x-enum-varnames: - MisPlugin Context: type: array oneOf: - $ref: '#/components/schemas/InfigoMisCapabilityModel' properties: data: type: object description: | The capability-specific context data required for the status check. Structure varies based on the Category. For MIS capabilities, use MisCapabilityModel structure. description: | Request model for checking the status and configuration of a specific capability. Used to verify feature availability and retrieve capability-specific settings. InfigoCreateCategoryRequest: 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'. 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. 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: integer description: | The price adjustment applied when this option is selected. Positive values increase the price, negative values decrease it. PriceAdjustmentType: type: string description: | The type of price adjustment: 'Absolute' for fixed amount or 'Percentage' for percent of base price. nullable: true WeightAdjustment: type: integer description: | The weight adjustment in the configured weight units when this option is selected. LengthAdjustment: type: integer description: | The length adjustment in configured dimension units when this option is selected. nullable: true WidthAdjustment: type: integer description: | The width adjustment in configured dimension units when this option is selected. nullable: true HeightAdjustment: type: integer description: | The height adjustment in configured dimension units when this option is selected. 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. 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: enum: - 1 - 2 - 3 - 4 - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 999 type: integer description: |+ The UI control type used to display this attribute (e.g., dropdown, radio buttons, checkboxes, text box). Possible values: `1` - DropdownList `2` - RadioList `3` - Checkboxes `4` - TextBox `10` - MultilineTextbox `20` - Datepicker `30` - FileUpload `40` - Info `50` - HtmlSchema `60` - System `70` - Number `999` - Hidden x-enum-descriptions: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden x-ms-enum: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden 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 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. 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. description: | Product attribute information model representing a configurable attribute (e.g., size, color, paper type) that customers can select when ordering a product. 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. AllowOutOfStockOrders: enum: - 0 - 1 - 2 type: string 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 x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - 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. description: | Product attribute combination representing a specific variant of a product. Contains SKU, stock, and settings for a particular set of attribute selections. 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. Id: type: integer description: '' Name: type: string description: '' nullable: true LongDescription: type: string description: '' nullable: true Type: enum: - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 80 type: integer description: |+ Possible values: `10` - Normal `20` - Variable `30` - Static `40` - MultiPart `50` - Dynamic `60` - Sms `70` - Symphony `80` - Custom x-enum-descriptions: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-ms-enum: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-enumNames: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-enum-varnames: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom Price: type: integer description: '' StockValue: type: integer description: '' Sku: type: string description: '' nullable: true OrderPackQuantity: type: integer description: '' QuantitySelectorMode: enum: - 0 - 1 type: string description: |+ Possible values: `0` - Units `1` - Packs x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs PreviewUrls: type: array items: type: string description: '' nullable: true description: '' ThumbnailUrls: type: array items: type: string description: '' nullable: true description: '' Tags: type: array items: type: string description: '' nullable: true description: '' IsShippingEnabled: type: boolean description: '' ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: '' AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombination' description: '' 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. ManageInventoryMethod: enum: - 0 - 1 - 2 type: string description: |+ Possible values: `0` - DontManageStock `1` - ManageStock `2` - ManageStockByAttributes x-enum-descriptions: - DontManageStock - ManageStock - ManageStockByAttributes x-ms-enum: - DontManageStock - ManageStock - ManageStockByAttributes x-enumNames: - DontManageStock - ManageStock - ManageStockByAttributes x-enum-varnames: - DontManageStock - ManageStock - ManageStockByAttributes DisplayStockAvailability: type: boolean description: '' DisplayStockQuantity: type: boolean description: '' MinStockQuantity: type: integer description: '' LowStockActivity: enum: - 0 - 1 - 2 - 3 - 4 type: string description: |+ Possible values: `0` - Nothing `1` - EnableOrDisableBuyButton `2` - PublishOrUnpublish `3` - OnlyDisableBuyButton `4` - OnlyUnpublish x-enum-descriptions: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-ms-enum: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enumNames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enum-varnames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish NotifyAdminForQuantityBelow: type: integer description: '' BackorderMode: enum: - 0 - 1 - 2 type: string description: |+ Possible values: `0` - NoBackorders `1` - AllowQtyBelow0 `2` - AllowQtyBelow0AndNotifyCustomer x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer AllowBackInStockSubscriptions: type: boolean description: '' OldPrice: type: integer description: '' ProductCost: type: integer description: '' SpecialPrice: type: integer description: '' 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: integer description: '' MaximumCustomerEnteredPrice: type: integer description: '' DisableBuyButton: type: boolean description: '' DisableWishlistButton: type: boolean description: '' RequiresQuote: type: boolean description: '' IsFreeShipping: type: boolean description: '' AdditionalShippingCharge: type: integer description: '' AdditionalShippingChargeType: enum: - 0 - 1 type: string description: |+ Possible values: `0` - PerUnit `1` - PerOrderLine x-enum-descriptions: - PerUnit - PerOrderLine x-ms-enum: - PerUnit - PerOrderLine x-enumNames: - PerUnit - PerOrderLine x-enum-varnames: - PerUnit - PerOrderLine Weight: type: integer description: '' Length: type: integer description: '' Width: type: integer description: '' Height: type: integer description: '' UseMultiTierSpread: type: boolean description: '' UseInterpolationForTierPricing: type: boolean description: '' ShareTiersOnCart: enum: - 0 - 1 - 2 - 3 type: string description: |+ Possible values: `0` - NoShare `1` - SameProducts `2` - SameProductsAndAttributes `3` - SameProductsAndSelectedAttributes x-enum-descriptions: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-ms-enum: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enumNames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enum-varnames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes IsTaxExempt: type: boolean description: '' TaxCategoryIds: type: array items: type: integer description: '' description: '' 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: enum: - 1 - 10 type: string description: |+ Possible values: `1` - WhenOrderIsPaid `10` - Manually x-enum-descriptions: - WhenOrderIsPaid - Manually x-ms-enum: - WhenOrderIsPaid - Manually x-enumNames: - WhenOrderIsPaid - Manually x-enum-varnames: - WhenOrderIsPaid - Manually HasSampleDownload: type: boolean description: '' HasUserAgreement: type: boolean description: '' UserAgreementText: type: string description: '' nullable: true IsRecurring: type: boolean description: '' RecurringCycleLength: type: integer description: '' RecurringCyclePeriod: enum: - 0 - 10 - 20 - 30 type: string description: |+ Possible values: `0` - Days `10` - Weeks `20` - Months `30` - Years x-enum-descriptions: - Days - Weeks - Months - Years x-ms-enum: - Days - Weeks - Months - Years x-enumNames: - Days - Weeks - Months - Years x-enum-varnames: - Days - Weeks - Months - Years RecurringTotalCycles: type: integer description: '' IsGiftCard: type: boolean description: '' GiftCardType: enum: - 0 - 1 type: string description: |+ Possible values: `0` - Virtual `1` - Physical x-enum-descriptions: - Virtual - Physical x-ms-enum: - Virtual - Physical x-enumNames: - Virtual - Physical x-enum-varnames: - Virtual - Physical IsPrepayProduct: type: boolean description: '' nullable: true PrepayAmount: type: integer description: '' 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 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: integer description: | The unit price per item at this quantity tier. Lower prices at higher quantities provide volume discounts. description: | Represents a tier price point for quantity-based pricing. Defines a minimum quantity threshold and the corresponding unit price at that quantity level. 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: integer description: | The price adjustment applied to the product's base price when this value is selected. WeightAdjustment: type: integer description: | The weight adjustment applied to the product when this value is selected. WidthAdjustment: type: integer description: | The adjustment applied to the product's width when this value is selected. HeightAdjustment: type: integer description: | The adjustment applied to the product's height when this value is selected. LengthAdjustment: type: integer description: | The adjustment applied to the product's length when this value is selected. PriceAdjustmentType: enum: - 0 - 1 type: string description: |+ The type of price adjustment applied, indicating whether it's an absolute value or a percentage. Possible values: `0` - Percent `1` - Absolute x-enum-descriptions: - Percent - Absolute x-ms-enum: - Percent - Absolute x-enumNames: - Percent - Absolute x-enum-varnames: - Percent - Absolute 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. 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. 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: enum: - 1 - 2 - 3 - 4 - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 999 type: string 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 `2` - RadioList `3` - Checkboxes `4` - TextBox `10` - MultilineTextbox `20` - Datepicker `30` - FileUpload `40` - Info `50` - HtmlSchema `60` - System `70` - Number `999` - Hidden x-enum-descriptions: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden x-ms-enum: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden 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 description: | Request model for configuring a product attribute assignment. Extends the base attribute configuration with values and MIS integration settings. InfigoCreateProductRequest: 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. 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. 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: integer 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. nullable: true QuantitySelectorMode: enum: - 0 - 1 type: string 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 `1` - Packs nullable: true x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs 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. 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']. 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. 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: 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. 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: integer 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. 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. 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']. 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. 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: $ref: '#/components/schemas/InfigoContextInfo' description: | Response model containing the result of a stock quantity update operation. InfigoUpdateStockAttribute: type: object properties: Key: type: string description: | Attribute name Value: type: string description: | Attribute value description: | Key-value pair model used for product variant attributes and checkout attributes when recording orders through the API. InfigoUpdateStockQuantityModel: 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. 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. 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. 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. 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. InfigoSearchBySkuResponseModel: type: object properties: Type: enum: - 0 - 1 type: integer description: |+ Indicates whether this result is a Product or ProductAttributeCombination. Determines which property (Product or ProductAttributeCombination) contains the data. Possible values: `0` - Product `1` - ProductAttributeCombination x-enum-descriptions: - Product - ProductAttributeCombination x-ms-enum: - Product - ProductAttributeCombination x-enumNames: - Product - ProductAttributeCombination x-enum-varnames: - Product - ProductAttributeCombination Product: $ref: '#/components/schemas/InfigoProductInfo' ProductAttributeCombination: $ref: '#/components/schemas/InfigoProductAttributeCombination' 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: enum: - 0 - 1 type: string description: |+ Indicates whether this is a main product or a product attribute combination (variant). Possible values: `0` - Product `1` - ProductAttributeCombination x-enum-descriptions: - Product - ProductAttributeCombination x-ms-enum: - Product - ProductAttributeCombination x-enumNames: - Product - ProductAttributeCombination x-enum-varnames: - Product - ProductAttributeCombination 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: $ref: '#/components/schemas/InfigoContextInfo' 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. 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: 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. 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: 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: integer description: | The unit price applied when this tier quantity is reached or exceeded. 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. 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: object description: | The context type of the variable item (mirrors VariableItem.ContextType) Type: type: object description: | The variable type (mirrors VariableItem.VariableType) description: | Base class for variable items containing common properties InfigoApiVariableSet_1_BaseApiVariableItem: type: object properties: Set: $ref: '#/components/schemas/InfigoApiVariableSetHeader' Items: type: array items: $ref: '#/components/schemas/InfigoBaseApiVariableItem' description: | The list of variable items in the set 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: array properties: data: 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. 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. 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. 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. PricingScript: $ref: '#/components/schemas/InfigoPricingScriptInfo' Id: type: integer description: '' Name: type: string description: '' nullable: true LongDescription: type: string description: '' nullable: true Type: enum: - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 80 type: integer description: |+ Possible values: `10` - Normal `20` - Variable `30` - Static `40` - MultiPart `50` - Dynamic `60` - Sms `70` - Symphony `80` - Custom x-enum-descriptions: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-ms-enum: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-enumNames: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom x-enum-varnames: - Normal - Variable - Static - MultiPart - Dynamic - Sms - Symphony - Custom Price: type: integer description: '' StockValue: type: integer description: '' Sku: type: string description: '' nullable: true OrderPackQuantity: type: integer description: '' QuantitySelectorMode: enum: - 0 - 1 type: string description: |+ Possible values: `0` - Units `1` - Packs x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs PreviewUrls: type: array items: type: string description: '' nullable: true description: '' ThumbnailUrls: type: array items: type: string description: '' nullable: true description: '' Tags: type: array items: type: string description: '' nullable: true description: '' IsShippingEnabled: type: boolean description: '' ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttributeInfo' description: '' AttributeCombinations: type: array items: $ref: '#/components/schemas/InfigoProductAttributeCombination' description: '' 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. ManageInventoryMethod: enum: - 0 - 1 - 2 type: string description: |+ Possible values: `0` - DontManageStock `1` - ManageStock `2` - ManageStockByAttributes x-enum-descriptions: - DontManageStock - ManageStock - ManageStockByAttributes x-ms-enum: - DontManageStock - ManageStock - ManageStockByAttributes x-enumNames: - DontManageStock - ManageStock - ManageStockByAttributes x-enum-varnames: - DontManageStock - ManageStock - ManageStockByAttributes DisplayStockAvailability: type: boolean description: '' DisplayStockQuantity: type: boolean description: '' MinStockQuantity: type: integer description: '' LowStockActivity: enum: - 0 - 1 - 2 - 3 - 4 type: string description: |+ Possible values: `0` - Nothing `1` - EnableOrDisableBuyButton `2` - PublishOrUnpublish `3` - OnlyDisableBuyButton `4` - OnlyUnpublish x-enum-descriptions: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-ms-enum: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enumNames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enum-varnames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish NotifyAdminForQuantityBelow: type: integer description: '' BackorderMode: enum: - 0 - 1 - 2 type: string description: |+ Possible values: `0` - NoBackorders `1` - AllowQtyBelow0 `2` - AllowQtyBelow0AndNotifyCustomer x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer AllowBackInStockSubscriptions: type: boolean description: '' OldPrice: type: integer description: '' ProductCost: type: integer description: '' SpecialPrice: type: integer description: '' 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: integer description: '' MaximumCustomerEnteredPrice: type: integer description: '' DisableBuyButton: type: boolean description: '' DisableWishlistButton: type: boolean description: '' RequiresQuote: type: boolean description: '' IsFreeShipping: type: boolean description: '' AdditionalShippingCharge: type: integer description: '' AdditionalShippingChargeType: enum: - 0 - 1 type: string description: |+ Possible values: `0` - PerUnit `1` - PerOrderLine x-enum-descriptions: - PerUnit - PerOrderLine x-ms-enum: - PerUnit - PerOrderLine x-enumNames: - PerUnit - PerOrderLine x-enum-varnames: - PerUnit - PerOrderLine Weight: type: integer description: '' Length: type: integer description: '' Width: type: integer description: '' Height: type: integer description: '' UseMultiTierSpread: type: boolean description: '' UseInterpolationForTierPricing: type: boolean description: '' ShareTiersOnCart: enum: - 0 - 1 - 2 - 3 type: string description: |+ Possible values: `0` - NoShare `1` - SameProducts `2` - SameProductsAndAttributes `3` - SameProductsAndSelectedAttributes x-enum-descriptions: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-ms-enum: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enumNames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enum-varnames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes IsTaxExempt: type: boolean description: '' TaxCategoryIds: type: array items: type: integer description: '' description: '' 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: enum: - 1 - 10 type: string description: |+ Possible values: `1` - WhenOrderIsPaid `10` - Manually x-enum-descriptions: - WhenOrderIsPaid - Manually x-ms-enum: - WhenOrderIsPaid - Manually x-enumNames: - WhenOrderIsPaid - Manually x-enum-varnames: - WhenOrderIsPaid - Manually HasSampleDownload: type: boolean description: '' HasUserAgreement: type: boolean description: '' UserAgreementText: type: string description: '' nullable: true IsRecurring: type: boolean description: '' RecurringCycleLength: type: integer description: '' RecurringCyclePeriod: enum: - 0 - 10 - 20 - 30 type: string description: |+ Possible values: `0` - Days `10` - Weeks `20` - Months `30` - Years x-enum-descriptions: - Days - Weeks - Months - Years x-ms-enum: - Days - Weeks - Months - Years x-enumNames: - Days - Weeks - Months - Years x-enum-varnames: - Days - Weeks - Months - Years RecurringTotalCycles: type: integer description: '' IsGiftCard: type: boolean description: '' GiftCardType: enum: - 0 - 1 type: string description: |+ Possible values: `0` - Virtual `1` - Physical x-enum-descriptions: - Virtual - Physical x-ms-enum: - Virtual - Physical x-enumNames: - Virtual - Physical x-enum-varnames: - Virtual - Physical IsPrepayProduct: type: boolean description: '' nullable: true PrepayAmount: type: integer description: '' 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 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. 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. 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: integer description: | The price adjustment applied to the product's base price when this value is selected. WeightAdjustment: type: integer description: | The weight adjustment applied to the product when this value is selected. WidthAdjustment: type: integer description: | The adjustment applied to the product's width when this value is selected. HeightAdjustment: type: integer description: | The adjustment applied to the product's height when this value is selected. LengthAdjustment: type: integer description: | The adjustment applied to the product's length when this value is selected. PriceAdjustmentType: enum: - 0 - 1 type: string description: |+ The type of price adjustment applied, indicating whether it's an absolute value or a percentage. Possible values: `0` - Percent `1` - Absolute x-enum-descriptions: - Percent - Absolute x-ms-enum: - Percent - Absolute x-enumNames: - Percent - Absolute x-enum-varnames: - Percent - Absolute 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. 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. 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: enum: - 1 - 2 - 3 - 4 - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 999 type: string 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 `2` - RadioList `3` - Checkboxes `4` - TextBox `10` - MultilineTextbox `20` - Datepicker `30` - FileUpload `40` - Info `50` - HtmlSchema `60` - System `70` - Number `999` - Hidden x-enum-descriptions: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden x-ms-enum: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden 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 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. 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: enum: - 0 - 1 - 2 type: string description: |+ Indicates whether customers are allowed to place out of stock orders Possible values: `0` - NoBackorders `1` - AllowQtyBelow0 `2` - AllowQtyBelow0AndNotifyCustomer x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - 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. 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: array properties: data: 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: 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: enum: - 0 - 1 - 2 - 3 type: string 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 nullable: true x-enum-descriptions: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-ms-enum: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enumNames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enum-varnames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes 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. 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. 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. 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. 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. PricingScript: $ref: '#/components/schemas/InfigoPricingScriptRequest' ManageInventoryMethod: enum: - 0 - 1 - 2 type: string 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 nullable: true x-enum-descriptions: - DontManageStock - ManageStock - ManageStockByAttributes x-ms-enum: - DontManageStock - ManageStock - ManageStockByAttributes x-enumNames: - DontManageStock - ManageStock - ManageStockByAttributes x-enum-varnames: - DontManageStock - ManageStock - ManageStockByAttributes 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: enum: - 0 - 1 - 2 - 3 - 4 type: string 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 `1` - EnableOrDisableBuyButton `2` - PublishOrUnpublish `3` - OnlyDisableBuyButton `4` - OnlyUnpublish nullable: true x-enum-descriptions: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-ms-enum: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enumNames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enum-varnames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish NotifyAdminForQuantityBelow: type: integer description: | The stock quantity threshold below which an administrator notification is sent, alerting staff to replenish inventory. nullable: true BackorderMode: enum: - 0 - 1 - 2 type: string 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 nullable: true x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer 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: integer description: | The product's former or recommended retail price, displayed alongside the current price to indicate a discount or saving. nullable: true ProductCost: type: integer description: | The internal cost of the product to the merchant. Used for margin and profit reporting and is not shown to customers. nullable: true SpecialPrice: type: integer description: | A promotional price that overrides the normal price for a limited period defined by SpecialPriceStartDateTimeUtc and SpecialPriceEndDateTimeUtc. 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: integer description: | The lowest price a customer may enter when CustomerEntersPrice is enabled. nullable: true MaximumCustomerEnteredPrice: type: integer description: | The highest price a customer may enter when CustomerEntersPrice is enabled. 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: integer description: | An extra shipping charge applied specifically to this product, added on top of the standard shipping cost. nullable: true AdditionalShippingChargeType: enum: - 0 - 1 type: string 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 `1` - PerOrderLine nullable: true x-enum-descriptions: - PerUnit - PerOrderLine x-ms-enum: - PerUnit - PerOrderLine x-enumNames: - PerUnit - PerOrderLine x-enum-varnames: - PerUnit - PerOrderLine Weight: type: integer description: | The shipping weight of the product, used for weight-based shipping rate calculations. nullable: true Length: type: integer description: | The length dimension of the product, used for dimensional shipping calculations and packaging. nullable: true Width: type: integer description: | The width dimension of the product, used for dimensional shipping calculations and packaging. nullable: true Height: type: integer description: | The height dimension of the product, used for dimensional shipping calculations and packaging. 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. 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: enum: - 1 - 10 type: string 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 `10` - Manually nullable: true x-enum-descriptions: - WhenOrderIsPaid - Manually x-ms-enum: - WhenOrderIsPaid - Manually x-enumNames: - WhenOrderIsPaid - Manually x-enum-varnames: - WhenOrderIsPaid - Manually 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: enum: - 0 - 10 - 20 - 30 type: string description: |+ The unit of the recurring billing cycle, for example days, weeks, months, or years. Possible values: `0` - Days `10` - Weeks `20` - Months `30` - Years nullable: true x-enum-descriptions: - Days - Weeks - Months - Years x-ms-enum: - Days - Weeks - Months - Years x-enumNames: - Days - Weeks - Months - Years x-enum-varnames: - Days - Weeks - Months - Years 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: enum: - 0 - 1 type: string description: |+ Determines the gift card delivery type, for example virtual (emailed to a recipient) or physical (shipped). Possible values: `0` - Virtual `1` - Physical nullable: true x-enum-descriptions: - Virtual - Physical x-ms-enum: - Virtual - Physical x-enumNames: - Virtual - Physical x-enum-varnames: - Virtual - Physical 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: integer description: | The upfront amount the customer prepays when IsPrepayProduct is enabled. 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 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: integer 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. nullable: true QuantitySelectorMode: enum: - 0 - 1 type: string 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 `1` - Packs nullable: true x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs 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. 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']. 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. 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: 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: enum: - 0 - 1 - 2 - 3 type: string 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 nullable: true x-enum-descriptions: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-ms-enum: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enumNames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes x-enum-varnames: - NoShare - SameProducts - SameProductsAndAttributes - SameProductsAndSelectedAttributes 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: enum: - 0 - 1 type: string 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 `1` - Packs nullable: true x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs 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. 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. 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. 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. 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. PricingScript: $ref: '#/components/schemas/InfigoPricingScriptRequest' ManageInventoryMethod: enum: - 0 - 1 - 2 type: string 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 nullable: true x-enum-descriptions: - DontManageStock - ManageStock - ManageStockByAttributes x-ms-enum: - DontManageStock - ManageStock - ManageStockByAttributes x-enumNames: - DontManageStock - ManageStock - ManageStockByAttributes x-enum-varnames: - DontManageStock - ManageStock - ManageStockByAttributes 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: enum: - 0 - 1 - 2 - 3 - 4 type: string 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 `1` - EnableOrDisableBuyButton `2` - PublishOrUnpublish `3` - OnlyDisableBuyButton `4` - OnlyUnpublish nullable: true x-enum-descriptions: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-ms-enum: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enumNames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish x-enum-varnames: - Nothing - EnableOrDisableBuyButton - PublishOrUnpublish - OnlyDisableBuyButton - OnlyUnpublish 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: enum: - 0 - 1 - 2 type: string 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 nullable: true x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer 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: integer description: | Previous or reference price used to show a discount or strikethrough comparison against the current price. Leave null to preserve the current setting. nullable: true ProductCost: type: integer description: | Internal cost of the product used for margin and profit calculations. Not shown to customers. Leave null to preserve the current setting. nullable: true SpecialPrice: type: integer description: | Temporary promotional price applied while the special price date range is active. Leave null to preserve the current setting. 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: integer description: | Minimum price a customer is allowed to enter when customer-entered pricing is enabled. Leave null to preserve the current setting. nullable: true MaximumCustomerEnteredPrice: type: integer description: | Maximum price a customer is allowed to enter when customer-entered pricing is enabled. Leave null to preserve the current setting. 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: integer description: | Extra shipping charge added specifically for this product on top of standard shipping rates. Leave null to preserve the current setting. nullable: true AdditionalShippingChargeType: enum: - 0 - 1 type: string 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 `1` - PerOrderLine nullable: true x-enum-descriptions: - PerUnit - PerOrderLine x-ms-enum: - PerUnit - PerOrderLine x-enumNames: - PerUnit - PerOrderLine x-enum-varnames: - PerUnit - PerOrderLine Weight: type: integer description: | Physical weight of the product used for shipping cost calculations. Leave null to preserve the current setting. nullable: true Length: type: integer description: | Physical length dimension of the product used for shipping and packaging calculations. Leave null to preserve the current setting. nullable: true Width: type: integer description: | Physical width dimension of the product used for shipping and packaging calculations. Leave null to preserve the current setting. nullable: true Height: type: integer description: | Physical height dimension of the product used for shipping and packaging calculations. Leave null to preserve the current setting. 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. 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: enum: - 1 - 10 type: string 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 `10` - Manually nullable: true x-enum-descriptions: - WhenOrderIsPaid - Manually x-ms-enum: - WhenOrderIsPaid - Manually x-enumNames: - WhenOrderIsPaid - Manually x-enum-varnames: - WhenOrderIsPaid - Manually 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: enum: - 0 - 10 - 20 - 30 type: string 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 `10` - Weeks `20` - Months `30` - Years nullable: true x-enum-descriptions: - Days - Weeks - Months - Years x-ms-enum: - Days - Weeks - Months - Years x-enumNames: - Days - Weeks - Months - Years x-enum-varnames: - Days - Weeks - Months - Years 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: enum: - 0 - 1 type: string 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 `1` - Physical nullable: true x-enum-descriptions: - Virtual - Physical x-ms-enum: - Virtual - Physical x-enumNames: - Virtual - Physical x-enum-varnames: - Virtual - Physical 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: integer description: | Amount the customer prepays when purchasing this prepay product. Leave null to preserve the current setting. 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 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: integer 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. 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. 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']. 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. 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: type: object properties: Key: type: string description: | The attribute key/name identifying the custom field. 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. 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. 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: $ref: '#/components/schemas/InfigoApiAddress' ShippingAddress: $ref: '#/components/schemas/InfigoApiAddress' WorkflowTrustLevelEnabled: type: boolean description: | Indicates whether workflow trust level approval is enabled for this customer. nullable: true WorkflowTrustLevel: type: integer description: | The customer's trust level threshold for automatic order approval. Orders above this value require approval. nullable: true Approvers: type: array items: type: string description: '' nullable: true description: | List of customer identifiers who can approve orders for this customer. BudgetManagers: type: array items: type: string description: '' nullable: true description: | List of customer identifiers who manage budget for this customer. 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. LoginMessage: type: string description: | Custom message displayed to the customer upon login. 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 Addresses: type: array items: $ref: '#/components/schemas/InfigoApiAddress' description: | Array of all addresses associated with this customer. 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: enum: - 0 - 1 - 2 type: string description: |+ Possible values: `0` - NotActive `1` - Active `2` - Invited nullable: true x-enum-descriptions: - NotActive - Active - Invited x-ms-enum: - NotActive - Active - Invited x-enumNames: - NotActive - Active - Invited x-enum-varnames: - NotActive - Active - Invited 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: '' 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. InfigoUpdateRewardPoints: 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. 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. 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: $ref: '#/components/schemas/InfigoObject' Errors: type: array items: $ref: '#/components/schemas/InfigoApiErrorDetailV2' description: | List of field-level error details. description: | RFC 7807 problem detail response. 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. description: | Response model for the TouchJob operation indicating whether the job session was successfully refreshed/extended. Used to keep editor sessions alive. InfigoKeyValuePair_2_String_String: type: object properties: Key: type: string description: '' nullable: true Value: type: string description: '' nullable: true description: '' InfigoItem: type: object properties: VariableSetName: type: string description: | Variable set name. VariableItemName: type: string description: | Variable item name. 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: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' 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). 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: $ref: '#/components/schemas/InfigoApiJobDetails' 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 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: $ref: '#/components/schemas/InfigoObject' description: | Details of a specific validation or field-level error. InfigoApiErrorResponse: type: object properties: ApiErrorCode: enum: - 0 - 1 - 2 - 3 - 4 type: string description: |+ The error category code identifying the type of failure. Possible values: `0` - INVALID_INPUT `1` - SERVER_ERROR `2` - UNAUTHORIZED `3` - NOT_FOUND `4` - CONFLICT x-enum-descriptions: - INVALID_INPUT - SERVER_ERROR - UNAUTHORIZED - NOT_FOUND - CONFLICT x-ms-enum: - INVALID_INPUT - SERVER_ERROR - UNAUTHORIZED - NOT_FOUND - CONFLICT x-enumNames: - INVALID_INPUT - SERVER_ERROR - UNAUTHORIZED - NOT_FOUND - CONFLICT x-enum-varnames: - INVALID_INPUT - SERVER_ERROR - UNAUTHORIZED - NOT_FOUND - CONFLICT Message: type: string description: | Human-readable error message describing what went wrong. nullable: true Errors: type: array items: $ref: '#/components/schemas/InfigoApiErrorDetail' description: | Detailed validation errors for specific fields when applicable. description: | Standard error response returned when an API operation fails. 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: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: | Product Attributes (list of name/value pairs). VariableItems: type: array items: $ref: '#/components/schemas/InfigoItem' description: | Variable list (list of variable set name/variable item name/value). 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. 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. InfigoOrderProduct: type: object properties: Id: type: integer description: | The unique identifier of the Infigo order product to update. Status: enum: - 25 - 26 - 68 - 69 type: string 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 `26` - OutputVerified `68` - JobTicketDownloaded `69` - JobTicketVerified x-enum-descriptions: - OutputDownloaded - OutputVerified - JobTicketDownloaded - JobTicketVerified x-ms-enum: - OutputDownloaded - OutputVerified - JobTicketDownloaded - JobTicketVerified x-enumNames: - OutputDownloaded - OutputVerified - JobTicketDownloaded - JobTicketVerified x-enum-varnames: - OutputDownloaded - OutputVerified - JobTicketDownloaded - JobTicketVerified 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. 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. InfigoSetJobModel: 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: enum: - 0 - 1 - 2 - 3 type: object description: |+ The new status to set for the job. See JobStatusEnum for valid values including Pending, Processing, Completed, Failed states. Possible values: `0` - Created `1` - Downloading `2` - Downloaded `3` - Failed x-enum-descriptions: - Created - Downloading - Downloaded - Failed x-ms-enum: - Created - Downloading - Downloaded - Failed x-enumNames: - Created - Downloading - Downloaded - Failed x-enum-varnames: - Created - Downloading - Downloaded - Failed description: | Request model for updating the status of a download job. Used to track the processing state of files in the download system. InfigoUpdateMisExternalRefRequest: 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. 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. EntityType: 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 type: string description: |+ The type of entity being linked. Determines which Infigo entity table the external reference will be associated with. Possible values: `0` - ProductVariant `1` - Order `2` - Address `3` - Customer `4` - Department `5` - SymphonyItemPrint `6` - SymphonyItemGroup `7` - ProductVariantAttribute `8` - ProductVariantAttributeValue `9` - ProductGroupAttribute `10` - ProductGroupAttributeValue `11` - CheckoutAttribute `12` - ProductSpecificationAttribute `13` - DeliveryMethod `14` - MisApi `15` - ProductVariantAttributeCombination `16` - ProductGroupAttributeCombination `17` - ProductGroup `18` - OrderLine `19` - CheckoutAttributeValue `20` - Language `21` - Country `22` - SavedQuote `23` - HotFolder `24` - UploadLocation `25` - Category `26` - MessageTemplate `27` - Supplier `28` - EditableContent `29` - TaxCategory `30` - CustomerRole `31` - Storefront `32` - RequestContextGroup `33` - ShoppingCartItem `34` - ApiAuthToken `35` - JobId x-enum-descriptions: - 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 x-ms-enum: - 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 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 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 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. 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. 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. 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. Values: type: array items: $ref: '#/components/schemas/InfigoCheckoutAttributeValue' description: | The values selected for this checkout attribute in the order. 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: integer description: | The tax rate as a decimal value (e.g., 0.10 for 10%) 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: integer description: | The calculated tax value amount 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. 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: enum: - 10 - 20 - 30 - 40 - 50 - 60 type: integer 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 `20` - Paid `30` - Shipped `40` - Complete `50` - Cancelled `60` - Delivered x-enum-descriptions: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-ms-enum: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enumNames: - Open - Paid - Shipped - Complete - Cancelled - Delivered x-enum-varnames: - Open - Paid - Shipped - Complete - Cancelled - Delivered BillingAddress: $ref: '#/components/schemas/InfigoApiAddress' ShippingAddress: $ref: '#/components/schemas/InfigoApiAddress' 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: integer description: | The shipping cost charged for this order in the order's currency. Tax: type: integer description: | The total tax amount for the order in the order's currency. OrderTotal: type: integer description: | The grand total of the order including all line items, shipping, and tax. This is the final amount charged. 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: integer description: | The amount of customer budget used for this order (for budget-controlled accounts). CustomTags: $ref: '#/components/schemas/InfigoApiCustomTags' 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: enum: - 10 - 20 - 30 - 40 type: integer description: |+ The order state in the workflow. Values: 10=Pending, 20=Processing, 30=Complete, 40=Cancelled. Possible values: `10` - Pending `20` - Processing `30` - Complete `40` - Cancelled x-enum-descriptions: - Pending - Processing - Complete - Cancelled x-ms-enum: - Pending - Processing - Complete - Cancelled x-enumNames: - Pending - Processing - Complete - Cancelled x-enum-varnames: - Pending - Processing - Complete - Cancelled ShippingState: enum: - 10 - 20 - 30 - 40 type: integer description: |+ The shipping fulfillment state. Values: 10=ShippingNotRequired, 20=NotYetShipped, 30=Shipped, 40=Delivered. Possible values: `10` - ShippingNotRequired `20` - NotYetShipped `30` - Shipped `40` - Delivered x-enum-descriptions: - ShippingNotRequired - NotYetShipped - Shipped - Delivered x-ms-enum: - ShippingNotRequired - NotYetShipped - Shipped - Delivered x-enumNames: - ShippingNotRequired - NotYetShipped - Shipped - Delivered x-enum-varnames: - ShippingNotRequired - NotYetShipped - Shipped - Delivered PaymentState: enum: - 10 - 20 - 30 - 35 - 40 - 50 - 60 type: integer description: |+ The payment processing state. Values: 10=Pending, 20=Authorized, 30=Paid, 35=PartiallyRefunded, 40=Refunded, 50=Voided, 60=Cancelled. Possible values: `10` - Pending `20` - Authorized `30` - Paid `35` - PartiallyRefunded `40` - Refunded `50` - Voided `60` - Cancelled x-enum-descriptions: - Pending - Authorized - Paid - PartiallyRefunded - Refunded - Voided - Cancelled x-ms-enum: - Pending - Authorized - Paid - PartiallyRefunded - Refunded - Voided - Cancelled x-enumNames: - Pending - Authorized - Paid - PartiallyRefunded - Refunded - Voided - Cancelled x-enum-varnames: - Pending - Authorized - Paid - PartiallyRefunded - Refunded - Voided - Cancelled MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS configuration mappings for integration with external MIS systems. 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). Data: type: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: | Custom API metadata stored as key-value pairs. Use this for storing arbitrary order-level data for integrations. CurrencyRate: type: integer description: | The exchange rate between the customer's currency and the store's primary currency at order time. VatNumber: type: string description: | The customer's VAT/Tax registration number if provided during checkout (B2B scenarios). nullable: true OrderSubtotalInclTax: type: integer description: | Order subtotal including tax (sum of all line item prices before shipping and order-level discounts). OrderSubtotalExclTax: type: integer description: | Order subtotal excluding tax (sum of all line item prices before shipping and order-level discounts). OrderSubTotalDiscountInclTax: type: integer description: | Subtotal discount amount including tax (promotional discounts applied at order level). OrderSubTotalDiscountExclTax: type: integer description: | Subtotal discount amount excluding tax (promotional discounts applied at order level). DiscountCodes: type: array items: type: string description: '' nullable: true description: | List of discount/coupon codes applied to this order. 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. OrderTax: type: integer description: | Total tax amount calculated for the order. OrderDiscount: type: integer description: | Total discount amount applied to the order. RefundedAmount: type: integer description: | Amount that has been refunded from this order (partial or full refunds). OrderWeight: type: integer description: | Total physical weight of the order for shipping calculations. 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: integer description: | Additional fee charged by the payment method including tax (e.g., payment processing surcharge). PaymentMethodAdditionalFeeExclTax: type: integer description: | Additional fee charged by the payment method excluding tax. 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: integer description: | Shipping cost including tax. OrderShippingExclTax: type: integer description: | Shipping cost excluding tax. ShippingTaxRate: type: integer description: | The tax rate applied to shipping charges. 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: integer description: | Order processing fee excluding tax (administrative fee for processing the order). OrderProcessingFeeInclTax: type: integer description: | Order processing fee including tax. OrderLineHandlingFeeExclTax: type: integer description: | Order line handling fee excluding tax (fee per order line for handling). OrderLineHandlingFeeInclTax: type: integer description: | Order line handling fee including tax. ProductHandlingFeeExclTax: type: integer description: | Product handling fee excluding tax (fee for special product handling requirements). ProductHandlingFeeInclTax: type: integer description: | Product handling fee including tax. 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: $ref: '#/components/schemas/InfigoApiAddress' billingAddress: $ref: '#/components/schemas/InfigoApiAddress' 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. InfigoApiRecordOrderKeyValue: type: object properties: Key: type: string description: | The attribute name or identifier. For product attributes, this is the attribute system name. Value: type: string description: | The selected value for this attribute. For predefined options, use the option value or ID. 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). 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: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: | Additional key-value data to store with this line item for integration purposes. CustomTags: $ref: '#/components/schemas/InfigoApiCustomTags' 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'). description: | Represents a single line item in an order recorded through the API. Contains product identification, quantity, job reference, and customization data. InfigoApiRecordOrder: 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**. 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: $ref: '#/components/schemas/InfigoApiAddress' BillingAddress: $ref: '#/components/schemas/InfigoApiAddress' 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. CheckoutAttributes: type: array items: $ref: '#/components/schemas/InfigoApiRecordOrderKeyValue' description: | Checkout attribute values to apply to this order (e.g., gift wrapping, special instructions). ExtraData: type: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: | Additional key-value data to store with the order for integration purposes. CustomTags: $ref: '#/components/schemas/InfigoApiCustomTags' 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. 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: 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: |+ The status that was set at this point in history. 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` - TemplateProductCreated `37` - TemplateProductCreationFailed `38` - ExternalOutputRequested `39` - ExternalOutputJobClosed `40` - ActionRun `41` - MisNotificationRetrigger `46` - ReadyForCollection `49` - Blocked `50` - ArtworkUploaded `51` - MisOrderProcessed `52` - MisAssetsOk `53` - MisAssetsFailed `54` - MisFailed `55` - CustomStatus `56` - CustomStatusHidden `57` - MisAdditionalActionRequired `58` - MisManifested `59` - CopyToHotFolderFailed `60` - CopyToHotFolderSkipped `61` - PartiallyApproved `62` - JobDataDeleted `63` - ValidationFailed `64` - ValidationFinished `65` - ApprovalJobUpdated `66` - MisPartiallyFailed `67` - OutputDeleted `68` - MisShipped `69` - MisSkipped `70` - RequiresFinalize `71` - ShippedQuantity `72` - MisCustomStatus `73` - Cancelled `74` - JobTicketDownloaded `75` - JobTicketVerified `76` - 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 - 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-ms-enum: - 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-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 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. 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. Values: type: array items: $ref: '#/components/schemas/InfigoProductAttributeValue' description: | Selected values for this attribute. 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: object description: | The context type of the variable item (mirrors VariableItem.ContextType) Type: type: object 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: $ref: '#/components/schemas/InfigoApiVariableSetHeader' Items: type: array items: $ref: '#/components/schemas/InfigoApiVariableItem' description: | The list of variable items in the set 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. 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: 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: |+ Current workflow status code. Multiple statuses can be applied simultaneously to track progress. 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` - TemplateProductCreated `37` - TemplateProductCreationFailed `38` - ExternalOutputRequested `39` - ExternalOutputJobClosed `40` - ActionRun `41` - MisNotificationRetrigger `46` - ReadyForCollection `49` - Blocked `50` - ArtworkUploaded `51` - MisOrderProcessed `52` - MisAssetsOk `53` - MisAssetsFailed `54` - MisFailed `55` - CustomStatus `56` - CustomStatusHidden `57` - MisAdditionalActionRequired `58` - MisManifested `59` - CopyToHotFolderFailed `60` - CopyToHotFolderSkipped `61` - PartiallyApproved `62` - JobDataDeleted `63` - ValidationFailed `64` - ValidationFinished `65` - ApprovalJobUpdated `66` - MisPartiallyFailed `67` - OutputDeleted `68` - MisShipped `69` - MisSkipped `70` - RequiresFinalize `71` - ShippedQuantity `72` - MisCustomStatus `73` - Cancelled `74` - JobTicketDownloaded `75` - JobTicketVerified `76` - 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 - 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-ms-enum: - 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-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 IsCancelled: type: boolean description: | Indicates if the item has been cancelled. Type: enum: - 10 - 20 - 30 - 40 - 50 - 70 type: integer description: |+ Product type classification. Possible values: `10` - Normal `20` - Variable `30` - Static `40` - MultiPart `50` - Dynamic `70` - Symphony x-enum-descriptions: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-ms-enum: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-enumNames: - Normal - Variable - Static - MultiPart - Dynamic - Symphony x-enum-varnames: - Normal - Variable - Static - MultiPart - Dynamic - Symphony 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. ThumbnailUrls: type: array items: type: string description: '' nullable: true description: | URLs to thumbnail images for display in lists. Tags: type: array items: type: string description: '' nullable: true description: | Tags assigned to this item for categorization and filtering. Price: type: integer description: | Total price for this line item. 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: integer description: | Unit price including tax. UnitPriceExclTax: type: integer description: | Unit price excluding tax. SubTotalPriceInclTax: type: integer description: | Subtotal (quantity × unit price) including tax. SubTotalPriceExclTax: type: integer description: | Subtotal (quantity × unit price) excluding tax. DiscountAmountInclTax: type: integer description: | Discount amount applied, including tax. DiscountAmountExclTax: type: integer description: | Discount amount applied, excluding tax. Quote: $ref: '#/components/schemas/InfigoApiQuoteEntity' CustomTags: $ref: '#/components/schemas/InfigoApiCustomTags' 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. Group: $ref: '#/components/schemas/InfigoOrderLineItemGroup' MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS integration configuration mappings. ProductAttributes: type: array items: $ref: '#/components/schemas/InfigoProductAttribute' description: | Product attributes and selected values for this item. DeliveryType: type: array items: type: string description: '' nullable: true description: | Delivery types applicable to this item (e.g., 'print', 'digital'). 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. AssetDetails: type: array items: $ref: '#/components/schemas/InfigoAssetDetail' description: | Asset details for multipart products containing download URLs for each asset part. GenericJobFiles: type: array items: $ref: '#/components/schemas/InfigoGenericJobFile' description: | Generic job files from the multipart product working folder. 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. InfigoUpdateNotesRequest: 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. 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. description: | Request model for updating the notes/comments associated with an order line item. Notes can contain production instructions, customer requests, or internal comments. 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. AllowOutOfStockOrders: enum: - 0 - 1 - 2 type: string 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 x-enum-descriptions: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-ms-enum: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enumNames: - NoBackorders - AllowQtyBelow0 - AllowQtyBelow0AndNotifyCustomer x-enum-varnames: - NoBackorders - AllowQtyBelow0 - 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. 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: enum: - 0 - 1 type: string 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 `1` - Packs x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs Price: type: integer description: | The base price for products in this group. May be overridden by tier pricing if HasQuantityBasedPricing is enabled. 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. 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. 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. 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. 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. 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: integer description: | The price adjustment applied to the product's base price when this value is selected. WeightAdjustment: type: integer description: | The weight adjustment applied to the product when this value is selected. WidthAdjustment: type: integer description: | The adjustment applied to the product's width when this value is selected. HeightAdjustment: type: integer description: | The adjustment applied to the product's height when this value is selected. LengthAdjustment: type: integer description: | The adjustment applied to the product's length when this value is selected. PriceAdjustmentType: enum: - 0 - 1 type: string description: |+ The type of price adjustment applied, indicating whether it's an absolute value or a percentage. Possible values: `0` - Percent `1` - Absolute x-enum-descriptions: - Percent - Absolute x-ms-enum: - Percent - Absolute x-enumNames: - Percent - Absolute x-enum-varnames: - Percent - Absolute 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. 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. 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: enum: - 1 - 2 - 3 - 4 - 10 - 20 - 30 - 40 - 50 - 60 - 70 - 999 type: string 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 `2` - RadioList `3` - Checkboxes `4` - TextBox `10` - MultilineTextbox `20` - Datepicker `30` - FileUpload `40` - Info `50` - HtmlSchema `60` - System `70` - Number `999` - Hidden x-enum-descriptions: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden x-ms-enum: - DropdownList - RadioList - Checkboxes - TextBox - MultilineTextbox - Datepicker - FileUpload - Info - HtmlSchema - System - Number - Hidden 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 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: enum: - 0 - 1 type: string description: |+ Indicates the unit for packing. Possible values: `0` - Units `1` - Packs x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs Price: type: integer description: | The price products in a group will inherit. 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. 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. 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. 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. 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: enum: - 0 - 1 type: string description: |+ Indicates the unit for packing. Possible values: `0` - Units `1` - Packs x-enum-descriptions: - Units - Packs x-ms-enum: - Units - Packs x-enumNames: - Units - Packs x-enum-varnames: - Units - Packs Price: type: integer description: | The price products in a group will inherit. 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. 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. 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. 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. description: | Request model for updating an existing product group. Inherits all configuration properties from BaseProductGroupRequest and requires the Id of the group to update. 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 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 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: 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. 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. Quantity: type: integer description: | Order quantity. Must respect product minimum/maximum quantity and pack quantity constraints. Price: type: integer description: | Fixed unit price override. When set, this price is used instead of calculated pricing. nullable: true MarkupType: enum: - 0 - 1 - 2 - 3 type: string description: |+ Type of markup adjustment to apply to pricing. Possible values: `0` - None `1` - Percentage `2` - Absolute `3` - Fixed nullable: true x-enum-descriptions: - None - Percentage - Absolute - Fixed x-ms-enum: - None - Percentage - Absolute - Fixed x-enumNames: - None - Percentage - Absolute - Fixed x-enum-varnames: - None - Percentage - Absolute - Fixed MarkupAmount: type: integer description: | Markup value. Interpretation depends on MarkupType: percentage, fixed amount, or absolute value. nullable: true QuoteTypeId: enum: - 0 - 1 - 2 - 3 type: integer description: |+ The numeric ID representing the quote usage type. Use QuoteType property for enum-based access. Possible values: `0` - Infinite `1` - OneTime `2` - NTimes `3` - Request x-enum-descriptions: - Infinite - OneTime - NTimes - Request x-ms-enum: - Infinite - OneTime - NTimes - Request x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request QuoteType: enum: - 0 - 1 - 2 - 3 type: string description: |+ Controls how many times and by whom the quote can be used. Possible values: `0` - Infinite `1` - OneTime `2` - NTimes `3` - Request x-enum-descriptions: - Infinite - OneTime - NTimes - Request x-ms-enum: - Infinite - OneTime - NTimes - Request x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request 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: $ref: '#/components/schemas/InfigoQuoteMetaData' 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**. CustomTag: type: string description: | Custom tag for filtering and categorization. nullable: true description: | Base model for quote operations containing common pricing and configuration properties. InfigoApiQuoteEdit: type: object properties: Status: enum: - 0 - 10 - 20 - 30 - 40 - 60 type: string description: |+ The updated status of the quote (e.g., Active, Expired). Possible values: `0` - Active `10` - Inactive `20` - Completed `30` - Expired `40` - Archived `60` - Deleted nullable: true x-enum-descriptions: - Active - Inactive - Completed - Expired - Archived - Deleted x-ms-enum: - Active - Inactive - Completed - Expired - Archived - Deleted x-enumNames: - Active - Inactive - Completed - Expired - Archived - Deleted x-enum-varnames: - Active - Inactive - Completed - Expired - Archived - Deleted 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. 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. Quantity: type: integer description: | Order quantity. Must respect product minimum/maximum quantity and pack quantity constraints. Price: type: integer description: | Fixed unit price override. When set, this price is used instead of calculated pricing. nullable: true MarkupType: enum: - 0 - 1 - 2 - 3 type: string description: |+ Type of markup adjustment to apply to pricing. Possible values: `0` - None `1` - Percentage `2` - Absolute `3` - Fixed nullable: true x-enum-descriptions: - None - Percentage - Absolute - Fixed x-ms-enum: - None - Percentage - Absolute - Fixed x-enumNames: - None - Percentage - Absolute - Fixed x-enum-varnames: - None - Percentage - Absolute - Fixed MarkupAmount: type: integer description: | Markup value. Interpretation depends on MarkupType: percentage, fixed amount, or absolute value. nullable: true QuoteTypeId: enum: - 0 - 1 - 2 - 3 type: integer description: |+ The numeric ID representing the quote usage type. Use QuoteType property for enum-based access. Possible values: `0` - Infinite `1` - OneTime `2` - NTimes `3` - Request x-enum-descriptions: - Infinite - OneTime - NTimes - Request x-ms-enum: - Infinite - OneTime - NTimes - Request x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request QuoteType: enum: - 0 - 1 - 2 - 3 type: string description: |+ Controls how many times and by whom the quote can be used. Possible values: `0` - Infinite `1` - OneTime `2` - NTimes `3` - Request x-enum-descriptions: - Infinite - OneTime - NTimes - Request x-ms-enum: - Infinite - OneTime - NTimes - Request x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request 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: $ref: '#/components/schemas/InfigoQuoteMetaData' 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**. 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: 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. MisConfigurations: type: array items: $ref: '#/components/schemas/InfigoApiMisConfig' description: | MIS (Management Information System) configuration settings for this quote. Status: enum: - 0 - 10 - 20 - 30 - 40 - 60 type: string description: |+ The current status of the quote (e.g., Active, Expired, Used). Possible values: `0` - Active `10` - Inactive `20` - Completed `30` - Expired `40` - Archived `60` - Deleted nullable: true x-enum-descriptions: - Active - Inactive - Completed - Expired - Archived - Deleted x-ms-enum: - Active - Inactive - Completed - Expired - Archived - Deleted x-enumNames: - Active - Inactive - Completed - Expired - Archived - Deleted x-enum-varnames: - Active - Inactive - Completed - Expired - Archived - Deleted Id: type: integer description: | Quote ID. Ignored for create operations; required for updates. Name: maxLength: 2000 type: string description: | Display name for the quote. 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. Quantity: type: integer description: | Order quantity. Must respect product minimum/maximum quantity and pack quantity constraints. Price: type: integer description: | Fixed unit price override. When set, this price is used instead of calculated pricing. nullable: true MarkupType: enum: - 0 - 1 - 2 - 3 type: string description: |+ Type of markup adjustment to apply to pricing. Possible values: `0` - None `1` - Percentage `2` - Absolute `3` - Fixed nullable: true x-enum-descriptions: - None - Percentage - Absolute - Fixed x-ms-enum: - None - Percentage - Absolute - Fixed x-enumNames: - None - Percentage - Absolute - Fixed x-enum-varnames: - None - Percentage - Absolute - Fixed MarkupAmount: type: integer description: | Markup value. Interpretation depends on MarkupType: percentage, fixed amount, or absolute value. nullable: true QuoteTypeId: enum: - 0 - 1 - 2 - 3 type: integer description: |+ The numeric ID representing the quote usage type. Use QuoteType property for enum-based access. Possible values: `0` - Infinite `1` - OneTime `2` - NTimes `3` - Request x-enum-descriptions: - Infinite - OneTime - NTimes - Request x-ms-enum: - Infinite - OneTime - NTimes - Request x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request QuoteType: enum: - 0 - 1 - 2 - 3 type: string description: |+ Controls how many times and by whom the quote can be used. Possible values: `0` - Infinite `1` - OneTime `2` - NTimes `3` - Request x-enum-descriptions: - Infinite - OneTime - NTimes - Request x-ms-enum: - Infinite - OneTime - NTimes - Request x-enumNames: - Infinite - OneTime - NTimes - Request x-enum-varnames: - Infinite - OneTime - NTimes - Request 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: $ref: '#/components/schemas/InfigoQuoteMetaData' 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**. 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. 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: $ref: '#/components/schemas/InfigoApiCustomerToken' 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. 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: enum: - 0 - 1 - 2 type: integer description: |+ Numeric SSL provisioning mode of the binding (see AccountAliasSslMode). Possible values: `0` - Unknown `1` - ByInfigo `2` - ByCustomer x-enum-descriptions: - Unknown - ByInfigo - ByCustomer x-ms-enum: - Unknown - ByInfigo - ByCustomer x-enumNames: - Unknown - ByInfigo - ByCustomer x-enum-varnames: - Unknown - ByInfigo - ByCustomer SslMode: type: string description: | Human-readable SSL provisioning mode name. nullable: true BindingTypeId: enum: - 0 - 1 type: integer description: |+ Numeric binding type of the binding (see AccountAliasType). Possible values: `0` - Alias `1` - Domain x-enum-descriptions: - Alias - Domain x-ms-enum: - Alias - Domain x-enumNames: - Alias - Domain x-enum-varnames: - Alias - Domain BindingType: type: string description: | Human-readable binding type name. nullable: true description: | Storefront binding (alias or domain) with its SSL provisioning details. 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. 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. Id: type: integer description: | The unique identifier of the storefront. Name: type: string description: | The display name of the storefront. nullable: true StatusId: enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 type: integer description: |+ The numeric status code indicating the storefront's current operational state. Possible values: `1` - Active `2` - Inactive `3` - Disabled `4` - Deleted `5` - Test `6` - InitializationPending `7` - Initializing `8` - InitializationFailed x-enum-descriptions: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-ms-enum: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-enumNames: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-enum-varnames: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed 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. 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: 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. Options: $ref: '#/components/schemas/InfigoObject' AdvancedOptions: $ref: '#/components/schemas/InfigoObject' 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: 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. 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. 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. 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'] 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. InfigoUpdateStorefrontModel: type: object properties: StatusId: enum: - 1 - 2 - 3 type: string 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 `2` - Inactive `3` - Test nullable: true x-enum-descriptions: - Active - Inactive - Test x-ms-enum: - Active - Inactive - Test x-enumNames: - Active - Inactive - Test x-enum-varnames: - Active - Inactive - Test 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. 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'] 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: enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 type: integer description: |+ The numeric status code indicating the storefront's current operational state. Possible values: `1` - Active `2` - Inactive `3` - Disabled `4` - Deleted `5` - Test `6` - InitializationPending `7` - Initializing `8` - InitializationFailed x-enum-descriptions: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-ms-enum: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-enumNames: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed x-enum-varnames: - Active - Inactive - Disabled - Deleted - Test - InitializationPending - Initializing - InitializationFailed 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. 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: $ref: '#/components/schemas/InfigoApiJobDetails' 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: $ref: '#/components/schemas/InfigoContextInfo' ApiResult: $ref: '#/components/schemas/InfigoApiResultInfo' 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: array items: $ref: '#/components/schemas/InfigoKeyValuePair_2_String_String' description: | Product Attributes (list of name/value pairs). VariableItems: type: array items: $ref: '#/components/schemas/InfigoItem' description: | Variable list (list of variable set name/variable item name/value). 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. 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. 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: Capability description: '' - name: Catalog description: '' - name: Catalog V2 description: '' - name: Customer description: '' - name: Customer V2 description: '' - name: Download description: '' - name: Editor description: '' - name: Editor V2 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