- feat: replace treepoem/ghostscript by zint/pyzint for barcode generation
- chore: update Dockerfiles metadata
- chore: update Dockerfiles away from deprecated env vars declaration
- chore: handle oss install with dockerless
- fix: dashboard runtime environment variables issues
- feat(WIP): introduce new customizable dashboard with a new stack shacdn|tailwind|radix|tanstack
- feat: Introduce advanced Karrio CLI features with API connectivity and data query
- feat: make rate limit configurable using env vars (#589)
- fix:
usps
API proxy and payment authentication (#709) - fix: version freeze git reference for
dockerless
install (#721) - fix: invalid reference useSystemConnection causing permission error (#706)
- fix: Consolidate
fedex
duties payor definition with missing account number with live tests (#718, #697) - fix: issue with
shipping_date
andshipment_date
being set to None and options getting overridden
- fix:
fedex
payor info data mapping #718 - fix: easyship required defaults and max contact name size
- feat: switch export line item description to description (
dhl express
) @DarkSwoop
- feat: use actual city as fallback value for seko shipment state addresses
- fix: fedex payment account numbers assignments
- deps: add back pycairo as optional dependency on macos
- fix: missing dependencies in the build process
- feat: consolidate SEKO printlabel for EU shipments
- feat: skip customs declaration for sapient when not international shipment
- feat: add DAP incoterms
- feat: make start-server script port configurable through env var
- deps: add pycairo as dependency for document generation Macos compatibility
- feat: add support for additional seko_reference_*
- feat: add rate_provider mapping to sapient integration and refactor sapient_carrier_code references to avoid clash with carrier_code reserved field
- feat: Introduce document template options field for pre-rendering optimization
- fix: shipment parsing when label generation fails but shipment creation succeeds
- hotfix:
ups
rate service charge parsing regression
- fix:
ups
product origin country code mapping - fix:
ups
ups_worldwide_express
product code mapping
- feat: Add
system_usage
to basegraphql
types
- remove deprecated
karrio.server.admin
module from OSS build
- fix:
ups
EU rate code parsing using context origin
- feat: Add
Duplicate Shipment
action to shipment menu (#680)
- fix:
ups
TotalCharge parsing fornegotiated_rates
(#703)
- feat: Add
service_level
tosapient
carrier connection settings
- feat: Add fallback values for
easyship
rate requestparcels.items
- fix:
ups
TotalCharge parsing fornegotiated_rates
- remove
strawberry-graphql-django
dependency as it is not fully integrate for the value it is supposed to provide
- feat: Easyship integration (#569)
- feat: Add
pickup
support forfedex
JSON API integration (#690) - feat: introduce
shipping_date
field ofdatetime
type and deprecateshipment_date
ofdate
type to capture time for carriers that expect full futuredatetime
ship date values. - feat: Add dhl_express content description for insurance (#694)
- fix:
eshipper
carrier and services mapping (#675) - fix:
canadapost
non-uniq shipment group_id across account (#679) - fix:
fedex_ws
pickup request encoding (#690) - fix: organization GraphQL queries running on OSS build (#687)
- fix: Nextjs cache build issue (#688)
- hotfix:
canadapost
group_id invalid string format #686
- fix:
canadapost
shipment identifier data mapping (#683)
- devx: improve karrio docker container startup with healthchecks #684
- feat: Add field to unified class for future support of message level
- chore: Add tests for
UPS
EU rates parsing - chore: make ups upper case for uniform charges details
- chore: use localhost address for default
NEXT_PUBLIC_KARRIO_PUBLIC_URL
during build
- refactor: #673
- feat: bootstrap
seko
carrier extension - feat: prepare
seko
requests schemas - feat: test drive
seko
request mapper implementation - feat: compute next business
datetime
for sapient shipment_date
- Fixes https://github.com/karrioapi/karrio/issues/667[: UPS ReferenceNumber changes](https://github.com/karrioapi/karrio/commit/4f26746ec34fd0bb41a6cef08def822eb21f3391)
Special thanks to @mazzarito
-feat: Add GraphQL queries and typings for apps
- refactor: dashboard extracting non-routing code and dependencies to
@karrio/core
package - refactor: dashboard from Nextjs page router to app router
Important
Thank you for your patience as I go through a time of workload adjustment between my new role and the maintenance of Karrio. Read my community announcement here
- refactor: dashboard extracting non-routing code and dependencies to
@karrio/core
package - refactor: dashboard from Nextjs page router to app router
- feat: apply utc timezone to sapient integration ship date
- feat: add support for FedEx scan events multi-datetime formats
- feat: handle shipment_date update when passed upstream instead of per extension implementations
- feat: add
karrio.lib
to document template context - feat: Disable "note" alert types as previously done in
fedex_ws
#638 - feat: rename legacy USPS extensions to
usps_wt
(for USPS Web Tools) - feat: Carrier Connection REST API #582
- reat: [carrier-integration | interoperability] SAPIENT #633
- feat: FedEx Tracking should be giving us the
signed_by
#635 - feat: USPS REST API integration
- feat: Handle defaulting size units to LB/IN for UPS US rates and shipment requests
- feat: add a description field to parcel forms
- feat: add missing per package description data mapping to
ups
extension - feat: cherry-pick
hay_post
integration - feat: Finalize
eShipper
new API integration - feat: add back FedEx tracking POD image
- feat: add workspace config for automatically applying insurance to full package value
- feat: add support for metadata link rendering
- feat: Add standardized flag for all supported carriers
- feat: expose return_address to GraphQL and API specs and generated clients
- feat: Add return address to create label forms across the dashboard
- Introduce the
return_address
field - feat: Add Django admin editor for document templates
- feat: Add support for env config of Redis username and password (#564)
- feat: Bootstrap new
eshipper
API extension - feat: Make cache available to all connection settings
- feat: add
carrier_id
to thePOST /v1/proxy/shipping/{carrier_name}/cancel
to allow precise carrier account selection for the operation. #590 - feat: Enhance Documents REST API with support for template management CRUD operations and generic document generator API in addition to Trade API upload API. #581
- fix:
eshipper
cancel shipment request, and add special cancel error handling for undocumented errors - fix:
eshipper
datetime
requirement for ship date and update tests for order cancellation - fix: tracker filter to return tracker if already existent
- fix:
fedex
tracking estimated delivery date response parsing - fix: migration defaulting to hardcoded
eshipper
forcarrier_name
- fix: sapient shipment cancellation response parsing
- Fix FedEx multi shipment creating multiple of packages
- fix: invalid language and lang field default state assignment
- fix: eshipper carrier data parsing for both rating and shipping response data
- fix: debug and consolidate eshipper shipment cancellation with live tests
- fix: connection data parsing when saving tracing records
- feat: handle fedex max contact and company name
- fix:
usps
API token missing scope - fix: eShipper server URL for production mode and label problem
- hotfix: add fallback values to SAPIENT shipment request
- fix: consolidate SAPIENT integration with live tests
- fix:
eshipper
dimension parsing requirements - hot-fix(
2024.6-rc24
): migration race condition issue #645 - clean up: remaining usage of deprecated
providers.MODELS
dynamic object created by old carrier settings models - hot-fix for
2024.6-rc24
: regression on carrier configurationtest_mode
assignment for carrier connection registration in live mode. - fix: Incorrect Item Quantity Distribution in Multi-Package Orders #634
- fix:
eshipper
database migration leaving orphan carrier data - fix: #628
- fix: authenticated requests race condition issues
- fix: Dashboard environment variables configuration breaking change
- fix: dashboard Nextjs undefined env var caused by deprecated environment Configs
- fix: shipment sample fallback on document generation module
- fix: cancel shipment
carrier_id
check - fix: UPS Saturday delivery option flag mapping
- fix: FedEx variableOptions fallback value to None
- fix: regression on FedEx shipping options parsing
- fix: regression of quicktype schema type generation commands
- fix: FedEx
"variableOptions"
format issue - fix(2 birds): cache declaration leftovers and tracing record saving failing due to cache handle
- docs: Update API specs and generate API docs
- docs: update API docs with new return_address support
- docs: setup
docusaurus
docusaurus-openapi-docs
plugin - docs: Improve generated OpenAPI with annotation
- chore: deprecate apps module from OSS build
- chore: handle
eshipper
credential transfer from username|password to principal|credential - chore: fix generic carrier configration parsing
- chore: fix docs generation and docusaurus dependencies
- chore: improve enum typing for lang and language configs for connectors and handle default values for carrier registration modal
- refactor: carrier proxies to only be generated for django admin and prevent migration requirement
- chore: update create_label component formatting
- chore: update API tests for the return_address field
- chore: update unit tests for the new return_address field
- chore: update Readme dashboard illustration
- chore: Apply minimal query optimization
- chore: Prevent backup file creation from
sed
command - chore: investigate Admin user creation issue:
/admin/user_accounts trying to add a new user account does not get added
- feat: add daytime precision to tracking event time format (
AM/PM
) - feat: remove deprecated
eshipper_xml
extension - Rename legacy extension
eshiper
->eshipper_xml
to prepare for the upgrade to the new eShipper API - The Electronic Trade Document upload API was changed from
POST /v1/documents
toPOST /v1/documents/uploads
- The
GET /v1/documents
endpoint returning ETD upload records is nowGET /v1/documents/uploads
Caution
Please make sure to update your deployment environment variables for the dashboard when upgrading to rc10 +
Check out the docs here and the following files to make sure you have the right environment variables especially if you are not using our public docker-compose files and have a custom deployment or hosted on something live Vercel.
- Dashboard env config
- Local dev docker-compose.yml
- Hobby docker-compose.hobby.yml
Special thanks to contributors: @ChrisNolan (🎉 first contribution), @jacobshilitz and @david-kocharyan
- fix: FedEx duplicate tracking issue trackReplys selection
- fix tracking document view conflicting name causing crash when a tracker has signature or delivery image
- feat: Identify and ensure all required FedEx Intl data are provided according to sandbox samples
- feat(SDK): Introduce computed
total_value
fields for Products, Package and Packages unit decorators
- fix: background tracking potentially None value and save related tracing records
- feat(TGE): Add support for Multi-piece shipment
- fix(#551): Invalid customs commodities assignment
- feat: Add support for custom app website URL for white labelled tenant
- feat: Apply workspace config as default tax_ids to shipper address forms
- fix(USPS): phone number parser to handle None values# Karrio patch 2024.2.12
- fix(USPS*): missing required PASSWORD request properties# Karrio patch 2024.2.11
- fix: Missing required NumberIssuerCountryCode for DHL Express
- fix(USPS): shipment request invalid data formatting
- feat: Add customs declaration to
fedex
rate request for international shipments# Karrio patch 2024.2.9
- fix: TGE missing item description fallback value
- fix: Fedex shipping invalid extra shipper.accountNumber and soldTo fields and provided fallback values for required phone numbers.# Karrio patch 2024.2.8
- fix(fedex): Signature option type# Karrio patch 2024.2.7
- feat: Add missing ACCOUNT to
fedex
rate types - feat: Make default
fedex
rate request types configurable
- fix: Set a fallback value for
TGE
package description - fix: responsiveness for shipments and orders page headers
- hot-fix(
fedex
): add validsubPackagingType
Enum# Karrio patch 2024.2.5
sscc
calculation forTGE
integration# Karrio patch 2024.2.4[!WARNING] Watchout for breaking change with candapost extension. Now by default shipment are not submitted meaning you need to create a manifest to complete you shipment before pickup or dropoff.
- Rollback problematic canadpost config migration introduced in 2024.2.3
candapost
shipping now require manifesting step unless you update your connection config to setSubmit shipment by default
to true.
- feat: Add support for marking any shipment without tracker with manual status
- feat: Introduce manifest_required flag for carriers with manifest support
- feat: Add Manifest
GraphQL
queries and manifest management page - feat: Add form for manifest creation based on selection
- feat: consolidate
canadapost
manifest integration with live tests
- chore: Remove deprecated Customs CRUD APIs
chore: Apply# Karrio patch 2024.2.2transmit_shipment_by_default
for all existingcanadapost
connections
- fix: Improve TGE pickup date default value + sscc and shipment_id calculation
- feat: Remove lowercase styling on APP_NAME login page
- feat: hide sensitive email sending error from bubbling up to frontend
- merge: @jacobshilitz fix password reset to use EMAIL_FROM_ADDRESS as sender# Karrio patch 2024.2.1
- fix: react hooks bug caused by invalid return type" "v2024.2.rc9
- Automated build by @danh91 in #526
- chore(deps): bump jwcrypto from 1.5.4 to 1.5.6 by @dependabot in #527
- Debug automated build by @danh91 in #528
- [hot-fix] fedex smartpost requests by @danh91 in #529
Full Changelog: https://github.com/karrioapi/karrio/compare/v2024.2.rc8...v2024.2.rc9" "v2024.2.rc8
- [hot-fixes] Hot fix 2024.2rc by @danh91 in #525
Full Changelog: https://github.com/karrioapi/karrio/compare/v2024.2.rc7...v2024.2.rc8" "v2024.2.rc7
- [patch] allied-express-local by @danh91 in #517
- chore(deps): bump cryptography from 42.0.0 to 42.0.2 by @dependabot in #518
- chore(deps): bump cryptography from 42.0.2 to 42.0.4 by @dependabot in #519
- [release] Karrio 2024.2 by @danh91 in #520
Full Changelog: https://github.com/karrioapi/karrio/compare/v2024.2.rc5...v2024.2.rc7" "v2024.2.rc5
- [carrier-integration] Allied express local integration by @danh91 in #511
- [carrier-integration] Deutsche Post by @danh91 in #512
- Minor fixes by @danh91 in #513
- [hotfix] Rename
deutschepost
->dhl_parcel_de
by @danh91 in #514 - chore(deps): bump django from 4.2.8 to 4.2.10 by @dependabot in #515
- feat: Australiapost full integration by @danh91 in #508
- docs: Documentation update for 2024.2 release by @danh91 in #516
Full Changelog: https://github.com/karrioapi/karrio/compare/v2024.2.rc4...v2024.2.rc5" "v2024.2.rc10
- chore(deps): bump weasyprint from 61.0 to 61.2 by @dependabot in #530
- [hot-fixes] Publish Karrio 2024.2 by @danh91 in #522
Full Changelog: https://github.com/karrioapi/karrio/compare/v2024.2.rc9...v2024.2.rc10# Karrio Shipping Platform Edition 2024.2
Important
🥳 Karrio 2024.2 is officially finally out. Chat with us on Karrio Launch Week to learn more about our vision for 2024
- Introduce Karrio Manifest API
- Introduce Karrio dashboard home page with usage stats and guidance
- Australia Post full integration (rating, label generation)
- DHL Parcel Post integration (upgrade from the
dpdhl
integration planned for sunsetting) - FedEx REST API integration (upgrade from former FedEx web service integration)
- Add support for dynamic options field generation in label generation forms
- Add support for FedEx Smart Post rating and label creation
- Introduce bulk shipment fulfilment
- Upgrade creating objects by id to use
dict
instead of plainstring
- Refactor and improve loading flow for create_label forms
- Introduce Workspace config object with GrapQL API support
- Introduce manifest interface to Karrio SDK
- Separate profile from account settings and introduce workspace config form
- Preload customs declaration options using saved workspace configs
- Add zones column to rate sheet
- Introduce TGE extension
- Move legacy FedEx web service integration as fedex_ws extension
- Remove the deprecated suburb field from the Address object
- fix: FedEx WS rating issue caused by SmartPost changes
- fix: Allied Express min volumes
- fix: DHL Express
customs.options
mapping
- Improve documentation navigation and document karrio environment + new products + enrich FAQ (WIP)
- Introduce carrier documentation with details for capabilities, shipping options and services
- document local development installation requirements for cloud VMs
[!IMPORTANT] You can safely upgrade to this release same as previous patches. I have decided to name it Preview as it is the pre-release to the upcoming major
2024.2
release. I still recommend testing with the staging instance before updating your production instance. I have been trying to work with short-lived branches where I lay the foundations for epic features and iterate faster. It is less overwhelming and allows for quick iteration. And makes it easy to solve issues and release patches more often.
- Add
metadata_value
andmetadata_key
filter for carrier connections - Add brand colour config support to allied_express connection configs
- Replace
dpdhl
GET tracking request with POST - Add support for rate sheet object management (WIP)
- fix
easypost
tracking response parsing - fix
ups
invalid property added tothird_party
payment declaration - fix
metadata_key
filter queryset for GraphQL resolver
Important
You can safely upgrade to this release same as previous patches. I have decided to name it Preview as it is the pre-release to the upcoming major 2024.2
release. I still recommend testing with the staging instance before updating your production instance.
I have been trying to work with short-lived branches where I lay the foundations for epic features and iterate faster. It is less overwhelming and allows for quick iteration. And makes it easy to solve issues and release patches more often.
- Improve generic carrier brand colour rendering
- Make allied express
service_type
andaccount_service_type
config plain text input fields
- fix orders and shipments list styling
Important
You can safely upgrade to this release same as previous patches. I have decided to name it Preview as it is the pre-release to the upcoming major 2024.2
release. I still recommend testing with the staging instance before updating your production instance.
I have been trying to work with short-lived branches where I lay the foundations for epic features and iterate faster. It is less overwhelming and allows for quick iteration. And makes it easy to solve issues and release patches more often.
- Add
metadata_value
andmetadata_key
filter for carrier connections - Add brand colour config support to allied_express connection configs
- Replace
dpdhl
GET tracking request with POST - Add support for rate sheet object management (WIP)
[!IMPORTANT] You can safely upgrade to this release same as previous patches. I have decided to name it Preview as it is the pre-release to the upcoming major
2024.2
release. I still recommend testing with the staging instance before updating your production instance. I have been trying to work with short-lived branches where I lay the foundations for epic features and iterate faster. It is less overwhelming and allows for quick iteration. And makes it easy to solve issues and release patches more often.
- bulk order fulfilment processing on the dashboard
- Introduce draft order creation form
- add type details for shipping options
- Introduce a home page with usage stats and action guidance
- add bulk label and invoice printing for orders
- add bulk label and invoice printing for shipments
- redesign: orders and shipments layout and info
- Add API usage graph to developers' overview page
- Make the Allied Express server URL configurable
- Add brand and text colour configuration for generic carriers
- Improve order processing with batches API allowing attaching new batch operations for existing orders
- Improve shipment processing with batches API to allow linking new batch operation with existing shipment by id
- Add support for
brand_color
andtext_color
for generic carrier config - Introduce
images
to the tracker for signature and delivery images - Expose
delivery_image_url
andsignature_image_url
to OpenAPI and GraphQL API - Add proof of delivery image support for UPS tracking
- fix: Adming queries for system usage stats
- fix: ZPL label
dpmm
for preview - fix: duplicated carrier gateway call bug
- chore: clean up lists layout
- chore: Clean up
create_label
form and state management
- The document generation API endpoint has been replaced from
/documents/
->documents/templates/
Thanks, @DarkSwoop for sponsoring Karrio 🙏🏿
- feat: Add workflow webhook URL
- feat: reorganize workflow action data to provide dedicated tabs for input, output logs and details
- feat: Introduce
metafields
and link to workflow objects - feat: Improve workflow execution data flow and tracing
- feat: Add support for workflow conditional action and single action execution
- feat: Add support for Posthog on the API, dashboard and docs
- merge: Use HS code for DHL Express customs declaration by @DarkSwoop
- USPS label response conditional parsing when errors are returned and set defaults for secondary address lines #491
Special thanks to @DarkSwoop for the valuable feedback from DHL contacts that helps improve Karrio's DHL express extension# Karrio patch 2023.9.12
- Add pending status to karrio SDK to handle event code when a package hasn't been picked up and can still be cancelled
- Add admin module to OSS build
- Move action buttons to the header on the developers' sub-section
- Add basic CRUD operation for system carrier management
- Prepare rate sheets management card
- Add staff permission management admin APIs
- Add minimal staff user management functionalities to the admin dashboard
- Introduce and configure
strawberry_django
optimizer - Introduce karrio automation panels to the dashboard
- Finalize beta workflow creation form in the dashboard
- Separate core Graphql types and queries from ee
- Add sponsors section to README
- Easypost Fee parsing issue
- Add omitted customs cancel request options
- Fix grammatical and sentence structure errors in the OpenAPI schema page
I am particularly excited about karrio built-in automation. The vision is to simplify syncing data between karrio and other platforms. I have been asked for integrations with platforms such as Shopify, Woocommerce, Commercetools and various ERP systems to sync orders and relevant data across the systems. With karrio built-in automation, I hope to tackle that with the least amount of work.
Shout out to Fadi owner at Shipr as we collaborate to make Karrio a turnkey solution for 3PLs and logistics providers. With this, they will be able to deploy their dedicated shipping platform, automate shipping but, also empower their merchants and customers with their own workspace and API access. In addition to our API and Webhook, it will be even easier to integrate karrio and build your custom shipping tech stack.
Reach out for private beta access to Karrio Cloud
# Karrio patch 2023.9.11 ## Feat- Add rating and label generation to sendle integration
- (merge) @jacobshilitz fix for API logs index
- (merge) @jacobshilitz fix for
vscode
path updates - (fix) canadapost multi-piece shipment parsing
Special thanks to @jacobshilitz for the powerful performance fix for API log indexes 🔥 # Karrio patch 2023.9.10
- Add allied express service listing on the connection config modal# Karrio patch 2023.9.9
- (improve) addresses and parcel listing page layouts to handle large numbers
- (add) support for live address full search on name input
- (update) name input to autocomplete with headless UI Combobox component# Karrio patch 2023.9.8
- (fix) dashboard org switcher inconsistency on the frontend
- (add) meaningful defaults for rate and label generation requests of
allied_express
extension - (introduce) RateSheet object (reusable dedicated rate sheet object that can be linked to various carriers with custom sheet content)
- (add) GraphQL APIs to manage rate sheets# Karrio patch 2023.9.7
- (improve) UX and design consistency across the dashboard
- (add) new carrier integration for Allied Express
- (fix) missing fixed weight unit for canadapost customs item definition
- (merge) @DarkSwoop paperless trade filter fix
- (add) unit tests for non-supported paperless trade shipment # Karrio patch 2023.9.6
- (fix)
dhl_express
option parsing and filter# Karrio patch 2023.9.5 - (fix) issues with dynamically set
paperless_trade
option anddhl_express_all
- (add) support for shipment messages parsing for
easypost
- (fix)
asendia_us
connection configuration requirements# Karrio patch 2023.9.4
- Introduce the Karrio admin server module with an admin GraphQL API
- Lay the foundation of the Karrio admin dashboard in the same codebase as the current dashboard# Karrio patch 2023.9.3
- (fix) DEFAULT_SERVICE imports for carriers with custom rate sheets
- (fix)
dhl_express
paperless trade option processing# Karrio patch 2023.9.2 - (refactor) Enum types and various usages due to related breaking changes in
Python 11
- (update) docker base images to
python:3.12-slim
and development image topython:3.12-slim-bullseye
to improve development on Mac M chips# Karrio patch 2023.9.1 - (merge)
dhl_express
dutiable fix by @DarkSwoop - (fix) canadpost multi-piece shipping cancellation options
- (update) vulnerable dependencies
Special thanks to @DarkSwoop # Karrio Shipping Platform Edition 2023.9
- Canada Post multi-piece shipment support #392
- [carrier-integration] GEODIS (full integration) #390
- [carrier-integration] Colissimo #389
- [carrier-integration] BPost #435
- [carrier-integration] TNT (full integration) #425
- [carrier-integration] Asendia US (full integration) #163
- (POC) of integration compatibility for
zoom2u
andlocate2u
last mile systems - (replace)
amazon_mws
extension byamazon_shipping
- (remove)
yanwen
,yunexpress
andsf-express
extensions - (clean) up background job tracing
- Remove commercial license code leaving the repository with only Apache v2 OSS edition server modules
- Major repository restructuration moving toward a monorepo with server, dashboard and docs under karrio's main repository
- Deprecate separate schema packages for carriers in favour of moving the schemas and generated types directly into the carrier's extension packages
- Improve Karrio CLI extension template
- DHL Universal - Error when adding DHL eCommerce tracker. #439
- DHL Express - IsDutiable determination #437
- Paperless Trade - Missing document format using webinterface #438# Karrio patch 2023.5.2
- [dev-ex] Set up build from source #416
- [DHL-Conflict] Pickup XML request issue #414
- Fix Tracking API 500 issue #410
- Merged UPS multi-parcel individual weight #418
Thanks to @jacobshilitz for the quick fix# Karrio patch 2023.5.1
- Ensure cache params are optional with a default value
- Handle auth token error parsing
- Disable DHL Express dutiable flag for EU countries
- Fix / Improve DPDHL Error
Special thanks to @nahall for the USPS service update# Karrio Shipping Platform Edition 2023.5
- (upgrade) UPS API integration to the latest #387
- (fix) intermittent issue with Canada Post options #381
- (add) configurable options to FedEx and DHL express connections
- (fix) carrier config mutation regression
- (add) metadata to tracker POST API request data
- (fix) DHL express
"DOC"/"NONDOC"
#367 - (remove) support for UPS Freight
UPS and deprecating their XML and JSON legacy APIs in favour of their new REST API with Oauth2 support. You will need to update your Carrier connection with your app client_id
and client_secret
follow these instructions to get your new API credentials
- Visit https://developer.ups.com/apps?loc=en_US
- Create a new app
- Copy your
client_id
andclient_secret
to update your karrio's UPS connections
- (fix) organization invite on multi-tenant deployments
- (fix) Canada post falsy options mapping #381
- (fix) FedEx transit day resolution excluding weekends
- (simplify) computed address_lines (combining street_number with street_name)
- (fix) duplication in combined packages description
- (merge) #372
- (fix) #370
- (fix) #333 -> a way to handle service suffixes
- (add) migration fix for tracker info data
- (add) DHL prefix to native dhl_express service code and filter
- (introduce)
packstation
as an explicit option and adjust DPDHL - (introduce)
service_suffix
config for fixed service suffix with DPDHL - (fix) tracker info update
- (fix) misspelled carrier_tracking_link mapping for shipment tracker
- (update) tracking status computation to support new statuses and prevent
in_transit
override - (fix) DPDHL tracking response parsing caused by inconsistent
leitcode
with the schema type - (improve) DPDHL error parser (#368)
- (remove) deprecated field on custom carrier service admin form# Karrio Shipping Platform Edition 2023.4
- (add)
GEODIS
tracking carrier integration - (add)
La Poste
tracking carrier integration - (add)
Boxknight
carrier integration - (add)
Roadie
carrier integration - (add)
Nationex
carrier integration - (introduce) carrier connection default configuration
- (improve) order
db
query adding a direct relationship with shipments - (improve) migrations for large datasets
- (add) exception-related shipment status mapping between trackers and shipments.
- (introduce) label preview for ZPL using
labelary
API - (improve) DHL Express support for EU
- (fix) tracking info property typo
- (fix) DHL support for EU rating and label creation
- (fix) customs partial update mutation
- (add) support for HTML response parsing and update DPDHL error parsing to process HTML responses
- (fix) tracker info data merging# Karrio 2023.3.2 patch
- (fix) UPS ETD integration
Thanks, @jacobshilitz for the patch# Karrio Shipping Platform Edition 2023.3
- (add) DPD carrier integration
carrier-integration
- (enhance) static service level definition with support for zones
- (introduce) unified tracking statuses
- (enrich) tracking details with package and shipment info
- (add)
street_number
field toAddress
model - (add)
carrier_tracking_link
toshipment.meta
"meta": {
"carrier_tracking_link": "https://www.fedex.com/fedextrack/?trknbr=794622728852",
"tracking_numbers": [
"794622728852"
],
"ext": "fedex",
"carrier": "fedex",
"service_name": "FEDEX INTERNATIONAL ECONOMY",
"rate_provider": "fedex"
},
- (enrich) tracker details with :
{
"tracking_number": "string",
"carrier_name": "amazon_mws",
"account_number": "string",
"reference": "string",
"info": {
"carrier_tracking_link": "string",
"customer_name": "string",
"expected_delivery": "string",
"note": "string",
"order_date": "string",
"order_id": "string",
"package_weight": "string",
"package_weight_unit": "string",
"shipment_package_count": "string",
"shipment_pickup_date": "string",
"shipment_delivery_date": "string",
"shipment_service": "string",
"shipment_origin_country": "string",
"shipment_origin_postal_code": "string",
"shipment_destication_country": "string",
"shipment_destination_postal_code": "string",
"shipping_date": "string",
"signed_by": "string",
"source": "string"
}
}
Note that you can override all the info fields using POST /v1/trackers
and PUT /v1/trackers/{tracker_id}
- (add)
latitude
andlongitude
to theTrackingEvent
model for future use with last-mile carriers and automatic background updates by Karrio.
- (revert) to FedEx single call ETD implementation
- (invalid) mapping of the
Suburb
field on theDHL Express Rate
request - (fix) incoherent UPS service names
- (deprecating)
DELETE /v1/orders/{order_id}
in favor ofPOST /v1/orders/{order_id}/cancel
- (change) tracking request details at the SDK level.
- Introduce
account_number
andreference
- Remove
level_of_details
andlanguage
- (renamed) UPS services to be region aware (
This will require draft shipments rates to be refreshed
)
- (fix) regression on one call label generation webhooks trigger
- (fix) background data archiving on multi-tenant deployments
- (fix) UPS rate fetch inconsistent transit details
- (improve) DPDHL requests mapping
- (update) DPDHL connection settings to correct the authentication problem
- (raise) error when creating trackers if tracking fails by default.
And create
tracker
despite errors whenpending_pickup
flag is specified - (improvement) of Sendle tracking details
Special thanks to @DanielOaks for the Sendle tracking API update.# Karrio 2023.1.11 patch
- (enhance) FedEx ETD integration with single request document uploads and label generation# Karrio 2023.1.10 patch
- (update)
dpdhl
to latest schemas 3.4.0 - (update) minor versions for DPDHL SOAP requests
- (add) missing UPS shipping options and improve tax parsing
- (fix) UPS multi-piece labels bundling
- (apply) FedEx ETD requests requirement patches
- (introduce) title to commodity as main name
- (make) all org tracing records accessible to all org users
- (replace) DISTINCT ON by python code for SQLite support of document generation
- Migrate to Strawberry for GraphQL support
- Karrio Admin API foundation
- Finalize OpenID support through karrio apps registration
experimental
- Batch shipment creation (CSV import + batch REST API)
experimental
- Batch order creation (CSV import + batch REST API)
experimental
- Batch tracker creation (CSV import + batch REST API)
experimental
- Add support for shipping
billing_address
and improve support for 3rd party billing - Add carrier capabilities to
/v1/carriers
JSON response - Remove Postgres-specific fields to allow support for any Django ORM-supported databases (MySQL, Oracle, SQLite...)
- Add support for
DATABASE_URL
to configure karrio' database connection with a single line - Introduce data retention configuration (set up karrio to flush your database of old shipments, API logs...)
- Improve SDK tracing recording for full transparency (only super admin can see requests logs of system carriers)
- Add
id
to keyword full-text search for orders and shipments - Improve shipment data GraphQL mutations and draft shipment management.
- Improve international shipment with advance duty 3rd party payment address
- Orders module (read-only orders fulfilment API)
- Generic carrier (Register carriers without APIs on karrio to become their API - manage rate sheets, design labels...)
- Data module (Batch APIs for data imports and batch creation + data export API)
- Documents module (Document generation API + templating system to generate branded shipping documentation)
- Document generation use cases: UCC128 labels, Packing slips, branded commercial invoices... anything you need :)
- Remove support for price range filters to apply rate add-ons
- Replace
DELETE /v1/shipments/{id}
byPOST /v1/shipments/{id}/cancel
for shipment cancellation - Deprecating
GET v1/trackers/{carrier_name}/{tracking_number}
in favor ofPOST /v1/trackers
for trackers creation
- Improve scripts under the
/bin
folder to simplify development and deployment - Introducing Karrio
hobby-deploy
(+ upgrade) to simplify Karrio installation on any cloud with SSL provisioning included - Add
vscode
support debug commands to allow running karrio with debugger and breakpoints - Add scripts to install karrio without docker (Python packages)
- Return to SQLite as the default development database to simplify development setup without docker
" "Patch release 2022.8.19
- Make FedEx ETD optional" "Patch release 2022.8.18
- (add) preferred units for FedEx US shipment
- (fix) missing options error on FedEx shipment creation
- (consolidate) FedEx ETD integration
Special thanks to @nahall for the contribution# Karrio Shipping Platform Edition 2022.8
- Introduce shipping document upload interface for paperless capability
- DPDHL carrier integration
- UPS Freight JSON API carrier integration
- Amazon MWS carrier integration
(experimental)
- Chronopost carrier integration (By @Ftayri)
- Move Oauth2 and OpenID support to OSS build
- Introduce Karrio CLI powered by type
- Add
freight_class
property to parcel for pallet and LTL shipment support - Introduce organization user roles and group permissions
(insiders-only)
- Integrate 2FA for login
- Introduce package level options (for package insurance/coverage)
- Add support for audit logging (
insiders only
) - Persist carrier requests logs for the foundation of advanced debug mode
- Data imports foundation for batch tracking data import (
insiders only
) - Deprecate
test_mode
flags in favour ofAPI Keys
in a test or live modes - Improve API queries using SQL indexes (API logs, API events, Shipments, Orders...)
- Improve and standardized error response
- Distinguish carrier hubs extensions from regular extensions
- Fix UPS shipment cancellation API call (VOID) (https://github.com/karrioapi/karrio-dashboard/issues/190)
- Add GraphQL mutations for webhooks
- Add GraphQL mutations for orders
- Beta AmazonMws carrier integration
- Improve DHL Universal tracking extension response parsing and edge cases from all supported DHL services.
- Set fallback values for DHL express extension shipment commodity codes
- Set fallback values for FedEx extension shipment address phone numbers.
- Add webhook for order update
- Reduce noise in carrier request logs (remove duplicates and make logging optional on Serializable abstraction)
- Introduce a data module (
insiders only
) for data export (csv, json, xls...). Currently, support exporting orders and shipments
- Uniformize collection APIs filters for GraphQL and REST APIs
- Deprecate noisy properties from rates
Before:
{
"id": "string",
"object_type": "rate",
"carrier_name": "string",
"carrier_id": "string",
"currency": "string",
"service": "string",
"discount": 0,
"base_charge": 0,
"total_charge": 0,
"duties_and_taxes": 0,
"transit_days": 0,
"extra_charges": [ ],
"meta": { },
"test_mode": true
}
Now:
{
"id": "string",
"object_type": "rate",
"carrier_name": "string",
"carrier_id": "string",
"currency": "string",
"service": "string",
"total_charge": 0,
"transit_days": 0,
"extra_charges": [ ],
"meta": { },
"test_mode": true
}
- Rebrand Purplship -> Karrio
- Improve document management modules (enrich shipment and order template contexts).
- Introduce
order.order_date
andline_item.unfulfilled_quantity
properties for better handling of partial orders. - Improve custom carrier label management
- Provide default order and shipment dates
- Fix tracker
in_transit
status inconsistency - Introduce Sentry support for Karrio dashboard error tracking and APM" "Purplship Shipping Platform Edition 2022.2
- Consolidate email flows for operations that require confirmations
- Consolidate organization and team management (
insiders
) - Organization members listing and invitation
- Organization ownership transfer
- Organization creation
- Setup foundations for oauth2 and apps integration (beta) (
insiders
) - Implement Webhook secret header for event origin signature validation
- Integrate One-call shipment label purchase
- Automate incremental tracking_number generation for customs carrier labels
- Order management update (
insiders
) - Introduce
shipping_from
for orginin address prefill - Rename
shipping_address
toshipping_to
-
The GraphQL API queries and mutations have been enhanced and some renamed for consistency. We highly recommend using the same version on the server and dashboard
-
Introduce
docs: Documents = JStruct[Documents, REQUIRED]
toShipmentDetails
The implied the removal of the label: str
field from the root of ShipmentDetails
to ShipmentDetails.docs.label
Proxy API POST /v1/proxy/shiping
now returns as docs
object with label
base64 string and optionally an invoice
base64 string
API Shipment
object now returns
label_url
: URL to the purchase shipment labelinvoice_url
: URL to the purchase shipment invoice when supported
API Shipment
deprecated data
label
field has been deprecated and removed in order to optimize shipments database queries and sizeshipment.meta.invoice
field has been deprecated and removed for optimization as well
As a result of this change, shipments requests are less heavy and faster
- Inconsistent Charfield validation caused validity pre-request and failure to persist carrier API changes to the database.
Current release 2022.2
- danh91.docker.scarf.sh/purplship/server:2022.2
" "Purplship Shipping Platform Edition 2022.1
- Introduce
purplship.generic
the custom carrier extension - Add support for custom carrier definition on purplship server
- Enrich parcel (package) definition for better support of pallets
- Enhance purplship universal extension support with multi-piece shipment support
- Introduce order APIs for the relation between order systems and purplship shipments
- Introduce label template configuration and custom label generation
- Introduce support adding user metadata to purplship objects (
Order
,Tracker
,Commodity
,Shipment
...)
The Shipping REST APIs are focused on automation and single requests to perform shipping operations. The GraphQL API on the other hand powers manual operations from the dashboard with multiple mutations of shipping objects.
For that reason
- The following endpoints have been removed
/v1/shipments/<id>/options
to update/add shipment options/v1/shipments/<id>/customs
to add shipment customs declaration/v1/shipments/<id>/parcels
to add shipment parcels
There has been many breaking changes on mutations and queries on the GraphQL API so we recommend checking out the 2022.1.4 purplship dashboard release
- Update support for multi-tenant deployment
- Prevent automatic tracker creation issues for carriers without
tracking
capabilities - Fix supported destination check for
USPS
domestic extension - Fix background tracker processing error caused uncaught by dead code
Stable version 2022.1.4
danh91.docker.scarf.sh/purplship/server:2022.1.4
" "Purplship Shipping Platform Edition 2021.11
- Apply Canadian postal code pre-validation patch
- Improve Trackers API to accept tracking numbers without a record as pending
- Retrieved
estimated_delivery
during tracking for all supporting carriers - Ensure FedEx dimension definitions only when
packaging_type
isyour_packaging
- Introduced Persisted events
- Improve FedEx multi-piece shipment compiling all package labels together
- Introduce DHL Parcel Poland
sponsored
integration (#166) - Introduce the purplship universal carrier service level definition
- Apply (2121.7.7) database query perf improvements
- Introduce
TRACKING_PULSE
env var to setup background trackers update interval seconds - Introduce
BASE_PATH
env var to set up runtime base path for the API (e.g:/api
forexample.com/api
deployment) - Introduce advanced query filters for shipments, logs, events, trackers and webhooks
- Fix Webhooks notification scope only to related account and organization" "Purplship Shipping Platform Edition 2021.10
- Enrich
/api/references
endpoint with application metadata info (APP_NAME
,APP_VERSION
,APP_WEBSITE
and other feature flags) - Enhance JWT refresh with support for org switching by providing
org_id
- Improve OpenAPI docs with existing extensions
carrier_name
(s) and shipments and trackers filters status enums - Remove authentication requirement from
/v1/trackers/{id_or_tracking_number}
to simplify trackers access to frontend components - Remove authentication requirement from
/api/references
as it serves as the server metadata now and share any user private info - Change authentication rules for Graphql view (
/graphql
) - The GraphQL Playground can be accessed without being authenticated
- However, an authentication header is required now to send authenticated requests and receive users owned data
- Introduce user registration, password change, password reset and more through GraphQL mutations
- Remove purplship embedded client moving the codebase to https://github.com/purplship/purplship-dashboard
- Fix circular reference on GraphQL system
carrier.carrier_name
property - Fix bugs with exception raised when there is an existing carrier connection in test mode and not live
- Switched to mono repo bringing
purplship-carriers
,purplship-bridges
,purplship-server
and all other satellite projects underpurplship
(this simplifies the development process) - Improve PHP and Python client generator script options
- Improve docker setup for local developments
- Improve docker setup for testing with the same config as production (went from
6 min
build + test time to2 min
) - Change namespaces for consistent branding (went from
purpleserver.*
->purplship.server.*
) - add as shared .vscode configuration.
- Fix JWT regression caused by
PyJWT
dependency - Enhance Docker image startup and graceful-stop with dumb-init
" "purplship SDK 2021.8
- Increase JSON API response parsing resilience by introducing
to_object
helper that ignores unknown model fields - Use
NamedTuple
to define MeasurementOptionsType instead ofEnum
- Add .vscode config to improve dev ex
- Add alpha integration for
ICS Courier
,UPS Ground
andAsendia US
" "purplship SDK 2021.7
- Apply flexible service mapping to all carrier integrations. (meaning that if the carrier introduces a service not mapped by purplship, it will still be handled gracefully by collecting the code required for the shipment creation)
- Add DHL customs invoice when returned by international shipments
- Introduced
account_country_code
as base property to all carrier settings. (This is useful for country-specific carrier accounts) - Deprecate
gateway.features
in favor ofgateway.capabilities
to describe the list of supported operations by carrier gateways - Add pre requests check hooks to validate early carrier gateways capability support as well as country-bounded account usage.
- Improve the email notification option
- enabled by default if a recipient email is provided
- turn the notification off
options: { ..., email_notification: false, ..}
- set specific email for notification
options: { ..., email_notification_to: custom@email.com, ..}
- Fix shipment reference for all carriers
- Fix Purolator shipment creation error detection for proper parsing " "purplship SDK 2021.6
- Fix FedEx label format
- Add human-readable names for options and services
- Add blank Purolator label for test mode since label is not supported with the sandbox server
- Live tested USPS rating and shipping integration
- Rename
purolator_courrier
extension topurolator
- Make Purolator setting
user_token
optional - Fix Fedex rate timestamp parsing to prevent 0-day returns
- Fix DHL preset default units with the right package sizes
- Add omitted
contract_id
to Canada post extension for rate requests - Add min dimensions values for FedEx dimension mappers
- Handle Optional adjustments values for Canada post rate response
" "Purplship SDK 2021.4
- Enrich customs declaration unified model
- Separate duty definition from the shipment payment model
- Introduce AddressExtra and a helper to compute address line based on extra " "Purplship SDK 2021.3
- Integrate TNT services (Tracking )
- Prepare USPS rating and shipping integration and split up international and local
- Rename
ups_package
->ups
- Rename
fedex_express
->fedex
" "Purplship SDK 2021.2 [tracking spree]
- integrate
aramex
Tracking API - update
canpar
Full API integration - integrate
australiapost
Tracking API - integrate
dhl_universal
Tracking API - integrate
dicom
Tracking API - integrate
usps
Tracking API - integrate
dicom
Tracking API - integrate
sendle
Tracking API - integrate
sf_express
Tracking API - integrate
yanwen
Tracking API - integrate
yunexpress
Tracking API
- Introduce the concept of features for gateways to show supported APIs dynamically
- Make Purolator
user_token
required to set up a Purolator gateway - Improve canpar's SOAP requests ensuring proper namespace prefixes for all nodes " "Purplship SDK 2021.1
- Introduce
poetry
for packaging - Make Purplship API interface uniform with
purplship.[API].[request](...).from_(gateway).parse()
- Deploy
purplship
and allpurplship.extensions
wheels on Pypi
- Introduce extension tests templates
- Log request URLs
- Update docs" "[release] Purplship SDK 2020.12 (docs and contribution friendly)
- Introduce Purplship SDK docs with
Mkdocs
- Introduce formal Purplship Extension with the
Metadata
definition - Introduce basic documentation for
Custom Carrier
- Add Purplship extension template" "Purplship SDK 2020.12.1 [patch]
- Introduced
MeasurementOptions
as Dimension and Weight output customization for each carrier - Introduced
label_type
as a requirement for shipment creation
- Fix unsupported Canada post decimal values for dimensions and weight
- Prevent confusing Purolator exception when address properties are required and not defined
- Fix invalid
CM
->IN
conversion - Consolidated
Purolator
shipment cancellation request"