Resources
Resource Types & Functionality
34 min
📦 cartons in order to successfully cartonize with the paccurate api, users must provide both items to pack and cartons (containers of any type really) to pack those items into typically this involves connecting to packaging table within their systems of record before making the api call, but resources enables users to manage their cartons within the paccurate platform some scenarios that may warrant this approach api is being called from web client that may not have access to wms data wms carton list not representative of desired cartons 3pl grouping carton collections by customer combining different cartons list on demand ➕ creating a cartons resource to create a custom carton resource, log into manage paccurate io http //manage paccurate io and navigate to your plan’s resources page from the add dropdown, select “cartons” screenshot 2025 02 28 at 3 08 57 pm png select the type of file that contains your cartons — we support csv or xlsx (be sure to label your sheet cartons in excel) screenshot 2025 02 28 at 3 10 28 pm png once uploaded, click “next” button screenshot 2025 02 28 at 3 11 31 pm png to complete the resource creation, you must complete the field mapping step and add a description and tags the map fields button allows you to assign the correct column from the uploaded spreadsheet to the carton’s required properties with these properties mapped, you can search and sort the file and confirm the data looks correct click “create resource,” and you are good to go — the resource has been successfully created screenshot 2025 02 28 at 3 22 07 pm pngscreenshot 2025 02 28 at 3 24 36 pm png from the card, you can view, download, duplicate, or archive the resource ✍🏻 updating a cartons resource to update the data in the resource, click view resource to open the modal screenshot 2025 02 28 at 3 42 12 pm png in the top right of the modal, select the type of file you would like to use to replace the data — again, this can be csv or xlsx map the fields on the new file, then click save your resource is now updated this “view” modal also allows you to export the resource as a json list of boxes or a flat csv file to the right of the export dropdown is a button that allows you to show optional data columns in the table ⚡ using the cartons resource in an api request now that you’ve successfully created a cartons resource, they can be used as part of your api requests as covered in anatomy of a pack request https //www notion so/getting started with paccurate anatomy of a pack request 30c4c54a0f0f4140bccf1cacbdf22540?pvs=21 , a successful cartonization request requires the inclusion of boxtypes or boxes for items to pack into this remains true! but now, we can use a reference to your resource instead of raw json code to fulfill the cartons requirement the only thing that the api request needs to know is the slug that is associated with the resource the resource slug is at the bottom of the resource card — click the purple copy icon to copy the slug to your clipboard; it will have a value such as cartons master list cartons 168 — a name associated with the file you uploaded, with an id at the end the slug is then added to the api request as part of the resources array attribute { 	"itemsets" \[ ], 	"packresources" \[ 	 "cartons master list cartons 168" 	] } the resources list can contain any resource type that you are trying to include alongside the items that need to be cartonized — that can be multiple carton resources (they will join together), rate information, or advanced packing rules that need to apply to the implementation if you include a boxtypes list in your request along with the resources, the boxtypes in the initial payload will override any cartons coming from your resource if we include the full item data in the example above, we get a request that looks like { "itemsets" \[ { "refid" 0, "weight" 1, "dimensions" { "x" 3, "y" 14, "z" 18 }, "quantity" 6, "name" "nylon", "sequence" "shirt" } ], "packresources" \["cartons master list cartons 168"] } sending that to our api, we get a pack that looks like this https //inspector manage dev paccurate io/config editor/?packuuid=fd192f970ed4fe981e45117c8410827fc5a96e328020c430dc8619b3507d60e882a18bfd8b5f5cafa44a9dfe4758712f950796bdfc4b7673c706dd526b9c8bbb screenshot of the response from pacapi, visualized in inspector screenshot of the response from pacapi, visualized in inspector while our order items look like what we sent in our payload, we can see that it chose one of 16 containers which were saved in our resource cartons resource referenced in the request — note the 20x18x12 carton that wound up being selected to cartonize cartons resource referenced in the request — note the 20x18x12 carton that wound up being selected to cartonize screenshot 2025 03 03 at 4 39 35 pm png as we can see in the raw tab of our inspector tool, the resources property is the same as what was requested in our initial request, and we’ve also got a reference to the time where the resource was last updated why are these valuable? it enables users and support staff to understand what version of a resource was used at the time of a pack request this is important because it enables references to resources to remain the same while the content of the resources change in the request above, our order was cartonized into 2 boxes named “20x18x12” — what if we realized this name was no longer in sync with our erp system that needs to save the response properly, and we also wanted to remove inaccurate box costs? instead of creating a new carton resource with the updated names, we can just update our active resource screenshot 2025 03 03 at 4 57 09 pm png screenshot 2025 03 03 at 5 13 50 pm png using the same json as the first request, we get a different label on our packed box https //inspector manage dev paccurate io/config editor/?packuuid=e229faff7cd910f517ad06b47fe799ae63001803b1925ae886102a592e1caa91a93931471f6864c851e41bdb699b0a0610a66474b1c62bf1a21a903ff0863b16 , one that matches our change in the excel file — our “cost” now reflects the volume of the box as opposed to the erroneous 2 when we first ran the request screenshot 2025 03 04 at 9 25 26 am png volume utilization is better across both boxes as well — 70% and 66 7% as opposed to 70 and 30% taking a look at the bottom of the raw tab again, we can see that while the resource is the same, it now has a different last updated value from when the request was sent earlier screenshot 2025 03 04 at 9 35 05 am png in conclusion, using resources to pull cartons into your pacapi requests enables you to easily configure and control your cartonization integration, removing potential technical barriers to success and speeding up your time to value you’re able to go from an api request that looks like this { "itemsets" \[ { "name" "nylon", "weight" 1, "sequence" "shirt", "dimensions" { "x" 3, "y" 14, "z" 18 }, "quantity" 6 } ], "boxtypes" \[ { "name" "28x15x12", "weightmax" 66, "dimensions" { "x" 15, "y" 28, "z" 12 } }, { "name" "20x18x12 erp", "weightmax" 66, "dimensions" { "x" 18, "y" 20, "z" 12 } }, { "name" "30x9x12", "weightmax" 66, "dimensions" { "x" 9, "y" 30, "z" 12 } }, { "name" "15x15x12", "weightmax" 66, "dimensions" { "x" 13, "y" 15, "z" 15 } }, { "name" "22 x 6 x 15", "weightmax" 66, "dimensions" { "x" 6 5, "y" 22 5, "z" 15 5 } }, { "name" "12x12x12", "weightmax" 66, "dimensions" { "x" 12, "y" 12, "z" 12 } }, { "name" "15x15x6", "weightmax" 66, "dimensions" { "x" 15, "y" 15, "z" 6 } }, { "name" "12x9x9", "weightmax" 66, "dimensions" { "x" 9, "y" 12, "z" 9 } }, { "name" "16x9x3", "weightmax" 66, "dimensions" { "x" 9, "y" 16, "z" 3 } }, { "name" "8x8x6", "weightmax" 66, "dimensions" { "x" 8, "y" 8, "z" 6 } } ] } to one that looks like this { "itemsets" \[ { "name" "nylon", "weight" 1, "sequence" "shirt", "dimensions" { "x" 3, "y" 14, "z" 18 }, "quantity" 6 } ], "packresources" \[ "cartons master list cartons 168" ] } without losing any functionality 🎛️ rules & settings paccurate’s api is robust — we can handle stacking, nesting, exclusion from boxes & items, fragility, and more cartonization goals can modified based on customer use cases how many boxes can be packed? are we optimizing for cost? do items need to be sequenced? all of these requirements can be handled by our api, but often the erp, wms, or tms connecting to paccurate is limited in where to store these rules and settings resources can help overcoming these limitations ➕ creating a rules & settings resource to create a custom carton resource, log into manage paccurate io http //manage paccurate io and navigate to your plan’s resources page from the add dropdown, select “rules & settings ” new rules / settings modal new rules / settings modal with the modal open, select the rule you are trying to create each rule type has its own editor — but first you must select the subject of the rule the items it will be applied to screenshot 2025 04 01 at 4 58 53 pm png screenshot 2025 04 01 at 5 03 46 pm png there are three ways of defining a rule’s subject specifying a single item by refid or sequence property matching an item based on the contents of its name or sequence property matching an item based on what its name or sequence does not contain ⚠️ this applies to all rules with the exception of exclude all ✍🏻 editing rules toggling “dev mode” will expose the json that is written by the rules editor this text field is editable as well, and any changes made to the json will be reflected in the ui when it is toggled off “dev mode” state “dev mode” state collapsed list of rules collapsed list of rules we’ll leave “replace original” disabled since we do not need to force the dimensional overrides — they will only be used when it provides a better pack click “confirm”, and we’re returned to the rules list rule subject interface and alternate dimensions ui rule subject interface and alternate dimensions ui with these changes input, we are ready to save our rule here is what it looks like in full dimensions scale changes dimensions scale changes this rule can get complex, but what we’re trying to do is adjust the item’s dimensions based on what is sent in the request in the screenshot above, we’ve selected “modify original” to achieve this with this selected, we can either scale the initial dimensional values, or translate the values by a fixed amount (for example, reduce the length by 3) in our case, we want to make the item 30% shorter, so we’ve input 30 in the length field we can also increase the height by 10% to accommodate the material being folded alternate dimensions options editor alternate dimensions options editor once the rule’s subject has been defined, you can then configure its behavior let’s take a look at how to configure the alternate dimensions rule ⚙️ adding settings before we save this rule, let’s add an additional setting a box type choice goal we want to set it to “lowest cost” because in this scenario we know we’re going to be using some custom rates to add a setting, click the “settings” tab above the rules list next, click the + icon next on the “carton type setup” section, and select “box type choice goal” settings screen with “carton type setup” submenu active settings screen with “carton type setup” submenu active box type choice goal setting with “lowest cost” selected box type choice goal setting with “lowest cost” selected make sure the “lowest cost” option is selected 💾 saving rules & settings click “create resource” the new resource will be saved, and the card will show up in the rules and settings section of your resources homepage click the card to open the rules resource and make any changes you may need screenshot 2025 04 01 at 5 30 57 pm png ⚡ using rules & settings in a request to use this resource, include it in a json payload like below, and send it to https //resources api paccurate io https //resources api paccurate io (don’t forget your authorization headers!) { "itemsets" \[ { "name" "nylon", "weight" 1, "sequence" "shirt", "dimensions" { "x" 3, "y" 14, "z" 18 }, "quantity" 6 } ], "packresources" \[ "alternate dimensions lowest cost foldable apparel 40" 	 ] } congratulations, you’ve saved an it team a bunch of time and energy! 📊 rates paccurate’s api is cost aware, meaning it compares the “cost” of any possible pack configuration and will return the lowest cost version of the packed items enabling cost awareness works best when a zone specific rate card (a list of weights with a corresponding list of rates for each weight) is sent along with each request with resources, paccurate is able to store multiple custom rate tables in one resource, and the resource enabled endpoint will assign the appropriate rates and weights based on the requested carrier service and zone ➕ creating a rates resource to create a rate table resource, log into manage paccurate io http //manage paccurate io and navigate to your plan’s resources page from the add dropdown, select “rate list & table ” create rate modal create rate modal after filling out the properties on the form (all fields are required except for “max weight”, you have two options for entering your table data paste the complete table data directly copy your csv, excel, or text data and paste it into the form the system will automatically parse the code accordingly paste in a weight and at least one zone column provide the weight along with at least one zone column to enable the proper parsing of the table data (you will get an error if you do not provide at least two columns) whether you paste the complete table directly or just the weight and zone column, make sure that the first row represents the header the first column should always represent the weight, while zones can either be just a number or prefixed with the word “zone” followed by a number when you’re done, click “add to table” to generate a table preview of the pasted data (the table only shows the first 5 rows of the pasted data) relationship between pasted data (txt file) and the created table relationship between pasted data (txt file) and the created table ⚠️ edge cases if you paste more values for the data rows than the header, like in the example below zone 4,zone 5 1,2,4 2,3,5 the system will treat the first column (”zone 4”) as the weight column, and the remaining columns as zone columns consequently, the output table will display an empty string as the header for the third column screenshot 2025 04 01 at 5 39 50 pm png ✍🏻 editing the rates resource after creating the preview, you have two options continue adding more columns add a new column if the pasted zone doesn't already exist, a new column will be created update an existing column if the zone already exists, the existing column will be updated with the pasted data edit or delete existing columns to delete an existing column, simply hover over the column and click the x icon screenshot 2025 04 01 at 6 30 33 pm png to edit a column, simply click on it the column will be highlighted and its data will populate the textbox, allowing you to update both the header and the data rows once you have finished editing, click ”add to table” to apply the changes if you change the header to one that already exists, the current column will be merged with the existing column, and its data will be updated accordingly additionally, the weight column will always default to the weight header regardless of any changes you make avoid updating the weight header with a number or with text that includes "zone ” 💡 tip to exit editing mode, simply click the column again screen recording 2025 04 01 at 6 15 07 pm gif once you’re done making changes, click the confirm button to view the created table you can toggle the table view by clicking the arrow to the left of the carrier shipper name this will display the table preview along with the edit and delete icons screenshot 2025 04 01 at 6 35 19 pm png clicking the edit icon brings up the same screen as the initial create view, allowing you to modify your table additionally, you can expand the preview table by clicking the arrow to the right of “quick preview” to further edit or delete the columns if you want to add additional tables, you can click the “create new table” button note that you cannot use both an existing carrier and shipper name together you can use an existing carrier name with a different shipper name, but if you use an existing shipper name with a different carrier name, the system will update the existing shipper data with the new information ⚡ using rates in a request with the rates resource, users can reference specific services and zones with a shorthand in their request this requires two critical pieces to be included in the request the resources array, including the reference to the rates resource a boxtypedefaults object including a service & zone that exists in the resource screenshot 2025 04 24 at 4 18 45 pm png the rates resource in the screenshot above includes 3 services for the defined carrier (fedex) smartpost , ground , and homedelivery here’s an example payload using the homedelivery service and including the rates resource — it’s slug is demo table multi service 871 { "itemsets" \[ { "refid" 0, "weight" 1, "dimensions" { "x" 3, "y" 14, "z" 18 }, "quantity" 3, "name" "nylon", "sequence" "shirt" } ], "boxtypedefaults" { "ratetable" {"service" "homedelivery", "zone" "2"} }, "packresources" \[ 	 "cartons master list cartons 168", 	 "demo table multi service 871" 	 ] } in our api response, we can see that the returned rate table is in fact our homedelivery service and it includes the appropriate rates here https //inspector manage dev paccurate io/config editor/?packuuid=9a80bdc03ca514ad35039434d6ef1284fab80a51a21af87949375e616cbb2e0d58c065a79e413978a0524507be8a50b2bbf9452acb9944015bd1993dcbc4f582 is the api result for this request — it cost $8 32 to pack this box screenshot 2025 04 24 at 4 20 18 pm png if we change the service in the api payload to “smartpost”, the same packing configuration https //inspector manage dev paccurate io/config editor/?packuuid=1c9d4ac8e7b27b8f189d0b8a21f9776682fa9a218d21219447b49760ea19fc91042ad5be8a2be40ee00c19d7e3749d666c84c1525a1eaa55d81ef48f3d8eb2c3 costs $11 53 screenshot 2025 04 24 at 4 20 54 pm png screenshot 2025 04 24 at 4 21 03 pm png rates resources are agnostic to carrier names — you can include as many carrier/service combinations as needed one rates resource and then address different services/zones on a per request basis rates are a powerful albeit complex resource type it’s best to start simple and expand, testing as your comfort level expands ⚙️ options (advanced) what is an options resource? the options resource type is for users who have actively run pacsimulate jobs, or have worked alongside the paccurate team to build sophisticated api configurations an options file is expressed in json and can contain any part of the api spec — rules, settings, a cartons, list, box type generators and more 💡 when to use an options resource handling advanced mailer or on demand packaging, or if you are only able to send a single resource reference due to it constraints and need to combine things like a rate table, rules/settings, and a box type generator ➕ creating an options resource to create a rate table resource, log into manage paccurate io http //manage paccurate io and navigate to your plan’s resources page from the add dropdown, select “options” screenshot 2025 04 04 at 2 47 56 pm png fill out the resource’s metadata — name, description, and tags next, select the filetype typically this will be json, but we do support xls (data should be in cell a1 of tab named options as well as yaml screenshot 2025 04 04 at 2 50 11 pm png drop the file into the file upload area, or click the the file icon to trigger a file select window with the file added to the modal, click “save option”