mailsafepro 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +9 -0
- data/LICENSE +21 -0
- data/README.md +256 -0
- data/Rakefile +10 -0
- data/docs/APIKeyCreateRequest.md +20 -0
- data/docs/APIKeyListResponse.md +22 -0
- data/docs/APIKeyMeta.md +34 -0
- data/docs/APIKeysApi.md +1241 -0
- data/docs/AuthenticationApi.md +1171 -0
- data/docs/BatchEmailResponse.md +28 -0
- data/docs/BatchValidationRequest.md +26 -0
- data/docs/BillingApi.md +689 -0
- data/docs/BodyChangePlanBillingBillingChangePlanPost.md +18 -0
- data/docs/CheckoutRequest.md +18 -0
- data/docs/CheckoutSessionResponse.md +18 -0
- data/docs/DNSInfo.md +26 -0
- data/docs/DNSRecordDKIM.md +26 -0
- data/docs/DNSRecordDMARC.md +24 -0
- data/docs/DNSRecordSPF.md +24 -0
- data/docs/DefaultApi.md +141 -0
- data/docs/DeveloperToolsApi.md +154 -0
- data/docs/EmailResponse.md +46 -0
- data/docs/EmailValidationApi.md +479 -0
- data/docs/EmailValidationRequest.md +26 -0
- data/docs/HTTPValidationError.md +18 -0
- data/docs/HealthApi.md +937 -0
- data/docs/JobCreateRequest.md +32 -0
- data/docs/JobCreateResponse.md +22 -0
- data/docs/JobResultEntry.md +34 -0
- data/docs/JobResultsPage.md +26 -0
- data/docs/JobStatusResponse.md +28 -0
- data/docs/JobsApi.md +433 -0
- data/docs/KeyRotationRequest.md +22 -0
- data/docs/LogsApi.md +154 -0
- data/docs/PlanEnum.md +15 -0
- data/docs/PriorityEnum.md +15 -0
- data/docs/RegisterEndpoint.md +18 -0
- data/docs/ResponseTestNotificationBillingBillingTestNotificationPostValue.md +15 -0
- data/docs/RiskLevelEnum.md +15 -0
- data/docs/RotateSecret.md +18 -0
- data/docs/SMTPInfo.md +26 -0
- data/docs/SubscriptionResponse.md +24 -0
- data/docs/UserLogin.md +20 -0
- data/docs/UserRegister.md +22 -0
- data/docs/ValidationApi.md +479 -0
- data/docs/ValidationError.md +22 -0
- data/docs/ValidationErrorLocInner.md +15 -0
- data/docs/WebhookCreate.md +24 -0
- data/docs/WebhookResponse.md +22 -0
- data/docs/WebhookUpdate.md +24 -0
- data/docs/WebhooksApi.md +776 -0
- data/docs/WebhooksManagementApi.md +500 -0
- data/git_push.sh +57 -0
- data/lib/mailsafepro/api/api_keys_api.rb +1148 -0
- data/lib/mailsafepro/api/authentication_api.rb +1114 -0
- data/lib/mailsafepro/api/billing_api.rb +670 -0
- data/lib/mailsafepro/api/default_api.rb +149 -0
- data/lib/mailsafepro/api/developer_tools_api.rb +155 -0
- data/lib/mailsafepro/api/email_validation_api.rb +486 -0
- data/lib/mailsafepro/api/health_api.rb +877 -0
- data/lib/mailsafepro/api/jobs_api.rb +452 -0
- data/lib/mailsafepro/api/logs_api.rb +155 -0
- data/lib/mailsafepro/api/validation_api.rb +486 -0
- data/lib/mailsafepro/api/webhooks_api.rb +768 -0
- data/lib/mailsafepro/api/webhooks_management_api.rb +480 -0
- data/lib/mailsafepro/api_client.rb +397 -0
- data/lib/mailsafepro/api_error.rb +58 -0
- data/lib/mailsafepro/api_model_base.rb +88 -0
- data/lib/mailsafepro/configuration.rb +316 -0
- data/lib/mailsafepro/models/api_key_create_request.rb +185 -0
- data/lib/mailsafepro/models/api_key_list_response.rb +240 -0
- data/lib/mailsafepro/models/api_key_meta.rb +338 -0
- data/lib/mailsafepro/models/batch_email_response.rb +348 -0
- data/lib/mailsafepro/models/batch_validation_request.rb +290 -0
- data/lib/mailsafepro/models/body_change_plan_billing_billing_change_plan_post.rb +164 -0
- data/lib/mailsafepro/models/checkout_request.rb +166 -0
- data/lib/mailsafepro/models/checkout_session_response.rb +165 -0
- data/lib/mailsafepro/models/dns_info.rb +193 -0
- data/lib/mailsafepro/models/dns_record_dkim.rb +189 -0
- data/lib/mailsafepro/models/dns_record_dmarc.rb +179 -0
- data/lib/mailsafepro/models/dns_record_spf.rb +179 -0
- data/lib/mailsafepro/models/email_response.rb +454 -0
- data/lib/mailsafepro/models/email_validation_request.rb +252 -0
- data/lib/mailsafepro/models/http_validation_error.rb +149 -0
- data/lib/mailsafepro/models/job_create_request.rb +251 -0
- data/lib/mailsafepro/models/job_create_response.rb +216 -0
- data/lib/mailsafepro/models/job_result_entry.rb +257 -0
- data/lib/mailsafepro/models/job_results_page.rb +270 -0
- data/lib/mailsafepro/models/job_status_response.rb +231 -0
- data/lib/mailsafepro/models/key_rotation_request.rb +269 -0
- data/lib/mailsafepro/models/plan_enum.rb +41 -0
- data/lib/mailsafepro/models/priority_enum.rb +41 -0
- data/lib/mailsafepro/models/register_endpoint.rb +173 -0
- data/lib/mailsafepro/models/response_test_notification_billing_billing_test_notification_post_value.rb +103 -0
- data/lib/mailsafepro/models/risk_level_enum.rb +42 -0
- data/lib/mailsafepro/models/rotate_secret.rb +164 -0
- data/lib/mailsafepro/models/smtp_info.rb +206 -0
- data/lib/mailsafepro/models/subscription_response.rb +196 -0
- data/lib/mailsafepro/models/user_login.rb +211 -0
- data/lib/mailsafepro/models/user_register.rb +243 -0
- data/lib/mailsafepro/models/validation_error.rb +218 -0
- data/lib/mailsafepro/models/validation_error_loc_inner.rb +103 -0
- data/lib/mailsafepro/models/webhook_create.rb +213 -0
- data/lib/mailsafepro/models/webhook_response.rb +185 -0
- data/lib/mailsafepro/models/webhook_update.rb +204 -0
- data/lib/mailsafepro/version.rb +15 -0
- data/lib/mailsafepro.rb +88 -0
- data/mailsafepro.gemspec +39 -0
- data/spec/api/api_keys_api_spec.rb +245 -0
- data/spec/api/authentication_api_spec.rb +239 -0
- data/spec/api/billing_api_spec.rb +155 -0
- data/spec/api/default_api_spec.rb +60 -0
- data/spec/api/developer_tools_api_spec.rb +62 -0
- data/spec/api/email_validation_api_spec.rb +125 -0
- data/spec/api/health_api_spec.rb +200 -0
- data/spec/api/jobs_api_spec.rb +119 -0
- data/spec/api/logs_api_spec.rb +62 -0
- data/spec/api/validation_api_spec.rb +125 -0
- data/spec/api/webhooks_api_spec.rb +172 -0
- data/spec/api/webhooks_management_api_spec.rb +120 -0
- data/spec/models/api_key_create_request_spec.rb +42 -0
- data/spec/models/api_key_list_response_spec.rb +48 -0
- data/spec/models/api_key_meta_spec.rb +84 -0
- data/spec/models/batch_email_response_spec.rb +66 -0
- data/spec/models/batch_validation_request_spec.rb +60 -0
- data/spec/models/body_change_plan_billing_billing_change_plan_post_spec.rb +36 -0
- data/spec/models/checkout_request_spec.rb +36 -0
- data/spec/models/checkout_session_response_spec.rb +36 -0
- data/spec/models/dns_info_spec.rb +60 -0
- data/spec/models/dns_record_dkim_spec.rb +60 -0
- data/spec/models/dns_record_dmarc_spec.rb +54 -0
- data/spec/models/dns_record_spf_spec.rb +54 -0
- data/spec/models/email_response_spec.rb +120 -0
- data/spec/models/email_validation_request_spec.rb +60 -0
- data/spec/models/http_validation_error_spec.rb +36 -0
- data/spec/models/job_create_request_spec.rb +78 -0
- data/spec/models/job_create_response_spec.rb +48 -0
- data/spec/models/job_result_entry_spec.rb +84 -0
- data/spec/models/job_results_page_spec.rb +60 -0
- data/spec/models/job_status_response_spec.rb +66 -0
- data/spec/models/key_rotation_request_spec.rb +48 -0
- data/spec/models/plan_enum_spec.rb +30 -0
- data/spec/models/priority_enum_spec.rb +30 -0
- data/spec/models/register_endpoint_spec.rb +36 -0
- data/spec/models/response_test_notification_billing_billing_test_notification_post_value_spec.rb +21 -0
- data/spec/models/risk_level_enum_spec.rb +30 -0
- data/spec/models/rotate_secret_spec.rb +36 -0
- data/spec/models/smtp_info_spec.rb +60 -0
- data/spec/models/subscription_response_spec.rb +54 -0
- data/spec/models/user_login_spec.rb +42 -0
- data/spec/models/user_register_spec.rb +48 -0
- data/spec/models/validation_error_loc_inner_spec.rb +21 -0
- data/spec/models/validation_error_spec.rb +48 -0
- data/spec/models/webhook_create_spec.rb +54 -0
- data/spec/models/webhook_response_spec.rb +48 -0
- data/spec/models/webhook_update_spec.rb +54 -0
- data/spec/spec_helper.rb +111 -0
- metadata +291 -0
data/docs/LogsApi.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# MailSafePro::LogsApi
|
|
2
|
+
|
|
3
|
+
All URIs are relative to *http://localhost*
|
|
4
|
+
|
|
5
|
+
| Method | HTTP request | Description |
|
|
6
|
+
| ------ | ------------ | ----------- |
|
|
7
|
+
| [**clear_request_logs_logs_logs_requests_delete**](LogsApi.md#clear_request_logs_logs_logs_requests_delete) | **DELETE** /logs/logs/requests | Clear Request Logs |
|
|
8
|
+
| [**get_request_logs_logs_logs_requests_get**](LogsApi.md#get_request_logs_logs_logs_requests_get) | **GET** /logs/logs/requests | Get Request Logs |
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## clear_request_logs_logs_logs_requests_delete
|
|
12
|
+
|
|
13
|
+
> Object clear_request_logs_logs_logs_requests_delete
|
|
14
|
+
|
|
15
|
+
Clear Request Logs
|
|
16
|
+
|
|
17
|
+
Clear all request logs for current user.
|
|
18
|
+
|
|
19
|
+
### Examples
|
|
20
|
+
|
|
21
|
+
```ruby
|
|
22
|
+
require 'time'
|
|
23
|
+
require 'mailsafepro'
|
|
24
|
+
# setup authorization
|
|
25
|
+
MailSafePro.configure do |config|
|
|
26
|
+
# Configure Bearer authorization (JWT): Bearer
|
|
27
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
api_instance = MailSafePro::LogsApi.new
|
|
31
|
+
|
|
32
|
+
begin
|
|
33
|
+
# Clear Request Logs
|
|
34
|
+
result = api_instance.clear_request_logs_logs_logs_requests_delete
|
|
35
|
+
p result
|
|
36
|
+
rescue MailSafePro::ApiError => e
|
|
37
|
+
puts "Error when calling LogsApi->clear_request_logs_logs_logs_requests_delete: #{e}"
|
|
38
|
+
end
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
#### Using the clear_request_logs_logs_logs_requests_delete_with_http_info variant
|
|
42
|
+
|
|
43
|
+
This returns an Array which contains the response data, status code and headers.
|
|
44
|
+
|
|
45
|
+
> <Array(Object, Integer, Hash)> clear_request_logs_logs_logs_requests_delete_with_http_info
|
|
46
|
+
|
|
47
|
+
```ruby
|
|
48
|
+
begin
|
|
49
|
+
# Clear Request Logs
|
|
50
|
+
data, status_code, headers = api_instance.clear_request_logs_logs_logs_requests_delete_with_http_info
|
|
51
|
+
p status_code # => 2xx
|
|
52
|
+
p headers # => { ... }
|
|
53
|
+
p data # => Object
|
|
54
|
+
rescue MailSafePro::ApiError => e
|
|
55
|
+
puts "Error when calling LogsApi->clear_request_logs_logs_logs_requests_delete_with_http_info: #{e}"
|
|
56
|
+
end
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Parameters
|
|
60
|
+
|
|
61
|
+
This endpoint does not need any parameter.
|
|
62
|
+
|
|
63
|
+
### Return type
|
|
64
|
+
|
|
65
|
+
**Object**
|
|
66
|
+
|
|
67
|
+
### Authorization
|
|
68
|
+
|
|
69
|
+
[Bearer](../README.md#Bearer)
|
|
70
|
+
|
|
71
|
+
### HTTP request headers
|
|
72
|
+
|
|
73
|
+
- **Content-Type**: Not defined
|
|
74
|
+
- **Accept**: application/json
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## get_request_logs_logs_logs_requests_get
|
|
78
|
+
|
|
79
|
+
> Object get_request_logs_logs_logs_requests_get(opts)
|
|
80
|
+
|
|
81
|
+
Get Request Logs
|
|
82
|
+
|
|
83
|
+
Get request logs for authenticated user.
|
|
84
|
+
|
|
85
|
+
### Examples
|
|
86
|
+
|
|
87
|
+
```ruby
|
|
88
|
+
require 'time'
|
|
89
|
+
require 'mailsafepro'
|
|
90
|
+
# setup authorization
|
|
91
|
+
MailSafePro.configure do |config|
|
|
92
|
+
# Configure Bearer authorization (JWT): Bearer
|
|
93
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
api_instance = MailSafePro::LogsApi.new
|
|
97
|
+
opts = {
|
|
98
|
+
limit: 56, # Integer | Max results to return
|
|
99
|
+
status_code: 56, # Integer | Filter by HTTP status code
|
|
100
|
+
endpoint: 'endpoint_example', # String | Filter by endpoint path
|
|
101
|
+
method: 'method_example', # String | Filter by HTTP method (GET, POST, etc)
|
|
102
|
+
since: Time.parse('2013-10-20T19:20:30+01:00') # Time | Filter by timestamp (ISO 8601)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
begin
|
|
106
|
+
# Get Request Logs
|
|
107
|
+
result = api_instance.get_request_logs_logs_logs_requests_get(opts)
|
|
108
|
+
p result
|
|
109
|
+
rescue MailSafePro::ApiError => e
|
|
110
|
+
puts "Error when calling LogsApi->get_request_logs_logs_logs_requests_get: #{e}"
|
|
111
|
+
end
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Using the get_request_logs_logs_logs_requests_get_with_http_info variant
|
|
115
|
+
|
|
116
|
+
This returns an Array which contains the response data, status code and headers.
|
|
117
|
+
|
|
118
|
+
> <Array(Object, Integer, Hash)> get_request_logs_logs_logs_requests_get_with_http_info(opts)
|
|
119
|
+
|
|
120
|
+
```ruby
|
|
121
|
+
begin
|
|
122
|
+
# Get Request Logs
|
|
123
|
+
data, status_code, headers = api_instance.get_request_logs_logs_logs_requests_get_with_http_info(opts)
|
|
124
|
+
p status_code # => 2xx
|
|
125
|
+
p headers # => { ... }
|
|
126
|
+
p data # => Object
|
|
127
|
+
rescue MailSafePro::ApiError => e
|
|
128
|
+
puts "Error when calling LogsApi->get_request_logs_logs_logs_requests_get_with_http_info: #{e}"
|
|
129
|
+
end
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Parameters
|
|
133
|
+
|
|
134
|
+
| Name | Type | Description | Notes |
|
|
135
|
+
| ---- | ---- | ----------- | ----- |
|
|
136
|
+
| **limit** | **Integer** | Max results to return | [optional][default to 100] |
|
|
137
|
+
| **status_code** | **Integer** | Filter by HTTP status code | [optional] |
|
|
138
|
+
| **endpoint** | **String** | Filter by endpoint path | [optional] |
|
|
139
|
+
| **method** | **String** | Filter by HTTP method (GET, POST, etc) | [optional] |
|
|
140
|
+
| **since** | **Time** | Filter by timestamp (ISO 8601) | [optional] |
|
|
141
|
+
|
|
142
|
+
### Return type
|
|
143
|
+
|
|
144
|
+
**Object**
|
|
145
|
+
|
|
146
|
+
### Authorization
|
|
147
|
+
|
|
148
|
+
[Bearer](../README.md#Bearer)
|
|
149
|
+
|
|
150
|
+
### HTTP request headers
|
|
151
|
+
|
|
152
|
+
- **Content-Type**: Not defined
|
|
153
|
+
- **Accept**: application/json
|
|
154
|
+
|
data/docs/PlanEnum.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# MailSafePro::RegisterEndpoint
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **callback_url** | **String** | | |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'mailsafepro'
|
|
13
|
+
|
|
14
|
+
instance = MailSafePro::RegisterEndpoint.new(
|
|
15
|
+
callback_url: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# MailSafePro::ResponseTestNotificationBillingBillingTestNotificationPostValue
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
|
|
8
|
+
## Example
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
require 'mailsafepro'
|
|
12
|
+
|
|
13
|
+
instance = MailSafePro::ResponseTestNotificationBillingBillingTestNotificationPostValue.new()
|
|
14
|
+
```
|
|
15
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# MailSafePro::RotateSecret
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **endpoint_id** | **String** | | |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'mailsafepro'
|
|
13
|
+
|
|
14
|
+
instance = MailSafePro::RotateSecret.new(
|
|
15
|
+
endpoint_id: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
data/docs/SMTPInfo.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# MailSafePro::SMTPInfo
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **checked** | **Boolean** | SMTP check was performed | |
|
|
8
|
+
| **mailbox_exists** | **Boolean** | | [optional] |
|
|
9
|
+
| **mx_server** | **String** | | [optional] |
|
|
10
|
+
| **response_time** | **Float** | | [optional] |
|
|
11
|
+
| **error_message** | **String** | | [optional] |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
require 'mailsafepro'
|
|
17
|
+
|
|
18
|
+
instance = MailSafePro::SMTPInfo.new(
|
|
19
|
+
checked: null,
|
|
20
|
+
mailbox_exists: null,
|
|
21
|
+
mx_server: null,
|
|
22
|
+
response_time: null,
|
|
23
|
+
error_message: null
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# MailSafePro::SubscriptionResponse
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **plan** | **String** | | |
|
|
8
|
+
| **next_billing_date** | **String** | | [optional] |
|
|
9
|
+
| **status** | **String** | | [optional][default to 'active'] |
|
|
10
|
+
| **customer_id** | **String** | | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'mailsafepro'
|
|
16
|
+
|
|
17
|
+
instance = MailSafePro::SubscriptionResponse.new(
|
|
18
|
+
plan: null,
|
|
19
|
+
next_billing_date: null,
|
|
20
|
+
status: null,
|
|
21
|
+
customer_id: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
data/docs/UserLogin.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# MailSafePro::UserLogin
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **email** | **String** | User email address | |
|
|
8
|
+
| **password** | **String** | User password | |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'mailsafepro'
|
|
14
|
+
|
|
15
|
+
instance = MailSafePro::UserLogin.new(
|
|
16
|
+
email: null,
|
|
17
|
+
password: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# MailSafePro::UserRegister
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **email** | **String** | User email address | |
|
|
8
|
+
| **password** | **String** | User password | |
|
|
9
|
+
| **plan** | [**PlanEnum**](PlanEnum.md) | Subscription plan | [optional] |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'mailsafepro'
|
|
15
|
+
|
|
16
|
+
instance = MailSafePro::UserRegister.new(
|
|
17
|
+
email: null,
|
|
18
|
+
password: null,
|
|
19
|
+
plan: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|