@checkdigit/eslint-plugin 7.17.1 → 7.18.0-PR.143-9946

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 (80) hide show
  1. package/dist-mjs/athena/api-locator.mjs +30 -0
  2. package/dist-mjs/athena/api-matcher.mjs +108 -0
  3. package/dist-mjs/athena/athena.mjs +328 -0
  4. package/dist-mjs/athena/column.mjs +1 -0
  5. package/dist-mjs/athena/context.mjs +21 -0
  6. package/dist-mjs/athena/index.mjs +1 -0
  7. package/dist-mjs/athena/service-table.mjs +32 -0
  8. package/dist-mjs/athena/types.mjs +1 -0
  9. package/dist-mjs/athena/visitor.mjs +258 -0
  10. package/dist-mjs/index.mjs +8 -4
  11. package/dist-mjs/no-status-code-assert.mjs +1 -1
  12. package/dist-mjs/openapi/deref-schema.mjs +14 -0
  13. package/dist-mjs/openapi/generate-schema.mjs +273 -0
  14. package/dist-mjs/openapi/service-schema-generator.mjs +147 -0
  15. package/dist-mjs/peggy/athena-peggy.mjs +20629 -0
  16. package/dist-types/athena/api-locator.d.ts +2 -0
  17. package/dist-types/athena/api-matcher.d.ts +14 -0
  18. package/dist-types/athena/athena.d.ts +6 -0
  19. package/dist-types/athena/column.d.ts +1 -0
  20. package/dist-types/athena/context.d.ts +21 -0
  21. package/dist-types/athena/index.d.ts +8 -0
  22. package/dist-types/athena/service-table.d.ts +8 -0
  23. package/dist-types/athena/types.d.ts +474 -0
  24. package/dist-types/athena/visitor.d.ts +63 -0
  25. package/dist-types/no-status-code-assert.d.ts +1 -1
  26. package/dist-types/openapi/deref-schema.d.ts +1 -0
  27. package/dist-types/openapi/generate-schema.d.ts +33 -0
  28. package/dist-types/openapi/service-schema-generator.d.ts +5 -0
  29. package/dist-types/peggy/athena-peggy.d.ts +13 -0
  30. package/package.json +1 -96
  31. package/src/athena/ATHENA.md +387 -0
  32. package/src/athena/PLAN.md +355 -0
  33. package/src/athena/api-locator.ts +39 -0
  34. package/src/athena/api-matcher.ts +169 -0
  35. package/src/athena/athena.ts +488 -0
  36. package/src/athena/column.ts +2 -0
  37. package/src/athena/context.ts +47 -0
  38. package/src/athena/index.ts +11 -0
  39. package/src/athena/service-table.ts +55 -0
  40. package/src/athena/types.ts +526 -0
  41. package/src/athena/visitor.ts +365 -0
  42. package/src/index.ts +4 -0
  43. package/src/no-side-effects.ts +1 -1
  44. package/src/no-status-code-assert.ts +2 -2
  45. package/src/openapi/deref-schema.ts +14 -0
  46. package/src/openapi/generate-schema.ts +422 -0
  47. package/src/openapi/service-schema-generator.ts +189 -0
  48. package/src/peggy/athena-chat.peggy +608 -0
  49. package/src/peggy/athena-peggy.ts +22078 -0
  50. package/src/peggy/athena.peggy +2967 -0
  51. package/src/require-service-call-response-declaration.ts +2 -2
  52. package/src/services/interchange/v1/swagger.schema.deref.json +849 -0
  53. package/src/services/interchange/v1/swagger.schema.json +473 -0
  54. package/src/services/interchange/v1/swagger.yml +414 -0
  55. package/src/services/ledger/v1/swagger.schema.deref.json +6694 -0
  56. package/src/services/ledger/v1/swagger.schema.json +1820 -0
  57. package/src/services/ledger/v1/swagger.yml +1094 -0
  58. package/src/services/link/v1/swagger.schema.deref.json +648 -0
  59. package/src/services/link/v1/swagger.schema.json +444 -0
  60. package/src/services/link/v1/swagger.yml +343 -0
  61. package/src/services/message/v1/swagger.schema.deref.json +22049 -0
  62. package/src/services/message/v1/swagger.schema.json +3470 -0
  63. package/src/services/message/v1/swagger.yml +2798 -0
  64. package/src/services/message/v2/swagger.schema.deref.json +72221 -0
  65. package/src/services/message/v2/swagger.schema.json +3558 -0
  66. package/src/services/message/v2/swagger.yml +3009 -0
  67. package/src/services/paymentCard/v1/swagger.schema.deref.json +4346 -0
  68. package/src/services/paymentCard/v1/swagger.schema.json +2181 -0
  69. package/src/services/paymentCard/v1/swagger.yml +1161 -0
  70. package/src/services/paymentCard/v2/swagger.schema.deref.json +4336 -0
  71. package/src/services/paymentCard/v2/swagger.schema.json +2155 -0
  72. package/src/services/paymentCard/v2/swagger.yml +1149 -0
  73. package/src/services/person/v1/swagger.schema.deref.json +6786 -0
  74. package/src/services/person/v1/swagger.schema.json +1445 -0
  75. package/src/services/person/v1/swagger.yml +1157 -0
  76. package/src/services/teampayApproval/v1/swagger.schema.deref.json +9898 -0
  77. package/src/services/teampayCardManagement/v1/swagger.schema.deref.json +6187 -0
  78. package/src/services/teampayClientManagement/v1/swagger.schema.deref.json +4914 -0
  79. package/src/services/teampayClientManagement/v1/swagger.schema.json +1964 -0
  80. package/src/services/teampayClientManagement/v1/swagger.yml +1376 -0
