From 0441903a240b6cee1120b50b84d92e522771ee72 Mon Sep 17 00:00:00 2001 From: Justintime50 <39606064+Justintime50@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:58:31 -0700 Subject: [PATCH 1/2] feat: delete tracker Co-Authored-By: Claude Sonnet 4.5 --- CHANGELOG.md | 4 + lib/easypost/services/tracker.rb | 8 ++ ...vices_Tracker_delete_deletes_a_tracker.yml | 136 ++++++++++++++++++ spec/tracker_spec.rb | 10 ++ 4 files changed, 158 insertions(+) create mode 100644 spec/cassettes/tracker/EasyPost_Services_Tracker_delete_deletes_a_tracker.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 45503e65..e4b56787 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## Next + +- Adds a `tracker.delete` function + ## v7.4.0 (2026-02-02) - Adds the following functions usable by child and referral customer users: diff --git a/lib/easypost/services/tracker.rb b/lib/easypost/services/tracker.rb index 6a51c436..4e43fe18 100644 --- a/lib/easypost/services/tracker.rb +++ b/lib/easypost/services/tracker.rb @@ -46,4 +46,12 @@ def get_next_page(collection, page_size = nil) all(params) end + + # Delete a Tracker. + def delete(id) + @client.make_request(:delete, "trackers/#{id}") + + # Return true if succeeds, an error will be thrown if it fails + true + end end diff --git a/spec/cassettes/tracker/EasyPost_Services_Tracker_delete_deletes_a_tracker.yml b/spec/cassettes/tracker/EasyPost_Services_Tracker_delete_deletes_a_tracker.yml new file mode 100644 index 00000000..0a7246e7 --- /dev/null +++ b/spec/cassettes/tracker/EasyPost_Services_Tracker_delete_deletes_a_tracker.yml @@ -0,0 +1,136 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.easypost.com/v2/trackers + body: + encoding: UTF-8 + string: '{"tracker":{"tracking_code":"EZ1000000001"}}' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: "" + Host: + - api.easypost.com + Content-Type: + - application/json + Authorization: "" + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + X-Content-Type-Options: + - nosniff + X-Download-Options: + - noopen + X-Permitted-Cross-Domain-Policies: + - none + Referrer-Policy: + - strict-origin-when-cross-origin + X-Ep-Request-Uuid: + - 7dd2313069824473e7897e620037d337 + Cache-Control: + - private, no-cache, no-store + Pragma: + - no-cache + Expires: + - '0' + Location: + - "/api/v2/trackers/trk_33b935fbb2c549548ac308e9650703ea" + Content-Type: + - application/json; charset=utf-8 + X-Runtime: + - '0.061002' + Transfer-Encoding: + - chunked + X-Node: + - bigweb64nuq + X-Version-Label: + - easypost-202602022215-5a5c93c546-master + X-Backend: + - easypost + X-Proxied: + - extlb2nuq cbbd141214 + - intlb5nuq 5f0235a1ab + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + body: + encoding: UTF-8 + string: '{"id":"trk_33b935fbb2c549548ac308e9650703ea","object":"Tracker","mode":"test","tracking_code":"EZ1000000001","status":"pre_transit","status_detail":"status_update","created_at":"2025-11-05T22:38:42Z","updated_at":"2025-11-05T22:38:42Z","signed_by":null,"weight":null,"est_delivery_date":"2025-11-05T22:38:42Z","shipment_id":null,"carrier":"USPS","tracking_details":[{"object":"TrackingDetail","message":"Pre-Shipment + Info Sent to USPS","description":"","status":"pre_transit","status_detail":"status_update","datetime":"2025-10-05T22:38:42Z","source":"USPS","carrier_code":"","tracking_location":{"object":"TrackingLocation","city":null,"state":null,"country":null,"zip":null},"est_delivery_date":null},{"object":"TrackingDetail","message":"Shipping + Label Created","description":"","status":"pre_transit","status_detail":"status_update","datetime":"2025-10-06T11:15:42Z","source":"USPS","carrier_code":"","tracking_location":{"object":"TrackingLocation","city":"HOUSTON","state":"TX","country":null,"zip":"77063"},"est_delivery_date":null}],"carrier_detail":{"object":"CarrierDetail","service":"First-Class + Package Service","container_type":null,"est_delivery_date_local":null,"est_delivery_time_local":null,"origin_location":"HOUSTON + TX, 77001","origin_tracking_location":{"object":"TrackingLocation","city":"HOUSTON","state":"TX","country":null,"zip":"77063"},"destination_location":"CHARLESTON + SC, 29401","destination_tracking_location":null,"guaranteed_delivery_date":null,"alternate_identifier":null,"initial_delivery_attempt":null},"delivery_evidence":[],"finalized":true,"is_return":false,"public_url":"https://track.easypost.com/djE6dHJrXzMzYjkzNWZiYjJjNTQ5NTQ4YWMzMDhlOTY1MDcwM2Vh"}' + recorded_at: Tue, 03 Feb 2026 18:54:43 GMT +- request: + method: delete + uri: https://api.easypost.com/v2/trackers/trk_33b935fbb2c549548ac308e9650703ea + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: "" + Host: + - api.easypost.com + Content-Type: + - application/json + Authorization: "" + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + X-Content-Type-Options: + - nosniff + X-Download-Options: + - noopen + X-Permitted-Cross-Domain-Policies: + - none + Referrer-Policy: + - strict-origin-when-cross-origin + X-Ep-Request-Uuid: + - 7dd2312b69824473e7897e640037d395 + Cache-Control: + - private, no-cache, no-store + Pragma: + - no-cache + Expires: + - '0' + Content-Type: + - application/json; charset=utf-8 + X-Runtime: + - '0.044270' + Transfer-Encoding: + - chunked + X-Node: + - bigweb57nuq + X-Version-Label: + - easypost-202602022215-5a5c93c546-master + X-Backend: + - easypost + X-Proxied: + - extlb2nuq cbbd141214 + - intlb6nuq 5f0235a1ab + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + body: + encoding: UTF-8 + string: '{"success":true}' + recorded_at: Tue, 03 Feb 2026 18:54:43 GMT +recorded_with: VCR 6.4.0 diff --git a/spec/tracker_spec.rb b/spec/tracker_spec.rb index ec1676e2..9b83e7ec 100644 --- a/spec/tracker_spec.rb +++ b/spec/tracker_spec.rb @@ -97,4 +97,14 @@ end end end + + describe '.delete' do + it 'deletes a tracker' do + tracker = client.tracker.create( + tracking_code: 'EZ1000000001', + ) + + expect { client.tracker.delete(tracker.id) }.not_to raise_error + end + end end From 7104fc26fc10b72a511eb6828e6fcac0aa084055 Mon Sep 17 00:00:00 2001 From: Justintime50 <39606064+Justintime50@users.noreply.github.com> Date: Tue, 3 Feb 2026 12:04:48 -0700 Subject: [PATCH 2/2] docs: changelog --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4b56787..77ff7c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,5 @@ # CHANGELOG -## Next - -- Adds a `tracker.delete` function - ## v7.4.0 (2026-02-02) - Adds the following functions usable by child and referral customer users: @@ -11,6 +7,7 @@ - `api_key.delete` - `api_key.enable` - `api_key.disable` +- Adds a `tracker.delete` function ## v7.3.0 (2025-11-24)