@purveyors/sdk 0.9.0 → 0.11.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.
package/dist/index.d.ts CHANGED
@@ -434,6 +434,377 @@ interface paths {
434
434
  patch?: never;
435
435
  trace?: never;
436
436
  };
437
+ "/v1/cli-auth/requests": {
438
+ parameters: {
439
+ query?: never;
440
+ header?: never;
441
+ path?: never;
442
+ cookie?: never;
443
+ };
444
+ get?: never;
445
+ put?: never;
446
+ /** Create a short-lived PKCE-bound CLI login request */
447
+ post: {
448
+ parameters: {
449
+ query?: never;
450
+ header?: never;
451
+ path?: never;
452
+ cookie?: never;
453
+ };
454
+ requestBody: {
455
+ content: {
456
+ "application/json": {
457
+ machineName: string;
458
+ codeChallenge: string;
459
+ };
460
+ };
461
+ };
462
+ responses: {
463
+ /** @description CLI login request created */
464
+ 201: {
465
+ headers: {
466
+ [name: string]: unknown;
467
+ };
468
+ content: {
469
+ "application/json": {
470
+ requestToken: string;
471
+ /** Format: uuid */
472
+ requestId: string;
473
+ /** Format: uri */
474
+ verificationUri: string;
475
+ /** Format: date-time */
476
+ expiresAt: string;
477
+ intervalSeconds: number;
478
+ };
479
+ };
480
+ };
481
+ /** @description Invalid CLI authentication request */
482
+ 400: {
483
+ headers: {
484
+ [name: string]: unknown;
485
+ };
486
+ content: {
487
+ "application/json": components["schemas"]["ErrorResponse"];
488
+ };
489
+ };
490
+ /** @description Authorization pending or request conflict */
491
+ 409: {
492
+ headers: {
493
+ [name: string]: unknown;
494
+ };
495
+ content: {
496
+ "application/json": components["schemas"]["ErrorResponse"];
497
+ };
498
+ };
499
+ /** @description Request expired or already consumed */
500
+ 410: {
501
+ headers: {
502
+ [name: string]: unknown;
503
+ };
504
+ content: {
505
+ "application/json": components["schemas"]["ErrorResponse"];
506
+ };
507
+ };
508
+ /** @description CLI authentication unavailable */
509
+ 503: {
510
+ headers: {
511
+ [name: string]: unknown;
512
+ };
513
+ content: {
514
+ "application/json": components["schemas"]["ErrorResponse"];
515
+ };
516
+ };
517
+ };
518
+ };
519
+ delete?: never;
520
+ options?: never;
521
+ head?: never;
522
+ patch?: never;
523
+ trace?: never;
524
+ };
525
+ "/v1/cli-auth/inspect": {
526
+ parameters: {
527
+ query?: never;
528
+ header?: never;
529
+ path?: never;
530
+ cookie?: never;
531
+ };
532
+ get?: never;
533
+ put?: never;
534
+ /** Inspect a signed CLI login request before showing consent */
535
+ post: {
536
+ parameters: {
537
+ query?: never;
538
+ header?: never;
539
+ path?: never;
540
+ cookie?: never;
541
+ };
542
+ requestBody: {
543
+ content: {
544
+ "application/json": {
545
+ requestToken: string;
546
+ };
547
+ };
548
+ };
549
+ responses: {
550
+ /** @description CLI login request details */
551
+ 200: {
552
+ headers: {
553
+ [name: string]: unknown;
554
+ };
555
+ content: {
556
+ "application/json": {
557
+ /** Format: uuid */
558
+ requestId: string;
559
+ machineName: string;
560
+ /** Format: date-time */
561
+ expiresAt: string;
562
+ scopes: ("catalog:read" | "inventory:read" | "inventory:write" | "roast:read" | "roast:write" | "sales:read" | "sales:write" | "tasting:read" | "tasting:write")[];
563
+ };
564
+ };
565
+ };
566
+ /** @description Invalid CLI authentication request */
567
+ 400: {
568
+ headers: {
569
+ [name: string]: unknown;
570
+ };
571
+ content: {
572
+ "application/json": components["schemas"]["ErrorResponse"];
573
+ };
574
+ };
575
+ /** @description Authorization pending or request conflict */
576
+ 409: {
577
+ headers: {
578
+ [name: string]: unknown;
579
+ };
580
+ content: {
581
+ "application/json": components["schemas"]["ErrorResponse"];
582
+ };
583
+ };
584
+ /** @description Request expired or already consumed */
585
+ 410: {
586
+ headers: {
587
+ [name: string]: unknown;
588
+ };
589
+ content: {
590
+ "application/json": components["schemas"]["ErrorResponse"];
591
+ };
592
+ };
593
+ /** @description CLI authentication unavailable */
594
+ 503: {
595
+ headers: {
596
+ [name: string]: unknown;
597
+ };
598
+ content: {
599
+ "application/json": components["schemas"]["ErrorResponse"];
600
+ };
601
+ };
602
+ };
603
+ };
604
+ delete?: never;
605
+ options?: never;
606
+ head?: never;
607
+ patch?: never;
608
+ trace?: never;
609
+ };
610
+ "/v1/cli-auth/approve": {
611
+ parameters: {
612
+ query?: never;
613
+ header?: never;
614
+ path?: never;
615
+ cookie?: never;
616
+ };
617
+ get?: never;
618
+ put?: never;
619
+ /** Approve a CLI login request for the signed-in user */
620
+ post: {
621
+ parameters: {
622
+ query?: never;
623
+ header?: never;
624
+ path?: never;
625
+ cookie?: never;
626
+ };
627
+ requestBody: {
628
+ content: {
629
+ "application/json": {
630
+ requestToken: string;
631
+ };
632
+ };
633
+ };
634
+ responses: {
635
+ /** @description CLI login request approved */
636
+ 200: {
637
+ headers: {
638
+ [name: string]: unknown;
639
+ };
640
+ content: {
641
+ "application/json": {
642
+ /** Format: uuid */
643
+ requestId: string;
644
+ /** @enum {boolean} */
645
+ approved: true;
646
+ };
647
+ };
648
+ };
649
+ /** @description Invalid CLI authentication request */
650
+ 400: {
651
+ headers: {
652
+ [name: string]: unknown;
653
+ };
654
+ content: {
655
+ "application/json": components["schemas"]["ErrorResponse"];
656
+ };
657
+ };
658
+ /** @description Authentication required */
659
+ 401: {
660
+ headers: {
661
+ [name: string]: unknown;
662
+ };
663
+ content: {
664
+ "application/json": components["schemas"]["ErrorResponse"];
665
+ };
666
+ };
667
+ /** @description Insufficient entitlement (plan or role) */
668
+ 403: {
669
+ headers: {
670
+ [name: string]: unknown;
671
+ };
672
+ content: {
673
+ "application/json": components["schemas"]["ErrorResponse"];
674
+ };
675
+ };
676
+ /** @description Authorization pending or request conflict */
677
+ 409: {
678
+ headers: {
679
+ [name: string]: unknown;
680
+ };
681
+ content: {
682
+ "application/json": components["schemas"]["ErrorResponse"];
683
+ };
684
+ };
685
+ /** @description Request expired or already consumed */
686
+ 410: {
687
+ headers: {
688
+ [name: string]: unknown;
689
+ };
690
+ content: {
691
+ "application/json": components["schemas"]["ErrorResponse"];
692
+ };
693
+ };
694
+ /** @description CLI authentication unavailable */
695
+ 503: {
696
+ headers: {
697
+ [name: string]: unknown;
698
+ };
699
+ content: {
700
+ "application/json": components["schemas"]["ErrorResponse"];
701
+ };
702
+ };
703
+ };
704
+ };
705
+ delete?: never;
706
+ options?: never;
707
+ head?: never;
708
+ patch?: never;
709
+ trace?: never;
710
+ };
711
+ "/v1/cli-auth/token": {
712
+ parameters: {
713
+ query?: never;
714
+ header?: never;
715
+ path?: never;
716
+ cookie?: never;
717
+ };
718
+ get?: never;
719
+ put?: never;
720
+ /** Exchange an approved request and PKCE verifier for a CLI API key */
721
+ post: {
722
+ parameters: {
723
+ query?: never;
724
+ header?: never;
725
+ path?: never;
726
+ cookie?: never;
727
+ };
728
+ requestBody: {
729
+ content: {
730
+ "application/json": {
731
+ requestToken: string;
732
+ codeVerifier: string;
733
+ };
734
+ };
735
+ };
736
+ responses: {
737
+ /** @description Machine key atomically replaced; raw key returned once */
738
+ 201: {
739
+ headers: {
740
+ [name: string]: unknown;
741
+ };
742
+ content: {
743
+ "application/json": {
744
+ apiKey: string;
745
+ key: {
746
+ /** Format: uuid */
747
+ id: string;
748
+ name: string;
749
+ /** Format: date-time */
750
+ createdAt: string | null;
751
+ /** Format: date-time */
752
+ lastUsedAt: string | null;
753
+ isActive: boolean;
754
+ scopes: string[];
755
+ };
756
+ user: {
757
+ id: string;
758
+ email: string;
759
+ role: string;
760
+ };
761
+ };
762
+ };
763
+ };
764
+ /** @description Invalid CLI authentication request */
765
+ 400: {
766
+ headers: {
767
+ [name: string]: unknown;
768
+ };
769
+ content: {
770
+ "application/json": components["schemas"]["ErrorResponse"];
771
+ };
772
+ };
773
+ /** @description Authorization pending or request conflict */
774
+ 409: {
775
+ headers: {
776
+ [name: string]: unknown;
777
+ };
778
+ content: {
779
+ "application/json": components["schemas"]["ErrorResponse"];
780
+ };
781
+ };
782
+ /** @description Request expired or already consumed */
783
+ 410: {
784
+ headers: {
785
+ [name: string]: unknown;
786
+ };
787
+ content: {
788
+ "application/json": components["schemas"]["ErrorResponse"];
789
+ };
790
+ };
791
+ /** @description CLI authentication unavailable */
792
+ 503: {
793
+ headers: {
794
+ [name: string]: unknown;
795
+ };
796
+ content: {
797
+ "application/json": components["schemas"]["ErrorResponse"];
798
+ };
799
+ };
800
+ };
801
+ };
802
+ delete?: never;
803
+ options?: never;
804
+ head?: never;
805
+ patch?: never;
806
+ trace?: never;
807
+ };
437
808
  "/v1/catalog/access": {
438
809
  parameters: {
439
810
  query?: never;
@@ -2876,6 +3247,94 @@ interface paths {
2876
3247
  patch?: never;
2877
3248
  trace?: never;
2878
3249
  };
3250
+ "/v1/roasts/classify": {
3251
+ parameters: {
3252
+ query?: never;
3253
+ header?: never;
3254
+ path?: never;
3255
+ cookie?: never;
3256
+ };
3257
+ get?: never;
3258
+ put?: never;
3259
+ /**
3260
+ * Classify an imported roast
3261
+ * @description Match Artisan roast metadata to one of the supplied owner inventory rows. Requires member entitlement and either an authenticated session or an owner-bound API key carrying the exact roast:read scope.
3262
+ */
3263
+ post: {
3264
+ parameters: {
3265
+ query?: never;
3266
+ header?: never;
3267
+ path?: never;
3268
+ cookie?: never;
3269
+ };
3270
+ requestBody: {
3271
+ content: {
3272
+ "application/json": components["schemas"]["RoastClassificationRequest"];
3273
+ };
3274
+ };
3275
+ responses: {
3276
+ /** @description Best inventory match, or null when no reasonable match exists */
3277
+ 200: {
3278
+ headers: {
3279
+ [name: string]: unknown;
3280
+ };
3281
+ content: {
3282
+ "application/json": components["schemas"]["RoastClassificationResponse"];
3283
+ };
3284
+ };
3285
+ /** @description Invalid request body or input cap exceeded */
3286
+ 400: {
3287
+ headers: {
3288
+ [name: string]: unknown;
3289
+ };
3290
+ content: {
3291
+ "application/json": components["schemas"]["ErrorResponse"];
3292
+ };
3293
+ };
3294
+ /** @description Authentication required */
3295
+ 401: {
3296
+ headers: {
3297
+ [name: string]: unknown;
3298
+ };
3299
+ content: {
3300
+ "application/json": components["schemas"]["ErrorResponse"];
3301
+ };
3302
+ };
3303
+ /** @description Insufficient entitlement (plan or role) */
3304
+ 403: {
3305
+ headers: {
3306
+ [name: string]: unknown;
3307
+ };
3308
+ content: {
3309
+ "application/json": components["schemas"]["ErrorResponse"];
3310
+ };
3311
+ };
3312
+ /** @description API or upstream classification rate limit exceeded */
3313
+ 429: {
3314
+ headers: {
3315
+ [name: string]: unknown;
3316
+ };
3317
+ content: {
3318
+ "application/json": components["schemas"]["ErrorResponse"];
3319
+ };
3320
+ };
3321
+ /** @description Classification provider is unavailable or not configured */
3322
+ 503: {
3323
+ headers: {
3324
+ [name: string]: unknown;
3325
+ };
3326
+ content: {
3327
+ "application/json": components["schemas"]["ErrorResponse"];
3328
+ };
3329
+ };
3330
+ };
3331
+ };
3332
+ delete?: never;
3333
+ options?: never;
3334
+ head?: never;
3335
+ patch?: never;
3336
+ trace?: never;
3337
+ };
2879
3338
  "/v1/sales": {
2880
3339
  parameters: {
2881
3340
  query?: never;
@@ -5214,6 +5673,35 @@ interface components {
5214
5673
  };
5215
5674
  };
5216
5675
  };
5676
+ RoastClassificationResponse: {
5677
+ match: {
5678
+ inventoryId: number;
5679
+ coffeeName: string;
5680
+ confidence: number;
5681
+ reasoning: string;
5682
+ } | null;
5683
+ warning?: string;
5684
+ };
5685
+ RoastClassificationRequest: {
5686
+ alogMetadata: {
5687
+ title: string;
5688
+ filename?: string;
5689
+ roastertype?: string;
5690
+ beans?: string;
5691
+ roastingnotes?: string;
5692
+ weight?: [
5693
+ number,
5694
+ number,
5695
+ string
5696
+ ];
5697
+ };
5698
+ inventory: {
5699
+ id: number;
5700
+ coffee_name: string;
5701
+ origin?: string;
5702
+ processing?: string;
5703
+ }[];
5704
+ };
5217
5705
  SaleResource: {
5218
5706
  id: number;
5219
5707
  green_coffee_inv_id: number;
@@ -5473,6 +5961,8 @@ type InventoryUpdateRequest = NonNullable<paths["/v1/inventory/{id}"]["patch"]["
5473
5961
  type RoastListQuery = NonNullable<paths["/v1/roasts"]["get"]["parameters"]["query"]>;
5474
5962
  /** Query parameters for {@link ParchmentClient.roasts.get}. */
5475
5963
  type RoastGetQuery = NonNullable<paths["/v1/roasts/{id}"]["get"]["parameters"]["query"]>;
5964
+ /** Request body for {@link ParchmentClient.roasts.classify}. */
5965
+ type RoastClassificationRequest = NonNullable<paths["/v1/roasts/classify"]["post"]["requestBody"]>["content"]["application/json"];
5476
5966
  /** Request body for {@link ParchmentClient.roasts.create}. */
5477
5967
  type RoastCreateRequest = NonNullable<paths["/v1/roasts"]["post"]["requestBody"]>["content"]["application/json"];
5478
5968
  /** Request body for {@link ParchmentClient.roasts.update}. */
@@ -5493,6 +5983,10 @@ type TastingGetQuery = NonNullable<paths["/v1/tasting/{catalogId}"]["get"]["para
5493
5983
  type TastingRateRequest = NonNullable<paths["/v1/tasting/inventory/{inventoryId}"]["put"]["requestBody"]>["content"]["application/json"];
5494
5984
  /** Request body for {@link ParchmentClient.apiKeys.create}. */
5495
5985
  type ApiKeyCreateRequest = NonNullable<paths["/v1/api-keys"]["post"]["requestBody"]>["content"]["application/json"];
5986
+ type CliAuthRequestCreate = NonNullable<paths["/v1/cli-auth/requests"]["post"]["requestBody"]>["content"]["application/json"];
5987
+ type CliAuthInspectRequest = NonNullable<paths["/v1/cli-auth/inspect"]["post"]["requestBody"]>["content"]["application/json"];
5988
+ type CliAuthApproveRequest = NonNullable<paths["/v1/cli-auth/approve"]["post"]["requestBody"]>["content"]["application/json"];
5989
+ type CliAuthExchangeRequest = NonNullable<paths["/v1/cli-auth/token"]["post"]["requestBody"]>["content"]["application/json"];
5496
5990
  /**
5497
5991
  * Create a typed Parchment API client.
5498
5992
  *
@@ -5574,19 +6068,211 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5574
6068
  headers: {
5575
6069
  [name: string]: unknown;
5576
6070
  };
5577
- content: {
5578
- "application/json": components["schemas"]["MeResponse"];
6071
+ content: {
6072
+ "application/json": components["schemas"]["MeResponse"];
6073
+ };
6074
+ };
6075
+ };
6076
+ }> | undefined, `${string}/${string}`>>;
6077
+ apiKeys: {
6078
+ /** List API keys owned by the authenticated session user. */
6079
+ list: () => Promise<openapi_fetch.FetchResponse<{
6080
+ parameters: {
6081
+ query?: never;
6082
+ header?: never;
6083
+ path?: never;
6084
+ cookie?: never;
6085
+ };
6086
+ requestBody?: never;
6087
+ responses: {
6088
+ 200: {
6089
+ headers: {
6090
+ [name: string]: unknown;
6091
+ };
6092
+ content: {
6093
+ "application/json": components["schemas"]["ApiKeyListResponse"];
6094
+ };
6095
+ };
6096
+ 400: {
6097
+ headers: {
6098
+ [name: string]: unknown;
6099
+ };
6100
+ content: {
6101
+ "application/json": components["schemas"]["ErrorResponse"];
6102
+ };
6103
+ };
6104
+ 401: {
6105
+ headers: {
6106
+ [name: string]: unknown;
6107
+ };
6108
+ content: {
6109
+ "application/json": components["schemas"]["ErrorResponse"];
6110
+ };
6111
+ };
6112
+ 403: {
6113
+ headers: {
6114
+ [name: string]: unknown;
6115
+ };
6116
+ content: {
6117
+ "application/json": components["schemas"]["ErrorResponse"];
6118
+ };
6119
+ };
6120
+ 404: {
6121
+ headers: {
6122
+ [name: string]: unknown;
6123
+ };
6124
+ content: {
6125
+ "application/json": components["schemas"]["ErrorResponse"];
6126
+ };
6127
+ };
6128
+ 503: {
6129
+ headers: {
6130
+ [name: string]: unknown;
6131
+ };
6132
+ content: {
6133
+ "application/json": components["schemas"]["ErrorResponse"];
6134
+ };
6135
+ };
6136
+ };
6137
+ }, openapi_fetch.FetchOptions<{
6138
+ parameters: {
6139
+ query?: never;
6140
+ header?: never;
6141
+ path?: never;
6142
+ cookie?: never;
6143
+ };
6144
+ requestBody?: never;
6145
+ responses: {
6146
+ 200: {
6147
+ headers: {
6148
+ [name: string]: unknown;
6149
+ };
6150
+ content: {
6151
+ "application/json": components["schemas"]["ApiKeyListResponse"];
6152
+ };
6153
+ };
6154
+ 400: {
6155
+ headers: {
6156
+ [name: string]: unknown;
6157
+ };
6158
+ content: {
6159
+ "application/json": components["schemas"]["ErrorResponse"];
6160
+ };
6161
+ };
6162
+ 401: {
6163
+ headers: {
6164
+ [name: string]: unknown;
6165
+ };
6166
+ content: {
6167
+ "application/json": components["schemas"]["ErrorResponse"];
6168
+ };
6169
+ };
6170
+ 403: {
6171
+ headers: {
6172
+ [name: string]: unknown;
6173
+ };
6174
+ content: {
6175
+ "application/json": components["schemas"]["ErrorResponse"];
6176
+ };
6177
+ };
6178
+ 404: {
6179
+ headers: {
6180
+ [name: string]: unknown;
6181
+ };
6182
+ content: {
6183
+ "application/json": components["schemas"]["ErrorResponse"];
6184
+ };
6185
+ };
6186
+ 503: {
6187
+ headers: {
6188
+ [name: string]: unknown;
6189
+ };
6190
+ content: {
6191
+ "application/json": components["schemas"]["ErrorResponse"];
6192
+ };
6193
+ };
6194
+ };
6195
+ }> | undefined, `${string}/${string}`>>;
6196
+ /** Create an API key. The raw secret is returned only once. */
6197
+ create: (body: ApiKeyCreateRequest) => Promise<openapi_fetch.FetchResponse<{
6198
+ parameters: {
6199
+ query?: never;
6200
+ header?: never;
6201
+ path?: never;
6202
+ cookie?: never;
6203
+ };
6204
+ requestBody: {
6205
+ content: {
6206
+ "application/json": {
6207
+ name: string;
6208
+ scopes?: ("catalog:read" | "inventory:read" | "roast:read" | "sales:read" | "tasting:read" | "inventory:write" | "roast:write" | "sales:write" | "tasting:write")[];
6209
+ };
6210
+ };
6211
+ };
6212
+ responses: {
6213
+ 201: {
6214
+ headers: {
6215
+ [name: string]: unknown;
6216
+ };
6217
+ content: {
6218
+ "application/json": components["schemas"]["ApiKeyCreateResponse"];
6219
+ };
6220
+ };
6221
+ 400: {
6222
+ headers: {
6223
+ [name: string]: unknown;
6224
+ };
6225
+ content: {
6226
+ "application/json": components["schemas"]["ErrorResponse"];
6227
+ };
6228
+ };
6229
+ 401: {
6230
+ headers: {
6231
+ [name: string]: unknown;
6232
+ };
6233
+ content: {
6234
+ "application/json": components["schemas"]["ErrorResponse"];
6235
+ };
6236
+ };
6237
+ 403: {
6238
+ headers: {
6239
+ [name: string]: unknown;
6240
+ };
6241
+ content: {
6242
+ "application/json": components["schemas"]["ErrorResponse"];
6243
+ };
6244
+ };
6245
+ 404: {
6246
+ headers: {
6247
+ [name: string]: unknown;
6248
+ };
6249
+ content: {
6250
+ "application/json": components["schemas"]["ErrorResponse"];
6251
+ };
6252
+ };
6253
+ 503: {
6254
+ headers: {
6255
+ [name: string]: unknown;
6256
+ };
6257
+ content: {
6258
+ "application/json": components["schemas"]["ErrorResponse"];
6259
+ };
5579
6260
  };
5580
6261
  };
5581
- };
5582
- }> | undefined, `${string}/${string}`>>;
5583
- apiKeys: {
5584
- /** List API keys owned by the authenticated session user. */
5585
- list: () => Promise<openapi_fetch.FetchResponse<{
6262
+ }, {
6263
+ body: {
6264
+ name: string;
6265
+ scopes?: ("catalog:read" | "inventory:read" | "roast:read" | "sales:read" | "tasting:read" | "inventory:write" | "roast:write" | "sales:write" | "tasting:write")[];
6266
+ };
6267
+ }, `${string}/${string}`>>;
6268
+ /** Revoke an API key owned by the authenticated session user. */
6269
+ revoke: (id: string) => Promise<openapi_fetch.FetchResponse<{
5586
6270
  parameters: {
5587
6271
  query?: never;
5588
6272
  header?: never;
5589
- path?: never;
6273
+ path: {
6274
+ id: string;
6275
+ };
5590
6276
  cookie?: never;
5591
6277
  };
5592
6278
  requestBody?: never;
@@ -5596,7 +6282,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5596
6282
  [name: string]: unknown;
5597
6283
  };
5598
6284
  content: {
5599
- "application/json": components["schemas"]["ApiKeyListResponse"];
6285
+ "application/json": components["schemas"]["ApiKeyMutationResponse"];
5600
6286
  };
5601
6287
  };
5602
6288
  400: {
@@ -5640,21 +6326,31 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5640
6326
  };
5641
6327
  };
5642
6328
  };
5643
- }, openapi_fetch.FetchOptions<{
6329
+ }, {
6330
+ params: {
6331
+ path: {
6332
+ id: string;
6333
+ };
6334
+ };
6335
+ }, `${string}/${string}`>>;
6336
+ /** Rotate an API key and return the replacement secret once. */
6337
+ rotate: (id: string) => Promise<openapi_fetch.FetchResponse<{
5644
6338
  parameters: {
5645
6339
  query?: never;
5646
6340
  header?: never;
5647
- path?: never;
6341
+ path: {
6342
+ id: string;
6343
+ };
5648
6344
  cookie?: never;
5649
6345
  };
5650
6346
  requestBody?: never;
5651
6347
  responses: {
5652
- 200: {
6348
+ 201: {
5653
6349
  headers: {
5654
6350
  [name: string]: unknown;
5655
6351
  };
5656
6352
  content: {
5657
- "application/json": components["schemas"]["ApiKeyListResponse"];
6353
+ "application/json": components["schemas"]["ApiKeyCreateResponse"];
5658
6354
  };
5659
6355
  };
5660
6356
  400: {
@@ -5698,20 +6394,30 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5698
6394
  };
5699
6395
  };
5700
6396
  };
5701
- }> | undefined, `${string}/${string}`>>;
5702
- /** Create an API key. The raw secret is returned only once. */
5703
- create: (body: ApiKeyCreateRequest) => Promise<openapi_fetch.FetchResponse<{
6397
+ }, {
6398
+ params: {
6399
+ path: {
6400
+ id: string;
6401
+ };
6402
+ };
6403
+ }, `${string}/${string}`>>;
6404
+ };
6405
+ cliAuth: {
6406
+ /** Create a signed, short-lived login request bound to a PKCE challenge. */
6407
+ create: (body: CliAuthRequestCreate) => Promise<openapi_fetch.FetchResponse<{
5704
6408
  parameters: {
5705
6409
  query?: never;
5706
- header?: never;
6410
+ header
6411
+ /** Fetch one of the caller's sourcing briefs by id. */
6412
+ ? /** Fetch one of the caller's sourcing briefs by id. */: never;
5707
6413
  path?: never;
5708
6414
  cookie?: never;
5709
6415
  };
5710
6416
  requestBody: {
5711
6417
  content: {
5712
6418
  "application/json": {
5713
- name: string;
5714
- scopes?: ("catalog:read" | "inventory:read" | "roast:read" | "sales:read" | "tasting:read" | "inventory:write" | "roast:write" | "sales:write" | "tasting:write")[];
6419
+ machineName: string;
6420
+ codeChallenge: string;
5715
6421
  };
5716
6422
  };
5717
6423
  };
@@ -5721,7 +6427,13 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5721
6427
  [name: string]: unknown;
5722
6428
  };
5723
6429
  content: {
5724
- "application/json": components["schemas"]["ApiKeyCreateResponse"];
6430
+ "application/json": {
6431
+ requestToken: string;
6432
+ requestId: string;
6433
+ verificationUri: string;
6434
+ expiresAt: string;
6435
+ intervalSeconds: number;
6436
+ };
5725
6437
  };
5726
6438
  };