@@ -0,0 +1,1094 @@
1
+ openapi: 3.0.0
2
+ info:
3
+ title: Ledger Service
4
+ version: 1.12.0
5
+ description: |
6
+ ## Introduction
7
+
8
+ The Ledger Service implements a highly available, double-entry general journal. It has a REST-ful interface, with
9
+ strict cacheable, idempotency and immutability guarantees. It is designed to be the single source of account
10
+ balance “truth” across a client platform, whether for card-based transactions, manual transaction processing
11
+ or batch, independent of product or feature sets. Because of it's central role as a single source of balances,
12
+ it is designed for a mix of real-time, latency-sensitive workloads and high-scale batch workloads.
13
+
14
+ The Ledger Service is designed for extremely high availability, and uses multiple cloud regions (e.g. in AWS,
15
+ us-east-1 and us-east-2). Due to the fundamental nature of distributed systems, the necessary trade-off it makes
16
+ is one of eventual consistency; some real-time account balance inquiries may take time to reflect posted entries.
17
+ However the underlying S3-based "system of record" datafeed is always considered to be accurate.
18
+
19
+ ## Accounts and Entries
20
+
21
+ Fundamentally, the Ledger API presents the financial state of the platform as a set of ledger accounts. A
22
+ ledger account can be in any currency (such as USD, but also including non-traditional currencies such as
23
+ "points", "miles" or "hours").
24
+
25
+ The financial state of the platform can only be changed by the successful creation of an Entry. An
26
+ Entry contains a set of debit and credit postings, the total of which which must be equivalent. i.e. the
27
+ sum total of debit postings for a given currency must exactly equal the sum total of credit postings for that
28
+ currency. An Entry may contain a mix of currencies, to support currency exchange transactions.
29
+ Each posting references an account and an amount; if the Entry is processed successfully, the balance of each
30
+ account will be adjusted by the given amount.
31
+
32
+ ## Use Case: Card Processing
33
+
34
+ Pending Entries used, for example, in card processing are handled exactly the same as Entries, except they contain
35
+ postings with future dates. Postings with future dates will only impact the balance of the account after that
36
+ future date has passed. Typically pending entries would be managed in a separate account from the ledger entries.
37
+
38
+ As an example, during a pre-authorization, an Entry is created against a pending account which represents the hold
39
+ on funds. That Entry consists of postings that happen right now and immediately impact the available balance of the
40
+ overall cardholder's account, and also contains future postings that represent the expiration of the hold at the
41
+ required hold expiration time. It is important during card processing for the balance of all pending entries to
42
+ be used along with the ledger account balance in order to determine available funds.
43
+
44
+ ## IDs
45
+
46
+ All IDs are supplied by the resource creator and must be unique. They are either a UUID or a combination
47
+ of UUID and other text.
48
+
49
+ ## Accounts
50
+
51
+ The type of a transaction is defined by the types of accounts that are used in it. The type of an account is
52
+ defined as part of the ID of the account (defined in the documentation as `idFragments`). For example, an account
53
+ that handles ACH ingress funds flows would be defined as having the ID `<uuid>/ach/ingress`.
54
+
55
+ ## Amounts
56
+
57
+ All amounts are in minimum monetary units based on the currency (for example cents for USD). Amounts are
58
+ numerical strings that can represent arbitrarily large integers.
59
+
60
+ ## Versioning
61
+
62
+ Accounts can be either versioned or un-versioned depending on whether performing a posting is dependent on the
63
+ balance of the account or not. The `versioned` parameter passed when creating an account can be used to specify
64
+ whether an account is versioned or not.
65
+
66
+ In order to post an Entry to a versioned account, you must first obtain the balance of all versioned accounts
67
+ involved in the entry's list of postings. The ETag header value sent in the `/balances` API call response will be
68
+ used as the If-Match header input on a subsequent `PUT` for `/entry/<entryId>` call.
69
+
70
+ Please note that all versioned accounts involved in a posting must have their balances obtained in a single `GET`
71
+ `/balances` call in order to supply a single If-Match header when creating the Entry.
72
+
73
+ If the balance of any of the versioned accounts has changed between the time the ETag was obtained from the `GET`
74
+ `/balances` call and the time when the `PUT` `/entry/<entryId>` call is made, the `PUT` will fail with a `409`
75
+ error code.
76
+
77
+ Versioned accounts should only be used for accounts where the balance determines whether a posting should take
78
+ place or not. Accounts used in card transactions for an individual cardholder should be versioned whereas a BIN or
79
+ program level account however should not be versioned.
80
+
81
+ ## Idempotency and retries
82
+
83
+ All mutating operations (e.g. creating Accounts and Entries) are idempotent. In practice this means if there is
84
+ any doubt whether an operation succeeded, the client should retry, and if necessary perform exponential backoff.
85
+ Check Digit's recommended process is the same as AWS, see:
86
+ [Error retries and exponential backoff in AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)
87
+
88
+ © Check Digit LLC. 2021-2024
89
+ contact:
90
+ name: Check Digit
91
+
92
+ servers:
93
+ - url: /ledger/v1
94
+ tags:
95
+ - name: Service Health
96
+ - name: API
97
+
98
+ x-firehose-logged: false
99
+
100
+ paths:
101
+ /ping:
102
+ get:
103
+ tags:
104
+ - Service Health
105
+ operationId: 'ping-get'
106
+ description: Tests the availability of the service and returns the current server time.
107
+ responses:
108
+ '200':
109
+ $ref: '#/components/responses/Ping'
110
+ default:
111
+ $ref: '#/components/responses/ServerError'
112
+
113
+ /account/{accountId}:
114
+ put:
115
+ tags:
116
+ - API
117
+ operationId: 'account-put'
118
+ x-firehose-logged: true
119
+ description: Creates an account. This operation is idempotent.
120
+ parameters:
121
+ - $ref: '#/components/parameters/accountId'
122
+ - $ref: '#/components/parameters/createdOn'
123
+ - $ref: '#/components/parameters/lastModified'
124
+ requestBody:
125
+ required: true
126
+ content:
127
+ application/json:
128
+ schema:
129
+ $ref: '#/components/schemas/NewAccount'
130
+ responses:
131
+ '204':
132
+ $ref: '#/components/responses/Created'
133
+ '409':
134
+ $ref: '#/components/responses/Conflict'
135
+ default:
136
+ $ref: '#/components/responses/ServerError'
137
+ get:
138
+ tags:
139
+ - API
140
+ operationId: 'account-get'
141
+ description: Obtains an account with a specified ID.
142
+ parameters:
143
+ - $ref: '#/components/parameters/accountId'
144
+ - $ref: '#/components/parameters/at'
145
+ responses:
146
+ '200':
147
+ $ref: '#/components/responses/AccountObtained'
148
+ '404':
149
+ $ref: '#/components/responses/NotFound'
150
+ default:
151
+ $ref: '#/components/responses/ServerError'
152
+
153
+ /account/{accountId}/{idFragment1}:
154
+ put:
155
+ tags:
156
+ - API
157
+ operationId: 'account-put=fragment1'
158
+ x-firehose-logged: true
159
+ description: Creates an account. This operation is idempotent.
160
+ parameters:
161
+ - $ref: '#/components/parameters/accountId'
162
+ - $ref: '#/components/parameters/createdOn'
163
+ - $ref: '#/components/parameters/lastModified'
164
+ - $ref: '#/components/parameters/idFragment1'
165
+ requestBody:
166
+ required: true
167
+ content:
168
+ application/json:
169
+ schema:
170
+ $ref: '#/components/schemas/NewAccount'
171
+ responses:
172
+ '204':
173
+ $ref: '#/components/responses/Created'
174
+ '409':
175
+ $ref: '#/components/responses/Conflict'
176
+ default:
177
+ $ref: '#/components/responses/ServerError'
178
+ get:
179
+ tags:
180
+ - API
181
+ operationId: 'account-get=fragment1'
182
+ description: Obtains an account with a specified ID.
183
+ parameters:
184
+ - $ref: '#/components/parameters/accountId'
185
+ - $ref: '#/components/parameters/at'
186
+ - $ref: '#/components/parameters/idFragment1'
187
+ responses:
188
+ '200':
189
+ $ref: '#/components/responses/AccountObtained'
190
+ '404':
191
+ $ref: '#/components/responses/NotFound'
192
+ default:
193
+ $ref: '#/components/responses/ServerError'
194
+
195
+ /account/{accountId}/{idFragment1}/{idFragment2}:
196
+ put:
197
+ tags:
198
+ - API
199
+ operationId: 'account-put=fragment2'
200
+ x-firehose-logged: true
201
+ description: Creates an account. This operation is idempotent.
202
+ parameters:
203
+ - $ref: '#/components/parameters/accountId'
204
+ - $ref: '#/components/parameters/createdOn'
205
+ - $ref: '#/components/parameters/lastModified'
206
+ - $ref: '#/components/parameters/idFragment1'
207
+ - $ref: '#/components/parameters/idFragment2'
208
+ requestBody:
209
+ required: true
210
+ content:
211
+ application/json:
212
+ schema:
213
+ $ref: '#/components/schemas/NewAccount'
214
+ responses:
215
+ '204':
216
+ $ref: '#/components/responses/Created'
217
+ '409':
218
+ $ref: '#/components/responses/Conflict'
219
+ default:
220
+ $ref: '#/components/responses/ServerError'
221
+ get:
222
+ tags:
223
+ - API
224
+ operationId: 'account-get=fragment2'
225
+ description: Obtains an account with a specified ID.
226
+ parameters:
227
+ - $ref: '#/components/parameters/accountId'
228
+ - $ref: '#/components/parameters/at'
229
+ - $ref: '#/components/parameters/idFragment1'
230
+ - $ref: '#/components/parameters/idFragment2'
231
+ responses:
232
+ '200':
233
+ $ref: '#/components/responses/AccountObtained'
234
+ '404':
235
+ $ref: '#/components/responses/NotFound'
236
+ default:
237
+ $ref: '#/components/responses/ServerError'
238
+
239
+ /account/{accountId}/{idFragment1}/{idFragment2}/{idFragment3}:
240
+ put:
241
+ tags:
242
+ - API
243
+ operationId: 'account-put=fragment3'
244
+ x-firehose-logged: true
245
+ description: Creates an account. This operation is idempotent.
246
+ parameters:
247
+ - $ref: '#/components/parameters/accountId'
248
+ - $ref: '#/components/parameters/createdOn'
249
+ - $ref: '#/components/parameters/lastModified'
250
+ - $ref: '#/components/parameters/idFragment1'
251
+ - $ref: '#/components/parameters/idFragment2'
252
+ - $ref: '#/components/parameters/idFragment3'
253
+ requestBody:
254
+ required: true
255
+ content:
256
+ application/json:
257
+ schema:
258
+ $ref: '#/components/schemas/NewAccount'
259
+ responses:
260
+ '204':
261
+ $ref: '#/components/responses/Created'
262
+ '409':
263
+ $ref: '#/components/responses/Conflict'
264
+ default:
265
+ $ref: '#/components/responses/ServerError'
266
+ get:
267
+ tags:
268
+ - API
269
+ operationId: 'account-get=fragment3'
270
+ description: Obtains an account with a specified ID.
271
+ parameters:
272
+ - $ref: '#/components/parameters/accountId'
273
+ - $ref: '#/components/parameters/at'
274
+ - $ref: '#/components/parameters/idFragment1'
275
+ - $ref: '#/components/parameters/idFragment2'
276
+ - $ref: '#/components/parameters/idFragment3'
277
+ responses:
278
+ '200':
279
+ $ref: '#/components/responses/AccountObtained'
280
+ '404':
281
+ $ref: '#/components/responses/NotFound'
282
+ default:
283
+ $ref: '#/components/responses/ServerError'
284
+
285
+ /account-entries:
286
+ get:
287
+ tags:
288
+ - API
289
+ operationId: 'account-entries-query-get'
290
+ description: Obtains the journal entries for an account.
291
+ parameters:
292
+ - $ref: '#/components/parameters/toDate'
293
+ - $ref: '#/components/parameters/fromDate'
294
+ - $ref: '#/components/parameters/accountIdQuery'
295
+ responses:
296
+ '200':
297
+ description: Entries successfully obtained
298
+ content:
299
+ application/json:
300
+ schema:
301
+ $ref: '#/components/schemas/EntriesList'
302
+ '404':
303
+ $ref: '#/components/responses/NotFound'
304
+ default:
305
+ $ref: '#/components/responses/ServerError'
306
+
307
+ /entry/{entryId}:
308
+ put:
309
+ tags:
310
+ - API
311
+ operationId: 'entry-put'
312
+ x-firehose-logged: true
313
+ description: >-
314
+ Creates a journal entry with a specific id. This operation is
315
+ idempotent.
316
+ parameters:
317
+ - $ref: '#/components/parameters/entryId'
318
+ - $ref: '#/components/parameters/ifMatch'
319
+ - $ref: '#/components/parameters/createdOn'
320
+ - $ref: '#/components/parameters/lastModified'
321
+ requestBody:
322
+ required: true
323
+ content:
324
+ application/json:
325
+ schema:
326
+ $ref: '#/components/schemas/NewEntry'
327
+ responses:
328
+ '204':
329
+ $ref: '#/components/responses/Created'
330
+ '409':
331
+ $ref: '#/components/responses/Conflict'
332
+ '412':
333
+ $ref: '#/components/responses/PreConditionFailed'
334
+ default:
335
+ $ref: '#/components/responses/ServerError'
336
+ get:
337
+ tags:
338
+ - API
339
+ operationId: 'entry-get'
340
+ description: Obtains a journal entry with a specified id.
341
+ parameters:
342
+ - $ref: '#/components/parameters/entryId'
343
+ - $ref: '#/components/parameters/at'
344
+ responses:
345
+ '200':
346
+ description: Entry obtained successfully.
347
+ content:
348
+ application/json:
349
+ schema:
350
+ $ref: '#/components/schemas/ResponseEntry'
351
+ headers:
352
+ Created-On:
353
+ $ref: '#/components/headers/Created-On'
354
+ Updated-On:
355
+ $ref: '#/components/headers/Updated-On'
356
+ Last-Modified:
357
+ $ref: '#/components/headers/Last-Modified'
358
+ '404':
359
+ $ref: '#/components/responses/NotFound'
360
+ default:
361
+ $ref: '#/components/responses/ServerError'
362
+
363
+ /balance:
364
+ get:
365
+ tags:
366
+ - API
367
+ operationId: 'balance-get'
368
+ description: >-
369
+ Calculates the balance for multiple accounts at a specific point in
370
+ time.
371
+ parameters:
372
+ - $ref: '#/components/parameters/accountIdQuery'
373
+ - $ref: '#/components/parameters/at'
374
+ - $ref: '#/components/parameters/ifNoneMatch'
375
+ responses:
376
+ '200':
377
+ description: Calculated account balances.
378
+ headers:
379
+ ETag:
380
+ $ref: '#/components/headers/ETag'
381
+ content:
382
+ application/json:
383
+ schema:
384
+ $ref: '#/components/schemas/BalanceList'
385
+ '400':
386
+ $ref: '#/components/responses/BadRequest'
387
+ default:
388
+ $ref: '#/components/responses/ServerError'
389
+
390
+ /total:
391
+ get:
392
+ tags:
393
+ - API
394
+ operationId: 'total-get'
395
+ summary: This operation calculates the total debit or credit to an account within a period of time.
396
+ description: |
397
+ - The totals for multiple accounts can be calculated in a single request.
398
+ - Those totals can be narrowed to only include entries that involve accounts in the filteredAccountIdQuery.
399
+ - If debits exceed credits, the total value will be negative.
400
+ - If the filteredAccountIdQuery is not supplied, the entries will not be filtered before forming the total.
401
+ - Entries whose created entry mappings do not contain the entryAccountIds field will not be included in the totals calculation
402
+ parameters:
403
+ - $ref: '#/components/parameters/accountIdQuery'
404
+ - $ref: '#/components/parameters/filterAccountIdQuery'
405
+ - $ref: '#/components/parameters/fromDate'
406
+ - $ref: '#/components/parameters/toDate'
407
+ responses:
408
+ '200':
409
+ description: Calculated total of filtered entries for the accounts specified.
410
+ content:
411
+ application/json:
412
+ schema:
413
+ $ref: '#/components/schemas/TotalsList'
414
+ '400':
415
+ $ref: '#/components/responses/BadRequest'
416
+ '404':
417
+ $ref: '#/components/responses/NotFound'
418
+ default:
419
+ $ref: '#/components/responses/ServerError'
420
+
421
+ components:
422
+ schemas:
423
+ Ping:
424
+ type: object
425
+ additionalProperties: false
426
+ required:
427
+ - serverTime
428
+ properties:
429
+ serverTime:
430
+ type: string
431
+ format: date-time
432
+ description: Current server time.
433
+
434
+ Error:
435
+ type: object
436
+ additionalProperties: false
437
+ description: Error message.
438
+ required:
439
+ - code
440
+ properties:
441
+ message:
442
+ type: string
443
+ code:
444
+ type: string
445
+ enum:
446
+ - INVALID_AT
447
+ - INVALID_FROM
448
+ - INVALID_TO
449
+ - INVALID_CREATED_ON
450
+ - INVALID_LAST_MODIFIED
451
+ - INVALID_IF_MATCH
452
+ - FROM_GREATER_THAN_TO
453
+ - ACCOUNT_NOT_FOUND
454
+ - POSTING_AMOUNT_NOT_AN_INTEGER
455
+ - ACCOUNT_MULTIPLE_POSTINGS
456
+ - LAST_MODIFIED_BEFORE_ACCOUNT_CREATED_ON
457
+ - POSTING_WITH_ZERO_AMOUNT
458
+ - POSTING_WITH_NEGATIVE_AMOUNT
459
+ - VERSION_SUPPLIED_FOR_UNVERSIONED_ACCOUNT
460
+ - NO_POSTINGS
461
+ - INSUFFICIENT_POSTINGS
462
+ - UNEQUAL_CREDIT_DEBIT
463
+ - VERSION_BALANCE_MISMATCH
464
+ - VERSION_MISMATCH
465
+ - CURRENCY_MISMATCH
466
+ - UNHANDLED_ERROR
467
+
468
+ Currency:
469
+ type: string
470
+ enum:
471
+ - AED
472
+ - AFN
473
+ - ALL
474
+ - AMD
475
+ - ANG
476
+ - AOA
477
+ - ARS
478
+ - AUD
479
+ - AWG
480
+ - AZN
481
+ - BAM
482
+ - BBD
483
+ - BDT
484
+ - BGN
485
+ - BHD
486
+ - BIF
487
+ - BMD
488
+ - BND
489
+ - BOB
490
+ - BOV
491
+ - BRL
492
+ - BSD
493
+ - BTN
494
+ - BWP
495
+ - BYN
496
+ - BZD
497
+ - CAD
498
+ - CDF
499
+ - CHE
500
+ - CHF
501
+ - CHW
502
+ - CLF
503
+ - CLP
504
+ - CNY
505
+ - COP
506
+ - COU
507
+ - CRC
508
+ - CUC
509
+ - CUP
510
+ - CVE
511
+ - CZK
512
+ - DJF
513
+ - DKK
514
+ - DOP
515
+ - DZD
516
+ - EGP
517
+ - ERN
518
+ - ETB
519
+ - EUR
520
+ - FJD
521
+ - FKP
522
+ - GBP
523
+ - GEL
524
+ - GHS
525
+ - GIP
526
+ - GMD
527
+ - GNF
528
+ - GTQ
529
+ - GYD
530
+ - HKD
531
+ - HNL
532
+ - HRK
533
+ - HTG
534
+ - HUF
535
+ - IDR
536
+ - ILS
537
+ - INR
538
+ - IQD
539
+ - IRR
540
+ - ISK
541
+ - JMD
542
+ - JOD
543
+ - JPY
544
+ - KES
545
+ - KGS
546
+ - KHR
547
+ - KMF
548
+ - KPW
549
+ - KRW
550
+ - KWD
551
+ - KYD
552
+ - KZT
553
+ - LAK
554
+ - LBP
555
+ - LKR
556
+ - LRD
557
+ - LSL
558
+ - LYD
559
+ - MAD
560
+ - MDL
561
+ - MGA
562
+ - MKD
563
+ - MMK
564
+ - MNT
565
+ - MOP
566
+ - MRU
567
+ - MUR
568
+ - MVR
569
+ - MWK
570
+ - MXN
571
+ - MXV
572
+ - MYR
573
+ - MZN
574
+ - NAD
575
+ - NGN
576
+ - NIO
577
+ - NOK
578
+ - NPR
579
+ - NZD
580
+ - OMR
581
+ - PAB
582
+ - PEN
583
+ - PGK
584
+ - PHP
585
+ - PKR
586
+ - PLN
587
+ - PYG
588
+ - QAR
589
+ - RON
590
+ - RSD
591
+ - RUB
592
+ - RWF
593
+ - SAR
594
+ - SBD
595
+ - SCR
596
+ - SDG
597
+ - SEK
598
+ - SGD
599
+ - SHP
600
+ - SLL
601
+ - SOS
602
+ - SRD
603
+ - SSP
604
+ - STN
605
+ - SVC
606
+ - SYP
607
+ - SZL
608
+ - THB
609
+ - TJS
610
+ - TMT
611
+ - TND
612
+ - TOP
613
+ - TRY
614
+ - TTD
615
+ - TWD
616
+ - TZS
617
+ - UAH
618
+ - UGX
619
+ - USD
620
+ - USN
621
+ - UYI
622
+ - UYU
623
+ - UYW
624
+ - UZS
625
+ - VES
626
+ - VND
627
+ - VUV
628
+ - WST
629
+ - XAF
630
+ - XAG
631
+ - XAU
632
+ - XBA
633
+ - XBB
634
+ - XBC
635
+ - XBD
636
+ - XCD
637
+ - XDR
638
+ - XOF
639
+ - XPD
640
+ - XPF
641
+ - XPT
642
+ - XSU
643
+ - XTS
644
+ - XUA
645
+ - XXX
646
+ - YER
647
+ - ZAR
648
+ - ZMW
649
+ - ZWL
650
+
651
+ Account:
652
+ type: object
653
+ additionalProperties: false
654
+ required:
655
+ - accountId
656
+ - createdOn
657
+ - currency
658
+ - type
659
+ properties:
660
+ accountId:
661
+ type: string
662
+ description: Account ID
663
+ createdOn:
664
+ type: string
665
+ format: date-time
666
+ description: Account creation date/time.
667
+ currency:
668
+ $ref: '#/components/schemas/Currency'
669
+ name:
670
+ type: string
671
+ description: Account short name.
672
+ type:
673
+ type: string
674
+ enum:
675
+ - VERSIONED
676
+ - UNVERSIONED
677
+
678
+ NewAccount:
679
+ type: object
680
+ additionalProperties: false
681
+ required:
682
+ - currency
683
+ properties:
684
+ currency:
685
+ $ref: '#/components/schemas/Currency'
686
+ name:
687
+ type: string
688
+ description: Account short name
689
+ type:
690
+ type: string
691
+ enum:
692
+ - VERSIONED
693
+ - UNVERSIONED
694
+ description: >-
695
+ Determines whether performing a posting is dependent on the balance
696
+ of the account or not. Defaults to VERSIONED if not supplied.
697
+
698
+ BalanceList:
699
+ type: object
700
+ additionalProperties: false
701
+ description: Balances for the accounts requested.
702
+ required:
703
+ - at
704
+ - balances
705
+ properties:
706
+ at:
707
+ type: string
708
+ format: date-time
709
+ description: Account balance at this date/time
710
+ balances:
711
+ type: array
712
+ items:
713
+ $ref: '#/components/schemas/Balance'
714
+
715
+ Balance:
716
+ type: object
717
+ additionalProperties: false
718
+ description: Ledger balance at a point in time.
719
+ required:
720
+ - accountId
721
+ - balance
722
+ properties:
723
+ accountId:
724
+ type: string
725
+ description: Account ID
726
+ balance:
727
+ type: string
728
+
729
+ EntriesList:
730
+ type: object
731
+ additionalProperties: false
732
+ required:
733
+ - accountEntries
734
+ properties:
735
+ accountEntries:
736
+ type: array
737
+ items:
738
+ $ref: '#/components/schemas/Entries'
739
+
740
+ Entries:
741
+ type: object
742
+ additionalProperties: false
743
+ required:
744
+ - entries
745
+ - accountId
746
+ properties:
747
+ accountId:
748
+ type: string
749
+ description: Account ID
750
+ entries:
751
+ type: array
752
+ minItems: 0
753
+ items:
754
+ $ref: '#/components/schemas/Entry'
755
+
756
+ Entry:
757
+ type: object
758
+ additionalProperties: false
759
+ required:
760
+ - entryId
761
+ - createdOn
762
+ - postings
763
+ properties:
764
+ entryId:
765
+ type: string
766
+ description: Journal entry ID
767
+ createdOn:
768
+ type: string
769
+ format: date-time
770
+ description: Journal entry creation date/time
771
+ postings:
772
+ type: array
773
+ items:
774
+ $ref: '#/components/schemas/Post'
775
+
776
+ ResponseEntry:
777
+ type: object
778
+ additionalProperties: false
779
+ required:
780
+ - entryId
781
+ - createdOn
782
+ - postings
783
+ properties:
784
+ entryId:
785
+ type: string
786
+ description: Journal entry ID
787
+ createdOn:
788
+ type: string
789
+ format: date-time
790
+ description: Journal entry creation date/time
791
+ postings:
792
+ type: array
793
+ items:
794
+ $ref: '#/components/schemas/ResponsePost'
795
+
796
+ NewEntry:
797
+ type: object
798
+ additionalProperties: false
799
+ required:
800
+ - postings
801
+ properties:
802
+ postings:
803
+ type: array
804
+ description: List of posts contained within the journal entry.
805
+ items:
806
+ $ref: '#/components/schemas/Post'
807
+
808
+ Post:
809
+ type: object
810
+ additionalProperties: false
811
+ required:
812
+ - amount
813
+ - currency
814
+ - type
815
+ - accountId
816
+ properties:
817
+ amount:
818
+ type: string
819
+ currency:
820
+ $ref: '#/components/schemas/Currency'
821
+ type:
822
+ $ref: '#/components/schemas/Type'
823
+ createdOn:
824
+ type: string
825
+ format: date-time
826
+ accountId:
827
+ type: string
828
+ description: account ID
829
+
830
+ ResponsePost:
831
+ type: object
832
+ additionalProperties: false
833
+ required:
834
+ - amount
835
+ - currency
836
+ - type
837
+ - accountId
838
+ - createdOn
839
+ properties:
840
+ amount:
841
+ type: string
842
+ currency:
843
+ $ref: '#/components/schemas/Currency'
844
+ type:
845
+ $ref: '#/components/schemas/Type'
846
+ createdOn:
847
+ type: string
848
+ format: date-time
849
+ accountId:
850
+ type: string
851
+ description: account ID
852
+
853
+ Type:
854
+ type: string
855
+ description: CREDIT or DEBIT
856
+ enum:
857
+ - CREDIT
858
+ - DEBIT
859
+
860
+ TotalsList:
861
+ type: array
862
+ additionalProperties: false
863
+ description: Totals of filtered entries for the accounts requested.
864
+ items:
865
+ $ref: '#/components/schemas/Total'
866
+ minItems: 1
867
+
868
+ Total:
869
+ type: object
870
+ additionalProperties: false
871
+ description: |
872
+ - The total debit or credit to an account.
873
+ - If debits exceed credits the total value will be negative.
874
+ - AccountIds may include idFragments formatted as: :accountId/:idFragment1/:idFragment2/:idFragment3.
875
+ required:
876
+ - accountId
877
+ - total
878
+ properties:
879
+ accountId:
880
+ type: string
881
+ description: account ID
882
+ total:
883
+ type: string
884
+ minLength: 1
885
+
886
+ parameters:
887
+ ifNoneMatch:
888
+ in: header
889
+ name: If-None-Match
890
+ description: If-None-Match header
891
+ schema:
892
+ type: string
893
+
894
+ idFragment1:
895
+ in: path
896
+ required: true
897
+ name: idFragment1
898
+ description: Fragment of a unique identifier.
899
+ schema:
900
+ type: string
901
+
902
+ idFragment2:
903
+ in: path
904
+ required: true
905
+ name: idFragment2
906
+ description: Fragment of a unique identifier.
907
+ schema:
908
+ type: string
909
+
910
+ idFragment3:
911
+ in: path
912
+ required: true
913
+ name: idFragment3
914
+ description: Fragment of a unique identifier.
915
+ schema:
916
+ type: string
917
+
918
+ ifMatch:
919
+ in: header
920
+ name: If-Match
921
+ description: If-Match header
922
+ schema:
923
+ type: string
924
+
925
+ accountId:
926
+ in: path
927
+ name: accountId
928
+ description: Unique identifier for an account.
929
+ required: true
930
+ schema:
931
+ type: string
932
+
933
+ accountIdQuery:
934
+ in: query
935
+ name: accountIds
936
+ description: |
937
+ - UUID for accounts.
938
+ - For accountIds with idFragments, format like so :accountId/:idFragment1/:idFragment2/:idFragment3.
939
+ required: true
940
+ schema:
941
+ type: array
942
+ minItems: 1
943
+ items:
944
+ type: string
945
+
946
+ filterAccountIdQuery:
947
+ in: query
948
+ name: filteredAccounts
949
+ description: |
950
+ - UUIDs for accounts to filter entries by.
951
+ - For accountIds with idFragments, format like so :accountId/:idFragment1/:idFragment2/:idFragment3.
952
+ schema:
953
+ type: array
954
+ minItems: 1
955
+ items:
956
+ type: string
957
+
958
+ at:
959
+ in: query
960
+ name: at
961
+ description: Returns data createdOn before this time.
962
+ required: true
963
+ schema:
964
+ type: string
965
+ format: date-time
966
+
967
+ entryId:
968
+ in: path
969
+ name: entryId
970
+ description: Unique identifier for an entry.
971
+ required: true
972
+ schema:
973
+ type: string
974
+
975
+ toDate:
976
+ in: query
977
+ name: toDate
978
+ description: >-
979
+ Return entries created before this time. Must be at least 1 second in
980
+ the past.
981
+ required: true
982
+ schema:
983
+ type: string
984
+ format: date-time
985
+
986
+ fromDate:
987
+ in: query
988
+ name: fromDate
989
+ description: >-
990
+ Return entries created at or after this time. Must be at least 1 second
991
+ in the past.
992
+ schema:
993
+ type: string
994
+ format: date-time
995
+
996
+ createdOn:
997
+ in: header
998
+ name: Created-On
999
+ description: used to set resource creation date.
1000
+ schema:
1001
+ type: string
1002
+ format: date-time
1003
+
1004
+ lastModified:
1005
+ in: header
1006
+ name: Last-Modified
1007
+ description: used to set resource creation date.
1008
+ required: false
1009
+ schema:
1010
+ type: string
1011
+ format: date-time
1012
+
1013
+ responses:
1014
+ Ping:
1015
+ description: ping successful response.
1016
+ content:
1017
+ application/json:
1018
+ schema:
1019
+ $ref: '#/components/schemas/Ping'
1020
+
1021
+ ServerError:
1022
+ description: Server Error response.
1023
+ content:
1024
+ application/json:
1025
+ schema:
1026
+ $ref: '#/components/schemas/Error'
1027
+
1028
+ NotFound:
1029
+ description: Requested resource not found.
1030
+
1031
+ Conflict:
1032
+ description: Conflict
1033
+
1034
+ PreConditionFailed:
1035
+ description: Version tag mismatch
1036
+
1037
+ BadRequest:
1038
+ description: Bad Request.
1039
+ content:
1040
+ application/json:
1041
+ schema:
1042
+ $ref: '#/components/schemas/Error'
1043
+
1044
+ Created:
1045
+ description: Created.
1046
+ headers:
1047
+ Created-On:
1048
+ $ref: '#/components/headers/Created-On'
1049
+ Updated-On:
1050
+ $ref: '#/components/headers/Updated-On'
1051
+ Last-Modified:
1052
+ $ref: '#/components/headers/Last-Modified'
1053
+
1054
+ AccountObtained:
1055
+ description: Account obtained.
1056
+ content:
1057
+ application/json:
1058
+ schema:
1059
+ $ref: '#/components/schemas/Account'
1060
+ headers:
1061
+ Created-On:
1062
+ $ref: '#/components/headers/Created-On'
1063
+ Updated-On:
1064
+ $ref: '#/components/headers/Updated-On'
1065
+ Last-Modified:
1066
+ $ref: '#/components/headers/Last-Modified'
1067
+
1068
+ headers:
1069
+ Created-On:
1070
+ description: When the resource was created.
1071
+ required: true
1072
+ schema:
1073
+ type: string
1074
+ format: date-time
1075
+
1076
+ Updated-On:
1077
+ description: When the resource was created (all resources are immutable).
1078
+ required: true
1079
+ schema:
1080
+ type: string
1081
+ format: date-time
1082
+
1083
+ Last-Modified:
1084
+ description: When the resource was created (all resources are immutable).
1085
+ required: true
1086
+ schema:
1087
+ type: string
1088
+ format: date-time
1089
+
1090
+ ETag:
1091
+ description: Version information
1092
+ required: true
1093
+ schema:
1094
+ type: string