checkify 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +9 -0
  3. data/LICENSE +21 -0
  4. data/README.md +319 -0
  5. data/docs/AbnAddress.md +24 -0
  6. data/docs/AbnResponse.md +34 -0
  7. data/docs/AbnResponseAbnDetails.md +22 -0
  8. data/docs/Account.md +36 -0
  9. data/docs/AccountApi.md +74 -0
  10. data/docs/AcnAddress.md +24 -0
  11. data/docs/AcnResponse.md +38 -0
  12. data/docs/AcnResponseAbnDetails.md +18 -0
  13. data/docs/AcnResponseAcnDetails.md +22 -0
  14. data/docs/AddressApi.md +457 -0
  15. data/docs/AddressDetails.md +52 -0
  16. data/docs/AsicDocument.md +28 -0
  17. data/docs/AsicDocumentContentsInner.md +20 -0
  18. data/docs/BatchApi.md +217 -0
  19. data/docs/BulkCreateRequest.md +20 -0
  20. data/docs/BulkCreateRequestItems.md +49 -0
  21. data/docs/BulkJob.md +26 -0
  22. data/docs/BusinessActivity.md +22 -0
  23. data/docs/BusinessActivityResponse.md +22 -0
  24. data/docs/BusinessApi.md +361 -0
  25. data/docs/CommunicationApi.md +151 -0
  26. data/docs/DirectorIdResponse.md +24 -0
  27. data/docs/EmailResponse.md +42 -0
  28. data/docs/EmailResponseDns.md +18 -0
  29. data/docs/EmailResponseFormat.md +22 -0
  30. data/docs/Error.md +22 -0
  31. data/docs/FormerName.md +22 -0
  32. data/docs/IdentityApi.md +225 -0
  33. data/docs/NameAvailability.md +26 -0
  34. data/docs/PhoneResponse.md +32 -0
  35. data/docs/PostcodeResult.md +30 -0
  36. data/docs/ReverseResult.md +38 -0
  37. data/docs/SanctionsResponse.md +20 -0
  38. data/docs/SanctionsResult.md +42 -0
  39. data/docs/SanctionsResultSanctions.md +24 -0
  40. data/docs/SuburbDetails.md +30 -0
  41. data/docs/TfnResponse.md +24 -0
  42. data/lib/checkify/api/account_api.rb +79 -0
  43. data/lib/checkify/api/address_api.rb +490 -0
  44. data/lib/checkify/api/batch_api.rb +216 -0
  45. data/lib/checkify/api/business_api.rb +365 -0
  46. data/lib/checkify/api/communication_api.rb +157 -0
  47. data/lib/checkify/api/identity_api.rb +248 -0
  48. data/lib/checkify/api_client.rb +397 -0
  49. data/lib/checkify/api_error.rb +58 -0
  50. data/lib/checkify/api_model_base.rb +88 -0
  51. data/lib/checkify/client.rb +25 -0
  52. data/lib/checkify/configuration.rb +305 -0
  53. data/lib/checkify/models/abn_address.rb +173 -0
  54. data/lib/checkify/models/abn_response.rb +223 -0
  55. data/lib/checkify/models/abn_response_abn_details.rb +165 -0
  56. data/lib/checkify/models/account.rb +277 -0
  57. data/lib/checkify/models/acn_address.rb +173 -0
  58. data/lib/checkify/models/acn_response.rb +244 -0
  59. data/lib/checkify/models/acn_response_abn_details.rb +145 -0
  60. data/lib/checkify/models/acn_response_acn_details.rb +164 -0
  61. data/lib/checkify/models/address_details.rb +324 -0
  62. data/lib/checkify/models/asic_document.rb +192 -0
  63. data/lib/checkify/models/asic_document_contents_inner.rb +154 -0
  64. data/lib/checkify/models/bulk_create_request.rb +213 -0
  65. data/lib/checkify/models/bulk_create_request_items.rb +103 -0
  66. data/lib/checkify/models/bulk_job.rb +215 -0
  67. data/lib/checkify/models/business_activity.rb +166 -0
  68. data/lib/checkify/models/business_activity_response.rb +165 -0
  69. data/lib/checkify/models/director_id_response.rb +174 -0
  70. data/lib/checkify/models/email_response.rb +292 -0
  71. data/lib/checkify/models/email_response_dns.rb +146 -0
  72. data/lib/checkify/models/email_response_format.rb +167 -0
  73. data/lib/checkify/models/error.rb +166 -0
  74. data/lib/checkify/models/former_name.rb +163 -0
  75. data/lib/checkify/models/name_availability.rb +186 -0
  76. data/lib/checkify/models/phone_response.rb +216 -0
  77. data/lib/checkify/models/postcode_result.rb +201 -0
  78. data/lib/checkify/models/reverse_result.rb +237 -0
  79. data/lib/checkify/models/sanctions_response.rb +157 -0
  80. data/lib/checkify/models/sanctions_result.rb +339 -0
  81. data/lib/checkify/models/sanctions_result_sanctions.rb +172 -0
  82. data/lib/checkify/models/suburb_details.rb +207 -0
  83. data/lib/checkify/models/tfn_response.rb +174 -0
  84. data/lib/checkify/version.rb +15 -0
  85. data/lib/checkify.rb +78 -0
  86. data/openapi.yaml +1373 -0
  87. metadata +182 -0
