easypost 6.1.1 → 6.3.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: 78ff932eb3d904ba184e444260e54f89bc1130fa7a93f5483c3a322071035d99
4
- data.tar.gz: 51fd77d26ae8bb1351880956a47cdcd1529c84e51f26a209b125e28a67b6fa9f
3
+ metadata.gz: b5c061be62ecbd985d48cc8d63c9ee9818cdb4f8da07140f308551f9f2404d8b
4
+ data.tar.gz: 77edf8e77aadc515bb909267f2fbeb780eef7eaf677d4dd862f917a114af39b9
5
5
  SHA512:
6
- metadata.gz: 21b04b15fa14c1f82bdaf7b208201f66f186c8c5b6adc4d1a4e9040e93232b9c4f3793f0a5064eaaafca269818a75e2e7b33c6cb0476793da48735d087045da3
7
- data.tar.gz: 15525784bb626e44c1469513ebc16663b8f8b0c882c46270514783118f21dc6b7b2afb4ec092fedfb0eae17325acb46a671292db385fae7a2dffca58de7d1ec9
6
+ metadata.gz: 6367c6955313221a4e063dfb477153f7c906b8db94fb398608b4c017eed750db036f96300bd8f1f2c804b33660803d2f02fd3ba07ce08647d6b0d3255f8ef12f
7
+ data.tar.gz: 31f99fd5e0a377c5e56c155e6ab262c80d42db6d9850daeadaca96c54b561ded5a7d63c47404701a62f564b62e03aaa6c21125b7b895f0673567a77d020c76db
@@ -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,16 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v6.3.0 (2024-07-12)
4
+
5
+ - Adds new `shipment.recommend_ship_date`, `smartrate.recommend_ship_date`, and `smartrate.estimate_delivery_date` functions
6
+ - Routes `UpsAccount`, `UpsMailInnovationsAccount`, and `UpsSurepostAccount` create/update requests to the new `/ups_oauth_registrations` endpoint
7
+ - 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
8
+
9
+ ## v6.2.0 (2024-04-10)
10
+
11
+ - Fix payment method funding and deletion failures due to undetermined payment method type
12
+ - Add `refund` function in Insurance service for requesting a refund for standalone insurance.
13
+
3
14
  ## v6.1.1 (2024-01-23)
4
15
 
5
16
  - Fix issues funding wallet due to invalid internal function call
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.1.1
1
+ 6.3.0
@@ -56,6 +56,7 @@ class EasyPost::Client
56
56
  EasyPost::Services::Report,
57
57
  EasyPost::Services::ScanForm,
58
58
  EasyPost::Services::Shipment,
59
+ EasyPost::Services::SmartRate,
59
60
  EasyPost::Services::Tracker,
60
61
  EasyPost::Services::User,
61
62
  EasyPost::Services::Webhook,
@@ -62,15 +62,15 @@ class EasyPost::Services::Billing < EasyPost::Services::Service
62
62
  end
63
63
 
64
64
  payment_method_id = payment_methods[payment_method_to_use]['id']
65
+ payment_method_object_type = payment_methods[payment_method_to_use]['object']
65
66
 
66
- unless payment_method_id.nil?
67
- if payment_method_id.start_with?('card_')
68
- endpoint = '/credit_cards'
69
- elsif payment_method_id.start_with?('bank_')
70
- endpoint = '/bank_accounts'
71
- else
72
- raise EasyPost::Errors::InvalidObjectError.new(error_string)
73
- end
67
+ if payment_method_object_type == 'CreditCard'
68
+
69
+ endpoint = '/credit_cards'
70
+ elsif payment_method_object_type == 'BankAccount'
71
+ endpoint = '/bank_accounts'
72
+ else
73
+ raise EasyPost::Errors::InvalidObjectError.new(error_string)
74
74
  end
75
75
 
76
76
  [endpoint, payment_method_id]
@@ -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
@@ -34,4 +34,11 @@ class EasyPost::Services::Insurance < EasyPost::Services::Service
34
34
 
35
35
  all(params)
36
36
  end
37
+
38
+ # Refund an Insurance object
39
+ def refund(id)
40
+ response = @client.make_request(:post, "insurances/#{id}/refund")
41
+
42
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
43
+ end
37
44
  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
 
@@ -28,6 +28,7 @@ require_relative 'services/refund'
28
28
  require_relative 'services/report'
29
29
  require_relative 'services/scan_form'
30
30
  require_relative 'services/shipment'
31
+ require_relative 'services/smart_rate'
31
32
  require_relative 'services/tracker'
32
33
  require_relative 'services/user'
33
34
  require_relative 'services/webhook'
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.1.1
4
+ version: 6.3.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-01-23 00:00:00.000000000 Z
11
+ date: 2024-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -310,6 +310,7 @@ files:
310
310
  - lib/easypost/services/report.rb
311
311
  - lib/easypost/services/scan_form.rb
312
312
  - lib/easypost/services/shipment.rb
313
+ - lib/easypost/services/smart_rate.rb
313
314
  - lib/easypost/services/tracker.rb
314
315
  - lib/easypost/services/user.rb
315
316
  - lib/easypost/services/webhook.rb
@@ -338,7 +339,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
338
339
  - !ruby/object:Gem::Version
339
340
  version: '0'
340
341
  requirements: []
341
- rubygems_version: 3.5.4
342
+ rubygems_version: 3.5.14
342
343
  signing_key:
343
344
  specification_version: 4
344
345
  summary: EasyPost Ruby Client Library