lob 5.4.5 → 6.0.0.pre.rc

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