data/openapi.yaml ADDED
@@ -0,0 +1,1373 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Checkify API
4
+ description: >-
5
+ Australian and New Zealand address validation, business lookups, identity
6
+ checks, and communication validation through a single REST interface.
7
+ version: "1.0.0"
8
+ contact:
9
+ name: Checkify
10
+ url: https://checkify.com.au
11
+ x-logo:
12
+ url: https://checkify.com.au/logo.png
13
+
14
+ servers:
15
+ - url: https://checkify.com.au/api/v1
16
+ description: Production
17
+
18
+ security:
19
+ - BearerAuth: []
20
+
21
+ tags:
22
+ - name: Account
23
+ description: Plan, usage, and billing information
24
+ - name: Address
25
+ description: Address autocomplete, reverse geocode, suburb, and postcode lookups
26
+ - name: Business
27
+ description: ABN, ACN, company/business name availability, and activity search
28
+ - name: Identity
29
+ description: Sanctions screening, Director ID, and TFN validation
30
+ - name: Communication
31
+ description: Email and phone validation
32
+ - name: Batch
33
+ description: Asynchronous bulk processing
34
+
35
+ paths:
36
+ /account:
37
+ get:
38
+ operationId: getAccount
39
+ summary: Get account details
40
+ description: >
41
+ Returns your current plan, unit usage, billing period, subscription
42
+ status, and a per-endpoint breakdown of API calls for the current
43
+ period. Costs 0 units. Usage breakdown is cached for 5 minutes.
44
+ tags: [Account]
45
+ responses:
46
+ "200":
47
+ description: Account details
48
+ content:
49
+ application/json:
50
+ schema:
51
+ $ref: "#/components/schemas/Account"
52
+ "401":
53
+ $ref: "#/components/responses/Unauthorized"
54
+
55
+ /autocomplete:
56
+ get:
57
+ operationId: autocomplete
58
+ summary: Address autocomplete
59
+ description: >
60
+ Type-ahead address search across 17.8 M+ Australian and New Zealand
61
+ addresses. Returns a map of address IDs to highlighted HTML strings.
62
+ Costs 0 units.
63
+ tags: [Address]
64
+ parameters:
65
+ - name: query
66
+ in: query
67
+ required: true
68
+ description: Search term, min 3 characters
69
+ schema:
70
+ type: string
71
+ minLength: 3
72
+ - $ref: "#/components/parameters/Country"
73
+ responses:
74
+ "200":
75
+ description: Map of address IDs to highlighted HTML strings
76
+ content:
77
+ application/json:
78
+ schema:
79
+ type: object
80
+ additionalProperties:
81
+ type: string
82
+ example:
83
+ CKNSW717780562: "<strong>1</strong> <strong>Smith</strong> <strong>St</strong>reet, SYDNEY NSW 2000"
84
+ CKNSW718422105: "<strong>1</strong> <strong>Smith</strong> Rd, MARRICKVILLE NSW 2204"
85
+ "401":
86
+ $ref: "#/components/responses/Unauthorized"
87
+ "422":
88
+ $ref: "#/components/responses/ValidationError"
89
+
90
+ /autocomplete-details:
91
+ get:
92
+ operationId: autocompleteDetails
93
+ summary: Address details
94
+ description: >
95
+ Fetch the full structured record for an address ID returned by
96
+ /autocomplete. Costs 1 unit.
97
+ tags: [Address]
98
+ parameters:
99
+ - name: id
100
+ in: query
101
+ required: true
102
+ description: Address ID from /autocomplete
103
+ schema:
104
+ type: string
105
+ - $ref: "#/components/parameters/Country"
106
+ responses:
107
+ "200":
108
+ description: Full structured address record
109
+ content:
110
+ application/json:
111
+ schema:
112
+ $ref: "#/components/schemas/AddressDetails"
113
+ "401":
114
+ $ref: "#/components/responses/Unauthorized"
115
+ "404":
116
+ $ref: "#/components/responses/NotFound"
117
+ "422":
118
+ $ref: "#/components/responses/ValidationError"
119
+
120
+ /reverse:
121
+ get:
122
+ operationId: reverseGeocode
123
+ summary: Reverse geocode
124
+ description: >
125
+ Find the nearest address(es) to a coordinate pair. Results are ordered
126
+ by distance. Costs 1 unit.
127
+ tags: [Address]
128
+ parameters:
129
+ - name: lat
130
+ in: query
131
+ required: true
132
+ description: "Latitude (AU: −44 to −9, NZ: −47 to −34)"
133
+ schema:
134
+ type: number
135
+ format: double
136
+ - name: lng
137
+ in: query
138
+ required: true
139
+ description: "Longitude (AU: 112–155, NZ: 166–178)"
140
+ schema:
141
+ type: number
142
+ format: double
143
+ - name: radius
144
+ in: query
145
+ required: false
146
+ description: Search radius in metres (1–5000, default 100)
147
+ schema:
148
+ type: integer
149
+ minimum: 1
150
+ maximum: 5000
151
+ default: 100
152
+ - name: limit
153
+ in: query
154
+ required: false
155
+ description: Max results (1–10, default 1)
156
+ schema:
157
+ type: integer
158
+ minimum: 1
159
+ maximum: 10
160
+ default: 1
161
+ - $ref: "#/components/parameters/Country"
162
+ responses:
163
+ "200":
164
+ description: Array of nearby addresses ordered by distance
165
+ content:
166
+ application/json:
167
+ schema:
168
+ type: array
169
+ items:
170
+ $ref: "#/components/schemas/ReverseResult"
171
+ "401":
172
+ $ref: "#/components/responses/Unauthorized"
173
+ "422":
174
+ $ref: "#/components/responses/ValidationError"
175
+
176
+ /autocomplete-suburb:
177
+ get:
178
+ operationId: autocompleteSuburb
179
+ summary: Suburb autocomplete
180
+ description: >
181
+ Search for suburbs and localities across Australia and New Zealand.
182
+ Returns a map of locality IDs to highlighted strings. Costs 0 units.
183
+ tags: [Address]
184
+ parameters:
185
+ - name: query
186
+ in: query
187
+ required: true
188
+ description: Search term, min 2 characters
189
+ schema:
190
+ type: string
191
+ minLength: 2
192
+ - $ref: "#/components/parameters/Country"
193
+ responses:
194
+ "200":
195
+ description: Map of locality IDs to highlighted HTML strings
196
+ content:
197
+ application/json:
198
+ schema:
199
+ type: object
200
+ additionalProperties:
201
+ type: string
202
+ example:
203
+ NSW3805: "<strong>Par</strong>ramatta NSW 2150"
204
+ NSW3806: "<strong>Par</strong>kes NSW 2870"
205
+ "401":
206
+ $ref: "#/components/responses/Unauthorized"
207
+ "422":
208
+ $ref: "#/components/responses/ValidationError"
209
+
210
+ /autocomplete-suburb-details:
211
+ get:
212
+ operationId: autocompleteSuburbDetails
213
+ summary: Suburb details
214
+ description: >
215
+ Get full details for a locality ID returned by /autocomplete-suburb.
216
+ Costs 1 unit. For NZ results, state/stateFull are null; use region
217
+ instead. NZ localities return postcode: null.
218
+ tags: [Address]
219
+ parameters:
220
+ - name: id
221
+ in: query
222
+ required: true
223
+ description: Locality ID from /autocomplete-suburb
224
+ schema:
225
+ type: string
226
+ - $ref: "#/components/parameters/Country"
227
+ responses:
228
+ "200":
229
+ description: Full suburb/locality record
230
+ content:
231
+ application/json:
232
+ schema:
233
+ $ref: "#/components/schemas/SuburbDetails"
234
+ "401":
235
+ $ref: "#/components/responses/Unauthorized"
236
+ "404":
237
+ $ref: "#/components/responses/NotFound"
238
+ "422":
239
+ $ref: "#/components/responses/ValidationError"
240
+
241
+ /postcode:
242
+ get:
243
+ operationId: postcodeLookup
244
+ summary: Postcode lookup
245
+ description: >
246
+ Look up all suburbs and localities that belong to a postcode. Returns
247
+ up to 50 results ordered alphabetically. Costs 1 unit.
248
+ tags: [Address]
249
+ parameters:
250
+ - name: postcode
251
+ in: query
252
+ required: true
253
+ description: 4-digit postcode
254
+ schema:
255
+ type: string
256
+ pattern: '^\d{4}$'
257
+ - $ref: "#/components/parameters/Country"
258
+ responses:
259
+ "200":
260
+ description: Array of localities for the postcode
261
+ content:
262
+ application/json:
263
+ schema:
264
+ type: array
265
+ items:
266
+ $ref: "#/components/schemas/PostcodeResult"
267
+ "401":
268
+ $ref: "#/components/responses/Unauthorized"
269
+ "422":
270
+ $ref: "#/components/responses/ValidationError"
271
+
272
+ /business-activity:
273
+ get:
274
+ operationId: businessActivity
275
+ summary: Business activity search
276
+ description: >
277
+ Search over 9,000 Australian business activities and industry
278
+ classifications (ANZSIC codes) with fuzzy matching, misspelling
279
+ correction, and relevance scoring. Costs 0 units.
280
+ tags: [Business]
281
+ parameters:
282
+ - name: search
283
+ in: query
284
+ required: true
285
+ description: Search query, min 3 characters
286
+ schema:
287
+ type: string
288
+ minLength: 3
289
+ - name: limit
290
+ in: query
291
+ required: false
292
+ description: Max results (1–100, default 25)
293
+ schema:
294
+ type: integer
295
+ minimum: 1
296
+ maximum: 100
297
+ default: 25
298
+ responses:
299
+ "200":
300
+ description: Matching business activities
301
+ content:
302
+ application/json:
303
+ schema:
304
+ $ref: "#/components/schemas/BusinessActivityResponse"
305
+ "401":
306
+ $ref: "#/components/responses/Unauthorized"
307
+ "422":
308
+ $ref: "#/components/responses/ValidationError"
309
+
310
+ /abn:
311
+ get:
312
+ operationId: abnLookup
313
+ summary: ABN lookup
314
+ description: >
315
+ Validate an Australian Business Number and retrieve registered business
316
+ details from the ABR. Costs 1 unit.
317
+ tags: [Business]
318
+ parameters:
319
+ - name: abn
320
+ in: query
321
+ required: true
322
+ description: 11-digit ABN — spaces accepted
323
+ schema:
324
+ type: string
325
+ responses:
326
+ "200":
327
+ description: ABN details
328
+ content:
329
+ application/json:
330
+ schema:
331
+ $ref: "#/components/schemas/AbnResponse"
332
+ "401":
333
+ $ref: "#/components/responses/Unauthorized"
334
+ "404":
335
+ $ref: "#/components/responses/NotFound"
336
+ "422":
337
+ $ref: "#/components/responses/ValidationError"
338
+
339
+ /acn:
340
+ get:
341
+ operationId: acnLookup
342
+ summary: ACN lookup
343
+ description: >
344
+ Validate an Australian Company Number and retrieve registered company
345
+ details from ASIC, including entity name, type, registration dates,
346
+ addresses, former names, and recent documents. Costs 1 unit.
347
+ tags: [Business]
348
+ parameters:
349
+ - name: acn
350
+ in: query
351
+ required: true
352
+ description: 9-digit ACN — spaces accepted
353
+ schema:
354
+ type: string
355
+ responses:
356
+ "200":
357
+ description: ACN details
358
+ content:
359
+ application/json:
360
+ schema:
361
+ $ref: "#/components/schemas/AcnResponse"
362
+ "401":
363
+ $ref: "#/components/responses/Unauthorized"
364
+ "404":
365
+ $ref: "#/components/responses/NotFound"
366
+ "422":
367
+ $ref: "#/components/responses/ValidationError"
368
+
369
+ /company-name:
370
+ get:
371
+ operationId: companyNameCheck
372
+ summary: Company name availability
373
+ description: >
374
+ Check whether a proposed company name is available for registration
375
+ with ASIC. Costs 1 unit.
376
+ tags: [Business]
377
+ parameters:
378
+ - name: name
379
+ in: query
380
+ required: true
381
+ description: Proposed company name (max 200 characters)
382
+ schema:
383
+ type: string
384
+ maxLength: 200
385
+ responses:
386
+ "200":
387
+ description: Name availability result
388
+ content:
389
+ application/json:
390
+ schema:
391
+ $ref: "#/components/schemas/NameAvailability"
392
+ "401":
393
+ $ref: "#/components/responses/Unauthorized"
394
+ "422":
395
+ $ref: "#/components/responses/ValidationError"
396
+
397
+ /business-name:
398
+ get:
399
+ operationId: businessNameCheck
400
+ summary: Business name availability
401
+ description: >
402
+ Check whether a proposed business (trading) name is available for
403
+ registration with ASIC. Costs 1 unit.
404
+ tags: [Business]
405
+ parameters:
406
+ - name: name
407
+ in: query
408
+ required: true
409
+ description: Proposed business name (max 200 characters)
410
+ schema:
411
+ type: string
412
+ maxLength: 200
413
+ responses:
414
+ "200":
415
+ description: Name availability result
416
+ content:
417
+ application/json:
418
+ schema:
419
+ $ref: "#/components/schemas/NameAvailability"
420
+ "401":
421
+ $ref: "#/components/responses/Unauthorized"
422
+ "422":
423
+ $ref: "#/components/responses/ValidationError"
424
+
425
+ /sanctions-screening:
426
+ get:
427
+ operationId: sanctionsScreening
428
+ summary: Sanctions screening
429
+ description: >
430
+ Screen an individual or entity name against 11 sanctions and debarment
431
+ lists including DFAT, UN, OFAC SDN, EU, UK OFSI, Canada, New Zealand,
432
+ France, Hong Kong, World Bank, and IDB. Costs 3 units.
433
+ tags: [Identity]
434
+ parameters:
435
+ - name: name
436
+ in: query
437
+ required: true
438
+ description: Full name to screen (3–200 characters)
439
+ schema:
440
+ type: string
441
+ minLength: 3
442
+ maxLength: 200
443
+ - name: birth_year
444
+ in: query
445
+ required: false
446
+ description: Year of birth (1900–2008) — boosts confidence if matched
447
+ schema:
448
+ type: integer
449
+ minimum: 1900
450
+ maximum: 2008
451
+ - name: country
452
+ in: query
453
+ required: false
454
+ description: ISO 3166-1 alpha-2 country code — boosts confidence if matched
455
+ schema:
456
+ type: string
457
+ pattern: '^[A-Z]{2}$'
458
+ - name: city
459
+ in: query
460
+ required: false
461
+ description: City of birth (max 200 characters) — fuzzy-compared for confidence boost
462
+ schema:
463
+ type: string
464
+ maxLength: 200
465
+ responses:
466
+ "200":
467
+ description: Sanctions screening results
468
+ content:
469
+ application/json:
470
+ schema:
471
+ $ref: "#/components/schemas/SanctionsResponse"
472
+ "401":
473
+ $ref: "#/components/responses/Unauthorized"
474
+ "422":
475
+ $ref: "#/components/responses/ValidationError"
476
+
477
+ /director-id:
478
+ get:
479
+ operationId: directorIdValidation
480
+ summary: Director ID validation
481
+ description: >
482
+ Validate the format and checksum of an Australian Director
483
+ Identification Number using the official ABRS Damm algorithm.
484
+ Structural check only — no live ABRS registry lookup. Costs 1 unit.
485
+ tags: [Identity]
486
+ parameters:
487
+ - name: director_id
488
+ in: query
489
+ required: true
490
+ description: 15-digit Director ID starting with 036 — spaces accepted
491
+ schema:
492
+ type: string
493
+ responses:
494
+ "200":
495
+ description: Valid Director ID
496
+ content:
497
+ application/json:
498
+ schema:
499
+ $ref: "#/components/schemas/DirectorIdResponse"
500
+ "401":
501
+ $ref: "#/components/responses/Unauthorized"
502
+ "422":
503
+ $ref: "#/components/responses/ValidationError"
504
+
505
+ /tfn:
506
+ get:
507
+ operationId: tfnValidation
508
+ summary: TFN validation
509
+ description: >
510
+ Validate the format and checksum of an Australian Tax File Number.
511
+ Structural check only — no live ATO registry lookup. Costs 1 unit.
512
+ tags: [Identity]
513
+ parameters:
514
+ - name: tfn
515
+ in: query
516
+ required: true
517
+ description: 8 or 9-digit TFN — spaces and hyphens accepted
518
+ schema:
519
+ type: string
520
+ responses:
521
+ "200":
522
+ description: Valid TFN
523
+ content:
524
+ application/json:
525
+ schema:
526
+ $ref: "#/components/schemas/TfnResponse"
527
+ "401":
528
+ $ref: "#/components/responses/Unauthorized"
529
+ "422":
530
+ $ref: "#/components/responses/ValidationError"
531
+
532
+ /email:
533
+ get:
534
+ operationId: emailValidation
535
+ summary: Email validation
536
+ description: >
537
+ Validate an email address — checks RFC format, DNS/MX records, SMTP
538
+ deliverability, disposable/free/role detection, and quality score.
539
+ Costs 1 unit.
540
+ tags: [Communication]
541
+ parameters:
542
+ - name: email
543
+ in: query
544
+ required: true
545
+ description: Email address to validate (max 254 characters)
546
+ schema:
547
+ type: string
548
+ format: email
549
+ maxLength: 254
550
+ responses:
551
+ "200":
552
+ description: Email validation result
553
+ content:
554
+ application/json:
555
+ schema:
556
+ $ref: "#/components/schemas/EmailResponse"
557
+ "401":
558
+ $ref: "#/components/responses/Unauthorized"
559
+ "422":
560
+ $ref: "#/components/responses/ValidationError"
561
+
562
+ /phone:
563
+ get:
564
+ operationId: phoneValidation
565
+ summary: Phone validation
566
+ description: >
567
+ Validate and normalise a phone number. Detects country, returns E.164 /
568
+ national / international formats, line type, carrier, and location.
569
+ Defaults to AU parsing. Costs 1 unit.
570
+ tags: [Communication]
571
+ parameters:
572
+ - name: phone
573
+ in: query
574
+ required: true
575
+ description: Phone number to validate — include country code or use the country hint
576
+ schema:
577
+ type: string
578
+ - name: country
579
+ in: query
580
+ required: false
581
+ description: ISO 3166-1 alpha-2 country code hint for local numbers (default AU)
582
+ schema:
583
+ type: string
584
+ default: AU
585
+ responses:
586
+ "200":
587
+ description: Phone validation result
588
+ content:
589
+ application/json:
590
+ schema:
591
+ $ref: "#/components/schemas/PhoneResponse"
592
+ "401":
593
+ $ref: "#/components/responses/Unauthorized"
594
+ "422":
595
+ $ref: "#/components/responses/ValidationError"
596
+
597
+ /bulk:
598
+ post:
599
+ operationId: createBulkJob
600
+ summary: Create bulk job
601
+ description: >
602
+ Submit a batch of records for asynchronous processing. Supports ABN,
603
+ ACN, TFN, Director ID, Email, Phone, Reverse Geocode, Address
604
+ Validation, and Sanctions Screening. Each row consumes the same units
605
+ as a single API call. Business & Enterprise plans only.
606
+ tags: [Batch]
607
+ requestBody:
608
+ required: true
609
+ content:
610
+ application/json:
611
+ schema:
612
+ $ref: "#/components/schemas/BulkCreateRequest"
613
+ multipart/form-data:
614
+ schema:
615
+ type: object
616
+ required: [endpoint, file]
617
+ properties:
618
+ endpoint:
619
+ type: string
620
+ enum:
621
+ - address-validation
622
+ - reverse
623
+ - abn
624
+ - acn
625
+ - sanctions-screening
626
+ - tfn
627
+ - director-id
628
+ - email
629
+ - phone
630
+ file:
631
+ type: string
632
+ format: binary
633
+ description: CSV file with headers matching the required fields
634
+ responses:
635
+ "201":
636
+ description: Bulk job created
637
+ content:
638
+ application/json:
639
+ schema:
640
+ $ref: "#/components/schemas/BulkJob"
641
+ "401":
642
+ $ref: "#/components/responses/Unauthorized"
643
+ "422":
644
+ $ref: "#/components/responses/ValidationError"
645
+
646
+ /bulk/{id}:
647
+ get:
648
+ operationId: getBulkJob
649
+ summary: Get bulk job status
650
+ description: Check the status of a bulk processing job.
651
+ tags: [Batch]
652
+ parameters:
653
+ - name: id
654
+ in: path
655
+ required: true
656
+ schema:
657
+ type: integer
658
+ responses:
659
+ "200":
660
+ description: Bulk job status
661
+ content:
662
+ application/json:
663
+ schema:
664
+ $ref: "#/components/schemas/BulkJob"
665
+ "401":
666
+ $ref: "#/components/responses/Unauthorized"
667
+ "404":
668
+ $ref: "#/components/responses/NotFound"
669
+
670
+ /bulk/{id}/download:
671
+ get:
672
+ operationId: downloadBulkResults
673
+ summary: Download bulk results
674
+ description: Download the completed bulk job results as CSV.
675
+ tags: [Batch]
676
+ parameters:
677
+ - name: id
678
+ in: path
679
+ required: true
680
+ schema:
681
+ type: integer
682
+ responses:
683
+ "200":
684
+ description: CSV file download
685
+ content:
686
+ text/csv:
687
+ schema:
688
+ type: string
689
+ format: binary
690
+ "401":
691
+ $ref: "#/components/responses/Unauthorized"
692
+ "404":
693
+ $ref: "#/components/responses/NotFound"
694
+
695
+ components:
696
+ securitySchemes:
697
+ BearerAuth:
698
+ type: http
699
+ scheme: bearer
700
+ description: >
701
+ Pass a public (ck_pub_...) or private (ck_prv_...) token. Public tokens
702
+ are domain-restricted for browser use. Private tokens are for
703
+ server-side use only.
704
+
705
+ parameters:
706
+ Country:
707
+ name: country
708
+ in: query
709
+ required: false
710
+ description: "Country dataset: au (default) or nz"
711
+ schema:
712
+ type: string
713
+ enum: [au, nz]
714
+ default: au
715
+
716
+ responses:
717
+ Unauthorized:
718
+ description: Missing or invalid token
719
+ content:
720
+ application/json:
721
+ schema:
722
+ $ref: "#/components/schemas/Error"
723
+ example:
724
+ error: "Missing or invalid token"
725
+
726
+ NotFound:
727
+ description: Record not found
728
+ content:
729
+ application/json:
730
+ schema:
731
+ $ref: "#/components/schemas/Error"
732
+ example:
733
+ error: "Address not found"
734
+
735
+ ValidationError:
736
+ description: Validation error (bad params)
737
+ content:
738
+ application/json:
739
+ schema:
740
+ $ref: "#/components/schemas/Error"
741
+ example:
742
+ error: "query must be at least 3 characters"
743
+
744
+ RateLimited:
745
+ description: Rate limit exceeded
746
+ content:
747
+ application/json:
748
+ schema:
749
+ $ref: "#/components/schemas/Error"
750
+ example:
751
+ error: "Rate limit exceeded"
752
+
753
+ schemas:
754
+ Error:
755
+ type: object
756
+ description: >-
757
+ Errors may contain a single error string, or a message and field-level
758
+ errors for request validation. Both forms are returned by production.
759
+ properties:
760
+ error:
761
+ type: string
762
+ message:
763
+ type: string
764
+ errors:
765
+ type: object
766
+ additionalProperties:
767
+ type: array
768
+ items:
769
+ type: string
770
+
771
+ Account:
772
+ type: object
773
+ properties:
774
+ plan:
775
+ type: string
776
+ enum: [free, starter, business, enterprise]
777
+ plan_name:
778
+ type: string
779
+ status:
780
+ type: string
781
+ enum: [free, active, cancelling, cancelled, past_due, incomplete]
782
+ cancels_at:
783
+ type: string
784
+ format: date
785
+ nullable: true
786
+ description: ISO 8601 date when subscription ends (only when status is cancelling)
787
+ units_used:
788
+ type: integer
789
+ units_limit:
790
+ type: integer
791
+ units_remaining:
792
+ type: integer
793
+ period_start:
794
+ type: string
795
+ format: date
796
+ period_end:
797
+ type: string
798
+ format: date
799
+ usage:
800
+ type: object
801
+ additionalProperties:
802
+ type: integer
803
+ description: Per-endpoint call counts for the current period
804
+
805
+ AddressDetails:
806
+ type: object
807
+ properties:
808
+ unit:
809
+ type: string
810
+ nullable: true
811
+ description: Flat/unit number and type
812
+ level:
813
+ type: string
814
+ nullable: true
815
+ description: Floor/level descriptor
816
+ unitLevel:
817
+ type: string
818
+ nullable: true
819
+ description: Combined unit and level
820
+ streetNumber:
821
+ type: string
822
+ description: House/lot number
823
+ streetName:
824
+ type: string
825
+ description: Street name only
826
+ streetType:
827
+ type: string
828
+ description: Street type code (ST, RD, AVE…)
829
+ street:
830
+ type: string
831
+ description: Number + full street name combined
832
+ city:
833
+ type: string
834
+ description: Locality/suburb name
835
+ postcode:
836
+ type: string
837
+ description: 4-digit postcode
838
+ state:
839
+ type: string
840
+ nullable: true
841
+ description: State abbreviation (NSW, VIC…) — AU only
842
+ stateFull:
843
+ type: string
844
+ nullable: true
845
+ description: Full state name — AU only
846
+ region:
847
+ type: string
848
+ nullable: true
849
+ description: Region/city (e.g. Auckland) — NZ only
850
+ country:
851
+ type: string
852
+ description: Country code (AU or NZ)
853
+ countryFull:
854
+ type: string
855
+ description: Full country name
856
+ latitude:
857
+ type: number
858
+ format: double
859
+ nullable: true
860
+ longitude:
861
+ type: number
862
+ format: double
863
+ nullable: true
864
+ meshBlockCode:
865
+ type: string
866
+ nullable: true
867
+ description: ABS Mesh Block identifier — AU only
868
+ buildingName:
869
+ type: string
870
+ nullable: true
871
+ description: Named building or complex — AU only
872
+
873
+ ReverseResult:
874
+ type: object
875
+ properties:
876
+ addressId:
877
+ type: string
878
+ addressFull:
879
+ type: string
880
+ unit:
881
+ type: string
882
+ nullable: true
883
+ streetNumber:
884
+ type: string
885
+ street:
886
+ type: string
887
+ city:
888
+ type: string
889
+ postcode:
890
+ type: string
891
+ state:
892
+ type: string
893
+ nullable: true
894
+ latitude:
895
+ type: number
896
+ format: double
897
+ longitude:
898
+ type: number
899
+ format: double
900
+ distanceMetres:
901
+ type: number
902
+ format: double
903
+
904
+ SuburbDetails:
905
+ type: object
906
+ properties:
907
+ city:
908
+ type: string
909
+ postcode:
910
+ type: string
911
+ nullable: true
912
+ description: 4-digit postcode (null for NZ)
913
+ state:
914
+ type: string
915
+ nullable: true
916
+ description: State abbreviation — AU only
917
+ stateFull:
918
+ type: string
919
+ nullable: true
920
+ description: Full state name — AU only
921
+ region:
922
+ type: string
923
+ nullable: true
924
+ description: Region/city — NZ only
925
+ country:
926
+ type: string
927
+ countryFull:
928
+ type: string
929
+
930
+ PostcodeResult:
931
+ type: object
932
+ properties:
933
+ localityId:
934
+ type: string
935
+ city:
936
+ type: string
937
+ postcode:
938
+ type: string
939
+ state:
940
+ type: string
941
+ nullable: true
942
+ stateFull:
943
+ type: string
944
+ nullable: true
945
+ country:
946
+ type: string
947
+ countryFull:
948
+ type: string
949
+
950
+ BusinessActivityResponse:
951
+ type: object
952
+ properties:
953
+ status:
954
+ type: string
955
+ count:
956
+ type: integer
957
+ activities:
958
+ type: array
959
+ items:
960
+ $ref: "#/components/schemas/BusinessActivity"
961
+
962
+ BusinessActivity:
963
+ type: object
964
+ properties:
965
+ code:
966
+ type: string
967
+ description: Unique activity identifier
968
+ industryCode:
969
+ type: string
970
+ description: ANZSIC industry classification code
971
+ fullName:
972
+ type: string
973
+ description: Business activity description
974
+
975
+ AbnResponse:
976
+ type: object
977
+ properties:
978
+ abn:
979
+ type: string
980
+ abnFormatted:
981
+ type: string
982
+ acn:
983
+ type: string
984
+ nullable: true
985
+ acnFormatted:
986
+ type: string
987
+ nullable: true
988
+ entityName:
989
+ type: string
990
+ entityType:
991
+ type: string
992
+ abnDetails:
993
+ type: object
994
+ properties:
995
+ active:
996
+ type: boolean
997
+ activeFrom:
998
+ type: string
999
+ format: date
1000
+ gst:
1001
+ type: string
1002
+ format: date
1003
+ nullable: true
1004
+ description: GST registration date
1005
+ addresses:
1006
+ type: array
1007
+ items:
1008
+ $ref: "#/components/schemas/AbnAddress"
1009
+ businessNames:
1010
+ type: array
1011
+ items:
1012
+ type: string
1013
+
1014
+ AbnAddress:
1015
+ type: object
1016
+ properties:
1017
+ type:
1018
+ type: string
1019
+ description: Address type (e.g. serviceAddress)
1020
+ state:
1021
+ type: string
1022
+ postcode:
1023
+ type: string
1024
+ activeFrom:
1025
+ type: string
1026
+ format: date
1027
+
1028
+ AcnResponse:
1029
+ type: object
1030
+ properties:
1031
+ abn:
1032
+ type: string
1033
+ nullable: true
1034
+ abnFormatted:
1035
+ type: string
1036
+ nullable: true
1037
+ acn:
1038
+ type: string
1039
+ acnFormatted:
1040
+ type: string
1041
+ entityName:
1042
+ type: string
1043
+ entityType:
1044
+ type: string
1045
+ abnDetails:
1046
+ type: object
1047
+ nullable: true
1048
+ properties:
1049
+ activeFrom:
1050
+ type: string
1051
+ format: date
1052
+ acnDetails:
1053
+ type: object
1054
+ properties:
1055
+ active:
1056
+ type: boolean
1057
+ activeFrom:
1058
+ type: string
1059
+ format: date
1060
+ activeTo:
1061
+ type: string
1062
+ format: date
1063
+ nullable: true
1064
+ addresses:
1065
+ type: array
1066
+ items:
1067
+ $ref: "#/components/schemas/AcnAddress"
1068
+ formerNames:
1069
+ type: array
1070
+ items:
1071
+ $ref: "#/components/schemas/FormerName"
1072
+ documents:
1073
+ type: array
1074
+ items:
1075
+ $ref: "#/components/schemas/AsicDocument"
1076
+
1077
+ AcnAddress:
1078
+ type: object
1079
+ properties:
1080
+ type:
1081
+ type: string
1082
+ description: Address type (registeredOffice, principalPlaceOfBusiness)
1083
+ suburb:
1084
+ type: string
1085
+ state:
1086
+ type: string
1087
+ postcode:
1088
+ type: string
1089
+
1090
+ FormerName:
1091
+ type: object
1092
+ properties:
1093
+ name:
1094
+ type: string
1095
+ activeFrom:
1096
+ type: string
1097
+ format: date
1098
+ activeTo:
1099
+ type: string
1100
+ format: date
1101
+
1102
+ AsicDocument:
1103
+ type: object
1104
+ properties:
1105
+ number:
1106
+ type: string
1107
+ date:
1108
+ type: string
1109
+ format: date
1110
+ code:
1111
+ type: string
1112
+ title:
1113
+ type: string
1114
+ pages:
1115
+ type: integer
1116
+ contents:
1117
+ type: array
1118
+ items:
1119
+ type: object
1120
+ properties:
1121
+ subCode:
1122
+ type: string
1123
+ title:
1124
+ type: string
1125
+
1126
+ NameAvailability:
1127
+ type: object
1128
+ properties:
1129
+ name:
1130
+ type: string
1131
+ description: Normalised (uppercased) name
1132
+ availability:
1133
+ type: string
1134
+ description: Availability status (e.g. Available)
1135
+ shortDescription:
1136
+ type: string
1137
+ objections:
1138
+ type: array
1139
+ items:
1140
+ type: string
1141
+ existingBusinessName:
1142
+ type: boolean
1143
+ description: Whether the name already exists as a registered business name
1144
+
1145
+ SanctionsResponse:
1146
+ type: object
1147
+ properties:
1148
+ match:
1149
+ type: boolean
1150
+ description: true if any results meet the confidence threshold
1151
+ results:
1152
+ type: array
1153
+ items:
1154
+ $ref: "#/components/schemas/SanctionsResult"
1155
+
1156
+ SanctionsResult:
1157
+ type: object
1158
+ properties:
1159
+ source:
1160
+ type: string
1161
+ enum: [dfat, ofac, eu, uk, un, ca, nz, fr, hk, wb, idb]
1162
+ description: Source sanctions list
1163
+ reference:
1164
+ type: string
1165
+ description: Source-specific reference number
1166
+ name:
1167
+ type: string
1168
+ description: Primary name of the sanctioned individual or entity
1169
+ type:
1170
+ type: string
1171
+ enum: [Individual, Entity, Vessel]
1172
+ aliases:
1173
+ type: array
1174
+ items:
1175
+ type: string
1176
+ confidence:
1177
+ type: number
1178
+ format: float
1179
+ minimum: 0
1180
+ maximum: 1
1181
+ description: Confidence score — higher when birth details match
1182
+ sanctions:
1183
+ type: object
1184
+ properties:
1185
+ targeted_financial_sanction:
1186
+ type: boolean
1187
+ travel_ban:
1188
+ type: boolean
1189
+ arms_embargo:
1190
+ type: boolean
1191
+ maritime_restriction:
1192
+ type: boolean
1193
+ date_of_birth:
1194
+ type: string
1195
+ nullable: true
1196
+ place_of_birth:
1197
+ type: string
1198
+ nullable: true
1199
+ citizenship:
1200
+ type: string
1201
+ nullable: true
1202
+ committees:
1203
+ type: string
1204
+ nullable: true
1205
+ listing_information:
1206
+ type: string
1207
+ nullable: true
1208
+ source_updated_at:
1209
+ type: string
1210
+ description: Date of last source list update
1211
+
1212
+ DirectorIdResponse:
1213
+ type: object
1214
+ properties:
1215
+ directorId:
1216
+ type: string
1217
+ description: Normalised digits only
1218
+ directorIdFormatted:
1219
+ type: string
1220
+ description: Grouped with spaces
1221
+ valid:
1222
+ type: boolean
1223
+ notice:
1224
+ type: string
1225
+
1226
+ TfnResponse:
1227
+ type: object
1228
+ properties:
1229
+ tfn:
1230
+ type: string
1231
+ description: Normalised digits only
1232
+ tfnFormatted:
1233
+ type: string
1234
+ description: Grouped with spaces
1235
+ valid:
1236
+ type: boolean
1237
+ notice:
1238
+ type: string
1239
+
1240
+ EmailResponse:
1241
+ type: object
1242
+ properties:
1243
+ email:
1244
+ type: string
1245
+ description: Normalised (lowercased) email address
1246
+ valid:
1247
+ type: boolean
1248
+ description: true only if both format and DNS checks pass
1249
+ format:
1250
+ type: object
1251
+ properties:
1252
+ valid:
1253
+ type: boolean
1254
+ account:
1255
+ type: string
1256
+ nullable: true
1257
+ description: Local part (before @)
1258
+ domain:
1259
+ type: string
1260
+ nullable: true
1261
+ description: Domain part (after @)
1262
+ dns:
1263
+ type: object
1264
+ properties:
1265
+ valid:
1266
+ type: boolean
1267
+ description: Domain has valid MX or A records
1268
+ deliverable:
1269
+ type: boolean
1270
+ nullable: true
1271
+ canConnectSmtp:
1272
+ type: boolean
1273
+ nullable: true
1274
+ inboxFull:
1275
+ type: boolean
1276
+ nullable: true
1277
+ disabled:
1278
+ type: boolean
1279
+ nullable: true
1280
+ catchAll:
1281
+ type: boolean
1282
+ nullable: true
1283
+ score:
1284
+ type: number
1285
+ format: float
1286
+ nullable: true
1287
+ minimum: 0
1288
+ maximum: 1
1289
+ description: Quality score — higher is better
1290
+ free:
1291
+ type: boolean
1292
+ nullable: true
1293
+ description: Whether the email uses a free provider
1294
+ disposable:
1295
+ type: boolean
1296
+ nullable: true
1297
+ description: Whether the email uses a disposable/temporary provider
1298
+ role:
1299
+ type: boolean
1300
+ nullable: true
1301
+ description: Whether this is a role-based address (e.g. support@, info@)
1302
+
1303
+ PhoneResponse:
1304
+ type: object
1305
+ properties:
1306
+ phone:
1307
+ type: string
1308
+ description: E.164 format
1309
+ phoneNational:
1310
+ type: string
1311
+ description: National format as dialled locally
1312
+ phoneInternational:
1313
+ type: string
1314
+ description: International format with country code
1315
+ valid:
1316
+ type: boolean
1317
+ country:
1318
+ type: string
1319
+ description: Detected ISO 3166-1 alpha-2 country code
1320
+ type:
1321
+ type: string
1322
+ nullable: true
1323
+ description: "Line type: mobile, fixed-line, toll-free, voip, etc."
1324
+ carrier:
1325
+ type: string
1326
+ nullable: true
1327
+ location:
1328
+ type: string
1329
+ nullable: true
1330
+
1331
+ BulkCreateRequest:
1332
+ type: object
1333
+ required: [endpoint, items]
1334
+ properties:
1335
+ endpoint:
1336
+ type: string
1337
+ enum:
1338
+ - address-validation
1339
+ - reverse
1340
+ - abn
1341
+ - acn
1342
+ - sanctions-screening
1343
+ - tfn
1344
+ - director-id
1345
+ - email
1346
+ - phone
1347
+ description: Endpoint slug to process
1348
+ items:
1349
+ oneOf:
1350
+ - type: array
1351
+ items:
1352
+ type: string
1353
+ description: Array of strings for single-field endpoints
1354
+ - type: array
1355
+ items:
1356
+ type: object
1357
+ description: Array of objects with required fields for multi-field endpoints
1358
+
1359
+ BulkJob:
1360
+ type: object
1361
+ properties:
1362
+ id:
1363
+ type: integer
1364
+ endpoint:
1365
+ type: string
1366
+ status:
1367
+ type: string
1368
+ enum: [pending, processing, completed, failed]
1369
+ total_rows:
1370
+ type: integer
1371
+ created_at:
1372
+ type: string
1373
+ format: date-time