easypost 6.2.0 → 6.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae0d691e3f798606f4153ba71f6d148e3d12eeade8dddec8ab8b06cbd9420173
4
- data.tar.gz: 92ad3799e9d50460a99844d28c456050fe58ad78d3b440520a429623adc851a5
3
+ metadata.gz: 643a95f0b48e9abedc30e67d868ec3538d8d896b9c385734966805c83e72bd90
4
+ data.tar.gz: a532de25388ea110f152e77205bea2104228e83e7279dc66d0b500238d5b8416
5
5
  SHA512:
6
- metadata.gz: 417aea06119816b367ae0e7eeaada243b1c3a266fb784f36df681130a617bf37bfe6d80a02c0c6aa72c4b1e210f2a220ce67aec37803dc9b04735df08c073b78
7
- data.tar.gz: 5f550b00033885606ac1f9438696549b40b5602368c39985dded593b666782eaaf05887cbbe3a28afe996e05163c2f30e1740825c27c14e08a1c46f591d01e2e
6
+ metadata.gz: 94b9cf67261d5c9bba01183812bef018d0b4918cc5f3593befdff2884095816299585bf33d86ee0de14015814c53ddd2911b9de85692c9c73421e1133cd57605
7
+ data.tar.gz: ba8c81ed037de3ccad7441eba06111eefb7430e69ac36169dd3409efa7965a092b18bc114d3767610dcb15453a6bfeed584073f35a986214b96f5eab4c6e2dcb
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- rubyversion: ['2.6', '2.7', '3.0', '3.1', '3.2']
14
+ rubyversion: ['2.6', '2.7', '3.0', '3.1', '3.2', '3.3']
15
15
  steps:
16
16
  - name: Checkout Repository
17
17
  uses: actions/checkout@v3
@@ -19,7 +19,7 @@ jobs:
19
19
  uses: ruby/setup-ruby@v1
20
20
  with:
21
21
  ruby-version: ${{ matrix.rubyversion }}
22
- rubygems: '3.0.0'
22
+ rubygems: '3.3.0'
23
23
  bundler-cache: true
24
24
  - name: Install Dependencies
25
25
  run: make install
@@ -39,8 +39,8 @@ jobs:
39
39
  - name: Set up Ruby
40
40
  uses: ruby/setup-ruby@v1
41
41
  with:
42
- ruby-version: '3.2'
43
- rubygems: '3.0.0'
42
+ ruby-version: '3.3'
43
+ rubygems: '3.3.0'
44
44
  bundler-cache: true
45
45
  - name: Install Dependencies
46
46
  run: make install
@@ -57,8 +57,8 @@ jobs:
57
57
  - name: Set up Ruby
58
58
  uses: ruby/setup-ruby@v1
59
59
  with:
60
- ruby-version: '3.2'
61
- rubygems: '3.0.0'
60
+ ruby-version: '3.3'
61
+ rubygems: '3.3.0'
62
62
  bundler-cache: true
63
63
  - name: Install Dependencies
