### Retrieve Available Categories Source: https://api-docs.lumaprints.com/doc-420499 Retrieves a list of all available product categories currently being offered by LumaPrints. ```APIDOC ## GET /api/categories ### Description This endpoint retrieves a list of all available product categories currently being offered. ### Method GET ### Endpoint /api/categories ### Parameters #### Query Parameters N/A ### Request Example N/A ### Response #### Success Response (200) - **categories** (array) - A list of available product categories. - **id** (integer) - The unique identifier for the category. - **name** (string) - The name of the category. #### Response Example { "categories": [ { "id": 10001, "name": "Posters" }, { "id": 10002, "name": "Canvas Prints" } ] } ``` -------------------------------- ### Example Order Submission Payload (JSON) Source: https://api-docs.lumaprints.com/doc-420499 This JSON payload demonstrates the structure required for submitting an order. It includes details about the order, recipient, and individual items with their specifications and options. Ensure all fields are correctly populated based on data retrieved from previous API calls. ```json { "externalId": "186898732", "storeId": "818", "shippingMethod": "default", "productionTime": "regular", "recipient": { "firstName": "John", "lastName": "Smith", "addressLine1": "123 Main St.", "addressLine2": "Apt. 123", "city": "New York", "state": "NY", "zipCode": "10001", "country": "US", "phone": "123-456-7890", "company": "ABC Company" }, "orderItems": [ { "externalItemId": "123456789", "subcategoryId": 103001, "quantity": 1, "width": 8, "height": 10, "file": { "imageUrl": "https://www.example.com/image.jpg" }, "orderItemOptions": [ 11, 51, 23 ], "solidColorHexCode": null } ] } ``` -------------------------------- ### API Pricing Response Examples Source: https://api-docs.lumaprints.com/api-10598366 Demonstrates successful and error responses for shipping method pricing requests. Includes examples for standard shipping, freight for oversized packages, and handling incorrect addresses. Responses contain shipping method details like carrier, method, and cost, or informative error messages. ```yaml x-apidog-orders: - message - shippingMethods examples: '1': summary: Success value: message: '' shippingMethods: - carrier: USPS method: usps_ground_advantage cost: 9.35 - carrier: USPS method: usps_priority_mail cost: 10.75 - carrier: FedEx/UPS/GLS method: ground cost: 11.8 - carrier: FedEx/UPS/GLS method: 2_day cost: 25.1 - carrier: FedEx/UPS/GLS method: overnight cost: 32.15 - carrier: USPS method: usps_priority_mail_express cost: 32.55 '3': summary: Freight value: message: >- The package is too large to ship via regular shipping method. Please contact customer service for freight quotation. shippingMethods: - carrier: Freight method: freight cost: 0 '4': summary: Incorrect address value: message: >- Unable to get FedEx rates. This is likely due to an incorrect address. Please check the address and try again. If the address is correct, please contact customer service. shippingMethods: - carrier: USPS method: usps_ground_advantage cost: 9.75 - carrier: USPS method: usps_priority_mail cost: 11.2 - carrier: USPS method: usps_priority_mail_express cost: 33.05 x-apidog-name: Success '406': description: '' content: application/json: schema: type: object properties: statusCode: type: integer message: type: string required: - statusCode - message x-apidog-orders: - statusCode - message example: statusCode: 406 message: >- No shipping method available for the provided address and/or products. headers: {} x-apidog-name: No shipping method available ``` -------------------------------- ### Retrieve Available Product Options of a Subcategory Source: https://api-docs.lumaprints.com/doc-420499 Retrieves all product options available within a specific subcategory. The result will provide a list of option groups with its available corresponding option items. ```APIDOC ## GET /api/subcategories/{subcategoryId}/options ### Description Retrieve all product options available within a specific subcategory. The result will provide a list of option groups with its available corresponding option items. Only one option item per option group is allowed to be included in the order submission payload. The order item options should be entered inside **orderItemOptions** array of each **orderItem** as an integer. :::note If no **orderItemOption** is provided, the default product options for that subcategory will be used. ::: ### Method GET ### Endpoint /api/subcategories/{subcategoryId}/options ### Parameters #### Path Parameters - **subcategoryId** (integer) - Required - The ID of the subcategory to retrieve options for. #### Query Parameters N/A ### Request Example N/A ### Response #### Success Response (200) - **optionGroups** (array) - A list of option groups available for the subcategory. - **id** (integer) - The unique identifier for the option group. - **name** (string) - The name of the option group. - **options** (array) - A list of available option items within the group. - **id** (integer) - The unique identifier for the option item. - **name** (string) - The name of the option item. #### Response Example { "optionGroups": [ { "id": 1, "name": "Paper Type", "options": [ { "id": 11, "name": "Matte" }, { "id": 12, "name": "Glossy" } ] }, { "id": 2, "name": "Size", "options": [ { "id": 51, "name": "8x10" }, { "id": 52, "name": "11x14" } ] } ] } ``` -------------------------------- ### Submit Order Source: https://api-docs.lumaprints.com/doc-420499 Submits an order to LumaPrints using a pre-built payload. Ensure all required fields are populated based on previous API calls. ```APIDOC ## POST /api/orders ### Description Submits an order to LumaPrints using a pre-built payload. Ensure all required fields are populated based on previous API calls. ### Method POST ### Endpoint /api/orders ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body - **externalId** (string) - Required - Unique identifier for the order from your system. - **storeId** (string) - Required - The ID of your store. - **shippingMethod** (string) - Required - The desired shipping method. - **productionTime** (string) - Required - The desired production time. - **recipient** (object) - Required - Information about the recipient. - **firstName** (string) - Required - Recipient's first name. - **lastName** (string) - Required - Recipient's last name. - **addressLine1** (string) - Required - Recipient's street address. - **addressLine2** (string) - Optional - Recipient's address line 2 (e.g., apartment number). - **city** (string) - Required - Recipient's city. - **state** (string) - Required - Recipient's state or province. - **zipCode** (string) - Required - Recipient's zip or postal code. - **country** (string) - Required - Recipient's country (e.g., 'US'). - **phone** (string) - Required - Recipient's phone number. - **company** (string) - Optional - Recipient's company name. - **orderItems** (array) - Required - A list of items in the order. - **externalItemId** (string) - Required - Unique identifier for the item from your system. - **subcategoryId** (integer) - Required - The ID of the subcategory for this item. - **quantity** (integer) - Required - The quantity of this item. - **width** (integer) - Required - The width of the item. - **height** (integer) - Required - The height of the item. - **file** (object) - Required - Information about the image file for the item. - **imageUrl** (string) - Required - URL of the image to be printed. - **orderItemOptions** (array) - Optional - A list of integer IDs for product options. - **solidColorHexCode** (string) - Optional - Hex code for solid color items (if applicable). ### Request Example ```json { "externalId": "186898732", "storeId": "818", "shippingMethod": "default", "productionTime": "regular", "recipient": { "firstName": "John", "lastName": "Smith", "addressLine1": "123 Main St.", "addressLine2": "Apt. 123", "city": "New York", "state": "NY", "zipCode": "10001", "country": "US", "phone": "123-456-7890", "company": "ABC Company" }, "orderItems": [ { "externalItemId": "123456789", "subcategoryId": 103001, "quantity": 1, "width": 8, "height": 10, "file": { "imageUrl": "https://www.example.com/image.jpg" }, "orderItemOptions": [ 11, 51, 23 ], "solidColorHexCode": null } ] } ``` ### Response #### Success Response (200) - **orderId** (string) - The unique identifier for the submitted order. - **status** (string) - The status of the submitted order (e.g., 'Processing'). #### Response Example ```json { "orderId": "ORD-1234567890", "status": "Processing" } ``` #### Error Response (400) - **message** (string) - Description of the error. - **errors** (array) - List of specific validation errors. ``` -------------------------------- ### GET /api/v1/stores Source: https://api-docs.lumaprints.com/api-5384565 Retrieves a list of all standard stores available in your account that can be used for API order creation. ```APIDOC ## GET /api/v1/stores ### Description Retrieve all **Standard Stores** in your account. Only Standard Stores can be used to submit an order under. ### Method GET ### Endpoint /api/v1/stores ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **storeId** (integer) - The unique identifier for the store. - **storeName** (string) - The name of the store. #### Response Example [ { "storeId": 123, "storeName": "Example Store" } ] ``` -------------------------------- ### GET /api/v1/products/subcategories/{subcategoryId}/options Source: https://api-docs.lumaprints.com/api-5384564 Retrieves all options available for a specific subcategory. This endpoint is useful for populating dropdowns or selection lists for product customization. ```APIDOC ## GET /api/v1/products/subcategories/{subcategoryId}/options ### Description Retrieve all options available for a specific subcategory. ### Method GET ### Endpoint /api/v1/products/subcategories/{subcategoryId}/options #### Path Parameters - **subcategoryId** (number) - Required - The subcategory id of the options to retrieve. #### Request Body None ### Response #### Success Response (200) - **optionGroup** (string) - The name of the option group. - **optionGroupItems** (array) - The items in the option group. - **optionId** (number) - The id of the option. - **optionName** (string) - The name of the option. #### Response Example ```json [ { "optionGroup": "Canvas Border", "optionGroupItems": [ { "optionId": 1, "optionName": "Image Wrap" } ] } ] ``` ``` -------------------------------- ### Get Orders API Specification (YAML) Source: https://api-docs.lumaprints.com/api-5384559 This YAML snippet defines the OpenAPI specification for the GET /api/v1/orders endpoint. It details the query parameters such as storeId, page, orderDateStart, and orderDateEnd, along with the complex JSON structure of the expected '200 OK' response, including nested objects for recipient and order items. ```yaml openapi: 3.0.1 info: title: '' description: '' version: 1.0.0 paths: /api/v1/orders: get: summary: Get multiple orders deprecated: false description: Retrieve a list of orders with their details. operationId: OrderController_getOrders tags: - Order - Order parameters: - name: storeId in: query description: The store id of the orders to retrieve. required: true example: 1000 schema: type: number - name: page in: query description: The page number of the orders to retrieve. required: false example: 1 schema: type: number - name: orderDateStart in: query description: The starting order date of orders to retrieve. required: false example: '2023-09-01' schema: type: string - name: orderDateEnd in: query description: The ending order date of orders to retrieve. required: false example: '2023-09-30' schema: type: string responses: '200': description: '' content: application/json: schema: type: object properties: orders: type: array items: type: object properties: orderNumber: type: integer externalId: type: string storeId: type: integer orderDate: type: string email: type: 'null' shippingMethod: type: string productionTime: type: string orderStatus: type: string recipient: type: object properties: firstName: type: string lastName: type: string company: type: 'null' addressLine1: type: string addressLine2: type: string nullable: true city: type: string state: type: string zipCode: type: string country: type: string phone: type: string nullable: true required: - firstName - lastName - company - addressLine1 - city - state - zipCode - country x-apidog-orders: - firstName - lastName - company - addressLine1 - addressLine2 - city - state - zipCode - country - phone orderItems: type: array items: type: object properties: subcategoryId: type: integer externalItemId: type: string quantity: type: integer width: type: integer height: type: integer file: type: object properties: imageUrl: type: string required: - imageUrl x-apidog-orders: - imageUrl orderItemOptions: ``` -------------------------------- ### GET /shipping_methods Source: https://api-docs.lumaprints.com/api-10598366 Retrieves a list of available shipping methods and their associated costs. This endpoint can return different responses based on factors like package size, address validity, and product compatibility. ```APIDOC ## GET /shipping_methods ### Description Retrieves a list of available shipping methods and their associated costs. This endpoint can return different responses based on factors like package size, address validity, and product compatibility. ### Method GET ### Endpoint /shipping_methods ### Parameters #### Query Parameters - **recipient_country** (string) - Required - The country code of the recipient. - **recipient_postal_code** (string) - Required - The postal code of the recipient. - **recipient_state_province** (string) - Optional - The state or province of the recipient. - **recipient_city** (string) - Optional - The city of the recipient. - **recipient_street** (string) - Optional - The street address of the recipient. ### Request Example ``` GET /shipping_methods?recipient_country=US&recipient_postal_code=90210 ``` ### Response #### Success Response (200) - **shippingMethods** (array) - An array of shipping method objects, each containing 'carrier', 'method', and 'cost'. - **message** (string) - An empty string if the request is successful. #### Response Example (Success) ```json { "message": "", "shippingMethods": [ { "carrier": "USPS", "method": "usps_ground_advantage", "cost": 9.35 }, { "carrier": "USPS", "method": "usps_priority_mail", "cost": 10.75 } ] } ``` #### Response Example (Freight) ```json { "message": "The package is too large to ship via regular shipping method. Please contact customer service for freight quotation.", "shippingMethods": [ { "carrier": "Freight", "method": "freight", "cost": 0 } ] } ``` #### Response Example (Incorrect Address) ```json { "message": "Unable to get FedEx rates. This is likely due to an incorrect address. Please check the address and try again. If the address is correct, please contact customer service.", "shippingMethods": [ { "carrier": "USPS", "method": "usps_ground_advantage", "cost": 9.75 } ] } ``` #### Error Response (406) - **statusCode** (integer) - The error status code (e.g., 406). - **message** (string) - A message describing the error, such as 'No shipping method available for the provided address and/or products.' #### Response Example (406) ```json { "statusCode": 406, "message": "No shipping method available for the provided address and/or products." } ``` ``` -------------------------------- ### GET /websites/api-docs_lumaprints/order Source: https://api-docs.lumaprints.com/api-5384559 Retrieves order information based on provided parameters. Supports pagination and filtering. ```APIDOC ## GET /websites/api-docs_lumaprints/order ### Description Retrieves order information. This endpoint allows fetching orders with various filters and pagination options. It returns a list of orders along with pagination details. ### Method GET ### Endpoint /websites/api-docs_lumaprints/order ### Parameters #### Query Parameters - **storeId** (integer) - Required - The ID of the store. - **orderIds** (string) - Optional - A comma-separated list of order IDs to filter by. - **status** (string) - Optional - The status of the orders to filter by. - **pageNumber** (integer) - Optional - The page number for pagination. Defaults to 1. - **pageSize** (integer) - Optional - The number of items per page. Defaults to 10. ### Request Example ``` GET /websites/api-docs_lumaprints/order?storeId=1&orderIds=101,102&status=completed&pageNumber=1&pageSize=10 ``` ### Response #### Success Response (200) - **orders** (array) - List of order objects. - **orderId** (integer) - The ID of the order. - **orderNumber** (string) - The order number. - **storeId** (integer) - The ID of the store. - **createdDate** (string) - The date and time the order was created. - **lastUpdatedDate** (string) - The date and time the order was last updated. - **status** (string) - The current status of the order. - **customerName** (string) - The name of the customer. - **options** (array) - List of options associated with the order. - **optionId** (integer) - The ID of the option. - **optionName** (string) - The name of the option. - **totalOrders** (integer) - Total number of orders. - **currentPage** (integer) - The current page number. - **totalPages** (integer) - The total number of pages. #### Response Example ```json { "orders": [ { "orderId": 123, "orderNumber": "ORD-456", "storeId": 1, "createdDate": "2023-10-27T10:00:00Z", "lastUpdatedDate": "2023-10-27T11:30:00Z", "status": "processing", "customerName": "John Doe", "options": [ { "optionId": 4, "optionName": "Sawtooth Hanger installed" }, { "optionId": 9, "optionName": "None" } ] } ], "totalOrders": 1, "currentPage": 1, "totalPages": 1 } ``` #### Error Response (400) - **statusCode** (integer) - The HTTP status code. - **message** (string) - A description of the error. #### Error Response Example (400) ```json { "statusCode": 400, "message": "Exception message" } ``` #### Error Response (404) - **statusCode** (integer) - The HTTP status code. - **message** (string) - A description of the error. #### Error Response Example (404) ```json { "statusCode": 404, "message": "No orders found for store id # 1." } ``` ``` -------------------------------- ### GET /api/v1/products/categories Source: https://api-docs.lumaprints.com/api-5384562 Retrieve all categories currently being offered by Lumaprints. ```APIDOC ## GET /api/v1/products/categories ### Description Retrieve all categories currently being offered by Lumaprints. ### Method GET ### Endpoint /api/v1/products/categories ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **id** (number) - Category ID - **name** (string) - The category id of the subcategories to retrieve. #### Response Example { "example": "[ { "id": 101, "name": "Canvas" } ]" } ``` -------------------------------- ### GET /websites/api-docs_lumaprints/orders Source: https://api-docs.lumaprints.com/api-5384559 Retrieves a list of orders associated with the store. Supports filtering and pagination. ```APIDOC ## GET /websites/api-docs_lumaprints/orders ### Description Retrieves a paginated list of orders. Allows for filtering by various order attributes. ### Method GET ### Endpoint /websites/api-docs_lumaprints/orders ### Parameters #### Query Parameters - **orderNumber** (string) - Optional - Filters orders by order number. - **externalId** (string) - Optional - Filters orders by external order ID. - **storeId** (string) - Optional - Filters orders by store ID. - **orderDate** (string) - Optional - Filters orders by order date (YYYY-MM-DD). - **orderStatus** (string) - Optional - Filters orders by their current status. - **page** (integer) - Optional - Specifies the page number for pagination. Defaults to 1. - **limit** (integer) - Optional - Specifies the number of items per page. Defaults to 20. ### Request Example ```json { "example": "GET /websites/api-docs_lumaprints/orders?orderStatus=Awaiting Fulfillment&page=1&limit=10" } ``` ### Response #### Success Response (200) - **orders** (array) - An array of order objects. - **orderNumber** (string) - The unique identifier for the order. - **externalId** (string) - The external system's identifier for the order. - **storeId** (string) - The identifier for the store the order belongs to. - **orderDate** (string) - The date and time the order was placed. - **shippingMethod** (string) - The chosen shipping method for the order. - **productionTime** (string) - The estimated production time for the order. - **discountTotal** (number) - The total discount applied to the order. - **shippingTotal** (number) - The total shipping cost for the order. - **taxTotal** (number) - The total tax amount for the order. - **subTotal** (number) - The subtotal cost of the order before taxes and shipping. - **orderTotal** (number) - The final total cost of the order. - **orderStatus** (string) - The current status of the order. - **recipient** (object) - Information about the order recipient. - **firstName** (string) - **lastName** (string) - **addressLine1** (string) - **addressLine2** (string) - Optional - **city** (string) - **state** (string) - **zipCode** (string) - **country** (string) - **phone** (string) - Optional - **company** (string) - Optional - **orderItems** (array) - An array of items included in the order. - **subcategoryId** (integer) - **externalItemId** (string) - **quantity** (integer) - **width** (number) - **height** (number) - **file** (object) - **imageUrl** (string) - The URL of the image file for the item. - **itemCostTotal** (number) - The total cost for this order item. - **orderItemOptions** (array) - Specific options selected for this order item. - **optionId** (integer) - **optionName** (string) - **totalOrders** (integer) - The total number of orders available matching the query. - **currentPage** (integer) - The current page number of the results. - **totalPages** (integer) - The total number of pages available. #### Response Example ```json { "orders": [ { "orderNumber": "10000000001", "externalId": "186898732", "storeId": "818", "orderDate": "2023-08-30T10:19:20.000Z", "shippingMethod": "default", "productionTime": "regular", "discountTotal": 5.99, "shippingTotal": 11.99, "taxTotal": 1.29, "subTotal": 29.99, "orderTotal": 37.28, "orderStatus": "Awaiting Fulfillment", "recipient": { "firstName": "John", "lastName": "Smith", "addressLine1": "123 Main St.", "addressLine2": "Apt. 123", "city": "New York", "state": "NY", "zipCode": "10001", "country": "US", "phone": "123-456-7890", "company": "ABC Company" }, "orderItems": [ { "subcategoryId": 101001, "externalItemId": "unique_item_id", "quantity": 1, "width": 8, "height": 10, "file": { "imageUrl": "https://www.example.com/image.jpg" }, "itemCostTotal": 29.99, "orderItemOptions": [ { "optionId": 1, "optionName": "Image Wrap" } ] } ] } ], "totalOrders": 50, "currentPage": 1, "totalPages": 5 } ``` #### Error Response (400) - **error** (string) - Description of the error. #### Error Response Example ```json { "error": "Invalid date format. Please use YYYY-MM-DD." } ``` ``` -------------------------------- ### Product Configuration Details Source: https://api-docs.lumaprints.com/doc-420501 Retrieve detailed configuration options for different product types. This includes subcategory IDs, available borders, sizing, hardware, frame styles, and paper bleeds. ```APIDOC ## GET /products/config ### Description This endpoint provides a detailed list of product configurations available through the API. It includes subcategory IDs, available options for borders, sizes, hardware, frame styles, and paper bleeds for various product types. ### Method GET ### Endpoint /products/config ### Parameters #### Query Parameters * **productType** (string) - Optional - Filter products by type (e.g., "Rolled Canvas", "Stretched Canvas"). ### Response #### Success Response (200) - **rolledCanvas** (object) - Configuration details for rolled canvas products. - **subcategoryId** (integer) - The unique identifier for the rolled canvas subcategory. - **canvasBorder** (array) - Available options for canvas borders. - **id** (integer) - The ID of the border option. - **name** (string) - The name of the border option. - **default** (boolean) - Indicates if this is the default option. - **rolledCanvasBorderSize** (array) - Available options for rolled canvas border sizes. - **id** (integer) - The ID of the border size option. - **name** (string) - The name of the border size option. - **default** (boolean) - Indicates if this is the default option. - **stretchedCanvas** (array) - Configuration details for stretched canvas products. - **subcategoryId** (integer) - The unique identifier for the stretched canvas subcategory. - **canvasBorder** (array) - Available options for canvas borders. - **canvasHangingHardware** (array) - Available options for canvas hanging hardware. - **125inCanvasHangingHardware** (array) - Available options for 1.25in canvas hanging hardware. - **canvasUnderlayer** (array) - Available options for canvas underlayers. - **framedCanvas** (array) - Configuration details for framed canvas products. - **subcategoryId** (integer) - The unique identifier for the framed canvas subcategory. - **canvasBorder** (array) - Available options for canvas borders. - **framedCanvasHangingHardware** (array) - Available options for framed canvas hanging hardware. - **125inFramedCanvasHangingHardware** (array) - Available options for 1.25in framed canvas hanging hardware. - **frameStyle** (array) - Available options for frame styles. - **canvasUnderlayer** (array) - Available options for canvas underlayers. - **fineArtPaper** (array) - Configuration details for fine art paper products. - **subcategoryId** (integer) - The unique identifier for the fine art paper subcategory. - **fineArtPaperBleed** (array) - Available options for fine art paper bleeds. #### Response Example { "rolledCanvas": { "subcategoryId": 101005, "canvasBorder": [ {"id": 1, "name": "Image Wrap (default)", "default": true}, {"id": 2, "name": "Mirror Wrap", "default": false}, {"id": 3, "name": "Solid Color", "default": false} ], "rolledCanvasBorderSize": [ {"id": 19, "name": "2 inch border plus 1 inch white space (default)", "default": true}, {"id": 20, "name": "1 inch border plus 1 inch white space", "default": false}, {"id": 21, "name": "No border with 1 inch white space", "default": false}, {"id": 22, "name": "Trimmed (No border, No white space)", "default": false} ] }, "stretchedCanvas": [ { "subcategoryId": 101001, "canvasBorder": [...], "canvasHangingHardware": [...], "125inCanvasHangingHardware": [], "canvasUnderlayer": [] }, { "subcategoryId": 101002, "canvasBorder": [...], "canvasHangingHardware": [], "125inCanvasHangingHardware": [...], "canvasUnderlayer": [] }, { "subcategoryId": 101003, "canvasBorder": [...], "canvasHangingHardware": [...], "125inCanvasHangingHardware": [], "canvasUnderlayer": [...] } ], "framedCanvas": [...], "fineArtPaper": [...] } ``` -------------------------------- ### Retrieve Subcategories Under a Category Source: https://api-docs.lumaprints.com/doc-420499 Retrieves all subcategories for a given category ID. The subcategoryId must be provided for each orderItem. ```APIDOC ## GET /api/categories/{categoryId}/subcategories ### Description This endpoint retrieves all subcategories for a given category ID. The subcategoryId must be provided for each orderItem. ### Method GET ### Endpoint /api/categories/{categoryId}/subcategories ### Parameters #### Path Parameters - **categoryId** (integer) - Required - The ID of the category to retrieve subcategories for. #### Query Parameters N/A ### Request Example N/A ### Response #### Success Response (200) - **subcategories** (array) - A list of subcategories for the given category. - **id** (integer) - The unique identifier for the subcategory. - **name** (string) - The name of the subcategory. #### Response Example { "subcategories": [ { "id": 103001, "name": "Matte Posters" }, { "id": 103002, "name": "Glossy Posters" } ] } ``` -------------------------------- ### Product Catalog Source: https://api-docs.lumaprints.com/index Endpoints for retrieving information about available products and their configurations. ```APIDOC ## GET /products/categories ### Description Retrieves a list of all top-level product categories available on Lumaprints. ### Method GET ### Endpoint /products/categories ### Parameters None ### Request Example ``` GET /products/categories ``` ### Response #### Success Response (200) - **categories** (array) - A list of category objects. - **id** (string) - The unique identifier for the category. - **name** (string) - The name of the category (e.g., 'Apparel', 'Home Goods'). #### Response Example ```json { "categories": [ { "id": "cat_apparel", "name": "Apparel" }, { "id": "cat_homedecor", "name": "Home Decor" } ] } ``` ## GET /products/subcategories ### Description Retrieves a list of subcategories under a specified parent category. ### Method GET ### Endpoint /products/subcategories ### Parameters #### Query Parameters - **categoryId** (string) - Required - The ID of the parent category for which to retrieve subcategories. ### Request Example ``` GET /products/subcategories?categoryId=cat_apparel ``` ### Response #### Success Response (200) - **subcategories** (array) - A list of subcategory objects. - **id** (string) - The unique identifier for the subcategory. - **name** (string) - The name of the subcategory (e.g., 'T-shirts', 'Hoodies'). - **categoryId** (string) - The ID of the parent category. #### Response Example ```json { "subcategories": [ { "id": "sub_tshirts", "name": "T-shirts", "categoryId": "cat_apparel" }, { "id": "sub_hoodies", "name": "Hoodies", "categoryId": "cat_apparel" } ] } ``` ## GET /products/options ### Description Retrieves all available configuration options for a given subcategory. These options define variations like size, color, material, etc. ### Method GET ### Endpoint /products/options ### Parameters #### Query Parameters - **subcategoryId** (string) - Required - The ID of the subcategory for which to retrieve options. ### Request Example ``` GET /products/options?subcategoryId=sub_tshirts ``` ### Response #### Success Response (200) - **options** (array) - A list of available options for the subcategory. - **option_name** (string) - The name of the option (e.g., 'Color', 'Size'). - **values** (array) - A list of possible values for this option. - **value** (string) - The specific value (e.g., 'Black', 'Large'). - **sku_suffix** (string) - A suffix used to construct the full SKU for this specific variant. #### Response Example ```json { "options": [ { "option_name": "Color", "values": [ { "value": "Black", "sku_suffix": "BLK" }, { "value": "White", "sku_suffix": "WHT" } ] }, { "option_name": "Size", "values": [ { "value": "Medium", "sku_suffix": "M" }, { "value": "Large", "sku_suffix": "L" } ] } ] } ``` ``` -------------------------------- ### GET /api/v1/shipments/{orderNumber} Source: https://api-docs.lumaprints.com/api-5384566 Retrieve all shipments associated with the order. This endpoint allows you to get a list of shipments, including carrier, tracking information, and items for a specific order. ```APIDOC ## GET /api/v1/shipments/{orderNumber} ### Description Retrieve all shipments associated with the order. This endpoint allows you to get a list of shipments, including carrier, tracking information, and items for a specific order. ### Method GET ### Endpoint `/api/v1/shipments/{orderNumber}` ### Parameters #### Path Parameters - **orderNumber** (number) - Required - The order number of the shipments to retrieve. ### Request Example (No request body for GET requests) ### Response #### Success Response (200) - **orderNumber** (number) - The order number of the shipments to retrieve. - **shipments** (array) - The list of shipments for the order. - **carrier** (string) - The name of the carrier. - **shippingMethod** (string) - The name of the shipping method. - **trackingNumber** (string) - The tracking number of the shipment. - **shipmentDate** (string) - The date of the shipment. - **shipmentItems** (array) - The items included in the shipment. - **externalItemId** (string) - The external line item id associated with the shipment. - **product** (string) - The name of the product. - **quantity** (number) - The quantity of items with the same externalItemId within the shipment. #### Response Example ```json { "orderNumber": 1000000000, "shipments": [ { "carrier": "FedEx", "shippingMethod": "FedEx Ground", "trackingNumber": "392964503590", "shipmentDate": "2023-12-01", "shipmentItems": [ { "externalItemId": "1", "product": "8x10 0.75in Stretched Canvas", "quantity": 1 } ] } ] } ``` #### Error Response (404) - **statusCode** (integer) - The status code of the error. - **message** (string) - A message describing the error. #### Error Response Example ```json { "statusCode": 404, "message": "Order not found!" } ``` ``` -------------------------------- ### OpenAPI Specification for Get Order Source: https://api-docs.lumaprints.com/api-5384558 This OpenAPI 3.0.1 specification defines the GET endpoint for retrieving order details by order number. It specifies the request parameters, including the orderNumber, and the structure of the JSON response, which includes comprehensive order information such as recipient details and order items. ```yaml openapi: 3.0.1 info: title: '' description: '' version: 1.0.0 paths: /api/v1/orders/{orderNumber}: get: summary: Get an order deprecated: false description: Retrieve an Order's details. operationId: OrderController_getOrder tags: - Order - Order parameters: - name: orderNumber in: path description: The order number of the order to retrieve. required: true example: 1000000000 schema: type: number responses: '200': description: '' content: application/json: schema: type: object properties: orderNumber: type: integer externalId: type: string storeId: type: integer orderDate: type: string email: type: 'null' shippingMethod: type: string productionTime: type: string discountTotal: type: integer shippingTotal: type: number taxTotal: type: number subTotal: type: number orderTotal: type: number orderStatus: type: string recipient: type: object properties: firstName: type: string lastName: type: string company: type: 'null' addressLine1: type: string addressLine2: type: string nullable: true city: type: string state: type: string zipCode: type: string country: type: string phone: type: string nullable: true required: - firstName - lastName - company - addressLine1 - city - state - zipCode - country x-apidog-orders: - firstName - lastName - company - addressLine1 - addressLine2 - city - state - zipCode - country - phone orderItems: type: array items: type: object properties: subcategoryId: type: integer externalItemId: type: string quantity: type: integer width: type: integer height: type: integer file: type: object properties: imageUrl: type: string required: - imageUrl x-apidog-orders: - imageUrl itemCostTotal: type: number orderItemOptions: type: array items: type: object properties: optionId: type: integer optionName: type: string required: - optionId - optionName x-apidog-orders: - optionId - optionName x-apidog-orders: - subcategoryId - externalItemId - quantity - width - height - file - itemCostTotal - orderItemOptions ```