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

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 +331 -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 +491 -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,1161 @@
1
+ openapi: 3.0.0
2
+ info:
3
+ title: Payment Card
4
+ version: 1.11.5
5
+ contact:
6
+ name: Check Digit
7
+ description: |
8
+ ## Description
9
+ Securely create and obtain cards by id or card number.
10
+
11
+ ## Other features
12
+ - Update active, state, block, lock, and capture statuses
13
+ - Update Application Transaction Counter
14
+ - Retrieve card record by hashed card number
15
+ - Retrieve card history
16
+ - Update user defined PIN (by updating pin-offset)
17
+ - Retrieve card number decrytpable by a caller not involved in card creation
18
+
19
+ © Check Digit LLC. 2021-2023
20
+ servers:
21
+ - url: /payment-card/v1
22
+
23
+ tags:
24
+ - name: Service Health
25
+ - name: API
26
+
27
+ x-firehose-logged: false
28
+
29
+ paths:
30
+ /ping:
31
+ get:
32
+ tags:
33
+ - Service Health
34
+ operationId: 'ping-get'
35
+ description: Tests the availability of the service and returns the current server time
36
+ responses:
37
+ '200':
38
+ $ref: '#/components/responses/Ping'
39
+ default:
40
+ $ref: '#/components/responses/ServerError'
41
+
42
+ /public-key:
43
+ get:
44
+ tags:
45
+ - API
46
+ operationId: 'public-key-get'
47
+ description: Retrieves Payment Card Service's rsa public key. This key is used to securely transmit data to Payment Card Service APIs.
48
+ responses:
49
+ '200':
50
+ $ref: '#/components/responses/PublicKeyResponse'
51
+ default:
52
+ $ref: '#/components/responses/ServerError'
53
+
54
+ /data-encryption-key/{dataEncryptionKeyId}:
55
+ get:
56
+ tags:
57
+ - API
58
+ operationId: 'data-encryption-key-get'
59
+ description: |
60
+ Retrieves data encryption keys. Data encryption keys are RSA encrypted and paired with a hashed version of
61
+ the public key used to encrypt.
62
+ parameters:
63
+ - $ref: '#/components/parameters/dataEncryptionKeyId'
64
+ responses:
65
+ '200':
66
+ $ref: '#/components/responses/DataEncryptionKeyResponse'
67
+ '404':
68
+ $ref: '#/components/responses/NotFound'
69
+ default:
70
+ $ref: '#/components/responses/ServerError'
71
+ put:
72
+ x-firehose-logged: true
73
+ tags:
74
+ - API
75
+ operationId: 'data-encryption-key-put'
76
+ description: |
77
+ Creates data encryption keys used by Payment Card service to encrypt the Card object. The dataEncryptionKeyId is included
78
+ in the NewCardRequest when creating a Payment Card object.
79
+
80
+ Data encyrption keys can be reused when creating new Payment Card objects. This is particularly useful for batch
81
+ operations.
82
+ parameters:
83
+ - $ref: '#/components/parameters/dataEncryptionKeyId'
84
+ requestBody:
85
+ $ref: '#/components/requestBodies/DataEncryptionKeyRequest'
86
+ responses:
87
+ '200':
88
+ $ref: '#/components/responses/DataEncryptionKeyResponse'
89
+ default:
90
+ $ref: '#/components/responses/ServerError'
91
+
92
+ /card:
93
+ get:
94
+ tags:
95
+ - API
96
+ operationId: 'card-query'
97
+ description: |
98
+ Retrieves cards by card number. Card number must be hashed using @checkdigit/hash.
99
+ parameters:
100
+ - $ref: '#/components/parameters/cardNumberHash'
101
+ - $ref: '#/components/parameters/at'
102
+ responses:
103
+ '200':
104
+ $ref: '#/components/responses/Query'
105
+ default:
106
+ $ref: '#/components/responses/ServerError'
107
+
108
+ /card/{cardId}:
109
+ get:
110
+ tags:
111
+ - API
112
+ operationId: 'card-get'
113
+ description: Retrieves a card by id.
114
+ parameters:
115
+ - $ref: '#/components/parameters/cardId'
116
+ - $ref: '#/components/parameters/at'
117
+ - $ref: '#/components/parameters/publicKeyHashQuery'
118
+ responses:
119
+ '200':
120
+ $ref: '#/components/responses/CardResponse'
121
+ '404':
122
+ $ref: '#/components/responses/NotFound'
123
+ default:
124
+ $ref: '#/components/responses/ServerError'
125
+ put:
126
+ x-firehose-logged: true
127
+ tags:
128
+ - API
129
+ operationId: 'card-put'
130
+ description: Creates a new card.
131
+ parameters:
132
+ - $ref: '#/components/parameters/cardId'
133
+ - $ref: '#/components/parameters/createdOn'
134
+ - $ref: '#/components/parameters/lastModified'
135
+ requestBody:
136
+ $ref: '#/components/requestBodies/NewCardRequest'
137
+ responses:
138
+ '200':
139
+ $ref: '#/components/responses/CardResponse'
140
+ '409':
141
+ $ref: '#/components/responses/Conflict'
142
+ '412':
143
+ $ref: '#/components/responses/PreconditionFailed'
144
+ default:
145
+ $ref: '#/components/responses/ServerError'
146
+
147
+ /card/{cardId}/number:
148
+ put:
149
+ x-firehose-logged: true
150
+ tags:
151
+ - API
152
+ operationId: 'card-number-put'
153
+ description: Creates new card with a card number
154
+ parameters:
155
+ - $ref: '#/components/parameters/cardId'
156
+ - $ref: '#/components/parameters/createdOn'
157
+ - $ref: '#/components/parameters/lastModified'
158
+ requestBody:
159
+ $ref: '#/components/requestBodies/NewCardRequestWithCardNumber'
160
+ responses:
161
+ '200':
162
+ $ref: '#/components/responses/CardResponse'
163
+ '409':
164
+ $ref: '#/components/responses/Conflict'
165
+ '412':
166
+ $ref: '#/components/responses/PreconditionFailed'
167
+ default:
168
+ $ref: '#/components/responses/ServerError'
169
+
170
+ /card/{cardId}/active/{activeStatus}:
171
+ put:
172
+ x-firehose-logged: true
173
+ tags:
174
+ - API
175
+ operationId: 'card-active-put'
176
+ description: Updates active status
177
+ parameters:
178
+ - $ref: '#/components/parameters/cardId'
179
+ - $ref: '#/components/parameters/activeStatus'
180
+ - $ref: '#/components/parameters/createdOn'
181
+ - $ref: '#/components/parameters/lastModified'
182
+ - $ref: '#/components/parameters/ifMatch'
183
+ responses:
184
+ '204':
185
+ $ref: '#/components/responses/NoContent'
186
+ '409':
187
+ $ref: '#/components/responses/Conflict'
188
+ '412':
189
+ $ref: '#/components/responses/PreconditionFailed'
190
+ default:
191
+ $ref: '#/components/responses/ServerError'
192
+
193
+ /card/{cardId}/application-transaction-counter/{applicationTransactionCounter}:
194
+ put:
195
+ x-firehose-logged: true
196
+ tags:
197
+ - API
198
+ operationId: 'card-application-transaction-counter-put'
199
+ description: Updates application transaction counter
200
+ parameters:
201
+ - $ref: '#/components/parameters/cardId'
202
+ - $ref: '#/components/parameters/applicationTransactionCounter'
203
+ - $ref: '#/components/parameters/createdOn'
204
+ - $ref: '#/components/parameters/lastModified'
205
+ - $ref: '#/components/parameters/ifMatch'
206
+ responses:
207
+ '204':
208
+ $ref: '#/components/responses/NoContent'
209
+ '409':
210
+ $ref: '#/components/responses/Conflict'
211
+ '412':
212
+ $ref: '#/components/responses/PreconditionFailed'
213
+ default:
214
+ $ref: '#/components/responses/ServerError'
215
+
216
+ /card/{cardId}/block/{blockStatus}:
217
+ put:
218
+ x-firehose-logged: true
219
+ tags:
220
+ - API
221
+ operationId: 'card-block-put'
222
+ description: Updates block status
223
+ parameters:
224
+ - $ref: '#/components/parameters/cardId'
225
+ - $ref: '#/components/parameters/blockStatus'
226
+ - $ref: '#/components/parameters/createdOn'
227
+ - $ref: '#/components/parameters/lastModified'
228
+ - $ref: '#/components/parameters/ifMatch'
229
+ responses:
230
+ '204':
231
+ $ref: '#/components/responses/NoContent'
232
+ '409':
233
+ $ref: '#/components/responses/Conflict'
234
+ '412':
235
+ $ref: '#/components/responses/PreconditionFailed'
236
+ default:
237
+ $ref: '#/components/responses/ServerError'
238
+
239
+ /card/{cardId}/capture/{captureStatus}:
240
+ put:
241
+ x-firehose-logged: true
242
+ tags:
243
+ - API
244
+ operationId: 'card-capture-put'
245
+ description: Updates capture status
246
+ parameters:
247
+ - $ref: '#/components/parameters/cardId'
248
+ - $ref: '#/components/parameters/captureStatus'
249
+ - $ref: '#/components/parameters/createdOn'
250
+ - $ref: '#/components/parameters/lastModified'
251
+ - $ref: '#/components/parameters/ifMatch'
252
+ responses:
253
+ '204':
254
+ $ref: '#/components/responses/NoContent'
255
+ '409':
256
+ $ref: '#/components/responses/Conflict'
257
+ '412':
258
+ $ref: '#/components/responses/PreconditionFailed'
259
+ default:
260
+ $ref: '#/components/responses/ServerError'
261
+
262
+ /card/{cardId}/history:
263
+ get:
264
+ tags:
265
+ - API
266
+ operationId: 'card-history-get'
267
+ description: Obtains card history by id
268
+ parameters:
269
+ - $ref: '#/components/parameters/cardId'
270
+ - $ref: '#/components/parameters/fromDate'
271
+ - $ref: '#/components/parameters/toDate'
272
+ - $ref: '#/components/parameters/publicKeyHashQuery'
273
+ responses:
274
+ '200':
275
+ $ref: '#/components/responses/History'
276
+ '404':
277
+ $ref: '#/components/responses/NotFound'
278
+ default:
279
+ $ref: '#/components/responses/ServerError'
280
+
281
+ /card/{cardId}/lock/{lockStatus}:
282
+ put:
283
+ x-firehose-logged: true
284
+ tags:
285
+ - API
286
+ operationId: 'card-lock-put'
287
+ description: Updates lock status
288
+ parameters:
289
+ - $ref: '#/components/parameters/cardId'
290
+ - $ref: '#/components/parameters/lockStatus'
291
+ - $ref: '#/components/parameters/createdOn'
292
+ - $ref: '#/components/parameters/lastModified'
293
+ - $ref: '#/components/parameters/ifMatch'
294
+ responses:
295
+ '204':
296
+ $ref: '#/components/responses/NoContent'
297
+ '409':
298
+ $ref: '#/components/responses/Conflict'
299
+ '412':
300
+ $ref: '#/components/responses/PreconditionFailed'
301
+ default:
302
+ $ref: '#/components/responses/ServerError'
303
+
304
+ /card/{cardId}/pin-offset:
305
+ put:
306
+ x-firehose-logged: true
307
+ tags:
308
+ - API
309
+ operationId: 'card-pin-offset-put'
310
+ description: Updates pin-offset using a one-time use pin-offset-key
311
+ parameters:
312
+ - $ref: '#/components/parameters/cardId'
313
+ - $ref: '#/components/parameters/createdOn'
314
+ - $ref: '#/components/parameters/lastModified'
315
+ - $ref: '#/components/parameters/ifMatch'
316
+ requestBody:
317
+ $ref: '#/components/requestBodies/PinOffsetRequest'
318
+ responses:
319
+ '204':
320
+ $ref: '#/components/responses/NoContent'
321
+ default:
322
+ $ref: '#/components/responses/ServerError'
323
+
324
+ /card/{cardId}/state/{stateStatus}:
325
+ put:
326
+ x-firehose-logged: true
327
+ tags:
328
+ - API
329
+ operationId: 'card-state-put'
330
+ description: Updates state status
331
+ parameters:
332
+ - $ref: '#/components/parameters/cardId'
333
+ - $ref: '#/components/parameters/stateStatus'
334
+ - $ref: '#/components/parameters/createdOn'
335
+ - $ref: '#/components/parameters/lastModified'
336
+ - $ref: '#/components/parameters/ifMatch'
337
+ responses:
338
+ '204':
339
+ $ref: '#/components/responses/NoContent'
340
+ '409':
341
+ $ref: '#/components/responses/Conflict'
342
+ '412':
343
+ $ref: '#/components/responses/PreconditionFailed'
344
+ default:
345
+ $ref: '#/components/responses/ServerError'
346
+
347
+ /card-number/{cardId}/key/{publicKeyHashPath}:
348
+ put:
349
+ tags:
350
+ - API
351
+ operationId: 'card-number-key-put'
352
+ description: |
353
+ Obtains an encrypted card number decryptable by caller's private key.
354
+ parameters:
355
+ - $ref: '#/components/parameters/cardId'
356
+ - $ref: '#/components/parameters/publicKeyHashPath'
357
+ requestBody:
358
+ $ref: '#/components/requestBodies/CardNumberRequest'
359
+ responses:
360
+ '200':
361
+ $ref: '#/components/responses/EncryptedCardNumber'
362
+ default:
363
+ $ref: '#/components/responses/ServerError'
364
+
365
+ /pin-offset-key/{pinOffsetKeyId}:
366
+ put:
367
+ x-firehose-logged: true
368
+ tags:
369
+ - API
370
+ operationId: 'pin-offset-key-put'
371
+ description: Creates a one-time use transmission key to transmit the user defined pin during pin changes
372
+ parameters:
373
+ - $ref: '#/components/parameters/pinOffsetKeyId'
374
+ responses:
375
+ '200':
376
+ $ref: '#/components/responses/PinOffsetKey'
377
+ default:
378
+ $ref: '#/components/responses/ServerError'
379
+
380
+ components:
381
+ schemas:
382
+ ActiveStatus:
383
+ description: The active/inactive status for the card
384
+ type: string
385
+ enum:
386
+ - INACTIVE
387
+ - ACTIVE
388
+
389
+ Bin:
390
+ type: string
391
+ pattern: '^\d+$'
392
+ description: Bank Identification Number
393
+ minLength: 6
394
+ maxLength: 8
395
+
396
+ BlockStatus:
397
+ type: string
398
+ description: Whether the card is open or blocked for various reasons
399
+ enum:
400
+ - OPEN
401
+ - BLOCKED LOST OR STOLEN
402
+ - BLOCKED NO FRAUD
403
+ - BLOCKED WITH FRAUD
404
+
405
+ Card:
406
+ type: object
407
+ additionalProperties: false
408
+ required:
409
+ - bin
410
+ - last4
411
+ - expirationDate
412
+ - cardNumber
413
+ - serviceCode
414
+ - pinOffset
415
+ - applicationTransactionCounter
416
+ - sequenceNumber
417
+ - state
418
+ - active
419
+ - block
420
+ - lock
421
+ - capture
422
+ - createdOn
423
+ - updatedOn
424
+ - lastModified
425
+ properties:
426
+ bin:
427
+ $ref: '#/components/schemas/Bin'
428
+ last4:
429
+ type: string
430
+ pattern: '^\d+$'
431
+ description: Last four digits of the card number
432
+ minLength: 4
433
+ maxLength: 4
434
+ expirationDate:
435
+ $ref: '#/components/schemas/ExpirationDate'
436
+ cardNumber:
437
+ type: string
438
+ description: Encrypted card number (PAN)
439
+ serviceCode:
440
+ type: string
441
+ pattern: '^\d+$'
442
+ description: Service code for the card
443
+ minLength: 3
444
+ maxLength: 3
445
+ pinOffset:
446
+ type: string
447
+ description: Encrypted pin offset for the card
448
+ applicationTransactionCounter:
449
+ type: integer
450
+ description: Application transaction counter (ATC) for the card
451
+ sequenceNumber:
452
+ type: integer
453
+ description: Used to differentiate issuing the same card and expiration date on multiple plastics
454
+ state:
455
+ $ref: '#/components/schemas/StateStatus'
456
+ active:
457
+ $ref: '#/components/schemas/ActiveStatus'
458
+ block:
459
+ $ref: '#/components/schemas/BlockStatus'
460
+ lock:
461
+ $ref: '#/components/schemas/LockStatus'
462
+ capture:
463
+ type: boolean
464
+ description: Whether the card should be captured at next use
465
+ updatedOn:
466
+ type: string
467
+ description: Time data was last updated
468
+ format: date-time
469
+ lastModified:
470
+ type: string
471
+ description: Time data was last modified (Deprecated. Use updatedOn)
472
+ format: date-time
473
+ createdOn:
474
+ description: Time encrypted data was first stored
475
+ type: string
476
+ format: date-time
477
+
478
+ CardResponse:
479
+ type: object
480
+ additionalProperties: false
481
+ required:
482
+ - dataEncryptionKeyId
483
+ - storageKeyId
484
+ - card
485
+ properties:
486
+ dataEncryptionKeyId:
487
+ $ref: '#/components/schemas/DataEncryptionKeyId'
488
+ storageKeyId:
489
+ $ref: '#/components/schemas/StorageKeyId'
490
+ encryptedDataEncryptionKey:
491
+ description: |
492
+ Encrypted DEK matching the publicKeyHash sent in the request. Used to decrypt values in the Card object.
493
+ type: string
494
+ card:
495
+ $ref: '#/components/schemas/Card'
496
+
497
+ CardQueryResponse:
498
+ type: object
499
+ additionalProperties: false
500
+ required:
501
+ - dataEncryptionKeyId
502
+ - storageKeyId
503
+ - cardId
504
+ - card
505
+ properties:
506
+ dataEncryptionKeyId:
507
+ $ref: '#/components/schemas/DataEncryptionKeyId'
508
+ storageKeyId:
509
+ $ref: '#/components/schemas/StorageKeyId'
510
+ encryptedDataEncryptionKey:
511
+ description: |
512
+ Encrypted DEK matching the publicKeyHash sent in the request. Used to decrypt values in the Card object.
513
+ type: string
514
+ cardId:
515
+ $ref: '#/components/schemas/CardId'
516
+ card:
517
+ $ref: '#/components/schemas/Card'
518
+
519
+ CardId:
520
+ type: string
521
+ description: Card identifier
522
+ format: uuid
523
+
524
+ Query:
525
+ description: Response from querying /card by cardNumberHash
526
+ type: object
527
+ required:
528
+ - cards
529
+ properties:
530
+ cards:
531
+ type: array
532
+ items:
533
+ $ref: '#/components/schemas/CardQueryResponse'
534
+
535
+ CardNumberRequest:
536
+ type: object
537
+ additionalProperties: false
538
+ required:
539
+ - publicKey
540
+ properties:
541
+ publicKey:
542
+ $ref: '#/components/schemas/PublicKey'
543
+
544
+ EncryptedCardNumber:
545
+ type: object
546
+ additionalProperties: false
547
+ required:
548
+ - encryptedDataEncryptionKey
549
+ - cardNumber
550
+ properties:
551
+ encryptedDataEncryptionKey:
552
+ description: RSA encrypted data encryption key used to AES encrypt cardNumber.
553
+ type: string
554
+ cardNumber:
555
+ type: string
556
+ description: AES-256 encrypted card number
557
+
558
+ Error:
559
+ type: object
560
+ additionalProperties: false
561
+ description: Server error message
562
+ properties:
563
+ message:
564
+ type: string
565
+ code:
566
+ type: string
567
+
568
+ ExpirationDate:
569
+ type: string
570
+ pattern: '([0-9][0-9])(0[1-9]|1[0-2])'
571
+ format: YYMM
572
+ description: Expiration date for the card and will be assumed to be the last millisecond of the month
573
+ minLength: 4
574
+ maxLength: 4
575
+
576
+ DataEncryptionKeyId:
577
+ type: string
578
+ description: |
579
+ Reference to encryption keys Payment Card Service will use to encrypt the Card object.
580
+ format: uuid
581
+
582
+ DataEncryptionKeyRequest:
583
+ type: object
584
+ additionalProperties: false
585
+ required:
586
+ - publicKeys
587
+ properties:
588
+ publicKeys:
589
+ type: array
590
+ minItems: 1
591
+ description: |
592
+ List of public keys in PEM format.
593
+
594
+ Associated private keys can be used to decrypt card data encrypted by Payment Card Service.
595
+ items:
596
+ $ref: '#/components/schemas/PublicKey'
597
+
598
+ DataEncryptionKeyResponse:
599
+ type: object
600
+ required:
601
+ - transmissionKey
602
+ - encryptedDataEncryptionKeys
603
+ - createdOn
604
+ - lastModified
605
+ properties:
606
+ createdOn:
607
+ description: Time data was first stored
608
+ type: string
609
+ format: date-time
610
+ lastModified:
611
+ description: Time data was last modified
612
+ type: string
613
+ format: date-time
614
+ encryptedDataEncryptionKeys:
615
+ type: array
616
+ items:
617
+ type: object
618
+ additionalProperties: false
619
+ description: |
620
+ An object that includes an encrypted data encryption key and a hashed version of the public key used to encrypt it.
621
+ The publicKeyHash string is derived using @checkdigit/hash and the caller's public key included in DataEncryptionKeyRequest.
622
+ required:
623
+ - publicKeyHash
624
+ - encryptedDataEncryptionKey
625
+ properties:
626
+ publicKeyHash:
627
+ $ref: '#/components/schemas/Hash'
628
+ encryptedDataEncryptionKey:
629
+ type: string
630
+ description: RSA encrypted data encryption key used to AES sensitive data in the Card object.
631
+
632
+ transmissionKey:
633
+ type: string
634
+ description: |
635
+ A public key in PEM format.
636
+ When creating a card with a specific card number (i.e. /card/{cardId}/number), use the transmissionKey to
637
+ encrypt the data encryption key used to encrypt the card number.
638
+
639
+ History:
640
+ description: |
641
+ The History object represents the updates to a Card object over time.
642
+ type: object
643
+ required:
644
+ - updates
645
+ properties:
646
+ dataEncryptionKeyId:
647
+ type: string
648
+ description: |
649
+ Reference to encryption keys Payment Card Service used to encrypt the Card object.
650
+ format: uuid
651
+ storageKeyId:
652
+ type: string
653
+ description: |
654
+ DEK's non-derived identifier to be used by Check Digit services only.
655
+ encryptedDataEncryptionKey:
656
+ description: |
657
+ RSA encrypted data encryption key used to decrypt AES encrypted values in Card objects.
658
+ type: string
659
+ updates:
660
+ type: array
661
+ items:
662
+ $ref: '#/components/schemas/Card'
663
+
664
+ LockStatus:
665
+ type: string
666
+ description: |
667
+ A cardholder initiated status. A locked card will fail authorization. Locked cards can be unlocked.
668
+
669
+ A cardholder may choose to lock a card while temporarily misplaced.
670
+ enum:
671
+ - LOCKED
672
+ - UNLOCKED
673
+
674
+ Ping:
675
+ type: object
676
+ additionalProperties: false
677
+ required:
678
+ - serverTime
679
+ properties:
680
+ serverTime:
681
+ type: string
682
+ format: date-time
683
+ description: Current server time
684
+ example: '1970-01-01T00:00:00.000Z'
685
+
686
+ PinOffsetKey:
687
+ type: object
688
+ additionalProperties: false
689
+ required:
690
+ - transmissionKey
691
+ properties:
692
+ transmissionKey:
693
+ description: A PEM formatted public key to be used to RSA encrypt a data encryption key.
694
+ type: string
695
+
696
+ PinOffsetKeyId:
697
+ type: string
698
+ format: uuid
699
+ description: Identifier for the PinOffsetKey used to encrypt the data encryption key.
700
+
701
+ PinOffsetRequest:
702
+ type: object
703
+ additionalProperties: false
704
+ required:
705
+ - encryptedDataEncryptionKey
706
+ - pinOffsetKeyId
707
+ - encryptedUserDefinedPin
708
+ properties:
709
+ pinOffsetKeyId:
710
+ $ref: '#/components/schemas/PinOffsetKeyId'
711
+ encryptedDataEncryptionKey:
712
+ description: A RSA encrypted (using transmissionKey) data encryption key that encrypted the encryptedUserDefinedPin.
713
+ type: string
714
+ encryptedUserDefinedPin:
715
+ type: string
716
+ description: |
717
+ User Defined PIN encrypted with an AES generated data encryption key. This is the PIN to be used for new
718
+ offset calculation. (plaintext pin has minLength = 4, maxLength = 12)
719
+
720
+ Hash:
721
+ type: string
722
+ format: uuid
723
+ example: '15a85f64-5717-4562-b3fc-2c963f66afa6'
724
+ description: UUID derived using @checkdigit/hash
725
+
726
+ NewCard:
727
+ type: object
728
+ additionalProperties: false
729
+ required:
730
+ - bin
731
+ - expirationDate
732
+ - serviceCode
733
+ - sequenceNumber
734
+ - state
735
+ - active
736
+ - block
737
+ - lock
738
+ properties:
739
+ bin:
740
+ $ref: '#/components/schemas/Bin'
741
+ expirationDate:
742
+ $ref: '#/components/schemas/ExpirationDate'
743
+ serviceCode:
744
+ type: string
745
+ pattern: '^\d+$'
746
+ description: |
747
+ Used to set general guidelines for how the card can be used, e.g. domestic only or international, online authorizations only, etc.
748
+ minLength: 3
749
+ maxLength: 3
750
+ sequenceNumber:
751
+ type: integer
752
+ description: Used to differentiate issuing the same card and expiration date on multiple plastics.
753
+ minimum: 0
754
+ maximum: 10
755
+ state:
756
+ $ref: '#/components/schemas/StateStatus'
757
+ active:
758
+ $ref: '#/components/schemas/ActiveStatus'
759
+ block:
760
+ $ref: '#/components/schemas/BlockStatus'
761
+ lock:
762
+ $ref: '#/components/schemas/LockStatus'
763
+
764
+ NewCardRequest:
765
+ type: object
766
+ required:
767
+ - dataEncryptionKeyId
768
+ - cardNumberLength
769
+ - newCard
770
+ additionalProperties: false
771
+ properties:
772
+ dataEncryptionKeyId:
773
+ $ref: '#/components/schemas/DataEncryptionKeyId'
774
+ cardNumberLength:
775
+ type: integer
776
+ description: Desired number of digits in the card number.
777
+ minimum: 15
778
+ maximum: 19
779
+ newCard:
780
+ $ref: '#/components/schemas/NewCard'
781
+
782
+ NewCardRequestWithCardNumber:
783
+ type: object
784
+ required:
785
+ - encryptedCardNumber
786
+ - encryptedDataEncryptionKey
787
+ - dataEncryptionKeyId
788
+ - newCard
789
+ properties:
790
+ encryptedCardNumber:
791
+ type: string
792
+ encryptedDataEncryptionKey:
793
+ description: RSA encrypted data encryption key used to AES encrypt encryptedCardNumber
794
+ type: string
795
+ dataEncryptionKeyId:
796
+ $ref: '#/components/schemas/DataEncryptionKeyId'
797
+ newCard:
798
+ $ref: '#/components/schemas/NewCard'
799
+ additionalProperties: false
800
+
801
+ PublicKey:
802
+ description: Public key in PEM format
803
+ type: string
804
+ example: |
805
+ -----BEGIN PUBLIC KEY-----
806
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwm2sxmRdTF7ZIBA6+ngO
807
+ 8jOTCHmID0PpQB1q85+hrcLSfB1rWY9bzNNLabBo/ajDnA4Pcadq/x6gpg70qZcR
808
+ 9Wxm6TttKzBPZsxasGXgSTDqEi2KcYZgq1mL4qyxUvyIms7/llGy+W9b5huZaVcO
809
+ xdT1tw/zctbOhb6S2t5vH+zkta/2ncUXjG7i8XdLsJ1qe4K1kYbA4KVkOMmAtw7O
810
+ 4STk0TZDD0YARdmrciorJjbIVt0Xj1CrYQ5QbDGrlfeXgrcZwX5f9wT2MnKlY5oZ
811
+ 5Wtb57oGtLkVf8g6vN/2jGtAmOmHK2hHwNd/+zUet5G/S5uwEli4RgMPP4pUoKgd
812
+ GQIDAQAB
813
+ -----END PUBLIC KEY-----
814
+
815
+ PublicKeyResponse:
816
+ description: |
817
+ This object contains the rsa generated public key for the Payment Card Service. This public key must be used
818
+ when transmitting encrypted data to Payment Card Service APIs.
819
+ type: object
820
+ required:
821
+ - publicKey
822
+ properties:
823
+ publicKey:
824
+ $ref: '#/components/schemas/PublicKey'
825
+
826
+ StateStatus:
827
+ description: The current state of the card
828
+ type: string
829
+ enum:
830
+ - CURRENT
831
+ - REISSUED
832
+ - RETIRED
833
+ - FORCED
834
+
835
+ StorageKeyId:
836
+ type: string
837
+ description: |
838
+ DEK's non-derived identifier to be used by Check Digit services only.
839
+
840
+ parameters:
841
+ activeStatus:
842
+ name: activeStatus
843
+ in: path
844
+ description: Updated active status of the card
845
+ required: true
846
+ schema:
847
+ $ref: '#/components/schemas/ActiveStatus'
848
+
849
+ applicationTransactionCounter:
850
+ name: applicationTransactionCounter
851
+ in: path
852
+ description: Updated application transaction counter
853
+ required: true
854
+ schema:
855
+ type: integer
856
+
857
+ at:
858
+ name: at
859
+ in: query
860
+ description: Return data as it was at this time. Must be at least 1 second in the past.
861
+ example: '1970-01-01T00:00:00.000Z'
862
+ required: true
863
+ schema:
864
+ type: string
865
+ format: date-time
866
+
867
+ blockStatus:
868
+ name: blockStatus
869
+ in: path
870
+ description: Updated block status of the card
871
+ required: true
872
+ schema:
873
+ $ref: '#/components/schemas/BlockStatus'
874
+
875
+ captureStatus:
876
+ name: captureStatus
877
+ in: path
878
+ description: Updated capture status of the card
879
+ required: true
880
+ schema:
881
+ type: boolean
882
+
883
+ cardId:
884
+ name: cardId
885
+ in: path
886
+ description: An id unique to each card in uuid format
887
+ required: true
888
+ schema:
889
+ $ref: '#/components/schemas/CardId'
890
+
891
+ cardNumberHash:
892
+ name: cardNumberHash
893
+ in: query
894
+ description: UUID derived from a card number (PAN) using @checkdigit/hash
895
+ required: true
896
+ schema:
897
+ $ref: '#/components/schemas/Hash'
898
+
899
+ createdOn:
900
+ name: Created-On
901
+ in: header
902
+ description: |
903
+ Created-On header, establishes createdOn, updatedOn, and lastModified values for the created data.
904
+ If both Created-On and Last-Modified values are provided, the value provided in Created-On
905
+ will be used for creating the data and the value provided in Last-Modified will be ignored.
906
+ example: '1970-01-01T00:00:00.000Z'
907
+ required: false
908
+ schema:
909
+ type: string
910
+ format: date-time
911
+
912
+ fromDate:
913
+ name: fromDate
914
+ in: query
915
+ description: Return data created on or after this date
916
+ example: '1970-01-01T00:00:00.000Z'
917
+ schema:
918
+ type: string
919
+ format: date-time
920
+
921
+ ifMatch:
922
+ name: If-Match
923
+ in: header
924
+ description: If-Match header
925
+ required: true
926
+ schema:
927
+ type: string
928
+
929
+ dataEncryptionKeyId:
930
+ in: path
931
+ name: dataEncryptionKeyId
932
+ description: Parameter used to represent a DEK
933
+ required: true
934
+ schema:
935
+ type: string
936
+ format: uuid
937
+
938
+ lastModified:
939
+ name: Last-Modified
940
+ in: header
941
+ description: last-modified header, establishes createdOn and last-modified value for created data
942
+ example: '1970-01-01T00:00:00.000Z'
943
+ required: false
944
+ schema:
945
+ type: string
946
+ format: date-time
947
+
948
+ lockStatus:
949
+ name: lockStatus
950
+ in: path
951
+ description: Updated lock status of the card
952
+ required: true
953
+ schema:
954
+ $ref: '#/components/schemas/LockStatus'
955
+
956
+ pinOffsetKeyId:
957
+ name: pinOffsetKeyId
958
+ in: path
959
+ description: A unique id associated with a one time use encryption key
960
+ required: true
961
+ schema:
962
+ $ref: '#/components/schemas/PinOffsetKeyId'
963
+
964
+ publicKeyHashPath:
965
+ name: publicKeyHashPath
966
+ in: path
967
+ description: UUID derived from a PEM formatted Public Key using @checkdigit/hash
968
+ required: true
969
+ schema:
970
+ $ref: '#/components/schemas/Hash'
971
+
972
+ publicKeyHashQuery:
973
+ name: publicKeyHashQuery
974
+ in: query
975
+ description: UUID derived from a PEM formatted Public Key using @checkdigit/hash
976
+ required: false
977
+ schema:
978
+ $ref: '#/components/schemas/Hash'
979
+
980
+ stateStatus:
981
+ name: stateStatus
982
+ in: path
983
+ description: Updated state status of the card
984
+ required: true
985
+ schema:
986
+ $ref: '#/components/schemas/StateStatus'
987
+
988
+ toDate:
989
+ name: toDate
990
+ in: query
991
+ description: Return data created before this date. Must be at least 1 second in the past.
992
+ example: '1970-01-01T00:00:00.000Z'
993
+ required: true
994
+ schema:
995
+ type: string
996
+ format: date-time
997
+
998
+ requestBodies:
999
+ CardNumberRequest:
1000
+ required: true
1001
+ content:
1002
+ application/json:
1003
+ schema:
1004
+ $ref: '#/components/schemas/CardNumberRequest'
1005
+
1006
+ DataEncryptionKeyRequest:
1007
+ required: true
1008
+ content:
1009
+ application/json:
1010
+ schema:
1011
+ $ref: '#/components/schemas/DataEncryptionKeyRequest'
1012
+
1013
+ NewCardRequest:
1014
+ required: true
1015
+ content:
1016
+ application/json:
1017
+ schema:
1018
+ $ref: '#/components/schemas/NewCardRequest'
1019
+
1020
+ NewCardRequestWithCardNumber:
1021
+ required: true
1022
+ content:
1023
+ application/json:
1024
+ schema:
1025
+ $ref: '#/components/schemas/NewCardRequestWithCardNumber'
1026
+
1027
+ PinOffsetRequest:
1028
+ description: Encrypted user defined PIN
1029
+ required: true
1030
+ content:
1031
+ application/json:
1032
+ schema:
1033
+ $ref: '#/components/schemas/PinOffsetRequest'
1034
+
1035
+ responses:
1036
+ CardResponse:
1037
+ description: Card retrieved
1038
+ content:
1039
+ application/json:
1040
+ schema:
1041
+ $ref: '#/components/schemas/CardResponse'
1042
+ headers:
1043
+ Last-Modified:
1044
+ $ref: '#/components/headers/Last-Modified'
1045
+ Created-On:
1046
+ $ref: '#/components/headers/Created-On'
1047
+ Updated-On:
1048
+ $ref: '#/components/headers/Updated-On'
1049
+ ETag:
1050
+ $ref: '#/components/headers/ETag'
1051
+
1052
+ Query:
1053
+ description: Response from querying /card by cardNumberHash
1054
+ content:
1055
+ application/json:
1056
+ schema:
1057
+ $ref: '#/components/schemas/Query'
1058
+
1059
+ Conflict:
1060
+ description: Record exists but with different data
1061
+
1062
+ EncryptedCardNumber:
1063
+ description: Encrypted card information retrieved
1064
+ content:
1065
+ application/json:
1066
+ schema:
1067
+ $ref: '#/components/schemas/EncryptedCardNumber'
1068
+
1069
+ DataEncryptionKeyResponse:
1070
+ description: Set of public keys request
1071
+ content:
1072
+ application/json:
1073
+ schema:
1074
+ $ref: '#/components/schemas/DataEncryptionKeyResponse'
1075
+ headers:
1076
+ Created-On:
1077
+ $ref: '#/components/headers/Created-On'
1078
+ Updated-On:
1079
+ $ref: '#/components/headers/Updated-On'
1080
+
1081
+ History:
1082
+ description: Response from
1083
+ content:
1084
+ application/json:
1085
+ schema:
1086
+ $ref: '#/components/schemas/History'
1087
+
1088
+ Ping:
1089
+ description: Successful Ping response
1090
+ content:
1091
+ application/json:
1092
+ schema:
1093
+ $ref: '#/components/schemas/Ping'
1094
+
1095
+ PinOffsetKey:
1096
+ description: Response from creating or requesting a key to encrypt a user defined pin
1097
+ content:
1098
+ application/json:
1099
+ schema:
1100
+ $ref: '#/components/schemas/PinOffsetKey'
1101
+
1102
+ PublicKeyResponse:
1103
+ description: Public Key response.
1104
+ content:
1105
+ application/json:
1106
+ schema:
1107
+ $ref: '#/components/schemas/PublicKeyResponse'
1108
+ headers:
1109
+ Created-On:
1110
+ $ref: '#/components/headers/Created-On'
1111
+ Updated-On:
1112
+ $ref: '#/components/headers/Updated-On'
1113
+
1114
+ PreconditionFailed:
1115
+ description: Precondition failed
1116
+
1117
+ NotFound:
1118
+ description: Not found
1119
+
1120
+ NoContent:
1121
+ description: Success/No Content
1122
+ headers:
1123
+ Last-Modified:
1124
+ $ref: '#/components/headers/Last-Modified'
1125
+ Created-On:
1126
+ $ref: '#/components/headers/Created-On'
1127
+ Updated-On:
1128
+ $ref: '#/components/headers/Updated-On'
1129
+ ETag:
1130
+ $ref: '#/components/headers/ETag'
1131
+
1132
+ ServerError:
1133
+ description: Server Error response
1134
+ content:
1135
+ application/json:
1136
+ schema:
1137
+ $ref: '#/components/schemas/Error'
1138
+
1139
+ headers:
1140
+ ETag:
1141
+ description: Version information for record
1142
+ schema:
1143
+ type: string
1144
+
1145
+ Last-Modified:
1146
+ description: Date and time at which the record was last modified
1147
+ schema:
1148
+ type: string
1149
+ format: date-time
1150
+
1151
+ Created-On:
1152
+ description: CreatedOn timestamp for the newly created record
1153
+ schema:
1154
+ type: string
1155
+ format: date-time
1156
+
1157
+ Updated-On:
1158
+ description: UpdatedOn timestamp for the existing record
1159
+ schema:
1160
+ type: string
1161
+ format: date-time