64
64
  run: make install
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v6.4.0 (2024-07-24)
4
+
5
+ - Adds new `Claim` service for filing claims on EasyPost shipments and insurances
6
+
7
+ ## v6.3.0 (2024-07-12)
8
+
9
+ - Adds new `shipment.recommend_ship_date`, `smartrate.recommend_ship_date`, and `smartrate.estimate_delivery_date` functions
10
+ - Routes `UpsAccount`, `UpsMailInnovationsAccount`, and `UpsSurepostAccount` create/update requests to the new `/ups_oauth_registrations` endpoint
11
+ - Starting `2024-08-05`, UPS accounts will require a new payload to register or update. See [UPS OAuth 2.0 Update](https://support.easypost.com/hc/en-us/articles/26635027512717-UPS-OAuth-2-0-Update?utm_medium=email&_hsenc=p2ANqtz-96MmFtWICOzy9sKRbbcZSiMovZSrY3MSX1_bgY9N3f9yLVfWQdLhjAGq-SmNcOnDIS6GYhZ0OApjDBrGkKyLLMx1z6_TFOVp6-wllhEFQINrkuRuc&_hsmi=313130292&utm_content=313130292&utm_source=hs_email) for more details
12
+
3
13
  ## v6.2.0 (2024-04-10)
4
14
 
5
15
  - Fix payment method funding and deletion failures due to undetermined payment method type
data/Makefile CHANGED
@@ -24,8 +24,13 @@ docs:
24
24
  install-styleguide: | update-examples-submodule
25
25
  sh examples/symlink_directory_files.sh examples/style_guides/ruby .
26
26
 
27
+ ## init-examples-submodule - Initialize the examples submodule
28
+ init-examples-submodule:
29
+ git submodule init
30
+ git submodule update
31
+
27
32
  ## install - Install globally from source
28
- install: | update-examples-submodule
33
+ install: | init-examples-submodule
29
34
  bundle install
30
35
 
31
36
  ## lint - Lint the project
data/README.md CHANGED
@@ -163,7 +163,7 @@ If you're using a custom HTTP connection, keep in mind that the `response_data`
163
163
 
164
164
  ## Documentation
165
165
 
166
- API documentation can be found at: <https://easypost.com/docs/api>.
166
+ API documentation can be found at: <https://docs.easypost.com>.
167
167
 
168
168
  Library documentation can be found on the web at: <https://easypost.github.io/easypost-ruby/> or by building them locally via the `make docs` command.
169
169
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.2.0
1
+ 6.4.0
@@ -42,6 +42,7 @@ class EasyPost::Client
42
42
  EasyPost::Services::CarrierAccount,
43
43
  EasyPost::Services::CarrierMetadata,
44
44
  EasyPost::Services::CarrierType,
45
+ EasyPost::Services::Claim,
45
46
  EasyPost::Services::CustomsInfo,
46
47
  EasyPost::Services::CustomsItem,
47
48
  EasyPost::Services::EndShipper,
@@ -56,6 +57,7 @@ class EasyPost::Client
56
57
  EasyPost::Services::Report,
57
58
  EasyPost::Services::ScanForm,
58
59
  EasyPost::Services::Shipment,
60
+ EasyPost::Services::SmartRate,
59
61
  EasyPost::Services::Tracker,
60
62
  EasyPost::Services::User,
61
63
  EasyPost::Services::Webhook,
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The Claim object has all the details for the filed claims
4
+ class EasyPost::Models::Claim < EasyPost::Models::EasyPostObject
5
+ end
@@ -10,6 +10,7 @@ require_relative 'models/batch'
10
10
  require_relative 'models/brand'
11
11
  require_relative 'models/carrier_account'
12
12
  require_relative 'models/carrier_type'
13
+ require_relative 'models/claim'
13
14
  require_relative 'models/customs_info'
14
15
  require_relative 'models/customs_item'
15
16
  require_relative 'models/end_shipper'
@@ -1,16 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class EasyPost::Services::CarrierAccount < EasyPost::Services::Service
4
- CUSTOM_WORKFLOW_CARRIER_TYPES = %w[UpsAccount FedexAccount FedexSmartpostAccount].freeze
4
+ CUSTOM_WORKFLOW_CARRIER_TYPES = %w[FedexAccount FedexSmartpostAccount].freeze
5
+ UPS_OAUTH_CARRIER_ACCOUNT_TYPES = %w[UpsAccount UpsMailInnovationsAccount UpsSurepostAccount].freeze
5
6
  MODEL_CLASS = EasyPost::Models::CarrierAccount
6
7
 
7
8
  # Create a carrier account
8
9
  def create(params = {})
9
- wrapped_params = { carrier_account: params }
10
+ carrier_account_type = params[:type]
11
+ wrapped_params = { select_top_layer_key(carrier_account_type).to_sym => params }
10
12
 
11
13
  # For UPS and FedEx the endpoint is different
12
- create_url = if CUSTOM_WORKFLOW_CARRIER_TYPES.include?(params[:type])
14
+ create_url = if CUSTOM_WORKFLOW_CARRIER_TYPES.include?(carrier_account_type)
13
15
  'carrier_accounts/register'
16
+ elsif UPS_OAUTH_CARRIER_ACCOUNT_TYPES.include?(carrier_account_type)
17
+ 'ups_oauth_registrations'
14
18
  else
15
19
  'carrier_accounts'
16
20
  end
@@ -33,8 +37,14 @@ class EasyPost::Services::CarrierAccount < EasyPost::Services::Service
33
37
 
34
38
  # Update a carrier account
35
39
  def update(id, params = {})
36
- wrapped_params = { carrier_account: params }
37
- response = @client.make_request(:put, "carrier_accounts/#{id}", wrapped_params)
40
+ carrier_account = retrieve(id)
41
+ wrapped_params = { select_top_layer_key(carrier_account[:type]).to_sym => params }
42
+ update_url = if UPS_OAUTH_CARRIER_ACCOUNT_TYPES.include?(params[:type])
43
+ 'ups_oauth_registrations/'
44
+ else
45
+ 'carrier_accounts/'
46
+ end
47
+ response = @client.make_request(:put, "#{update_url}#{id}", wrapped_params)
38
48
 
39
49
  EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
40
50
  end
@@ -46,4 +56,15 @@ class EasyPost::Services::CarrierAccount < EasyPost::Services::Service
46
56
  # Return true if succeeds, an error will be thrown if it fails
47
57
  true
48
58
  end
59
+
60
+ private
61
+
62
+ # Select the top-layer key for the carrier account creation/update request based on the carrier type.
63
+ def select_top_layer_key(carrier_account_type)
64
+ if UPS_OAUTH_CARRIER_ACCOUNT_TYPES.include?(carrier_account_type)
65
+ 'ups_oauth_registrations'
66
+ else
67
+ 'carrier_account'
68
+ end
69
+ end
49
70
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ class EasyPost::Services::Claim < EasyPost::Services::Service
4
+ MODEL_CLASS = EasyPost::Models::Claim
5
+
6
+ # Create an Claim object
7
+ def create(params = {})
8
+ response = @client.make_request(:post, 'claims', params)
9
+
10
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
11
+ end
12
+
13
+ # Retrieve an Claim object
14
+ def retrieve(id)
15
+ response = @client.make_request(:get, "claims/#{id}", nil)
16
+
17
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
18
+ end
19
+
20
+ # Retrieve all Claim objects
21
+ def all(params = {})
22
+ filters = { key: 'claims' }
23
+
24
+ get_all_helper('claims', MODEL_CLASS, params, filters)
25
+ end
26
+
27
+ # Get the next page of claims.
28
+ def get_next_page(collection, page_size = nil)
29
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
30
+
31
+ params = { before_id: collection.claims.last.id }
32
+ params[:page_size] = page_size unless page_size.nil?
33
+
34
+ all(params)
35
+ end
36
+
37
+ # Cancel a filed claim
38
+ def cancel(id)
39
+ response = @client.make_request(:post, "claims/#{id}/cancel", nil)
40
+
41
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
42
+ end
43
+ end
@@ -118,4 +118,13 @@ class EasyPost::Services::Shipment < EasyPost::Services::Service
118
118
 
119
119
  EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).rates
