lob 5.4.6 → 6.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (496) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_SNIPPETS.md +1871 -0
  3. data/Gemfile +6 -1
  4. data/Gemfile.lock +70 -0
  5. data/LICENSE +21 -0
  6. data/MIGRATION.md +174 -0
  7. data/README.md +70 -97
  8. data/Rakefile +7 -5
  9. data/__tests__/Api/Address.unit.rb +210 -0
  10. data/__tests__/Api/BankAccount.unit.rb +244 -0
  11. data/__tests__/Api/BillingGroup.unit.rb +170 -0
  12. data/__tests__/Api/Card.unit.rb +183 -0
  13. data/__tests__/Api/CardOrder.unit.rb +89 -0
  14. data/__tests__/Api/Check.unit.rb +185 -0
  15. data/__tests__/Api/IntlAutocompletion.unit.rb +43 -0
  16. data/__tests__/Api/IntlVerification.unit.rb +71 -0
  17. data/__tests__/Api/Letter.unit.rb +191 -0
  18. data/__tests__/Api/Postcard.unit.rb +189 -0
  19. data/__tests__/Api/Require.unit.rb +21 -0
  20. data/__tests__/Api/ReverseGeocodeLookup.unit.rb +43 -0
  21. data/__tests__/Api/SelfMailer.unit.rb +190 -0
  22. data/__tests__/Api/Template.unit.rb +165 -0
  23. data/__tests__/Api/TemplateVersion.unit.rb +165 -0
  24. data/__tests__/Api/UsAutocompletion.unit.rb +42 -0
  25. data/__tests__/Api/UsVerification.unit.rb +71 -0
  26. data/__tests__/Api/ZipLookup.unit.rb +42 -0
  27. data/__tests__/Integration/Address.spec.rb +200 -0
  28. data/__tests__/Integration/BankAccount.spec.rb +243 -0
  29. data/__tests__/Integration/BillingGroup.spec.rb +163 -0
  30. data/__tests__/Integration/Card.spec.rb +198 -0
  31. data/__tests__/Integration/CardOrder.spec.rb +122 -0
  32. data/__tests__/Integration/Check.spec.rb +361 -0
  33. data/__tests__/Integration/IntlAutocompletion.spec.rb +54 -0
  34. data/__tests__/Integration/IntlVerification.spec.rb +90 -0
  35. data/__tests__/Integration/Letter.spec.rb +286 -0
  36. data/__tests__/Integration/Postcard.spec.rb +214 -0
  37. data/__tests__/Integration/ReverseGeocodeLookup.spec.rb +30 -0
  38. data/__tests__/Integration/SelfMailer.spec.rb +270 -0
  39. data/__tests__/Integration/Template.spec.rb +221 -0
  40. data/__tests__/Integration/TemplateVersion.spec.rb +275 -0
  41. data/__tests__/Integration/UsAutocompletion.spec.rb +54 -0
  42. data/__tests__/Integration/UsVerification.spec.rb +102 -0
  43. data/__tests__/Integration/ZipLookup.spec.rb +29 -0
  44. data/__tests__/TestFixtures.rb +36 -0
  45. data/docs/Address.md +52 -0
  46. data/docs/AddressDeletion.md +22 -0
  47. data/docs/AddressDomestic.md +40 -0
  48. data/docs/AddressDomesticExpanded.md +40 -0
  49. data/docs/AddressEditable.md +40 -0
  50. data/docs/AddressList.md +28 -0
  51. data/docs/AddressesApi.md +303 -0
  52. data/docs/BankAccount.md +44 -0
  53. data/docs/BankAccountDeletion.md +22 -0
  54. data/docs/BankAccountList.md +28 -0
  55. data/docs/BankAccountVerify.md +18 -0
  56. data/docs/BankAccountWritable.md +28 -0
  57. data/docs/BankAccountsApi.md +376 -0
  58. data/docs/BankTypeEnum.md +15 -0
  59. data/docs/BillingGroup.md +28 -0
  60. data/docs/BillingGroupEditable.md +20 -0
  61. data/docs/BillingGroupList.md +26 -0
  62. data/docs/BillingGroupsApi.md +305 -0
  63. data/docs/Buckslip.md +60 -0
  64. data/docs/BuckslipDeletion.md +20 -0
  65. data/docs/BuckslipEditable.md +24 -0
  66. data/docs/BuckslipOrder.md +42 -0
  67. data/docs/BuckslipOrderEditable.md +18 -0
  68. data/docs/BuckslipOrdersApi.md +157 -0
  69. data/docs/BuckslipOrdersList.md +26 -0
  70. data/docs/BuckslipUpdatable.md +22 -0
  71. data/docs/BuckslipsApi.md +372 -0
  72. data/docs/BuckslipsList.md +28 -0
  73. data/docs/BulkError.md +18 -0
  74. data/docs/BulkErrorProperties.md +20 -0
  75. data/docs/Campaign.md +52 -0
  76. data/docs/CampaignCreative.md +42 -0
  77. data/docs/CampaignDeletion.md +20 -0
  78. data/docs/CampaignUpdatable.md +36 -0
  79. data/docs/CampaignWritable.md +36 -0
  80. data/docs/CampaignsApi.md +376 -0
  81. data/docs/CampaignsList.md +28 -0
  82. data/docs/Card.md +54 -0
  83. data/docs/CardDeletion.md +22 -0
  84. data/docs/CardEditable.md +24 -0
  85. data/docs/CardList.md +28 -0
  86. data/docs/CardOrder.md +42 -0
  87. data/docs/CardOrderEditable.md +18 -0
  88. data/docs/CardOrderList.md +26 -0
  89. data/docs/CardOrdersApi.md +157 -0
  90. data/docs/CardUpdatable.md +22 -0
  91. data/docs/CardsApi.md +372 -0
  92. data/docs/Check.md +68 -0
  93. data/docs/CheckDeletion.md +22 -0
  94. data/docs/CheckEditable.md +48 -0
  95. data/docs/CheckList.md +28 -0
  96. data/docs/ChecksApi.md +315 -0
  97. data/docs/CmpScheduleType.md +15 -0
  98. data/docs/CmpUseType.md +15 -0
  99. data/docs/CountryExtended.md +15 -0
  100. data/docs/CountryExtendedExpanded.md +15 -0
  101. data/docs/CreativePatch.md +22 -0
  102. data/docs/CreativeResponse.md +42 -0
  103. data/docs/CreativeWritable.md +34 -0
  104. data/docs/CreativesApi.md +226 -0
  105. data/docs/CustomEnvelopeReturned.md +22 -0
  106. data/docs/DefaultApi.md +75 -0
  107. data/docs/DeliverabilityAnalysis.md +34 -0
  108. data/docs/DpvFootnote.md +15 -0
  109. data/docs/EngineHtml.md +15 -0
  110. data/docs/EventType.md +24 -0
  111. data/docs/Events.md +28 -0
  112. data/docs/Export.md +32 -0
  113. data/docs/ExportModel.md +18 -0
  114. data/docs/GeocodeAddresses.md +20 -0
  115. data/docs/GeocodeComponents.md +20 -0
  116. data/docs/HTTPValidationError.md +18 -0
  117. data/docs/IdentityValidation.md +34 -0
  118. data/docs/IdentityValidationApi.md +78 -0
  119. data/docs/InlineObject.md +18 -0
  120. data/docs/IntlAutocompletions.md +20 -0
  121. data/docs/IntlAutocompletionsApi.md +82 -0
  122. data/docs/IntlAutocompletionsWritable.md +26 -0
  123. data/docs/IntlComponents.md +26 -0
  124. data/docs/IntlSuggestions.md +30 -0
  125. data/docs/IntlVerification.md +38 -0
  126. data/docs/IntlVerificationOrError.md +40 -0
  127. data/docs/IntlVerificationWritable.md +32 -0
  128. data/docs/IntlVerifications.md +20 -0
  129. data/docs/IntlVerificationsApi.md +153 -0
  130. data/docs/IntlVerificationsPayload.md +18 -0
  131. data/docs/Letter.md +72 -0
  132. data/docs/LetterCustomEnvelope.md +22 -0
  133. data/docs/LetterDeletion.md +22 -0
  134. data/docs/LetterDetailsReturned.md +36 -0
  135. data/docs/LetterDetailsWritable.md +32 -0
  136. data/docs/LetterEditable.md +52 -0
  137. data/docs/LetterList.md +28 -0
  138. data/docs/LettersApi.md +317 -0
  139. data/docs/LobConfidenceScore.md +20 -0
  140. data/docs/LobError.md +22 -0
  141. data/docs/Location.md +20 -0
  142. data/docs/LocationAnalysis.md +22 -0
  143. data/docs/MailType.md +15 -0
  144. data/docs/MultiLineAddress.md +32 -0
  145. data/docs/MultipleComponents.md +30 -0
  146. data/docs/MultipleComponentsIntl.md +30 -0
  147. data/docs/MultipleComponentsList.md +18 -0
  148. data/docs/PlaceholderModel.md +28 -0
  149. data/docs/Postcard.md +60 -0
  150. data/docs/PostcardDeletion.md +22 -0
  151. data/docs/PostcardDetailsReturned.md +26 -0
  152. data/docs/PostcardDetailsWritable.md +20 -0
  153. data/docs/PostcardEditable.md +40 -0
  154. data/docs/PostcardList.md +28 -0
  155. data/docs/PostcardSize.md +15 -0
  156. data/docs/PostcardsApi.md +317 -0
  157. data/docs/QrCode.md +30 -0
  158. data/docs/ReturnEnvelope.md +24 -0
  159. data/docs/ReverseGeocode.md +22 -0
  160. data/docs/ReverseGeocodeLookupsApi.md +82 -0
  161. data/docs/SelfMailer.md +48 -0
  162. data/docs/SelfMailerDeletion.md +22 -0
  163. data/docs/SelfMailerEditable.md +38 -0
  164. data/docs/SelfMailerList.md +28 -0
  165. data/docs/SelfMailerSize.md +15 -0
  166. data/docs/SelfMailersApi.md +317 -0
  167. data/docs/SortBy.md +20 -0
  168. data/docs/SortBy1.md +20 -0
  169. data/docs/SortBy2.md +20 -0
  170. data/docs/SortBy3.md +20 -0
  171. data/docs/SortByDateModified.md +20 -0
  172. data/docs/Suggestions.md +26 -0
  173. data/docs/Template.md +34 -0
  174. data/docs/TemplateDeletion.md +22 -0
  175. data/docs/TemplateList.md +28 -0
  176. data/docs/TemplateUpdate.md +20 -0
  177. data/docs/TemplateVersion.md +36 -0
  178. data/docs/TemplateVersionDeletion.md +22 -0
  179. data/docs/TemplateVersionList.md +28 -0
  180. data/docs/TemplateVersionUpdatable.md +20 -0
  181. data/docs/TemplateVersionWritable.md +22 -0
  182. data/docs/TemplateVersionsApi.md +384 -0
  183. data/docs/TemplateWritable.md +24 -0
  184. data/docs/TemplatesApi.md +376 -0
  185. data/docs/Thumbnail.md +22 -0
  186. data/docs/TrackingEventCertified.md +34 -0
  187. data/docs/TrackingEventDetails.md +24 -0
  188. data/docs/TrackingEventNormal.md +34 -0
  189. data/docs/Upload.md +44 -0
  190. data/docs/UploadCreateExport.md +20 -0
  191. data/docs/UploadFile.md +20 -0
  192. data/docs/UploadState.md +15 -0
  193. data/docs/UploadUpdatable.md +20 -0
  194. data/docs/UploadWritable.md +18 -0
  195. data/docs/UploadsApi.md +584 -0
  196. data/docs/UsAutocompletions.md +22 -0
  197. data/docs/UsAutocompletionsApi.md +78 -0
  198. data/docs/UsAutocompletionsWritable.md +26 -0
  199. data/docs/UsComponents.md +68 -0
  200. data/docs/UsVerification.md +38 -0
  201. data/docs/UsVerificationOrError.md +40 -0
  202. data/docs/UsVerifications.md +20 -0
  203. data/docs/UsVerificationsApi.md +157 -0
  204. data/docs/UsVerificationsWritable.md +32 -0
  205. data/docs/ValidationError.md +22 -0
  206. data/docs/Zip.md +26 -0
  207. data/docs/ZipCodeType.md +15 -0
  208. data/docs/ZipEditable.md +18 -0
  209. data/docs/ZipLookupCity.md +26 -0
  210. data/docs/ZipLookupsApi.md +78 -0
  211. data/git_push.sh +57 -0
  212. data/lib/lob.rb +1 -7
  213. data/lib/openapi_client/api/addresses_api.rb +318 -0
  214. data/lib/openapi_client/api/bank_accounts_api.rb +397 -0
  215. data/lib/openapi_client/api/billing_groups_api.rb +320 -0
  216. data/lib/openapi_client/api/buckslip_orders_api.rb +183 -0
  217. data/lib/openapi_client/api/buckslips_api.rb +382 -0
  218. data/lib/openapi_client/api/campaigns_api.rb +389 -0
  219. data/lib/openapi_client/api/card_orders_api.rb +183 -0
  220. data/lib/openapi_client/api/cards_api.rb +382 -0
  221. data/lib/openapi_client/api/checks_api.rb +337 -0
  222. data/lib/openapi_client/api/creatives_api.rb +244 -0
  223. data/lib/openapi_client/api/default_api.rb +79 -0
  224. data/lib/openapi_client/api/identity_validation_api.rb +90 -0
  225. data/lib/openapi_client/api/intl_autocompletions_api.rb +97 -0
  226. data/lib/openapi_client/api/intl_verifications_api.rb +165 -0
  227. data/lib/openapi_client/api/letters_api.rb +340 -0
  228. data/lib/openapi_client/api/postcards_api.rb +340 -0
  229. data/lib/openapi_client/api/reverse_geocode_lookups_api.rb +101 -0
  230. data/lib/openapi_client/api/self_mailers_api.rb +340 -0
  231. data/lib/openapi_client/api/template_versions_api.rb +440 -0
  232. data/lib/openapi_client/api/templates_api.rb +397 -0
  233. data/lib/openapi_client/api/uploads_api.rb +604 -0
  234. data/lib/openapi_client/api/us_autocompletions_api.rb +90 -0
  235. data/lib/openapi_client/api/us_verifications_api.rb +172 -0
  236. data/lib/openapi_client/api/zip_lookups_api.rb +90 -0
  237. data/lib/openapi_client/api_client.rb +392 -0
  238. data/lib/openapi_client/api_error.rb +57 -0
  239. data/lib/openapi_client/configuration.rb +279 -0
  240. data/lib/openapi_client/models/address.rb +616 -0
  241. data/lib/openapi_client/models/address_deletion.rb +303 -0
  242. data/lib/openapi_client/models/address_domestic.rb +522 -0
  243. data/lib/openapi_client/models/address_domestic_expanded.rb +521 -0
  244. data/lib/openapi_client/models/address_editable.rb +503 -0
  245. data/lib/openapi_client/models/address_list.rb +324 -0
  246. data/lib/openapi_client/models/bank_account.rb +576 -0
  247. data/lib/openapi_client/models/bank_account_deletion.rb +303 -0
  248. data/lib/openapi_client/models/bank_account_list.rb +324 -0
  249. data/lib/openapi_client/models/bank_account_verify.rb +264 -0
  250. data/lib/openapi_client/models/bank_account_writable.rb +387 -0
  251. data/lib/openapi_client/models/bank_type_enum.rb +37 -0
  252. data/lib/openapi_client/models/billing_group.rb +395 -0
  253. data/lib/openapi_client/models/billing_group_editable.rb +278 -0
  254. data/lib/openapi_client/models/billing_group_list.rb +314 -0
  255. data/lib/openapi_client/models/buckslip.rb +814 -0
  256. data/lib/openapi_client/models/buckslip_deletion.rb +257 -0
  257. data/lib/openapi_client/models/buckslip_editable.rb +316 -0
  258. data/lib/openapi_client/models/buckslip_order.rb +438 -0
  259. data/lib/openapi_client/models/buckslip_order_editable.rb +262 -0
  260. data/lib/openapi_client/models/buckslip_orders_list.rb +312 -0
  261. data/lib/openapi_client/models/buckslip_updatable.rb +289 -0
  262. data/lib/openapi_client/models/buckslips_list.rb +324 -0
  263. data/lib/openapi_client/models/bulk_error.rb +229 -0
  264. data/lib/openapi_client/models/bulk_error_properties.rb +274 -0
  265. data/lib/openapi_client/models/campaign.rb +549 -0
  266. data/lib/openapi_client/models/campaign_creative.rb +467 -0
  267. data/lib/openapi_client/models/campaign_deletion.rb +257 -0
  268. data/lib/openapi_client/models/campaign_updatable.rb +341 -0
  269. data/lib/openapi_client/models/campaign_writable.rb +373 -0
  270. data/lib/openapi_client/models/campaigns_list.rb +324 -0
  271. data/lib/openapi_client/models/card.rb +681 -0
  272. data/lib/openapi_client/models/card_deletion.rb +303 -0
  273. data/lib/openapi_client/models/card_editable.rb +318 -0
  274. data/lib/openapi_client/models/card_list.rb +324 -0
  275. data/lib/openapi_client/models/card_order.rb +438 -0
  276. data/lib/openapi_client/models/card_order_editable.rb +261 -0
  277. data/lib/openapi_client/models/card_order_list.rb +273 -0
  278. data/lib/openapi_client/models/card_updatable.rb +289 -0
  279. data/lib/openapi_client/models/check.rb +812 -0
  280. data/lib/openapi_client/models/check_deletion.rb +303 -0
  281. data/lib/openapi_client/models/check_editable.rb +537 -0
  282. data/lib/openapi_client/models/check_list.rb +324 -0
  283. data/lib/openapi_client/models/chk_use_type.rb +38 -0
  284. data/lib/openapi_client/models/cmp_schedule_type.rb +36 -0
  285. data/lib/openapi_client/models/cmp_use_type.rb +38 -0
  286. data/lib/openapi_client/models/country_extended.rb +254 -0
  287. data/lib/openapi_client/models/country_extended_expanded.rb +255 -0
  288. data/lib/openapi_client/models/creative_patch.rb +274 -0
  289. data/lib/openapi_client/models/creative_response.rb +444 -0
  290. data/lib/openapi_client/models/creative_writable.rb +400 -0
  291. data/lib/openapi_client/models/custom_envelope_returned.rb +319 -0
  292. data/lib/openapi_client/models/deliverability_analysis.rb +451 -0
  293. data/lib/openapi_client/models/dpv_footnote.rb +50 -0
  294. data/lib/openapi_client/models/engine_html.rb +37 -0
  295. data/lib/openapi_client/models/event_type.rb +325 -0
  296. data/lib/openapi_client/models/events.rb +365 -0
  297. data/lib/openapi_client/models/export.rb +422 -0
  298. data/lib/openapi_client/models/export_model.rb +262 -0
  299. data/lib/openapi_client/models/geocode_addresses.rb +237 -0
  300. data/lib/openapi_client/models/geocode_components.rb +291 -0
  301. data/lib/openapi_client/models/http_validation_error.rb +230 -0
  302. data/lib/openapi_client/models/identity_validation.rb +460 -0
  303. data/lib/openapi_client/models/inline_object.rb +229 -0
  304. data/lib/openapi_client/models/intl_autocompletions.rb +282 -0
  305. data/lib/openapi_client/models/intl_autocompletions_writable.rb +278 -0
  306. data/lib/openapi_client/models/intl_components.rb +314 -0
  307. data/lib/openapi_client/models/intl_suggestions.rb +372 -0
  308. data/lib/openapi_client/models/intl_verification.rb +463 -0
  309. data/lib/openapi_client/models/intl_verification_or_error.rb +466 -0
  310. data/lib/openapi_client/models/intl_verification_writable.rb +388 -0
  311. data/lib/openapi_client/models/intl_verifications.rb +250 -0
  312. data/lib/openapi_client/models/intl_verifications_payload.rb +263 -0
  313. data/lib/openapi_client/models/letter.rb +737 -0
  314. data/lib/openapi_client/models/letter_custom_envelope.rb +300 -0
  315. data/lib/openapi_client/models/letter_deletion.rb +303 -0
  316. data/lib/openapi_client/models/letter_details_returned.rb +393 -0
  317. data/lib/openapi_client/models/letter_details_writable.rb +390 -0
  318. data/lib/openapi_client/models/letter_editable.rb +532 -0
  319. data/lib/openapi_client/models/letter_list.rb +324 -0
  320. data/lib/openapi_client/models/lob_confidence_score.rb +299 -0
  321. data/lib/openapi_client/models/lob_error.rb +296 -0
  322. data/lib/openapi_client/models/location.rb +289 -0
  323. data/lib/openapi_client/models/location_analysis.rb +305 -0
  324. data/lib/openapi_client/models/ltr_use_type.rb +38 -0
  325. data/lib/openapi_client/models/mail_type.rb +37 -0
  326. data/lib/openapi_client/models/multi_line_address.rb +431 -0
  327. data/lib/openapi_client/models/multiple_components.rb +405 -0
  328. data/lib/openapi_client/models/multiple_components_intl.rb +377 -0
  329. data/lib/openapi_client/models/multiple_components_list.rb +263 -0
  330. data/lib/openapi_client/models/optional_address_column_mapping.rb +259 -0
  331. data/lib/openapi_client/models/placeholder_model.rb +273 -0
  332. data/lib/openapi_client/models/postcard.rb +656 -0
  333. data/lib/openapi_client/models/postcard_deletion.rb +303 -0
  334. data/lib/openapi_client/models/postcard_details_returned.rb +321 -0
  335. data/lib/openapi_client/models/postcard_details_writable.rb +242 -0
  336. data/lib/openapi_client/models/postcard_editable.rb +393 -0
  337. data/lib/openapi_client/models/postcard_list.rb +324 -0
  338. data/lib/openapi_client/models/postcard_size.rb +38 -0
  339. data/lib/openapi_client/models/psc_use_type.rb +38 -0
  340. data/lib/openapi_client/models/qr_code.rb +339 -0
  341. data/lib/openapi_client/models/required_address_column_mapping.rb +285 -0
  342. data/lib/openapi_client/models/return_envelope.rb +258 -0
  343. data/lib/openapi_client/models/reverse_geocode.rb +304 -0
  344. data/lib/openapi_client/models/self_mailer.rb +584 -0
  345. data/lib/openapi_client/models/self_mailer_deletion.rb +303 -0
  346. data/lib/openapi_client/models/self_mailer_editable.rb +384 -0
  347. data/lib/openapi_client/models/self_mailer_list.rb +324 -0
  348. data/lib/openapi_client/models/self_mailer_size.rb +38 -0
  349. data/lib/openapi_client/models/sfm_use_type.rb +38 -0
  350. data/lib/openapi_client/models/sort_by.rb +283 -0
  351. data/lib/openapi_client/models/sort_by1.rb +283 -0
  352. data/lib/openapi_client/models/sort_by2.rb +283 -0
  353. data/lib/openapi_client/models/sort_by3.rb +283 -0
  354. data/lib/openapi_client/models/sort_by_date_modified.rb +283 -0
  355. data/lib/openapi_client/models/suggestions.rb +343 -0
  356. data/lib/openapi_client/models/template.rb +406 -0
  357. data/lib/openapi_client/models/template_deletion.rb +303 -0
  358. data/lib/openapi_client/models/template_list.rb +324 -0
  359. data/lib/openapi_client/models/template_update.rb +272 -0
  360. data/lib/openapi_client/models/template_version.rb +423 -0
  361. data/lib/openapi_client/models/template_version_deletion.rb +303 -0
  362. data/lib/openapi_client/models/template_version_list.rb +324 -0
  363. data/lib/openapi_client/models/template_version_updatable.rb +257 -0
  364. data/lib/openapi_client/models/template_version_writable.rb +291 -0
  365. data/lib/openapi_client/models/template_writable.rb +309 -0
  366. data/lib/openapi_client/models/thumbnail.rb +300 -0
  367. data/lib/openapi_client/models/tracking_event_certified.rb +419 -0
  368. data/lib/openapi_client/models/tracking_event_details.rb +308 -0
  369. data/lib/openapi_client/models/tracking_event_normal.rb +409 -0
  370. data/lib/openapi_client/models/upload.rb +498 -0
  371. data/lib/openapi_client/models/upload_create_export.rb +283 -0
  372. data/lib/openapi_client/models/upload_file.rb +283 -0
  373. data/lib/openapi_client/models/upload_state.rb +42 -0
  374. data/lib/openapi_client/models/upload_updatable.rb +267 -0
  375. data/lib/openapi_client/models/upload_writable.rb +271 -0
  376. data/lib/openapi_client/models/uploads_metadata.rb +237 -0
  377. data/lib/openapi_client/models/us_autocompletions.rb +328 -0
  378. data/lib/openapi_client/models/us_autocompletions_writable.rb +274 -0
  379. data/lib/openapi_client/models/us_components.rb +761 -0
  380. data/lib/openapi_client/models/us_verification.rb +461 -0
  381. data/lib/openapi_client/models/us_verification_or_error.rb +459 -0
  382. data/lib/openapi_client/models/us_verifications.rb +250 -0
  383. data/lib/openapi_client/models/us_verifications_writable.rb +421 -0
  384. data/lib/openapi_client/models/validation_error.rb +263 -0
  385. data/lib/openapi_client/models/zip.rb +363 -0
  386. data/lib/openapi_client/models/zip_code_type.rb +40 -0
  387. data/lib/openapi_client/models/zip_editable.rb +246 -0
  388. data/lib/openapi_client/models/zip_lookup_city.rb +331 -0
  389. data/lib/openapi_client/version.rb +15 -0
  390. data/lib/openapi_client.rb +212 -0
  391. data/openapi_client.gemspec +37 -0
  392. data/spec/api/addresses_api_spec.rb +88 -0
  393. data/spec/api/bank_accounts_api_spec.rb +101 -0
  394. data/spec/api/billing_groups_api_spec.rb +89 -0
  395. data/spec/api/campaigns_api_spec.rb +100 -0
  396. data/spec/api/card_orders_api_spec.rb +62 -0
  397. data/spec/api/cards_api_spec.rb +99 -0
  398. data/spec/api/checks_api_spec.rb +93 -0
  399. data/spec/api/creatives_api_spec.rb +73 -0
  400. data/spec/api/default_api_spec.rb +46 -0
  401. data/spec/api/identity_validation_api_spec.rb +47 -0
  402. data/spec/api/intl_autocompletions_api_spec.rb +48 -0
  403. data/spec/api/intl_verifications_api_spec.rb +60 -0
  404. data/spec/api/letters_api_spec.rb +94 -0
  405. data/spec/api/postcards_api_spec.rb +94 -0
  406. data/spec/api/reverse_geocode_lookups_api_spec.rb +48 -0
  407. data/spec/api/self_mailers_api_spec.rb +94 -0
  408. data/spec/api/template_versions_api_spec.rb +105 -0
  409. data/spec/api/templates_api_spec.rb +101 -0
  410. data/spec/api/uploads_api_spec.rb +135 -0
  411. data/spec/api/us_autocompletions_api_spec.rb +47 -0
  412. data/spec/api/us_verifications_api_spec.rb +61 -0
  413. data/spec/api/zip_lookups_api_spec.rb +47 -0
  414. data/spec/api_client_spec.rb +226 -0
  415. data/spec/configuration_spec.rb +42 -0
  416. data/spec/spec_helper.rb +105 -13
  417. metadata +450 -214
  418. data/.github/workflows/forked_tests_job.yml +0 -36
  419. data/.github/workflows/run_tests_job.yml +0 -32
  420. data/.github/workflows/update_gem.yml +0 -27
  421. data/.gitignore +0 -19
  422. data/CHANGELOG.md +0 -148
  423. data/CONTRIBUTING.md +0 -19
  424. data/LICENSE.txt +0 -22
  425. data/examples/README.md +0 -119
  426. data/examples/cards.rb +0 -51
  427. data/examples/checks.rb +0 -49
  428. data/examples/csv_checks/create_checks.rb +0 -48
  429. data/examples/csv_checks/input.csv +0 -6
  430. data/examples/csv_letters/create_letters.rb +0 -41
  431. data/examples/csv_letters/input.csv +0 -6
  432. data/examples/csv_letters/letter_template.html +0 -33
  433. data/examples/csv_postcards/create_postcards.rb +0 -46
  434. data/examples/csv_postcards/input.csv +0 -7
  435. data/examples/csv_postcards/postcard_back.html +0 -38
  436. data/examples/csv_postcards/postcard_front.html +0 -25
  437. data/examples/csv_verify/input.csv +0 -7
  438. data/examples/csv_verify/verify.rb +0 -37
  439. data/examples/letters.rb +0 -73
  440. data/examples/list_postcards_metadata.rb +0 -94
  441. data/examples/postcards.rb +0 -87
  442. data/examples/postcards_idempotent.rb +0 -92
  443. data/examples/postcards_intl.rb +0 -87
  444. data/examples/postcards_remote.rb +0 -87
  445. data/examples/postcards_send_date.rb +0 -97
  446. data/examples/postcards_template.rb +0 -98
  447. data/examples/self_mailers.rb +0 -38
  448. data/lib/lob/client.rb +0 -96
  449. data/lib/lob/errors/invalid_request_error.rb +0 -4
  450. data/lib/lob/errors/lob_error.rb +0 -20
  451. data/lib/lob/resources/address.rb +0 -14
  452. data/lib/lob/resources/bank_account.rb +0 -30
  453. data/lib/lob/resources/bulk_intl_verifications.rb +0 -27
  454. data/lib/lob/resources/bulk_us_verifications.rb +0 -28
  455. data/lib/lob/resources/card.rb +0 -46
  456. data/lib/lob/resources/check.rb +0 -14
  457. data/lib/lob/resources/group.rb +0 -14
  458. data/lib/lob/resources/groups_member.rb +0 -66
  459. data/lib/lob/resources/intl_verifications.rb +0 -26
  460. data/lib/lob/resources/letter.rb +0 -14
  461. data/lib/lob/resources/postcard.rb +0 -14
  462. data/lib/lob/resources/resource_base.rb +0 -150
  463. data/lib/lob/resources/self_mailer.rb +0 -14
  464. data/lib/lob/resources/us_autocompletions.rb +0 -26
  465. data/lib/lob/resources/us_reverse_geocode_lookups.rb +0 -26
  466. data/lib/lob/resources/us_verifications.rb +0 -27
  467. data/lib/lob/resources/us_zip_lookups.rb +0 -26
  468. data/lib/lob/version.rb +0 -3
  469. data/lob.gemspec +0 -31
  470. data/spec/lob/errors/lob_error_spec.rb +0 -19
  471. data/spec/lob/resources/address_spec.rb +0 -55
  472. data/spec/lob/resources/bank_account_spec.rb +0 -60
  473. data/spec/lob/resources/bulk_intl_verifications_spec.rb +0 -39
  474. data/spec/lob/resources/bulk_us_verifications_spec.rb +0 -51
  475. data/spec/lob/resources/card_spec.rb +0 -145
  476. data/spec/lob/resources/check_spec.rb +0 -119
  477. data/spec/lob/resources/group_spec.rb +0 -50
  478. data/spec/lob/resources/intl_verifications_spec.rb +0 -25
  479. data/spec/lob/resources/letter_spec.rb +0 -114
  480. data/spec/lob/resources/member_spec.rb +0 -65
  481. data/spec/lob/resources/postcard_spec.rb +0 -160
  482. data/spec/lob/resources/resource_base_spec.rb +0 -75
  483. data/spec/lob/resources/self_mailer_spec.rb +0 -177
  484. data/spec/lob/resources/us_autocompletions_spec.rb +0 -24
  485. data/spec/lob/resources/us_reverse_geocode_lookups_spec.rb +0 -22
  486. data/spec/lob/resources/us_verifications_spec.rb +0 -31
  487. data/spec/lob/resources/us_zip_lookups_spec.rb +0 -23
  488. data/spec/lob_spec.rb +0 -48
  489. data/spec/samples/8.5x11.pdf +0 -0
  490. data/spec/samples/card.pdf +1 -743
  491. data/spec/samples/postcardback.pdf +2 -2287
  492. data/spec/samples/postcardfront.pdf +1 -1549
  493. data/spec/samples/sfm-12x9-inside.pdf +0 -0
  494. data/spec/samples/sfm-12x9-outside.pdf +0 -0
  495. data/spec/samples/sfm-6x18-inside.pdf +0 -0
  496. data/spec/samples/sfm-6x18-outside.pdf +0 -0