5727
6439
  400: {
@@ -5732,7 +6444,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5732
6444
  "application/json": components["schemas"]["ErrorResponse"];
5733
6445
  };
5734
6446
  };
5735
- 401: {
6447
+ 409: {
5736
6448
  headers: {
5737
6449
  [name: string]: unknown;
5738
6450
  };
@@ -5740,7 +6452,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5740
6452
  "application/json": components["schemas"]["ErrorResponse"];
5741
6453
  };
5742
6454
  };
5743
- 403: {
6455
+ 410: {
5744
6456
  headers: {
5745
6457
  [name: string]: unknown;
5746
6458
  };
@@ -5748,7 +6460,67 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5748
6460
  "application/json": components["schemas"]["ErrorResponse"];
5749
6461
  };
5750
6462
  };
5751
- 404: {
6463
+ 503: {
6464
+ headers: {
6465
+ [name: string]: unknown;
6466
+ };
6467
+ content: {
6468
+ "application/json": components["schemas"]["ErrorResponse"];
6469
+ };
6470
+ };
6471
+ };
6472
+ }, {
6473
+ body: {
6474
+ machineName: string;
6475
+ codeChallenge: string;
6476
+ };
6477
+ }, `${string}/${string}`>>;
6478
+ /** Inspect a signed request before displaying the web consent screen. */
6479
+ inspect: (body: CliAuthInspectRequest) => Promise<openapi_fetch.FetchResponse<{
6480
+ parameters: {
6481
+ query?: never;
6482
+ header?: never;
6483
+ path?: never;
6484
+ cookie?: never;
6485
+ };
6486
+ requestBody: {
6487
+ content: {
6488
+ "application/json": {
6489
+ requestToken: string;
6490
+ };
6491
+ };
6492
+ };
6493
+ responses: {
6494
+ 200: {
6495
+ headers: {
6496
+ [name: string]: unknown;
6497
+ };
6498
+ content: {
6499
+ "application/json": {
6500
+ requestId: string;
6501
+ machineName: string;
6502
+ expiresAt: string;
6503
+ scopes: ("catalog:read" | "inventory:read" | "inventory:write" | "roast:read" | "roast:write" | "sales:read" | "sales:write" | "tasting:read" | "tasting:write")[];
6504
+ };
6505
+ };
6506
+ };
6507
+ 400: {
6508
+ headers: {
6509
+ [name: string]: unknown;
6510
+ };
6511
+ content: {
6512
+ "application/json": components["schemas"]["ErrorResponse"];
6513
+ };
6514
+ };
6515
+ 409: {
6516
+ headers: {
6517
+ [name: string]: unknown;
6518
+ };
6519
+ content: {
6520
+ "application/json": components["schemas"]["ErrorResponse"];
6521
+ };
6522
+ };
6523
+ 410: {
5752
6524
  headers: {
5753
6525
  [name: string]: unknown;
5754
6526
  };
@@ -5767,28 +6539,34 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5767
6539
  };
5768
6540
  }, {
5769
6541
  body: {
5770
- name: string;
5771
- scopes?: ("catalog:read" | "inventory:read" | "roast:read" | "sales:read" | "tasting:read" | "inventory:write" | "roast:write" | "sales:write" | "tasting:write")[];
6542
+ requestToken: string;
5772
6543
  };
5773
6544
  }, `${string}/${string}`>>;
5774
- /** Revoke an API key owned by the authenticated session user. */
5775
- revoke: (id: string) => Promise<openapi_fetch.FetchResponse<{
6545
+ /** Approve a request using the client's authenticated user session. */
6546
+ approve: (body: CliAuthApproveRequest) => Promise<openapi_fetch.FetchResponse<{
5776
6547
  parameters: {
5777
6548
  query?: never;
5778
6549
  header?: never;
5779
- path: {
5780
- id: string;
5781
- };
6550
+ path?: never;
5782
6551
  cookie?: never;
5783
6552
  };
5784
- requestBody?: never;
6553
+ requestBody: {
6554
+ content: {
6555
+ "application/json": {
6556
+ requestToken: string;
6557
+ };
6558
+ };
6559
+ };
5785
6560
  responses: {
5786
6561
  200: {
5787
6562
  headers: {
5788
6563
  [name: string]: unknown;
5789
6564
  };
5790
6565
  content: {
5791
- "application/json": components["schemas"]["ApiKeyMutationResponse"];
6566
+ "application/json": {
6567
+ requestId: string;
6568
+ approved: true;
6569
+ };
5792
6570
  };
5793
6571
  };
5794
6572
  400: {
@@ -5796,7 +6574,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5796
6574
  [name: string]: unknown;
5797
6575
  };
5798
6576
  content: {
5799
- "application/json": components["schemas"]["ErrorResponse"];
6577
+ "application/json": components["schemas"] /** Fetch supplier notes plus the caller's own latest tasting notes. */["ErrorResponse"];
5800
6578
  };
5801
6579
  };
5802
6580
  401: {
@@ -5815,7 +6593,15 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5815
6593
  "application/json": components["schemas"]["ErrorResponse"];
5816
6594
  };
5817
6595
  };
5818
- 404: {
6596
+ 409: {
6597
+ headers: {
6598
+ [name: string]: unknown;
6599
+ };
6600
+ content: {
6601
+ "application/json": components["schemas"]["ErrorResponse"];
6602
+ };
6603
+ };
6604
+ 410: {
5819
6605
  headers: {
5820
6606
  [name: string]: unknown;
5821
6607
  };
@@ -5833,30 +6619,48 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5833
6619
  };
5834
6620
  };
5835
6621
  }, {
5836
- params: {
5837
- path: {
5838
- id: string;
5839
- };
6622
+ body: {
6623
+ requestToken: string;
5840
6624
  };
5841
6625
  }, `${string}/${string}`>>;
5842
- /** Rotate an API key and return the replacement secret once. */
5843
- rotate: (id: string) => Promise<openapi_fetch.FetchResponse<{
6626
+ /** Exchange an approved request and verifier for the one-time raw key. */
6627
+ exchange: (body: CliAuthExchangeRequest) => Promise<openapi_fetch.FetchResponse<{
5844
6628
  parameters: {
5845
6629
  query?: never;
5846
6630
  header?: never;
5847
- path: {
5848
- id: string;
5849
- };
6631
+ path?: never;
5850
6632
  cookie?: never;
5851
6633
  };
5852
- requestBody?: never;
6634
+ requestBody: {
6635
+ content: {
6636
+ "application/json": {
6637
+ requestToken: string;
6638
+ codeVerifier: string;
6639
+ };
6640
+ };
6641
+ };
5853
6642
  responses: {
5854
6643
  201: {
5855
6644
  headers: {
5856
6645
  [name: string]: unknown;
5857
6646
  };
5858
6647
  content: {
5859
- "application/json": components["schemas"]["ApiKeyCreateResponse"];
6648
+ "application/json": {
6649
+ apiKey: string;
6650
+ key: {
6651
+ id: string;
6652
+ name: string;
6653
+ createdAt: string | null;
6654
+ lastUsedAt: string | null;
6655
+ isActive: boolean;
6656
+ scopes: string[];
6657
+ };
6658
+ user: {
6659
+ id: string;
6660
+ email: string;
6661
+ role: string;
6662
+ };
6663
+ };
5860
6664
  };
5861
6665
  };
5862
6666
  400: {
@@ -5867,15 +6671,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5867
6671
  "application/json": components["schemas"]["ErrorResponse"];
5868
6672
  };
5869
6673
  };
5870
- 401: {
5871
- headers: {
5872
- [name: string]: unknown;
5873
- };
5874
- content: {
5875
- "application/json": components["schemas"]["ErrorResponse"];
5876
- };
5877
- };
5878
- 403: {
6674
+ 409: {
5879
6675
  headers: {
5880
6676
  [name: string]: unknown;
5881
6677
  };
@@ -5883,7 +6679,7 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5883
6679
  "application/json": components["schemas"]["ErrorResponse"];
5884
6680
  };
5885
6681
  };
5886
- 404: {
6682
+ 410: {
5887
6683
  headers: {
5888
6684
  [name: string]: unknown;
5889
6685
  };
@@ -5901,10 +6697,9 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
5901
6697
  };
5902
6698
  };
5903
6699
  }, {
5904
- params: {
5905
- path: {
5906
- id: string;
5907
- };
6700
+ body: {
6701
+ requestToken: string;
6702
+ codeVerifier: string;
5908
6703
  };
5909
6704
  }, `${string}/${string}`>>;
5910
6705
  };
@@ -7627,6 +8422,87 @@ declare function createParchmentClient(options: ParchmentClientOptions): {
7627
8422
  }, `${string}/${string}`>>;
7628
8423
  };
7629
8424
  roasts: {
8425
+ /** Match Artisan roast metadata to one of the supplied inventory rows. */
8426
+ classify: (body: RoastClassificationRequest) => Promise<openapi_fetch.FetchResponse<{
8427
+ parameters: {
8428
+ query?: never;
8429
+ header?: never;
8430
+ path?: never;
8431
+ cookie?: never;
8432
+ };
8433
+ requestBody: {
8434
+ content: {
8435
+ "application/json": components["schemas"]["RoastClassificationRequest"];
8436
+ };
8437
+ };
8438
+ responses: {
8439
+ 200: {
8440
+ headers: {
8441
+ [name: string]: unknown;
8442
+ };
8443
+ content: {
8444
+ "application/json": components["schemas"]["RoastClassificationResponse"];
8445
+ };
8446
+ };
8447
+ 400: {
8448
+ headers: {
8449
+ [name: string]: unknown;
8450
+ };
8451
+ content: {
8452
+ "application/json": components["schemas"]["ErrorResponse"];
8453
+ };
8454
+ };
8455
+ 401: {
8456
+ headers: {
8457
+ [name: string]: unknown;
8458
+ };
8459
+ content: {
8460
+ "application/json": components["schemas"]["ErrorResponse"];
8461
+ };
8462
+ };
8463
+ 403: {
8464
+ headers: {
8465
+ [name: string]: unknown;
8466
+ };
8467
+ content: {
8468
+ "application/json": components["schemas"]["ErrorResponse"];
8469
+ };
8470
+ };
8471
+ 429: {
8472
+ headers: {
8473
+ [name: string]: unknown;
8474
+ };
8475
+ content: {
8476
+ "application/json": components["schemas"]["ErrorResponse"];
8477
+ };
8478
+ };
8479
+ 503: {
8480
+ headers: {
8481
+ [name: string]: unknown;
8482
+ };
8483
+ content: {
8484
+ "application/json": components["schemas"]["ErrorResponse"];
8485
+ };
8486
+ };
8487
+ };
8488
+ }, {
8489
+ body: {
8490
+ alogMetadata: {
8491
+ title: string;
8492
+ filename?: string;
8493
+ roastertype?: string;
8494
+ beans?: string;
8495
+ roastingnotes?: string;
8496
+ weight?: [number, number, string];
8497
+ };
8498
+ inventory: {
8499
+ id: number;
8500
+ coffee_name: string;
8501
+ origin?: string;
8502
+ processing?: string;
8503
+ }[];
8504
+ };
8505
+ }, `${string}/${string}`>>;
7630
8506
  /** List the caller's own roast profiles (owner-scoped). */
7631
8507
  list: (query?: RoastListQuery) => Promise<openapi_fetch.FetchResponse<{
7632
8508
  parameters: {