120
120
  end
121
+
122
+ # Retrieve a recommended ship date for an existing Shipment via the Precision Shipping API, based on a specific desired delivery date.
123
+ def recommend_ship_date(id, desired_delivery_date)
124
+ url = "shipments/#{id}/smartrate/precision_shipping"
125
+ params = { desired_delivery_date: desired_delivery_date }
126
+ response = @client.make_request(:get, url, params)
127
+
128
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).rates
129
+ end
121
130
  end
@@ -0,0 +1,19 @@
1
+ class EasyPost::Services::SmartRate < EasyPost::Services::Service
2
+ # Retrieve the estimated delivery date of each carrier-service level combination via the
3
+ # Smart Deliver By API, based on a specific ship date and origin-destination postal code pair.
4
+ def estimate_delivery_date(params = {})
5
+ url = 'smartrate/deliver_by'
6
+
7
+ response = @client.make_request(:post, url, params)
8
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::EasyPostObject)
9
+ end
10
+
11
+ # Retrieve a recommended ship date for each carrier-service level combination via the
12
+ # Smart Deliver On API, based on a specific delivery date and origin-destination postal code pair.
13
+ def recommend_ship_date(params = {})
14
+ url = 'smartrate/deliver_on'
15
+
16
+ response = @client.make_request(:post, url, params)
17
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::EasyPostObject)
18
+ end
19
+ end
@@ -30,6 +30,7 @@ class EasyPost::Services::Tracker < EasyPost::Services::Service
30
30
  end
