@topolo/sdk 0.4.10 → 0.6.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
@@ -36,8 +36,8 @@ interface TopoloClientOptions {
36
36
  agent: AgentIdentity;
37
37
  /** Per-service URL overrides. Useful for staging/dev. */
38
38
  serviceUrls?: Record<string, string>;
39
- /** Per-service TopoloAuth service id overrides from the owning app/deployment. */
40
- serviceIds?: Record<string, string>;
39
+ /** Per-service TopoloAuth app id overrides from the owning app/deployment. */
40
+ appIds?: Record<string, string>;
41
41
  /**
42
42
  * When true, mutating helpers (POST/PUT/PATCH/DELETE) require callers to pass
43
43
  * `{ confirm: true }`. Defaults to true. Set false only for trusted surfaces.
@@ -105,7 +105,7 @@ interface RequestOptions {
105
105
  * from TopoloAuth `GET /api/services/catalog`.
106
106
  */
107
107
  interface TopoloServiceCatalogEntry {
108
- serviceId: string;
108
+ appId: string;
109
109
  slug: string | null;
110
110
  name: string | null;
111
111
  description: string | null;
@@ -133,9 +133,9 @@ interface TopoloActionCatalogEntry {
133
133
  toolName: string | null;
134
134
  title: string;
135
135
  description: string;
136
- serviceId: string;
137
- serviceSlug: string | null;
138
- serviceName: string | null;
136
+ appId: string;
137
+ appSlug: string | null;
138
+ appName: string | null;
139
139
  method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
140
140
  path: string;
141
141
  permissionName: string;
@@ -154,7 +154,7 @@ declare class TopoloClient {
154
154
  private readonly credential;
155
155
  private readonly agent;
156
156
  private readonly serviceUrls?;
157
- private readonly serviceIds?;
157
+ private readonly appIds?;
158
158
  private readonly requireConfirmForWrites;
159
159
  private readonly timeoutMs;
160
160
  private readonly fetchImpl;
@@ -162,17 +162,17 @@ declare class TopoloClient {
162
162
  private serviceCatalogCache;
163
163
  private actionCatalogCache;
164
164
  /**
165
- * Process-wide cache for slug → service-id lookups. Keyed by
165
+ * Process-wide cache for slug → app-id lookups. Keyed by
166
166
  * `${authBaseUrl}|${slug}` so multiple `TopoloClient` instances pointing at
167
167
  * the same Auth share, but staging vs prod don't poison each other.
168
- * Cleared via `TopoloClient.clearServiceIdCache()` if a test needs it.
168
+ * Cleared via `TopoloClient.clearAppIdCache()` if a test needs it.
169
169
  */
170
- private static readonly serviceIdCache;
170
+ private static readonly appIdCache;
171
171
  /**
172
- * Drop the slug→service-id cache. Test-only — production callers should
172
+ * Drop the slug→app-id cache. Test-only — production callers should
173
173
  * let the 5-minute TTL expire naturally.
174
174
  */
175
- static clearServiceIdCache(): void;
175
+ static clearAppIdCache(): void;
176
176
  constructor(options: TopoloClientOptions);
177
177
  private emit;
178
178
  /**
@@ -184,7 +184,7 @@ declare class TopoloClient {
184
184
  private resolveRequestService;
185
185
  private resolveLiveCallableService;
186
186
  /**
187
- * Resolve a service-slug → opaque service-id via caller config or TopoloAuth.
187
+ * Resolve a service-slug → opaque app-id via caller config or TopoloAuth.
188
188
  *
189
189
  * Cache: 5 minutes per process per `(slug, auth_base_url)`. Negative
190
190
  * results (404) are cached for 60s so a typo doesn't hot-loop the
@@ -195,7 +195,7 @@ declare class TopoloClient {
195
195
  * This keeps the resolver usable during early bootstrap before a caller
196
196
  * has acquired an access token.
197
197
  */
198
- getServiceIdBySlug(slug: string): Promise<string | null>;
198
+ getAppIdBySlug(slug: string): Promise<string | null>;
199
199
  /**
200
200
  * List the platform service catalog from the live registry
201
201
  * (`GET /api/services/catalog` on TopoloAuth). Credential-aware: the
@@ -252,7 +252,7 @@ interface CredentialIntrospection {
252
252
  } | null;
253
253
  }
254
254
 
255
- declare const SERVICES: {
255
+ declare const APP_API_URLS: {
256
256
  readonly agent: "https://agent.topolo.app";
257
257
  readonly auth: "https://auth.topolo.app";
258
258
  readonly backup: "https://backup.topolo.app";
@@ -301,7 +301,7 @@ declare const SERVICES: {
301
301
  readonly voice: "https://voice.topolo.app";
302
302
  readonly web: "https://web.topolo.app";
303
303
  };
304
- type ServiceId = keyof typeof SERVICES;
304
+ type AppApiId = keyof typeof APP_API_URLS;
305
305
 
306
306
  declare const APPLICATIONS: {
307
307
  readonly admin: {
@@ -317,14 +317,14 @@ declare const APPLICATIONS: {
317
317
  readonly apiUrl: "https://admin.topolo.app";
318
318
  readonly domains: readonly ["admin.topolo.app"];
319
319
  readonly routes: readonly [];
320
- readonly serviceId: null;
320
+ readonly appId: null;
321
321
  }, {
322
322
  readonly name: "topolo-admin-api";
323
323
  readonly kind: "worker";
324
324
  readonly apiUrl: null;
325
325
  readonly domains: readonly [];
326
326
  readonly routes: readonly [];
327
- readonly serviceId: null;
327
+ readonly appId: null;
328
328
  }];
329
329
  };
330
330
  readonly agent: {
@@ -340,14 +340,14 @@ declare const APPLICATIONS: {
340
340
  readonly apiUrl: "https://agent.topolo.app";
341
341
  readonly domains: readonly ["agent.topolo.app"];
342
342
  readonly routes: readonly [];
343
- readonly serviceId: "agent";
343
+ readonly appId: "agent";
344
344
  }, {
345
345
  readonly name: "topolo-agent-api";
346
346
  readonly kind: "worker";
347
347
  readonly apiUrl: null;
348
348
  readonly domains: readonly [];
349
349
  readonly routes: readonly [];
350
- readonly serviceId: null;
350
+ readonly appId: null;
351
351
  }];
352
352
  };
353
353
  readonly auth: {
@@ -363,7 +363,7 @@ declare const APPLICATIONS: {
363
363
  readonly apiUrl: "https://auth.topolo.app";
364
364
  readonly domains: readonly ["auth.topolo.app"];
365
365
  readonly routes: readonly ["auth.topolo.app"];
366
- readonly serviceId: "auth";
366
+ readonly appId: "auth";
367
367
  }];
368
368
  };
369
369
  readonly backup: {
@@ -379,7 +379,7 @@ declare const APPLICATIONS: {
379
379
  readonly apiUrl: "https://backup.topolo.app";
380
380
  readonly domains: readonly ["backup.topolo.app"];
381
381
  readonly routes: readonly [];
382
- readonly serviceId: "backup";
382
+ readonly appId: "backup";
383
383
  }];
384
384
  };
385
385
  readonly books: {
@@ -395,14 +395,14 @@ declare const APPLICATIONS: {
395
395
  readonly apiUrl: "https://books.topolo.app";
396
396
  readonly domains: readonly ["books.topolo.app"];
397
397
  readonly routes: readonly [];
398
- readonly serviceId: "books";
398
+ readonly appId: "books";
399
399
  }, {
400
400
  readonly name: "topolo-books-api";
401
401
  readonly kind: "worker";
402
402
  readonly apiUrl: null;
403
403
  readonly domains: readonly [];
404
404
  readonly routes: readonly [];
405
- readonly serviceId: null;
405
+ readonly appId: null;
406
406
  }];
407
407
  };
408
408
  readonly bugfix: {
@@ -418,7 +418,7 @@ declare const APPLICATIONS: {
418
418
  readonly apiUrl: "https://bugfix.topolo.app";
419
419
  readonly domains: readonly ["bugfix.topolo.app"];
420
420
  readonly routes: readonly [];
421
- readonly serviceId: "bugfix";
421
+ readonly appId: "bugfix";
422
422
  }];
423
423
  };
424
424
  readonly bytes: {
@@ -434,14 +434,14 @@ declare const APPLICATIONS: {
434
434
  readonly apiUrl: "https://bytes.topolo.app";
435
435
  readonly domains: readonly ["bytes.topolo.app"];
436
436
  readonly routes: readonly [];
437
- readonly serviceId: "bytes";
437
+ readonly appId: "bytes";
438
438
  }, {
439
439
  readonly name: "topolo-bytes-api";
440
440
  readonly kind: "worker";
441
441
  readonly apiUrl: null;
442
442
  readonly domains: readonly [];
443
443
  readonly routes: readonly [];
444
- readonly serviceId: null;
444
+ readonly appId: null;
445
445
  }];
446
446
  };
447
447
  readonly calendar: {
@@ -457,14 +457,14 @@ declare const APPLICATIONS: {
457
457
  readonly apiUrl: "https://calendar.topolo.app";
458
458
  readonly domains: readonly ["calendar.topolo.app"];
459
459
  readonly routes: readonly [];
460
- readonly serviceId: "calendar";
460
+ readonly appId: "calendar";
461
461
  }, {
462
462
  readonly name: "topolo-calendar-api";
463
463
  readonly kind: "worker";
464
464
  readonly apiUrl: null;
465
465
  readonly domains: readonly [];
466
466
  readonly routes: readonly [];
467
- readonly serviceId: null;
467
+ readonly appId: null;
468
468
  }];
469
469
  };
470
470
  readonly capacity: {
@@ -480,7 +480,7 @@ declare const APPLICATIONS: {
480
480
  readonly apiUrl: "https://capacity.topolo.app";
481
481
  readonly domains: readonly ["capacity.topolo.app"];
482
482
  readonly routes: readonly [];
483
- readonly serviceId: "capacity";
483
+ readonly appId: "capacity";
484
484
  }];
485
485
  };
486
486
  readonly chat: {
@@ -496,14 +496,14 @@ declare const APPLICATIONS: {
496
496
  readonly apiUrl: "https://chat.topolo.app";
497
497
  readonly domains: readonly ["chat.topolo.app"];
498
498
  readonly routes: readonly [];
499
- readonly serviceId: "chat";
499
+ readonly appId: "chat";
500
500
  }, {
501
501
  readonly name: "topolo-chat-api";
502
502
  readonly kind: "worker";
503
503
  readonly apiUrl: null;
504
504
  readonly domains: readonly [];
505
505
  readonly routes: readonly [];
506
- readonly serviceId: null;
506
+ readonly appId: null;
507
507
  }];
508
508
  };
509
509
  readonly commerce: {
@@ -519,28 +519,28 @@ declare const APPLICATIONS: {
519
519
  readonly apiUrl: null;
520
520
  readonly domains: readonly [];
521
521
  readonly routes: readonly [];
522
- readonly serviceId: null;
522
+ readonly appId: null;
523
523
  }, {
524
524
  readonly name: "topolo-commerce-guest-web";
525
525
  readonly kind: "worker";
526
526
  readonly apiUrl: "https://guest.topolo.app";
527
527
  readonly domains: readonly ["guest.topolo.app"];
528
528
  readonly routes: readonly [];
529
- readonly serviceId: null;
529
+ readonly appId: null;
530
530
  }, {
531
531
  readonly name: "topolo-commerce-ops-web";
532
532
  readonly kind: "worker";
533
533
  readonly apiUrl: "https://commerce.topolo.app";
534
534
  readonly domains: readonly ["commerce.topolo.app"];
535
535
  readonly routes: readonly [];
536
- readonly serviceId: "commerce";
536
+ readonly appId: "commerce";
537
537
  }, {
538
538
  readonly name: "topolo-commerce-station-web";
539
539
  readonly kind: "worker";
540
540
  readonly apiUrl: "https://station-commerce.topolo.app";
541
541
  readonly domains: readonly ["station-commerce.topolo.app"];
542
542
  readonly routes: readonly [];
543
- readonly serviceId: null;
543
+ readonly appId: null;
544
544
  }];
545
545
  };
546
546
  readonly compose: {
@@ -556,14 +556,14 @@ declare const APPLICATIONS: {
556
556
  readonly apiUrl: "https://compose.topolo.app";
557
557
  readonly domains: readonly ["compose.topolo.app"];
558
558
  readonly routes: readonly [];
559
- readonly serviceId: "compose";
559
+ readonly appId: "compose";
560
560
  }, {
561
561
  readonly name: "topolo-compose-api";
562
562
  readonly kind: "worker";
563
563
  readonly apiUrl: null;
564
564
  readonly domains: readonly [];
565
565
  readonly routes: readonly [];
566
- readonly serviceId: null;
566
+ readonly appId: null;
567
567
  }];
568
568
  };
569
569
  readonly consent: {
@@ -579,14 +579,14 @@ declare const APPLICATIONS: {
579
579
  readonly apiUrl: "https://consent.topolo.app";
580
580
  readonly domains: readonly ["consent.topolo.app"];
581
581
  readonly routes: readonly [];
582
- readonly serviceId: "consent";
582
+ readonly appId: "consent";
583
583
  }, {
584
584
  readonly name: "topolo-consent-api";
585
585
  readonly kind: "worker";
586
586
  readonly apiUrl: null;
587
587
  readonly domains: readonly [];
588
588
  readonly routes: readonly [];
589
- readonly serviceId: null;
589
+ readonly appId: null;
590
590
  }];
591
591
  };
592
592
  readonly crm: {
@@ -602,14 +602,14 @@ declare const APPLICATIONS: {
602
602
  readonly apiUrl: null;
603
603
  readonly domains: readonly [];
604
604
  readonly routes: readonly [];
605
- readonly serviceId: null;
605
+ readonly appId: null;
606
606
  }, {
607
607
  readonly name: "topolo-crm-app";
608
608
  readonly kind: "worker";
609
609
  readonly apiUrl: "https://crm.topolo.app";
610
610
  readonly domains: readonly ["crm.topolo.app"];
611
611
  readonly routes: readonly [];
612
- readonly serviceId: "crm";
612
+ readonly appId: "crm";
613
613
  }];
614
614
  };
615
615
  readonly developers: {
@@ -625,21 +625,21 @@ declare const APPLICATIONS: {
625
625
  readonly apiUrl: null;
626
626
  readonly domains: readonly [];
627
627
  readonly routes: readonly [];
628
- readonly serviceId: null;
628
+ readonly appId: null;
629
629
  }, {
630
630
  readonly name: "topolo-developers";
631
631
  readonly kind: "worker";
632
632
  readonly apiUrl: "https://developers.topolo.app";
633
633
  readonly domains: readonly ["developers.topolo.app"];
634
634
  readonly routes: readonly [];
635
- readonly serviceId: "developers";
635
+ readonly appId: "developers";
636
636
  }, {
637
637
  readonly name: "topolo-developers-api";
638
638
  readonly kind: "worker";
639
639
  readonly apiUrl: null;
640
640
  readonly domains: readonly [];
641
641
  readonly routes: readonly [];
642
- readonly serviceId: null;
642
+ readonly appId: null;
643
643
  }];
644
644
  };
645
645
  readonly director: {
@@ -655,14 +655,14 @@ declare const APPLICATIONS: {
655
655
  readonly apiUrl: "https://director.topolo.app";
656
656
  readonly domains: readonly ["director.topolo.app"];
657
657
  readonly routes: readonly [];
658
- readonly serviceId: "director";
658
+ readonly appId: "director";
659
659
  }, {
660
660
  readonly name: "topolo-director-api";
661
661
  readonly kind: "worker";
662
662
  readonly apiUrl: null;
663
663
  readonly domains: readonly [];
664
664
  readonly routes: readonly [];
665
- readonly serviceId: null;
665
+ readonly appId: null;
666
666
  }];
667
667
  };
668
668
  readonly docs: {
@@ -678,14 +678,14 @@ declare const APPLICATIONS: {
678
678
  readonly apiUrl: "https://docs.topolo.app";
679
679
  readonly domains: readonly ["docs.topolo.app"];
680
680
  readonly routes: readonly [];
681
- readonly serviceId: null;
681
+ readonly appId: null;
682
682
  }, {
683
683
  readonly name: "topolo-docs-api";
684
684
  readonly kind: "worker";
685
685
  readonly apiUrl: null;
686
686
  readonly domains: readonly [];
687
687
  readonly routes: readonly [];
688
- readonly serviceId: null;
688
+ readonly appId: null;
689
689
  }];
690
690
  };
691
691
  readonly feed: {
@@ -701,21 +701,21 @@ declare const APPLICATIONS: {
701
701
  readonly apiUrl: "https://feed-analytics-api.topolo.app";
702
702
  readonly domains: readonly ["feed-analytics-api.topolo.app"];
703
703
  readonly routes: readonly [];
704
- readonly serviceId: null;
704
+ readonly appId: null;
705
705
  }, {
706
706
  readonly name: "topolo-feed-api";
707
707
  readonly kind: "worker";
708
708
  readonly apiUrl: "https://feed-api.topolo.app";
709
709
  readonly domains: readonly ["feed-api.topolo.app"];
710
710
  readonly routes: readonly [];
711
- readonly serviceId: null;
711
+ readonly appId: null;
712
712
  }, {
713
713
  readonly name: "topolo-feed-web";
714
714
  readonly kind: "worker";
715
715
  readonly apiUrl: "https://feed.topolo.app";
716
716
  readonly domains: readonly ["feed.topolo.app"];
717
717
  readonly routes: readonly [];
718
- readonly serviceId: "feed";
718
+ readonly appId: "feed";
719
719
  }];
720
720
  };
721
721
  readonly flow: {
@@ -731,14 +731,14 @@ declare const APPLICATIONS: {
731
731
  readonly apiUrl: "https://flow.topolo.app";
732
732
  readonly domains: readonly ["flow.topolo.app"];
733
733
  readonly routes: readonly [];
734
- readonly serviceId: "flow";
734
+ readonly appId: "flow";
735
735
  }, {
736
736
  readonly name: "topolo-flow-api";
737
737
  readonly kind: "worker";
738
738
  readonly apiUrl: null;
739
739
  readonly domains: readonly [];
740
740
  readonly routes: readonly [];
741
- readonly serviceId: null;
741
+ readonly appId: null;
742
742
  }];
743
743
  };
744
744
  readonly forecast: {
@@ -754,14 +754,14 @@ declare const APPLICATIONS: {
754
754
  readonly apiUrl: "https://forecast.topolo.app";
755
755
  readonly domains: readonly ["forecast.topolo.app"];
756
756
  readonly routes: readonly [];
757
- readonly serviceId: "forecast";
757
+ readonly appId: "forecast";
758
758
  }, {
759
759
  readonly name: "topolo-forecast-api";
760
760
  readonly kind: "worker";
761
761
  readonly apiUrl: null;
762
762
  readonly domains: readonly [];
763
763
  readonly routes: readonly [];
764
- readonly serviceId: null;
764
+ readonly appId: null;
765
765
  }];
766
766
  };
767
767
  readonly forms: {
@@ -777,14 +777,14 @@ declare const APPLICATIONS: {
777
777
  readonly apiUrl: "https://forms.topolo.app";
778
778
  readonly domains: readonly ["forms.topolo.app"];
779
779
  readonly routes: readonly [];
780
- readonly serviceId: "forms";
780
+ readonly appId: "forms";
781
781
  }, {
782
782
  readonly name: "topolo-forms-api";
783
783
  readonly kind: "worker";
784
784
  readonly apiUrl: null;
785
785
  readonly domains: readonly [];
786
786
  readonly routes: readonly [];
787
- readonly serviceId: null;
787
+ readonly appId: null;
788
788
  }];
789
789
  };
790
790
  readonly home: {
@@ -800,14 +800,14 @@ declare const APPLICATIONS: {
800
800
  readonly apiUrl: "https://home.topolo.app";
801
801
  readonly domains: readonly ["home.topolo.app"];
802
802
  readonly routes: readonly [];
803
- readonly serviceId: "home";
803
+ readonly appId: "home";
804
804
  }, {
805
805
  readonly name: "topolo-home-api";
806
806
  readonly kind: "worker";
807
807
  readonly apiUrl: null;
808
808
  readonly domains: readonly [];
809
809
  readonly routes: readonly [];
810
- readonly serviceId: null;
810
+ readonly appId: null;
811
811
  }];
812
812
  };
813
813
  readonly insights: {
@@ -823,14 +823,14 @@ declare const APPLICATIONS: {
823
823
  readonly apiUrl: "https://insights.topolo.app";
824
824
  readonly domains: readonly ["insights.topolo.app"];
825
825
  readonly routes: readonly [];
826
- readonly serviceId: "insights";
826
+ readonly appId: "insights";
827
827
  }, {
828
828
  readonly name: "topolo-insights-api";
829
829
  readonly kind: "worker";
830
830
  readonly apiUrl: null;
831
831
  readonly domains: readonly [];
832
832
  readonly routes: readonly [];
833
- readonly serviceId: null;
833
+ readonly appId: null;
834
834
  }];
835
835
  };
836
836
  readonly inventory: {
@@ -846,14 +846,14 @@ declare const APPLICATIONS: {
846
846
  readonly apiUrl: "https://inventory.topolo.app";
847
847
  readonly domains: readonly ["inventory.topolo.app"];
848
848
  readonly routes: readonly [];
849
- readonly serviceId: "inventory";
849
+ readonly appId: "inventory";
850
850
  }, {
851
851
  readonly name: "topolo-inventory-api";
852
852
  readonly kind: "worker";
853
853
  readonly apiUrl: null;
854
854
  readonly domains: readonly [];
855
855
  readonly routes: readonly [];
856
- readonly serviceId: null;
856
+ readonly appId: null;
857
857
  }];
858
858
  };
859
859
  readonly learn: {
@@ -869,14 +869,14 @@ declare const APPLICATIONS: {
869
869
  readonly apiUrl: "https://learn.topolo.app";
870
870
  readonly domains: readonly ["learn.topolo.app"];
871
871
  readonly routes: readonly [];
872
- readonly serviceId: "learn";
872
+ readonly appId: "learn";
873
873
  }, {
874
874
  readonly name: "topolo-learn-api";
875
875
  readonly kind: "worker";
876
876
  readonly apiUrl: null;
877
877
  readonly domains: readonly [];
878
878
  readonly routes: readonly [];
879
- readonly serviceId: null;
879
+ readonly appId: null;
880
880
  }];
881
881
  };
882
882
  readonly localize: {
@@ -892,7 +892,7 @@ declare const APPLICATIONS: {
892
892
  readonly apiUrl: "https://localize.topolo.app";
893
893
  readonly domains: readonly ["localize.topolo.app"];
894
894
  readonly routes: readonly ["localize.topolo.app"];
895
- readonly serviceId: "localize";
895
+ readonly appId: "localize";
896
896
  }];
897
897
  };
898
898
  readonly mail: {
@@ -908,14 +908,14 @@ declare const APPLICATIONS: {
908
908
  readonly apiUrl: "https://mail.topolo.app";
909
909
  readonly domains: readonly ["mail.topolo.app"];
910
910
  readonly routes: readonly [];
911
- readonly serviceId: "mail";
911
+ readonly appId: "mail";
912
912
  }, {
913
913
  readonly name: "topolo-mail-api";
914
914
  readonly kind: "worker";
915
915
  readonly apiUrl: null;
916
916
  readonly domains: readonly [];
917
917
  readonly routes: readonly [];
918
- readonly serviceId: null;
918
+ readonly appId: null;
919
919
  }];
920
920
  };
921
921
  readonly mdm: {
@@ -931,14 +931,14 @@ declare const APPLICATIONS: {
931
931
  readonly apiUrl: null;
932
932
  readonly domains: readonly [];
933
933
  readonly routes: readonly [];
934
- readonly serviceId: null;
934
+ readonly appId: null;
935
935
  }, {
936
936
  readonly name: "topolo-mdm-console";
937
937
  readonly kind: "worker";
938
938
  readonly apiUrl: "https://mdm.topolo.app";
939
939
  readonly domains: readonly ["mdm.topolo.app"];
940
940
  readonly routes: readonly [];
941
- readonly serviceId: "mdm";
941
+ readonly appId: "mdm";
942
942
  }];
943
943
  };
944
944
  readonly messages: {
@@ -954,21 +954,21 @@ declare const APPLICATIONS: {
954
954
  readonly apiUrl: "https://messages.topolo.app";
955
955
  readonly domains: readonly ["messages.topolo.app"];
956
956
  readonly routes: readonly [];
957
- readonly serviceId: "messages";
957
+ readonly appId: "messages";
958
958
  }, {
959
959
  readonly name: "topolo-messages-api";
960
960
  readonly kind: "worker";
961
961
  readonly apiUrl: null;
962
962
  readonly domains: readonly [];
963
963
  readonly routes: readonly [];
964
- readonly serviceId: null;
964
+ readonly appId: null;
965
965
  }, {
966
966
  readonly name: "topolo-messages-dispatch";
967
967
  readonly kind: "worker";
968
968
  readonly apiUrl: null;
969
969
  readonly domains: readonly [];
970
970
  readonly routes: readonly [];
971
- readonly serviceId: null;
971
+ readonly appId: null;
972
972
  }];
973
973
  };
974
974
  readonly nexus: {
@@ -984,14 +984,14 @@ declare const APPLICATIONS: {
984
984
  readonly apiUrl: null;
985
985
  readonly domains: readonly ["nexus.topolo.app"];
986
986
  readonly routes: readonly [];
987
- readonly serviceId: null;
987
+ readonly appId: null;
988
988
  }, {
989
989
  readonly name: "topolo-nexus-gateway";
990
990
  readonly kind: "worker";
991
991
  readonly apiUrl: "https://nexus.topolo.app";
992
992
  readonly domains: readonly ["nexus.topolo.app"];
993
993
  readonly routes: readonly [];
994
- readonly serviceId: "nexus";
994
+ readonly appId: "nexus";
995
995
  }];
996
996
  };
997
997
  readonly notify: {
@@ -1007,7 +1007,7 @@ declare const APPLICATIONS: {
1007
1007
  readonly apiUrl: "https://notify.topolo.app";
1008
1008
  readonly domains: readonly ["notify.topolo.app"];
1009
1009
  readonly routes: readonly ["notify.topolo.app"];
1010
- readonly serviceId: "notify";
1010
+ readonly appId: "notify";
1011
1011
  }];
1012
1012
  };
1013
1013
  readonly observability_watch: {
@@ -1023,7 +1023,7 @@ declare const APPLICATIONS: {
1023
1023
  readonly apiUrl: "https://observability-watch.topolo.app";
1024
1024
  readonly domains: readonly ["observability-watch.topolo.app"];
1025
1025
  readonly routes: readonly [];
1026
- readonly serviceId: "observability_watch";
1026
+ readonly appId: "observability_watch";
1027
1027
  }];
1028
1028
  };
1029
1029
  readonly one: {
@@ -1039,21 +1039,21 @@ declare const APPLICATIONS: {
1039
1039
  readonly apiUrl: "https://one.topolo.app";
1040
1040
  readonly domains: readonly ["one.topolo.app"];
1041
1041
  readonly routes: readonly ["one.topolo.app/*"];
1042
- readonly serviceId: null;
1042
+ readonly appId: null;
1043
1043
  }, {
1044
1044
  readonly name: "topolo-one-api";
1045
1045
  readonly kind: "worker";
1046
1046
  readonly apiUrl: "https://www.topolo.app";
1047
1047
  readonly domains: readonly ["www.topolo.app"];
1048
1048
  readonly routes: readonly ["www.topolo.app/*"];
1049
- readonly serviceId: "one";
1049
+ readonly appId: "one";
1050
1050
  }, {
1051
1051
  readonly name: "topolo-one-website";
1052
1052
  readonly kind: "worker";
1053
1053
  readonly apiUrl: "https://topolo.io";
1054
1054
  readonly domains: readonly ["topolo.io"];
1055
1055
  readonly routes: readonly ["topolo.io", "www.topolo.io"];
1056
- readonly serviceId: null;
1056
+ readonly appId: null;
1057
1057
  }];
1058
1058
  };
1059
1059
  readonly p2p: {
@@ -1069,14 +1069,14 @@ declare const APPLICATIONS: {
1069
1069
  readonly apiUrl: "https://p2p.topolo.app";
1070
1070
  readonly domains: readonly ["p2p.topolo.app"];
1071
1071
  readonly routes: readonly [];
1072
- readonly serviceId: "p2p";
1072
+ readonly appId: "p2p";
1073
1073
  }, {
1074
1074
  readonly name: "topolo-p2p-api";
1075
1075
  readonly kind: "worker";
1076
1076
  readonly apiUrl: null;
1077
1077
  readonly domains: readonly [];
1078
1078
  readonly routes: readonly [];
1079
- readonly serviceId: null;
1079
+ readonly appId: null;
1080
1080
  }];
1081
1081
  };
1082
1082
  readonly pay: {
@@ -1092,14 +1092,14 @@ declare const APPLICATIONS: {
1092
1092
  readonly apiUrl: "https://pay.topolo.app";
1093
1093
  readonly domains: readonly ["pay.topolo.app"];
1094
1094
  readonly routes: readonly [];
1095
- readonly serviceId: "pay";
1095
+ readonly appId: "pay";
1096
1096
  }, {
1097
1097
  readonly name: "topolo-pay-api";
1098
1098
  readonly kind: "worker";
1099
1099
  readonly apiUrl: null;
1100
1100
  readonly domains: readonly [];
1101
1101
  readonly routes: readonly [];
1102
- readonly serviceId: null;
1102
+ readonly appId: null;
1103
1103
  }];
1104
1104
  };
1105
1105
  readonly people: {
@@ -1115,14 +1115,14 @@ declare const APPLICATIONS: {
1115
1115
  readonly apiUrl: "https://people.topolo.app";
1116
1116
  readonly domains: readonly ["people.topolo.app"];
1117
1117
  readonly routes: readonly [];
1118
- readonly serviceId: "people";
1118
+ readonly appId: "people";
1119
1119
  }, {
1120
1120
  readonly name: "topolo-people-api";
1121
1121
  readonly kind: "worker";
1122
1122
  readonly apiUrl: null;
1123
1123
  readonly domains: readonly [];
1124
1124
  readonly routes: readonly [];
1125
- readonly serviceId: null;
1125
+ readonly appId: null;
1126
1126
  }];
1127
1127
  };
1128
1128
  readonly quro: {
@@ -1138,21 +1138,21 @@ declare const APPLICATIONS: {
1138
1138
  readonly apiUrl: "https://api.ol0.me";
1139
1139
  readonly domains: readonly ["api.ol0.me"];
1140
1140
  readonly routes: readonly ["api.ol0.me/*"];
1141
- readonly serviceId: "quro.api";
1141
+ readonly appId: "quro.api";
1142
1142
  }, {
1143
1143
  readonly name: "quro-redirect-system";
1144
1144
  readonly kind: "worker";
1145
1145
  readonly apiUrl: "https://ol0.me";
1146
1146
  readonly domains: readonly ["ol0.me"];
1147
1147
  readonly routes: readonly ["ol0.me/*"];
1148
- readonly serviceId: "quro.redirect";
1148
+ readonly appId: "quro.redirect";
1149
1149
  }, {
1150
1150
  readonly name: "quro-ui";
1151
1151
  readonly kind: "worker";
1152
1152
  readonly apiUrl: "https://quro.topolo.app";
1153
1153
  readonly domains: readonly ["quro.topolo.app"];
1154
1154
  readonly routes: readonly [];
1155
- readonly serviceId: null;
1155
+ readonly appId: null;
1156
1156
  }];
1157
1157
  };
1158
1158
  readonly roadmapper: {
@@ -1168,14 +1168,14 @@ declare const APPLICATIONS: {
1168
1168
  readonly apiUrl: "https://roadmapper.topolo.app";
1169
1169
  readonly domains: readonly ["roadmapper.topolo.app"];
1170
1170
  readonly routes: readonly [];
1171
- readonly serviceId: "roadmapper";
1171
+ readonly appId: "roadmapper";
1172
1172
  }, {
1173
1173
  readonly name: "topolo-roadmapper-api";
1174
1174
  readonly kind: "worker";
1175
1175
  readonly apiUrl: null;
1176
1176
  readonly domains: readonly [];
1177
1177
  readonly routes: readonly [];
1178
- readonly serviceId: null;
1178
+ readonly appId: null;
1179
1179
  }];
1180
1180
  };
1181
1181
  readonly sign: {
@@ -1191,14 +1191,14 @@ declare const APPLICATIONS: {
1191
1191
  readonly apiUrl: "https://sign.topolo.app";
1192
1192
  readonly domains: readonly ["sign.topolo.app"];
1193
1193
  readonly routes: readonly [];
1194
- readonly serviceId: "sign";
1194
+ readonly appId: "sign";
1195
1195
  }, {
1196
1196
  readonly name: "topolo-sign-api";
1197
1197
  readonly kind: "worker";
1198
1198
  readonly apiUrl: null;
1199
1199
  readonly domains: readonly [];
1200
1200
  readonly routes: readonly [];
1201
- readonly serviceId: null;
1201
+ readonly appId: null;
1202
1202
  }];
1203
1203
  };
1204
1204
  readonly social_studio: {
@@ -1214,21 +1214,21 @@ declare const APPLICATIONS: {
1214
1214
  readonly apiUrl: "https://studio.topolo.app";
1215
1215
  readonly domains: readonly ["studio.topolo.app"];
1216
1216
  readonly routes: readonly [];
1217
- readonly serviceId: "social_studio";
1217
+ readonly appId: "social_studio";
1218
1218
  }, {
1219
1219
  readonly name: "topolo-social-studio-api";
1220
1220
  readonly kind: "worker";
1221
1221
  readonly apiUrl: null;
1222
1222
  readonly domains: readonly [];
1223
1223
  readonly routes: readonly [];
1224
- readonly serviceId: null;
1224
+ readonly appId: null;
1225
1225
  }, {
1226
1226
  readonly name: "topolo-social-studio-queue";
1227
1227
  readonly kind: "worker";
1228
1228
  readonly apiUrl: null;
1229
1229
  readonly domains: readonly [];
1230
1230
  readonly routes: readonly [];
1231
- readonly serviceId: null;
1231
+ readonly appId: null;
1232
1232
  }];
1233
1233
  };
1234
1234
  readonly socialize: {
@@ -1244,21 +1244,21 @@ declare const APPLICATIONS: {
1244
1244
  readonly apiUrl: "https://socialize.topolo.app";
1245
1245
  readonly domains: readonly ["socialize.topolo.app"];
1246
1246
  readonly routes: readonly [];
1247
- readonly serviceId: "socialize";
1247
+ readonly appId: "socialize";
1248
1248
  }, {
1249
1249
  readonly name: "topolo-socialize-api";
1250
1250
  readonly kind: "worker";
1251
1251
  readonly apiUrl: "https://socialize-api.topolo.app";
1252
1252
  readonly domains: readonly ["socialize-api.topolo.app"];
1253
1253
  readonly routes: readonly [];
1254
- readonly serviceId: null;
1254
+ readonly appId: null;
1255
1255
  }, {
1256
1256
  readonly name: "topolo-socialize-scheduler";
1257
1257
  readonly kind: "worker";
1258
1258
  readonly apiUrl: null;
1259
1259
  readonly domains: readonly [];
1260
1260
  readonly routes: readonly [];
1261
- readonly serviceId: null;
1261
+ readonly appId: null;
1262
1262
  }];
1263
1263
  };
1264
1264
  readonly spaces: {
@@ -1274,14 +1274,14 @@ declare const APPLICATIONS: {
1274
1274
  readonly apiUrl: "https://spaces.topolo.app";
1275
1275
  readonly domains: readonly ["spaces.topolo.app"];
1276
1276
  readonly routes: readonly [];
1277
- readonly serviceId: "spaces";
1277
+ readonly appId: "spaces";
1278
1278
  }, {
1279
1279
  readonly name: "topolo-spaces-api";
1280
1280
  readonly kind: "worker";
1281
1281
  readonly apiUrl: null;
1282
1282
  readonly domains: readonly [];
1283
1283
  readonly routes: readonly [];
1284
- readonly serviceId: null;
1284
+ readonly appId: null;
1285
1285
  }];
1286
1286
  };
1287
1287
  readonly status: {
@@ -1297,7 +1297,7 @@ declare const APPLICATIONS: {
1297
1297
  readonly apiUrl: "https://status.topolo.app";
1298
1298
  readonly domains: readonly ["status.topolo.app"];
1299
1299
  readonly routes: readonly [];
1300
- readonly serviceId: "status";
1300
+ readonly appId: "status";
1301
1301
  }];
1302
1302
  };
1303
1303
  readonly success: {
@@ -1313,14 +1313,14 @@ declare const APPLICATIONS: {
1313
1313
  readonly apiUrl: "https://success.topolo.app";
1314
1314
  readonly domains: readonly ["success.topolo.app"];
1315
1315
  readonly routes: readonly ["success.topolo.app"];
1316
- readonly serviceId: "success";
1316
+ readonly appId: "success";
1317
1317
  }, {
1318
1318
  readonly name: "topolo-success-api";
1319
1319
  readonly kind: "worker";
1320
1320
  readonly apiUrl: null;
1321
1321
  readonly domains: readonly [];
1322
1322
  readonly routes: readonly [];
1323
- readonly serviceId: null;
1323
+ readonly appId: null;
1324
1324
  }];
1325
1325
  };
1326
1326
  readonly support: {
@@ -1336,14 +1336,14 @@ declare const APPLICATIONS: {
1336
1336
  readonly apiUrl: "https://support.topolo.app";
1337
1337
  readonly domains: readonly ["support.topolo.app"];
1338
1338
  readonly routes: readonly ["support.topolo.app/*"];
1339
- readonly serviceId: "support";
1339
+ readonly appId: "support";
1340
1340
  }, {
1341
1341
  readonly name: "topolo-support-api";
1342
1342
  readonly kind: "worker";
1343
1343
  readonly apiUrl: null;
1344
1344
  readonly domains: readonly [];
1345
1345
  readonly routes: readonly [];
1346
- readonly serviceId: null;
1346
+ readonly appId: null;
1347
1347
  }];
1348
1348
  };
1349
1349
  readonly survey: {
@@ -1359,14 +1359,14 @@ declare const APPLICATIONS: {
1359
1359
  readonly apiUrl: "https://survey.topolo.app";
1360
1360
  readonly domains: readonly ["survey.topolo.app"];
1361
1361
  readonly routes: readonly [];
1362
- readonly serviceId: "survey";
1362
+ readonly appId: "survey";
1363
1363
  }, {
1364
1364
  readonly name: "topolo-survey-api";
1365
1365
  readonly kind: "worker";
1366
1366
  readonly apiUrl: null;
1367
1367
  readonly domains: readonly [];
1368
1368
  readonly routes: readonly [];
1369
- readonly serviceId: null;
1369
+ readonly appId: null;
1370
1370
  }];
1371
1371
  };
1372
1372
  readonly voice: {
@@ -1382,14 +1382,14 @@ declare const APPLICATIONS: {
1382
1382
  readonly apiUrl: "https://voice.topolo.app";
1383
1383
  readonly domains: readonly ["voice.topolo.app"];
1384
1384
  readonly routes: readonly [];
1385
- readonly serviceId: "voice";
1385
+ readonly appId: "voice";
1386
1386
  }, {
1387
1387
  readonly name: "topolo-voice-api";
1388
1388
  readonly kind: "worker";
1389
1389
  readonly apiUrl: null;
1390
1390
  readonly domains: readonly [];
1391
1391
  readonly routes: readonly [];
1392
- readonly serviceId: null;
1392
+ readonly appId: null;
1393
1393
  }];
1394
1394
  };
1395
1395
  readonly web: {
@@ -1405,21 +1405,21 @@ declare const APPLICATIONS: {
1405
1405
  readonly apiUrl: null;
1406
1406
  readonly domains: readonly [];
1407
1407
  readonly routes: readonly [];
1408
- readonly serviceId: null;
1408
+ readonly appId: null;
1409
1409
  }, {
1410
1410
  readonly name: "topolo-web-runtime";
1411
1411
  readonly kind: "worker";
1412
1412
  readonly apiUrl: "https://sites.topolo.app";
1413
1413
  readonly domains: readonly ["sites.topolo.app"];
1414
1414
  readonly routes: readonly ["*.sites.topolo.app/*", "sites.topolo.app"];
1415
- readonly serviceId: null;
1415
+ readonly appId: null;
1416
1416
  }, {
1417
1417
  readonly name: "topolo-web-studio";
1418
1418
  readonly kind: "worker";
1419
1419
  readonly apiUrl: "https://web.topolo.app";
1420
1420
  readonly domains: readonly ["web.topolo.app"];
1421
1421
  readonly routes: readonly [];
1422
- readonly serviceId: "web";
1422
+ readonly appId: "web";
1423
1423
  }];
1424
1424
  };
1425
1425
  };
@@ -1492,9 +1492,9 @@ declare const APPLICATION_REQUIREMENTS: readonly [{
1492
1492
  }, {
1493
1493
  readonly id: "shared-auth-boundary";
1494
1494
  readonly title: "Use the shared Topolo auth boundary";
1495
- readonly summary: "Applications must derive identity, organization, scopes, and service entitlement from TopoloAuth rather than inventing parallel auth state.";
1495
+ readonly summary: "Applications must derive identity, organization, scopes, and app entitlement from TopoloAuth rather than inventing parallel auth state.";
1496
1496
  readonly appliesTo: readonly ["browser", "api", "tooling", "agent_surface"];
1497
- readonly evidence: readonly ["@topolo/auth-client or @topolo-io/worker-runtime is used where applicable", "No public command, tool, or SDK method accepts orgId", "Service slug and Auth service registration are documented for protected services"];
1497
+ readonly evidence: readonly ["@topolo/auth-client or @topolo-io/worker-runtime is used where applicable", "No public command, tool, or SDK method accepts orgId", "App slug and Auth app registration are documented for protected APIs"];
1498
1498
  readonly implementation: readonly ["Use shared auth/runtime packages instead of copying token parsing, gateway, or browser storage flows", "Derive organization from the credential on every request", "Route OAuth, refresh, logout, and SSO paths according to the shared Auth contract"];
1499
1499
  }, {
1500
1500
  readonly id: "shared-shell-and-launcher";
@@ -1504,12 +1504,12 @@ declare const APPLICATION_REQUIREMENTS: readonly [{
1504
1504
  readonly evidence: readonly ["@topolo-io/app-shell is used for the platform shell where the app has authenticated UI", "@topolo-io/app-launcher keeps the shared launcher/app switcher reachable from authenticated app chrome", "Account menu and sign-out behavior use TopoloAppShell or the ui-kit TopoloAccountMenu primitive", "Repeated app body surfaces use shared TopoloAppLayout primitives instead of local stat cards, empty states, or status badges", "Local preview supports deterministic visual QA fixtures for overview, list, detail, settings, and empty/loading states", "Authenticated app body content stays inside the viewport on mobile and desktop widths"];
1505
1505
  readonly implementation: readonly ["Use @topolo-io/app-shell TopoloAppShell for authenticated app layouts", "Use the @topolo-io/ui-kit TopoloAccountMenu primitive when a partial-shell surface still needs account chrome", "Pass app-specific account actions as additive menu items instead of forking dropdowns", "Use shared design tokens and platform UI primitives before creating local equivalents", "Use TopoloAppMetricCard, TopoloAppEmptyState, TopoloAppStatusBadge, TopoloAppGrid, and TopoloAppSection for repeated app body patterns", "Keep visual QA fixtures available through visualQa=1 or __devpreview=1 so screenshot checks do not depend on live API state", "Keep mobile and desktop shell behavior aligned with the platform UI kit", "Constrain app-owned workspace wrappers with min-width: 0, width: auto, and viewport-aware max-width so shell padding cannot create page-level horizontal overflow"];
1506
1506
  }, {
1507
- readonly id: "service-registration-and-scopes";
1508
- readonly title: "Register protected APIs as platform services";
1509
- readonly summary: "Callable app APIs need a stable service ID, service slug, permissions, role bundles, and API-key scopes before agents or users rely on them.";
1507
+ readonly id: "app-registration-and-scopes";
1508
+ readonly title: "Register protected APIs as platform apps";
1509
+ readonly summary: "Callable app APIs need a stable app ID, app slug, permissions, role bundles, and API-key scopes before agents or users rely on them.";
1510
1510
  readonly appliesTo: readonly ["api"];
1511
- readonly evidence: readonly ["Auth service catalog contains the service ID and slug", "Permissions, role bundles, and API-key scopes exist for the service", "SDK, CLI, and MCP service discovery include the callable production API", "CloudControl production HTTP targets classify agent reachability with sdk_service_id or agent_callable:false"];
1512
- readonly implementation: readonly ["Add production Worker api_url metadata and sdk_service_id for every agent-callable API target", "Mark browser, documentation, and runtime-only Worker targets with agent_callable:false", "Expose stable service IDs through generated DEFAULT_SERVICE_URLS and live catalog discovery", "Keep typed SDK/CLI/MCP surfaces in sync when an API contract stabilizes"];
1511
+ readonly evidence: readonly ["Auth app catalog contains the app ID and slug", "Permissions, role bundles, and API-key scopes exist for the app", "SDK, CLI, and MCP app discovery include the callable production API", "CloudControl production HTTP targets classify agent reachability with sdk_app_id or agent_callable:false"];
1512
+ readonly implementation: readonly ["Add production Worker api_url metadata and sdk_app_id for every agent-callable API target", "Mark browser, documentation, and runtime-only Worker targets with agent_callable:false", "Expose stable app IDs through generated DEFAULT_APP_URLS and live catalog discovery", "Keep typed SDK/CLI/MCP surfaces in sync when an API contract stabilizes"];
1513
1513
  }, {
1514
1514
  readonly id: "organization-scoped-data";
1515
1515
  readonly title: "Keep application data organization-scoped";
@@ -1559,24 +1559,24 @@ declare function auditApplicationRequirements(applicationOrId: ApplicationCatalo
1559
1559
  declare function auditAllApplicationRequirements(applicationIds?: readonly ApplicationId[]): ApplicationRequirementsAuditReport;
1560
1560
 
1561
1561
  /**
1562
- * Service registry — base URLs for every Topolo platform service.
1562
+ * App API registry — base URLs for callable Topolo platform APIs.
1563
1563
  *
1564
1564
  * Source of truth lives in each app's `topolo.cloudcontrol.json`. The
1565
- * `SERVICES` map is regenerated from those files via
1565
+ * `APP_API_URLS` map is regenerated from those files via
1566
1566
  * `scripts/generate-services.mjs`; edit the JSON, not the generated file.
1567
1567
  *
1568
1568
  * Any entry can be overridden per-call via `TopoloClient` options, or globally
1569
- * via env vars like `TOPOLO_SERVICE_URL_MAIL` or `TOPOLO_SERVICE_URL_WEB_API`
1570
- * (dots in service IDs become underscores in env vars).
1569
+ * via env vars like `TOPOLO_APP_URL_MAIL` or `TOPOLO_APP_URL_WEB_API`
1570
+ * (dots in app API keys become underscores in env vars).
1571
1571
  *
1572
1572
  * IMPORTANT: The SDK NEVER accepts `orgId` as a parameter. Every request is
1573
1573
  * scoped to the organization embedded in the auth credential (JWT claim or
1574
1574
  * API-key binding). This is the load-bearing cross-org isolation guarantee.
1575
1575
  */
1576
1576
 
1577
- declare const DEFAULT_SERVICE_URLS: Record<ServiceId, string>;
1577
+ declare const DEFAULT_APP_URLS: Record<AppApiId, string>;
1578
1578
  interface ServiceCatalogUrlEntry {
1579
- serviceId?: string | null;
1579
+ appId?: string | null;
1580
1580
  slug?: string | null;
1581
1581
  name?: string | null;
1582
1582
  apiBaseUrl?: string | null;
@@ -1586,9 +1586,9 @@ interface ServiceCatalogUrlEntry {
1586
1586
  }
1587
1587
  declare function resolveCatalogServiceUrl(entry: ServiceCatalogUrlEntry, options?: {
1588
1588
  serviceKey?: string;
1589
- overrides?: Record<string, string> | Partial<Record<ServiceId, string>>;
1589
+ overrides?: Record<string, string> | Partial<Record<AppApiId, string>>;
1590
1590
  }): string | null;
1591
- declare function resolveServiceUrl(service: ServiceId, overrides?: Partial<Record<ServiceId, string>>): string;
1591
+ declare function resolveServiceUrl(service: AppApiId, overrides?: Partial<Record<AppApiId, string>>): string;
1592
1592
 
1593
1593
  declare class TopoloSdkError extends Error {
1594
1594
  readonly code: string;
@@ -1668,7 +1668,6 @@ interface P2PCapability {
1668
1668
  capability_id: string;
1669
1669
  publisher_org_id: string;
1670
1670
  app_id: string;
1671
- service_id: string;
1672
1671
  name: string;
1673
1672
  description: string;
1674
1673
  category: string;
@@ -1687,7 +1686,6 @@ interface PublishCapabilityInput {
1687
1686
  capability_id: string;
1688
1687
  publisher_org_id: string;
1689
1688
  app_id: string;
1690
- service_id: string;
1691
1689
  name: string;
1692
1690
  description: string;
1693
1691
  category: string;
@@ -1906,7 +1904,7 @@ interface TokenResponse {
1906
1904
  }
1907
1905
  interface OAuthHelperOptions {
1908
1906
  /** Overrides for TopoloAuth URL. Staging/dev should pass a mapping. */
1909
- serviceUrls?: Partial<Record<ServiceId, string>>;
1907
+ serviceUrls?: Partial<Record<AppApiId, string>>;
1910
1908
  /** Injected fetch. Defaults to global fetch. */
1911
1909
  fetch?: typeof fetch;
1912
1910
  }
@@ -1961,7 +1959,7 @@ declare const TOPOLO_WIDGET_ENDPOINT = "/api/widget";
1961
1959
  declare const TOPOLO_WIDGET_REFRESH_INTERVAL_MS = 60000;
1962
1960
  type TopoloWidgetType = "stats" | "recent-activity" | "quick-actions" | "notifications" | "chart";
1963
1961
  interface TopoloWidgetBase {
1964
- serviceId: string;
1962
+ appId: string;
1965
1963
  serviceName: string;
1966
1964
  serviceIcon?: string;
1967
1965
  type: TopoloWidgetType;
@@ -2046,7 +2044,7 @@ interface TopoloChartWidget extends TopoloWidgetBase {
2046
2044
  };
2047
2045
  }
2048
2046
  type TopoloWidget = TopoloStatsWidget | TopoloRecentActivityWidget | TopoloQuickActionsWidget | TopoloNotificationsWidget | TopoloChartWidget;
2049
- type TopoloWidgetWithOptionalMetadata<T extends TopoloWidget> = Omit<T, "serviceId" | "serviceName" | "lastUpdated"> & Partial<Pick<TopoloWidgetBase, "serviceId" | "serviceName" | "lastUpdated">>;
2047
+ type TopoloWidgetWithOptionalMetadata<T extends TopoloWidget> = Omit<T, "appId" | "serviceName" | "lastUpdated"> & Partial<Pick<TopoloWidgetBase, "appId" | "serviceName" | "lastUpdated">>;
2050
2048
  type TopoloWidgetDraft = TopoloWidget extends infer Widget ? Widget extends TopoloWidget ? TopoloWidgetWithOptionalMetadata<Widget> : never : never;
2051
2049
  interface TopoloWidgetApiResponse {
2052
2050
  success: boolean;
@@ -2054,7 +2052,7 @@ interface TopoloWidgetApiResponse {
2054
2052
  error?: string;
2055
2053
  }
2056
2054
  interface TopoloWidgetResponseOptions {
2057
- serviceId: string;
2055
+ appId: string;
2058
2056
  serviceName: string;
2059
2057
  widgets: TopoloWidgetDraft[];
2060
2058
  now?: Date | string;
@@ -2064,7 +2062,7 @@ interface TopoloWidgetValidationResult {
2064
2062
  errors: string[];
2065
2063
  }
2066
2064
  interface TopoloWidgetConfig {
2067
- serviceId: string;
2065
+ appId: string;
2068
2066
  serviceName: string;
2069
2067
  baseUrl: string;
2070
2068
  widgetEndpoint: string;
@@ -2076,7 +2074,7 @@ declare function defineTopoloRecentActivityWidget(widget: Omit<TopoloRecentActiv
2076
2074
  declare function defineTopoloQuickActionsWidget(widget: Omit<TopoloQuickActionsWidget, "type">): TopoloQuickActionsWidget;
2077
2075
  declare function defineTopoloNotificationsWidget(widget: Omit<TopoloNotificationsWidget, "type">): TopoloNotificationsWidget;
2078
2076
  declare function defineTopoloChartWidget(widget: Omit<TopoloChartWidget, "type">): TopoloChartWidget;
2079
- declare function createTopoloWidgetResponse({ serviceId, serviceName, widgets, now, }: TopoloWidgetResponseOptions): TopoloWidgetApiResponse;
2077
+ declare function createTopoloWidgetResponse({ appId, serviceName, widgets, now, }: TopoloWidgetResponseOptions): TopoloWidgetApiResponse;
2080
2078
  declare function createTopoloWidgetError(error: string): TopoloWidgetApiResponse;
2081
2079
  declare function validateTopoloWidgetResponse(response: unknown): TopoloWidgetValidationResult;
2082
2080
 
@@ -2094,4 +2092,4 @@ declare function createTopolo(options: TopoloClientOptions): {
2094
2092
  };
2095
2093
  type Topolo = ReturnType<typeof createTopolo>;
2096
2094
 
2097
- export { APPLICATIONS, APPLICATION_REQUIREMENTS, APPLICATION_REQUIREMENTS_VERSION, type AgentIdentity, type ApplicationCatalogEntry, type ApplicationDeployTarget, type ApplicationId, type ApplicationRequirement, type ApplicationRequirementAudit, type ApplicationRequirementFinding, type ApplicationRequirementMigrationItem, type ApplicationRequirementScope, type ApplicationRequirementScore, type ApplicationRequirementStatus, type ApplicationRequirementsAuditReport, type CredentialIntrospection, type CrmContactSummary, CrmModule, DEFAULT_SERVICE_URLS, type DeviceAuthorizationResponse, IdentityModule, type ListContactsOptions, type ListContactsResult, type OAuthHelperOptions, type P2PActionDetail, type P2PActionRequestInput, type P2PActionRequestResult, type P2PActionRow, type P2PActionRun, type P2PCapability, type P2PConnection, type P2PHold, type P2PLedgerEntry, P2PModule, type P2PPolicy, type P2PPricingModel, type P2PSettlementBatch, type P2PSettlementGroup, type PublishCapabilityInput, type RequestOptions, type ServiceCatalogUrlEntry, type ServiceId, TOPOLO_WIDGET_ENDPOINT, TOPOLO_WIDGET_REFRESH_INTERVAL_MS, type TokenResponse, type Topolo, type TopoloActionCatalogEntry, type TopoloApiKeyResourceMetadata, TopoloAuthError, type TopoloChartWidget, TopoloClient, type TopoloClientOptions, type TopoloCredential, type TopoloDebugEvent, TopoloHttpError, type TopoloNotificationsWidget, TopoloOAuth, TopoloPermissionError, type TopoloQuickActionsWidget, type TopoloRecentActivityWidget, TopoloSdkError, type TopoloServiceCatalogEntry, type TopoloStatsWidget, type TopoloWidget, type TopoloWidgetActionItem, type TopoloWidgetActivityItem, type TopoloWidgetApiResponse, type TopoloWidgetBase, type TopoloWidgetConfig, type TopoloWidgetDraft, type TopoloWidgetMetric, type TopoloWidgetNotificationItem, type TopoloWidgetResponseOptions, type TopoloWidgetSnapshotMetadata, type TopoloWidgetSnapshotMetric, type TopoloWidgetType, type TopoloWidgetValidationResult, applicationRequirementScopes, auditAllApplicationRequirements, auditApplicationRequirements, createTopolo, createTopoloWidgetError, createTopoloWidgetResponse, defineTopoloChartWidget, defineTopoloNotificationsWidget, defineTopoloQuickActionsWidget, defineTopoloRecentActivityWidget, defineTopoloStatsWidget, requirementsForApplication, resolveCatalogServiceUrl, resolveServiceUrl, validateTopoloWidgetResponse };
2095
+ export { APPLICATIONS, APPLICATION_REQUIREMENTS, APPLICATION_REQUIREMENTS_VERSION, type AgentIdentity, type AppApiId, type ApplicationCatalogEntry, type ApplicationDeployTarget, type ApplicationId, type ApplicationRequirement, type ApplicationRequirementAudit, type ApplicationRequirementFinding, type ApplicationRequirementMigrationItem, type ApplicationRequirementScope, type ApplicationRequirementScore, type ApplicationRequirementStatus, type ApplicationRequirementsAuditReport, type CredentialIntrospection, type CrmContactSummary, CrmModule, DEFAULT_APP_URLS, type DeviceAuthorizationResponse, IdentityModule, type ListContactsOptions, type ListContactsResult, type OAuthHelperOptions, type P2PActionDetail, type P2PActionRequestInput, type P2PActionRequestResult, type P2PActionRow, type P2PActionRun, type P2PCapability, type P2PConnection, type P2PHold, type P2PLedgerEntry, P2PModule, type P2PPolicy, type P2PPricingModel, type P2PSettlementBatch, type P2PSettlementGroup, type PublishCapabilityInput, type RequestOptions, type ServiceCatalogUrlEntry, TOPOLO_WIDGET_ENDPOINT, TOPOLO_WIDGET_REFRESH_INTERVAL_MS, type TokenResponse, type Topolo, type TopoloActionCatalogEntry, type TopoloApiKeyResourceMetadata, TopoloAuthError, type TopoloChartWidget, TopoloClient, type TopoloClientOptions, type TopoloCredential, type TopoloDebugEvent, TopoloHttpError, type TopoloNotificationsWidget, TopoloOAuth, TopoloPermissionError, type TopoloQuickActionsWidget, type TopoloRecentActivityWidget, TopoloSdkError, type TopoloServiceCatalogEntry, type TopoloStatsWidget, type TopoloWidget, type TopoloWidgetActionItem, type TopoloWidgetActivityItem, type TopoloWidgetApiResponse, type TopoloWidgetBase, type TopoloWidgetConfig, type TopoloWidgetDraft, type TopoloWidgetMetric, type TopoloWidgetNotificationItem, type TopoloWidgetResponseOptions, type TopoloWidgetSnapshotMetadata, type TopoloWidgetSnapshotMetric, type TopoloWidgetType, type TopoloWidgetValidationResult, applicationRequirementScopes, auditAllApplicationRequirements, auditApplicationRequirements, createTopolo, createTopoloWidgetError, createTopoloWidgetResponse, defineTopoloChartWidget, defineTopoloNotificationsWidget, defineTopoloQuickActionsWidget, defineTopoloRecentActivityWidget, defineTopoloStatsWidget, requirementsForApplication, resolveCatalogServiceUrl, resolveServiceUrl, validateTopoloWidgetResponse };