@@ -0,0 +1,737 @@
1
+ =begin
2
+ #Lob
3
+
4
+ #The Lob API is organized around REST. Our API is designed to have predictable, resource-oriented URLs and uses HTTP response codes to indicate any API errors. <p> Looking for our [previous documentation](https://lob.github.io/legacy-docs/)?
5
+
6
+ The version of the OpenAPI document: 1.3.0
7
+ Contact: lob-openapi@lob.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.2.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Lob
17
+ class Letter
18
+ attr_accessor :to
19
+
20
+ attr_accessor :from
21
+
22
+ attr_accessor :carrier
23
+
24
+ attr_accessor :thumbnails
25
+
26
+ # A date in YYYY-MM-DD format of the mailpiece's expected delivery date based on its `send_date`.
27
+ attr_accessor :expected_delivery_date
28
+
29
+ # A timestamp in ISO 8601 format of the date the resource was created.
30
+ attr_accessor :date_created
31
+
32
+ # A timestamp in ISO 8601 format of the date the resource was last modified.
33
+ attr_accessor :date_modified
34
+
35
+ # Only returned if the resource has been successfully deleted.
36
+ attr_accessor :deleted
37
+
38
+ # Unique identifier prefixed with `ltr_`.
39
+ attr_accessor :id
40
+
41
+ # Unique identifier prefixed with `tmpl_`. ID of a saved [HTML template](#section/HTML-Templates).
42
+ attr_accessor :template_id
43
+
44
+ # Unique identifier prefixed with `vrsn_`.
45
+ attr_accessor :template_version_id
46
+
47
+ # A [signed link](#section/Asset-URLs) served over HTTPS. The link returned will expire in 30 days to prevent mis-sharing. Each time a GET request is initiated, a new signed URL will be generated.
48
+ attr_accessor :url
49
+
50
+ attr_accessor :object
51
+
52
+ # An internal description that identifies this resource. Must be no longer than 255 characters.
53
+ attr_accessor :description
54
+
55
+ # Use metadata to store custom information for tagging and labeling back to your internal systems. Must be an object with up to 20 key-value pairs. Keys must be at most 40 characters and values must be at most 500 characters. Neither can contain the characters `\"` and `\\`. i.e. '{\"customer_id\" : \"NEWYORK2015\"}' Nested objects are not supported. See [Metadata](#section/Metadata) for more information.
56
+ attr_accessor :metadata
57
+
58
+ # You can input a merge variable payload object to your template to render dynamic content. For example, if you have a template like: `{{variable_name}}`, pass in `{\"variable_name\": \"Harry\"}` to render `Harry`. `merge_variables` must be an object. Any type of value is accepted as long as the object is valid JSON; you can use `strings`, `numbers`, `booleans`, `arrays`, `objects`, or `null`. The max length of the object is 25,000 characters. If you call `JSON.stringify` on your object, it can be no longer than 25,000 characters. Your variable names cannot contain any whitespace or any of the following special characters: `!`, `\"`, `#`, `%`, `&`, `'`, `(`, `)`, `*`, `+`, `,`, `/`, `;`, `<`, `=`, `>`, `@`, `[`, `\\`, `]`, `^`, `` ` ``, `{`, `|`, `}`, `~`. More instructions can be found in [our guide to using html and merge variables](https://lob.com/resources/guides/general/using-html-and-merge-variables). Depending on your [Merge Variable strictness](https://dashboard.lob.com/#/settings/account) setting, if you define variables in your HTML but do not pass them here, you will either receive an error or the variable will render as an empty string.
59
+ attr_accessor :merge_variables
60
+
61
+ # A timestamp in ISO 8601 format which specifies a date after the current time and up to 180 days in the future to send the letter off for production. Setting a send date overrides the default [cancellation window](#section/Cancellation-Windows) applied to the mailpiece. Until the `send_date` has passed, the mailpiece can be canceled. If a date in the format `2017-11-01` is passed, it will evaluate to midnight UTC of that date (`2017-11-01T00:00:00.000Z`). If a datetime is passed, that exact time will be used. A `send_date` passed with no time zone will default to UTC, while a `send_date` passed with a time zone will be converted to UTC.
62
+ attr_accessor :send_date
63
+
64
+ # Add an extra service to your letter. See [pricing](https://www.lob.com/pricing/print-mail#compare) for extra costs incurred.
65
+ attr_accessor :extra_service
66
+
67
+ # The tracking number, if applicable, will appear here when it becomes available. Dummy tracking numbers are not created in test mode.
68
+ attr_accessor :tracking_number
69
+
70
+ # Tracking events are not populated for registered or regular (no extra service) letters.
71
+ attr_accessor :tracking_events
72
+
73
+ # Specifies the address the return envelope will be sent back to. This is an optional argument that is available if an account is signed up for the return envelope tracking beta, and has `return_envelope`, and `perforated_page` fields populated in the API request.
74
+ attr_accessor :return_address
75
+
76
+ attr_accessor :mail_type
77
+
78
+ # Set this key to `true` if you would like to print in color. Set to `false` if you would like to print in black and white.
79
+ attr_accessor :color
80
+
81
+ # Set this attribute to `true` for double sided printing, or `false` for for single sided printing. Defaults to `true`.
82
+ attr_accessor :double_sided
83
+
84
+ # Specifies the location of the address information that will show through the double-window envelope.
85
+ attr_accessor :address_placement
86
+
87
+ attr_accessor :return_envelope
88
+
89
+ # Required if `return_envelope` is `true`. The number of the page that should be perforated for use with the return envelope. Must be greater than or equal to `1`. The blank page added by `address_placement=insert_blank_page` will be ignored when considering the perforated page number. To see how perforation will impact your letter design, view our [perforation guide](https://s3-us-west-2.amazonaws.com/public.lob.com/assets/templates/letter_perf_template.pdf).
90
+ attr_accessor :perforated_page
91
+
92
+ attr_accessor :custom_envelope
93
+
94
+ # The unique ID of the associated campaign if the resource was generated from a campaign.
95
+ attr_accessor :campaign_id
96
+
97
+ attr_accessor :use_type
98
+
99
+ class EnumAttributeValidator
100
+ attr_reader :datatype
101
+ attr_reader :allowable_values
102
+
103
+ def initialize(datatype, allowable_values)
104
+ @allowable_values = allowable_values.map do |value|
105
+ case datatype.to_s
106
+ when /Integer/i
107
+ value.to_i
108
+ when /Float/i
109
+ value.to_f
110
+ else
111
+ value
112
+ end
113
+ end
114
+ end
115
+
116
+ def valid?(value)
117
+ !value || allowable_values.include?(value)
118
+ end
119
+ end
120
+
121
+ # Attribute mapping from ruby-style variable name to JSON key.
122
+ def self.attribute_map
123
+ {
124
+ :'to' => :'to',
125
+ :'from' => :'from',
126
+ :'carrier' => :'carrier',
127
+ :'thumbnails' => :'thumbnails',
128
+ :'expected_delivery_date' => :'expected_delivery_date',
129
+ :'date_created' => :'date_created',
130
+ :'date_modified' => :'date_modified',
131
+ :'deleted' => :'deleted',
132
+ :'id' => :'id',
133
+ :'template_id' => :'template_id',
134
+ :'template_version_id' => :'template_version_id',
135
+ :'url' => :'url',
136
+ :'object' => :'object',
137
+ :'description' => :'description',
138
+ :'metadata' => :'metadata',
139
+ :'merge_variables' => :'merge_variables',
140
+ :'send_date' => :'send_date',
141
+ :'extra_service' => :'extra_service',
142
+ :'tracking_number' => :'tracking_number',
143
+ :'tracking_events' => :'tracking_events',
144
+ :'return_address' => :'return_address',
145
+ :'mail_type' => :'mail_type',
146
+ :'color' => :'color',
147
+ :'double_sided' => :'double_sided',
148
+ :'address_placement' => :'address_placement',
149
+ :'return_envelope' => :'return_envelope',
150
+ :'perforated_page' => :'perforated_page',
151
+ :'custom_envelope' => :'custom_envelope',
152
+ :'campaign_id' => :'campaign_id',
153
+ :'use_type' => :'use_type'
154
+ }
155
+ end
156
+
157
+ # Returns all the JSON keys this model knows about
158
+ def self.acceptable_attributes
159
+ attribute_map.values
160
+ end
161
+
162
+ # Attribute type mapping.
163
+ def self.openapi_types
164
+ {
165
+ :'to' => :'Address',
166
+ :'from' => :'Address',
167
+ :'carrier' => :'String',
168
+ :'thumbnails' => :'Array<Thumbnail>',
169
+ :'expected_delivery_date' => :'Date',
170
+ :'date_created' => :'Time',
171
+ :'date_modified' => :'Time',
172
+ :'deleted' => :'Boolean',
173
+ :'id' => :'String',
174
+ :'template_id' => :'String',
175
+ :'template_version_id' => :'String',
176
+ :'url' => :'String',
177
+ :'object' => :'String',
178
+ :'description' => :'String',
179
+ :'metadata' => :'Hash<String, String>',
180
+ :'merge_variables' => :'Object',
181
+ :'send_date' => :'Time',
182
+ :'extra_service' => :'String',
183
+ :'tracking_number' => :'String',
184
+ :'tracking_events' => :'Array<TrackingEventNormal>',
185
+ :'return_address' => Array[:'AddressEditable', :'String'],
186
+ :'mail_type' => :'MailType',
187
+ :'color' => :'Boolean',
188
+ :'double_sided' => :'Boolean',
189
+ :'address_placement' => :'String',
190
+ :'return_envelope' => Array[:'ReturnEnvelope', :'Boolean'],
191
+ :'perforated_page' => :'Integer',
192
+ :'custom_envelope' => :'LetterCustomEnvelope',
193
+ :'campaign_id' => :'String',
194
+ :'use_type' => :'LtrUseType'
195
+ }
196
+ end
197
+
198
+ # List of attributes with nullable: true
199
+ def self.openapi_nullable
200
+ Set.new([
201
+ :'description',
202
+ :'merge_variables',
203
+ :'tracking_number',
204
+ :'return_address',
205
+ :'return_envelope',
206
+ :'perforated_page',
207
+ :'custom_envelope',
208
+ :'campaign_id',
209
+ :'use_type'
210
+ ])
211
+ end
212
+
213
+ # Initializes the object
214
+ # @param [Hash] attributes Model attributes in the form of hash
215
+ def initialize(attributes = {})
216
+ if (!attributes.is_a?(Hash))
217
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Lob::Letter` initialize method"
218
+ end
219
+
220
+ # check to see if the attribute exists and convert string to symbol for hash key
221
+ attributes = attributes.each_with_object({}) { |(k, v), h|
222
+ if (!self.class.attribute_map.key?(k.to_sym))
223
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Lob::Letter`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
224
+ end
225
+ h[k.to_sym] = v
226
+ }
227
+
228
+ if attributes.key?(:'to')
229
+ self.to = attributes[:'to']
230
+ end
231
+
232
+ if attributes.key?(:'from')
233
+ self.from = attributes[:'from']
234
+ end
235
+
236
+ if attributes.key?(:'carrier')
237
+ self.carrier = attributes[:'carrier']
238
+ else
239
+ self.carrier = 'USPS'
240
+ end
241
+
242
+ if attributes.key?(:'thumbnails')
243
+ if (value = attributes[:'thumbnails']).is_a?(Array)
244
+ self.thumbnails = value
245
+ end
246
+ end
247
+
248
+ if attributes.key?(:'expected_delivery_date')
249
+ self.expected_delivery_date = attributes[:'expected_delivery_date']
250
+ end
251
+
252
+ if attributes.key?(:'date_created')
253
+ self.date_created = attributes[:'date_created']
254
+ end
255
+
256
+ if attributes.key?(:'date_modified')
257
+ self.date_modified = attributes[:'date_modified']
258
+ end
259
+
260
+ if attributes.key?(:'deleted')
261
+ self.deleted = attributes[:'deleted']
262
+ end
263
+
264
+ if attributes.key?(:'id')
265
+ self.id = attributes[:'id']
266
+ end
267
+
268
+ if attributes.key?(:'template_id')
269
+ self.template_id = attributes[:'template_id']
270
+ end
271
+
272
+ if attributes.key?(:'template_version_id')
273
+ self.template_version_id = attributes[:'template_version_id']
274
+ end
275
+
276
+ if attributes.key?(:'url')
277
+ self.url = attributes[:'url']
278
+ end
279
+
280
+ if attributes.key?(:'object')
281
+ self.object = attributes[:'object']
282
+ else
283
+ self.object = 'letter'
284
+ end
285
+
286
+ if attributes.key?(:'description')
287
+ self.description = attributes[:'description']
288
+ end
289
+
290
+ if attributes.key?(:'metadata')
291
+ if (value = attributes[:'metadata']).is_a?(Hash)
292
+ self.metadata = value
293
+ end
294
+ end
295
+
296
+ if attributes.key?(:'merge_variables')
297
+ self.merge_variables = attributes[:'merge_variables']
298
+ end
299
+
300
+ if attributes.key?(:'send_date')
301
+ self.send_date = attributes[:'send_date']
302
+ end
303
+
304
+ if attributes.key?(:'extra_service')
305
+ self.extra_service = attributes[:'extra_service']
306
+ end
307
+
308
+ if attributes.key?(:'tracking_number')
309
+ self.tracking_number = attributes[:'tracking_number']
310
+ end
311
+
312
+ if attributes.key?(:'tracking_events')
313
+ if (value = attributes[:'tracking_events']).is_a?(Array)
314
+ self.tracking_events = value
315
+ end
316
+ end
317
+
318
+ if attributes.key?(:'return_address')
319
+ self.return_address = attributes[:'return_address']
320
+ end
321
+
322
+ if attributes.key?(:'mail_type')
323
+ self.mail_type = attributes[:'mail_type']
324
+ else
325
+ self.mail_type = 'usps_first_class'
326
+ end
327
+
328
+ if attributes.key?(:'color')
329
+ self.color = attributes[:'color']
330
+ end
331
+
332
+ if attributes.key?(:'double_sided')
333
+ self.double_sided = attributes[:'double_sided']
334
+ else
335
+ self.double_sided = true
336
+ end
337
+
338
+ if attributes.key?(:'address_placement')
339
+ self.address_placement = attributes[:'address_placement']
340
+ else
341
+ self.address_placement = 'top_first_page'
342
+ end
343
+
344
+ if attributes.key?(:'return_envelope')
345
+ self.return_envelope = attributes[:'return_envelope']
346
+ end
347
+
348
+ if attributes.key?(:'perforated_page')
349
+ self.perforated_page = attributes[:'perforated_page']
350
+ end
351
+
352
+ if attributes.key?(:'custom_envelope')
353
+ self.custom_envelope = attributes[:'custom_envelope']
354
+ end
355
+
356
+ if attributes.key?(:'campaign_id')
357
+ self.campaign_id = attributes[:'campaign_id']
358
+ end
359
+
360
+ if attributes.key?(:'use_type')
361
+ self.use_type = attributes[:'use_type']
362
+ end
363
+ end
364
+
365
+ # Show invalid properties with the reasons. Usually used together with valid?
366
+ # @return Array for valid properties with the reasons
367
+ def list_invalid_properties
368
+ invalid_properties = Array.new
369
+ if @to.nil?
370
+ invalid_properties.push('invalid value for "to", to cannot be nil.')
371
+ end
372
+
373
+ if @from.nil?
374
+ invalid_properties.push('invalid value for "from", from cannot be nil.')
375
+ end
376
+
377
+ if @date_created.nil?
378
+ invalid_properties.push('invalid value for "date_created", date_created cannot be nil.')
379
+ end
380
+
381
+ if @date_modified.nil?
382
+ invalid_properties.push('invalid value for "date_modified", date_modified cannot be nil.')
383
+ end
384
+
385
+ if @id.nil?
386
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
387
+ end
388
+
389
+ pattern = Regexp.new(/^ltr_[a-zA-Z0-9]+$/)
390
+ if @id !~ pattern
391
+ invalid_properties.push("invalid value for \"id\", must conform to the pattern #{pattern}.")
392
+ end
393
+
394
+ pattern = Regexp.new(/^tmpl_[a-zA-Z0-9]+$/)
395
+ if !@template_id.nil? && @template_id !~ pattern
396
+ invalid_properties.push("invalid value for \"template_id\", must conform to the pattern #{pattern}.")
397
+ end
398
+
399
+ pattern = Regexp.new(/^vrsn_[a-zA-Z0-9]+$/)
400
+ if !@template_version_id.nil? && @template_version_id !~ pattern
401
+ invalid_properties.push("invalid value for \"template_version_id\", must conform to the pattern #{pattern}.")
402
+ end
403
+
404
+ pattern = Regexp.new(/^https:\/\/(lob-assets|lob-assets-staging)\.com\/(letters|postcards|bank-accounts|checks|self-mailers|cards)\/[a-z]{3,4}_[a-z0-9]{15,16}(\.pdf|_thumb_[a-z]+_[0-9]+\.png)\?(version=[a-z0-9-]*&)?expires=[0-9]{10}&signature=[a-zA-Z0-9_-]+$/)
405
+ if !@url.nil? && @url !~ pattern
406
+ invalid_properties.push("invalid value for \"url\", must conform to the pattern #{pattern}.")
407
+ end
408
+
409
+ if @object.nil?
410
+ invalid_properties.push('invalid value for "object", object cannot be nil.')
411
+ end
412
+
413
+ if !@description.nil? && @description.to_s.length > 255
414
+ invalid_properties.push('invalid value for "description", the character length must be smaller than or equal to 255.')
415
+ end
416
+
417
+ if !@tracking_events.nil? && @tracking_events.length > 0
418
+ invalid_properties.push('invalid value for "tracking_events", number of items must be less than or equal to 0.')
419
+ end
420
+
421
+ invalid_properties
422
+ end
423
+
424
+ # Check to see if the all the properties in the model are valid
425
+ # @return true if the model is valid
426
+ def valid?
427
+ return false if @to.nil?
428
+ return false if @from.nil?
429
+ carrier_validator = EnumAttributeValidator.new('String', ["USPS"])
430
+ return false unless carrier_validator.valid?(@carrier)
431
+ return false if @date_created.nil?
432
+ return false if @date_modified.nil?
433
+ return false if @id.nil?
434
+ return false if @id !~ Regexp.new(/^ltr_[a-zA-Z0-9]+$/)
435
+ return false if !@template_id.nil? && @template_id !~ Regexp.new(/^tmpl_[a-zA-Z0-9]+$/)
436
+ return false if !@template_version_id.nil? && @template_version_id !~ Regexp.new(/^vrsn_[a-zA-Z0-9]+$/)
437
+ return false if !@url.nil? && @url !~ Regexp.new(/^https:\/\/(lob-assets|lob-assets-staging)\.com\/(letters|postcards|bank-accounts|checks|self-mailers|cards)\/[a-z]{3,4}_[a-z0-9]{15,16}(\.pdf|_thumb_[a-z]+_[0-9]+\.png)\?(version=[a-z0-9-]*&)?expires=[0-9]{10}&signature=[a-zA-Z0-9_-]+$/)
438
+ return false if @object.nil?
439
+ object_validator = EnumAttributeValidator.new('String', ["letter"])
440
+ return false unless object_validator.valid?(@object)
441
+ return false if !@description.nil? && @description.to_s.length > 255
442
+ return false if !@tracking_events.nil? && @tracking_events.length > 0
443
+ address_placement_validator = EnumAttributeValidator.new('String', ["top_first_page", "insert_blank_page", "bottom_first_page_center", "bottom_first_page"])
444
+ return false unless address_placement_validator.valid?(@address_placement)
445
+ true
446
+ end
447
+
448
+ # Custom attribute writer method checking allowed values (enum).
449
+ # @param [Object] carrier Object to be assigned
450
+ def carrier=(carrier)
451
+ validator = EnumAttributeValidator.new('String', ["USPS"])
452
+ unless validator.valid?(carrier)
453
+ fail ArgumentError, "invalid value for \"carrier\", must be one of #{validator.allowable_values}."
454
+ end
455
+ @carrier = carrier
456
+ end
457
+
458
+ # Custom attribute writer method with validation
459
+ # @param [Object] id Value to be assigned
460
+ def id=(id)
461
+ if id.nil?
462
+ fail ArgumentError, 'id cannot be nil'
463
+ end
464
+
465
+ pattern = Regexp.new(/^ltr_[a-zA-Z0-9]+$/)
466
+ if id !~ pattern
467
+ fail ArgumentError, "invalid value for \"id\", must conform to the pattern #{pattern}."
468
+ end
469
+
470
+ @id = id
471
+ end
472
+
473
+ # Custom attribute writer method with validation
474
+ # @param [Object] template_id Value to be assigned
475
+ def template_id=(template_id)
476
+ pattern = Regexp.new(/^tmpl_[a-zA-Z0-9]+$/)
477
+ if !template_id.nil? && template_id !~ pattern
478
+ fail ArgumentError, "invalid value for \"template_id\", must conform to the pattern #{pattern}."
479
+ end
480
+
481
+ @template_id = template_id
482
+ end
483
+
484
+ # Custom attribute writer method with validation
485
+ # @param [Object] template_version_id Value to be assigned
486
+ def template_version_id=(template_version_id)
487
+ pattern = Regexp.new(/^vrsn_[a-zA-Z0-9]+$/)
488
+ if !template_version_id.nil? && template_version_id !~ pattern
489
+ fail ArgumentError, "invalid value for \"template_version_id\", must conform to the pattern #{pattern}."
490
+ end
491
+
492
+ @template_version_id = template_version_id
493
+ end
494
+
495
+ # Custom attribute writer method with validation
496
+ # @param [Object] url Value to be assigned
497
+ def url=(url)
498
+ pattern = Regexp.new(/^https:\/\/(lob-assets|lob-assets-staging)\.com\/(letters|postcards|bank-accounts|checks|self-mailers|cards)\/[a-z]{3,4}_[a-z0-9]{15,16}(\.pdf|_thumb_[a-z]+_[0-9]+\.png)\?(version=[a-z0-9-]*&)?expires=[0-9]{10}&signature=[a-zA-Z0-9_-]+$/)
499
+ if !url.nil? && url !~ pattern
500
+ fail ArgumentError, "invalid value for \"url\", must conform to the pattern #{pattern}."
501
+ end
502
+
503
+ @url = url
504
+ end
505
+
506
+ # Custom attribute writer method checking allowed values (enum).
507
+ # @param [Object] object Object to be assigned
508
+ def object=(object)
509
+ validator = EnumAttributeValidator.new('String', ["letter"])
510
+ unless validator.valid?(object)
511
+ fail ArgumentError, "invalid value for \"object\", must be one of #{validator.allowable_values}."
512
+ end
513
+ @object = object
514
+ end
515
+
516
+ # Custom attribute writer method with validation
517
+ # @param [Object] description Value to be assigned
518
+ def description=(description)
519
+ if !description.nil? && description.to_s.length > 255
520
+ fail ArgumentError, 'invalid value for "description", the character length must be smaller than or equal to 255.'
521
+ end
522
+
523
+ @description = description
524
+ end
525
+
526
+ # Custom attribute writer method with validation
527
+ # @param [Object] metadata Value to be assigned
528
+ def metadata=(metadata)
529
+ @metadata = metadata
530
+ end
531
+
532
+ # Custom attribute writer method with validation
533
+ # @param [Object] merge_variables Value to be assigned
534
+ def merge_variables=(merge_variables)
535
+ @merge_variables = merge_variables
536
+ end
537
+
538
+ # Custom attribute writer method with validation
539
+ # @param [Object] tracking_events Value to be assigned
540
+ def tracking_events=(tracking_events)
541
+ if !tracking_events.nil? && tracking_events.length > 0
542
+ fail ArgumentError, 'invalid value for "tracking_events", number of items must be less than or equal to 0.'
543
+ end
544
+
545
+ @tracking_events = tracking_events
546
+ end
547
+
548
+ # Custom attribute writer method checking allowed values (enum).
549
+ # @param [Object] address_placement Object to be assigned
550
+ def address_placement=(address_placement)
551
+ validator = EnumAttributeValidator.new('String', ["top_first_page", "insert_blank_page", "bottom_first_page_center", "bottom_first_page"])
552
+ unless validator.valid?(address_placement)
553
+ fail ArgumentError, "invalid value for \"address_placement\", must be one of #{validator.allowable_values}."
554
+ end
555
+ @address_placement = address_placement
556
+ end
557
+
558
+ # Checks equality by comparing each attribute.
559
+ # @param [Object] Object to be compared
560
+ def ==(o)
561
+ return true if self.equal?(o)
562
+ self.class == o.class &&
563
+ to == o.to &&
564
+ from == o.from &&
565
+ carrier == o.carrier &&
566
+ thumbnails == o.thumbnails &&
567
+ expected_delivery_date == o.expected_delivery_date &&
568
+ date_created == o.date_created &&
569
+ date_modified == o.date_modified &&
570
+ deleted == o.deleted &&
571
+ id == o.id &&
572
+ template_id == o.template_id &&
573
+ template_version_id == o.template_version_id &&
574
+ url == o.url &&
575
+ object == o.object &&
576
+ description == o.description &&
577
+ metadata == o.metadata &&
578
+ merge_variables == o.merge_variables &&
579
+ send_date == o.send_date &&
580
+ extra_service == o.extra_service &&
581
+ tracking_number == o.tracking_number &&
582
+ tracking_events == o.tracking_events &&
583
+ return_address == o.return_address &&
584
+ mail_type == o.mail_type &&
585
+ color == o.color &&
586
+ double_sided == o.double_sided &&
587
+ address_placement == o.address_placement &&
588
+ return_envelope == o.return_envelope &&
589
+ perforated_page == o.perforated_page &&
590
+ custom_envelope == o.custom_envelope &&
591
+ campaign_id == o.campaign_id &&
592
+ use_type == o.use_type
593
+ end
594
+
595
+ # @see the `==` method
596
+ # @param [Object] Object to be compared
597
+ def eql?(o)
598
+ self == o
599
+ end
600
+
601
+ # Calculates hash code according to all attributes.
602
+ # @return [Integer] Hash code
603
+ def hash
604
+ [to, from, carrier, thumbnails, expected_delivery_date, date_created, date_modified, deleted, id, template_id, template_version_id, url, object, description, metadata, merge_variables, send_date, extra_service, tracking_number, tracking_events, return_address, mail_type, color, double_sided, address_placement, return_envelope, perforated_page, custom_envelope, campaign_id, use_type].hash
605
+ end
606
+
607
+
608
+ # Builds the object from hash
609
+ # @param [Hash] attributes Model attributes in the form of hash
610
+ # @return [Object] Returns the model itself
611
+ def self.build_from_hash(attributes)
612
+ new.build_from_hash(attributes)
613
+ end
614
+
615
+ # Builds the object from hash
616
+ # @param [Hash] attributes Model attributes in the form of hash
617
+ # @return [Object] Returns the model itself
618
+ def build_from_hash(attributes)
619
+ return nil unless attributes.is_a?(Hash)
620
+ attributes = attributes.transform_keys(&:to_sym)
621
+ self.class.openapi_types.each_pair do |key, type|
622
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
623
+ self.send("#{key}=", nil) # // guardrails-disable-line
624
+ elsif type =~ /\AArray<(.*)>/i
625
+ # check to ensure the input is an array given that the attribute
626
+ # is documented as an array but the input is not
627
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
628
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) }) # // guardrails-disable-line
629
+ end
630
+ elsif !attributes[self.class.attribute_map[key]].nil? && type.kind_of?(Array)
631
+ for base_type in type do
632
+ res = _deserialize(base_type, attributes[self.class.attribute_map[key]])
633
+ if !res.nil?
634
+ self.send("#{key}=", res) # // guardrails-disable-line
635
+ break
636
+ end
637
+ end
638
+ elsif !attributes[self.class.attribute_map[key]].nil?
639
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) # // guardrails-disable-line
640
+ end
641
+ end
642
+
643
+ self
644
+ end
645
+
646
+ # Deserializes the data based on type
647
+ # @param string type Data type
648
+ # @param string value Value to be deserialized
649
+ # @return [Object] Deserialized data
650
+ def _deserialize(type, value)
651
+ case type.to_sym
652
+ when :Time
653
+ Time.parse(value)
654
+ when :Date
655
+ Date.parse(value)
656
+ when :String
657
+ value.to_s
658
+ when :Integer
659
+ value.to_i
660
+ when :Float
661
+ value.to_f
662
+ when :Boolean
663
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
664
+ true
665
+ else
666
+ false
667
+ end
668
+ when :Object
669
+ # generic object (usually a Hash), return directly
670
+ value
671
+ when /\AArray<(?<inner_type>.+)>\z/
672
+ inner_type = Regexp.last_match[:inner_type]
673
+ value.map { |v| _deserialize(inner_type, v) }
674
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
675
+ k_type = Regexp.last_match[:k_type]
676
+ v_type = Regexp.last_match[:v_type]
677
+ {}.tap do |hash|
678
+ value.each do |k, v|
679
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
680
+ end
681
+ end
682
+ else # model
683
+ # models (e.g. Pet) or oneOf
684
+ klass = Lob.const_get(type)
685
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
686
+ end
687
+ end
688
+
689
+ # Returns the string representation of the object
690
+ # @return [String] String presentation of the object
691
+ def to_s
692
+ to_hash.to_s
693
+ end
694
+
695
+ # to_body is an alias to to_hash (backward compatibility)
696
+ # @return [Hash] Returns the object in the form of hash
697
+ def to_body
698
+ to_hash
699
+ end
700
+
701
+ # Returns the object in the form of hash
702
+ # @return [Hash] Returns the object in the form of hash
703
+ def to_hash
704
+ hash = {}
705
+ self.class.attribute_map.each_pair do |attr, param|
706
+ value = self.send(attr) # // guardrails-disable-line
707
+ if value.nil?
708
+ is_nullable = self.class.openapi_nullable.include?(attr)
709
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
710
+ end
711
+
712
+ hash[param] = _to_hash(value)
713
+ end
714
+ hash
715
+ end
716
+
717
+ # Outputs non-array value in the form of hash
718
+ # For object, use to_hash. Otherwise, just return the value
719
+ # @param [Object] value Any valid value
720
+ # @return [Hash] Returns the value in the form of hash
721
+ def _to_hash(value)
722
+ if value.is_a?(Array)
723
+ value.compact.map { |v| _to_hash(v) }
724
+ elsif value.is_a?(Hash)
725
+ {}.tap do |hash|
726
+ value.each { |k, v| hash[k] = _to_hash(v) }
727
+ end
728
+ elsif value.respond_to? :to_hash
729
+ value.to_hash
730
+ else
731
+ value
732
+ end
733
+ end
734
+
735
+ end
736
+
737
+ end