31
31
 
32
32
  # Create multiple Tracker objects in bulk.
33
+ # <b>DEPRECATED:</b> Please use <tt>create</tt> instead. This function will be removed in a future release.
33
34
  def create_list(params = {})
34
35
  wrapped_params = { 'trackers' => params }
35
36
 
@@ -14,6 +14,7 @@ require_relative 'services/billing'
14
14
  require_relative 'services/carrier_account'
15
15
  require_relative 'services/carrier_metadata'
16
16
  require_relative 'services/carrier_type'
17
+ require_relative 'services/claim'
17
18
  require_relative 'services/customs_info'
18
19
  require_relative 'services/customs_item'
19
20
  require_relative 'services/end_shipper'
@@ -28,6 +29,7 @@ require_relative 'services/refund'
28
29
  require_relative 'services/report'
29
30
  require_relative 'services/scan_form'
30
31
  require_relative 'services/shipment'
32
+ require_relative 'services/smart_rate'
31
33
  require_relative 'services/tracker'
32
34
  require_relative 'services/user'
33
35
  require_relative 'services/webhook'
@@ -11,6 +11,7 @@ module EasyPost::InternalUtilities::StaticMapper
11
11
  'brd' => EasyPost::Models::Brand,
12
12
  'ca' => EasyPost::Models::CarrierAccount,
13
13
  'card' => EasyPost::Models::PaymentMethod,
14
+ 'clm' => EasyPost::Models::Claim,
14
15
  'cstinfo' => EasyPost::Models::CustomsInfo,
15
16
  'cstitem' => EasyPost::Models::CustomsItem,
16
17
  'es' => EasyPost::Models::EndShipper,
@@ -43,6 +44,7 @@ module EasyPost::InternalUtilities::StaticMapper
43
44
  'Batch' => EasyPost::Models::Batch,
44
45
  'Brand' => EasyPost::Models::Brand,
45
46
  'CarrierAccount' => EasyPost::Models::CarrierAccount,
47
+ 'Claim' => EasyPost::Models::Claim,
46
48
  'CreditCard' => EasyPost::Models::PaymentMethod,
47
49
  'CustomsInfo' => EasyPost::Models::CustomsInfo,
48
50
  'CustomsItem' => EasyPost::Models::CustomsItem,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easypost
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.0
4
+ version: 6.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - EasyPost Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-10 00:00:00.000000000 Z
11
+ date: 2024-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -262,6 +262,7 @@ files:
262
262
  - lib/easypost/models/brand.rb
263
263
  - lib/easypost/models/carrier_account.rb
264
264
  - lib/easypost/models/carrier_type.rb
265
+ - lib/easypost/models/claim.rb
265
266
  - lib/easypost/models/customs_info.rb
266
267
  - lib/easypost/models/customs_item.rb
267
268
  - lib/easypost/models/end_shipper.rb
@@ -296,6 +297,7 @@ files:
296
297
  - lib/easypost/services/carrier_account.rb
297
298
  - lib/easypost/services/carrier_metadata.rb
298
299
  - lib/easypost/services/carrier_type.rb
300
+ - lib/easypost/services/claim.rb
299
301
  - lib/easypost/services/customs_info.rb
300
302
  - lib/easypost/services/customs_item.rb
301
303
  - lib/easypost/services/end_shipper.rb
@@ -310,6 +312,7 @@ files:
310
312
  - lib/easypost/services/report.rb
311
313
  - lib/easypost/services/scan_form.rb
312
314
  - lib/easypost/services/shipment.rb
315
+ - lib/easypost/services/smart_rate.rb
313
316
  - lib/easypost/services/tracker.rb
314
317
  - lib/easypost/services/user.rb
315
318
  - lib/easypost/services/webhook.rb
@@ -338,7 +341,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
338
341
  - !ruby/object:Gem::Version
339
342
  version: '0'
340
343
  requirements: []
341
- rubygems_version: 3.5.4
344
+ rubygems_version: 3.3.3
342
345
  signing_key:
343
346
  specification_version: 4
344
347
  summary: EasyPost Ruby Client Library