@miradorlabs/web-grpc 2.71.0 → 2.74.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.
@@ -414,6 +414,27 @@ export interface CreateProjectRequest {
414
414
  export interface CreateProjectResponse {
415
415
  status: ResponseStatus | undefined;
416
416
  project: Project | undefined;
417
+ ingestionKey: ServerApiKeySecret | undefined;
418
+ }
419
+
420
+ export interface ServerApiKeySecret {
421
+ serverApiKey:
422
+ | ServerApiKey
423
+ | undefined;
424
+ /** Sensitive: returned only to authorized project members. */
425
+ key: string;
426
+ }
427
+
428
+ export interface RevealServerApiKeyRequest {
429
+ organizationId: string;
430
+ projectId: string;
431
+ id: string;
432
+ }
433
+
434
+ /** Reveals an existing key without changing its permissions or status. */
435
+ export interface RevealServerApiKeyResponse {
436
+ status: ResponseStatus | undefined;
437
+ serverKey: ServerApiKeySecret | undefined;
417
438
  }
418
439
 
419
440
  export interface ListProjectsRequest {
@@ -560,6 +581,8 @@ export interface CreateServerApiKeyRequest {
560
581
  projectId: string;
561
582
  name: string;
562
583
  description: string;
584
+ /** Absent preserves legacy full access; present replaces all toggles. */
585
+ permissions: ServerApiKeyPermissions | undefined;
563
586
  }
564
587
 
565
588
  export interface CreateServerApiKeyResponse {
@@ -606,7 +629,11 @@ export interface UpdateServerApiKeyRequest {
606
629
  }
607
630
 
608
631
  export interface UpdateServerApiKeyRequest_ServerApiKeyUpdates {
609
- name?: string | undefined;
632
+ name?:
633
+ | string
634
+ | undefined;
635
+ /** Absent leaves permissions unchanged; present replaces all toggles. */
636
+ permissions: ServerApiKeyPermissions | undefined;
610
637
  }
611
638
 
612
639
  export interface UpdateServerApiKeyResponse {
@@ -627,6 +654,12 @@ export interface DeleteServerApiKeyResponse {
627
654
  status: ResponseStatus | undefined;
628
655
  }
629
656
 
657
+ export interface ServerApiKeyPermissions {
658
+ read: boolean;
659
+ write: boolean;
660
+ ingest: boolean;
661
+ }
662
+
630
663
  export interface ServerApiKey {
631
664
  /** UUID */
632
665
  id: string;
@@ -640,6 +673,7 @@ export interface ServerApiKey {
640
673
  updatedAt: Date | undefined;
641
674
  createdBy: string;
642
675
  lastUsedAt?: Date | undefined;
676
+ permissions: ServerApiKeyPermissions | undefined;
643
677
  }
644
678
 
645
679
  export interface InviteUserRequest {
@@ -871,6 +905,18 @@ export interface RevokeCliSessionResponse {
871
905
  status: ResponseStatus | undefined;
872
906
  }
873
907
 
908
+ export interface ProductFeatures {
909
+ betaInviteEnabled: boolean;
910
+ }
911
+
912
+ export interface GetProductFeaturesRequest {
913
+ }
914
+
915
+ export interface GetProductFeaturesResponse {
916
+ status: ResponseStatus | undefined;
917
+ features: ProductFeatures | undefined;
918
+ }
919
+
874
920
  function createBaseLogonRequest(): LogonRequest {
875
921
  return { invitationId: undefined };
876
922
  }
@@ -1619,7 +1665,7 @@ export const CreateProjectRequest: MessageFns<CreateProjectRequest> = {
1619
1665
  };
1620
1666
 
1621
1667
  function createBaseCreateProjectResponse(): CreateProjectResponse {
1622
- return { status: undefined, project: undefined };
1668
+ return { status: undefined, project: undefined, ingestionKey: undefined };
1623
1669
  }
1624
1670
 
1625
1671
  export const CreateProjectResponse: MessageFns<CreateProjectResponse> = {
@@ -1630,6 +1676,9 @@ export const CreateProjectResponse: MessageFns<CreateProjectResponse> = {
1630
1676
  if (message.project !== undefined) {
1631
1677
  Project.encode(message.project, writer.uint32(18).fork()).join();
1632
1678
  }
1679
+ if (message.ingestionKey !== undefined) {
1680
+ ServerApiKeySecret.encode(message.ingestionKey, writer.uint32(26).fork()).join();
1681
+ }
1633
1682
  return writer;
1634
1683
  },
1635
1684
 
@@ -1662,6 +1711,14 @@ export const CreateProjectResponse: MessageFns<CreateProjectResponse> = {
1662
1711
  message.project = Project.decode(reader, reader.uint32());
1663
1712
  continue;
1664
1713
  }
1714
+ case 3: {
1715
+ if (tag !== 26) {
1716
+ break;
1717
+ }
1718
+
1719
+ message.ingestionKey = ServerApiKeySecret.decode(reader, reader.uint32());
1720
+ continue;
1721
+ }
1665
1722
  }
1666
1723
  if ((tag & 7) === 4 || tag === 0) {
1667
1724
  break;
@@ -1678,6 +1735,11 @@ export const CreateProjectResponse: MessageFns<CreateProjectResponse> = {
1678
1735
  return {
1679
1736
  status: isSet(object.status) ? ResponseStatus.fromJSON(object.status) : undefined,
1680
1737
  project: isSet(object.project) ? Project.fromJSON(object.project) : undefined,
1738
+ ingestionKey: isSet(object.ingestionKey)
1739
+ ? ServerApiKeySecret.fromJSON(object.ingestionKey)
1740
+ : isSet(object.ingestion_key)
1741
+ ? ServerApiKeySecret.fromJSON(object.ingestion_key)
1742
+ : undefined,
1681
1743
  };
1682
1744
  },
1683
1745
 
@@ -1689,6 +1751,9 @@ export const CreateProjectResponse: MessageFns<CreateProjectResponse> = {
1689
1751
  if (message.project !== undefined) {
1690
1752
  obj.project = Project.toJSON(message.project);
1691
1753
  }
1754
+ if (message.ingestionKey !== undefined) {
1755
+ obj.ingestionKey = ServerApiKeySecret.toJSON(message.ingestionKey);
1756
+ }
1692
1757
  return obj;
1693
1758
  },
1694
1759
 
@@ -1703,6 +1768,302 @@ export const CreateProjectResponse: MessageFns<CreateProjectResponse> = {
1703
1768
  message.project = (object.project !== undefined && object.project !== null)
1704
1769
  ? Project.fromPartial(object.project)
1705
1770
  : undefined;
1771
+ message.ingestionKey = (object.ingestionKey !== undefined && object.ingestionKey !== null)
1772
+ ? ServerApiKeySecret.fromPartial(object.ingestionKey)
1773
+ : undefined;
1774
+ return message;
1775
+ },
1776
+ };
1777
+
1778
+ function createBaseServerApiKeySecret(): ServerApiKeySecret {
1779
+ return { serverApiKey: undefined, key: "" };
1780
+ }
1781
+
1782
+ export const ServerApiKeySecret: MessageFns<ServerApiKeySecret> = {
1783
+ encode(message: ServerApiKeySecret, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
1784
+ if (message.serverApiKey !== undefined) {
1785
+ ServerApiKey.encode(message.serverApiKey, writer.uint32(10).fork()).join();
1786
+ }
1787
+ if (message.key !== "") {
1788
+ writer.uint32(18).string(message.key);
1789
+ }
1790
+ return writer;
1791
+ },
1792
+
1793
+ decode(input: BinaryReader | Uint8Array, length?: number): ServerApiKeySecret {
1794
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
1795
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
1796
+ if (previousRecursionDepth >= 100) {
1797
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
1798
+ }
1799
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
1800
+ try {
1801
+ const end = length === undefined ? reader.len : reader.pos + length;
1802
+ const message = createBaseServerApiKeySecret();
1803
+ while (reader.pos < end) {
1804
+ const tag = reader.uint32();
1805
+ switch (tag >>> 3) {
1806
+ case 1: {
1807
+ if (tag !== 10) {
1808
+ break;
1809
+ }
1810
+
1811
+ message.serverApiKey = ServerApiKey.decode(reader, reader.uint32());
1812
+ continue;
1813
+ }
1814
+ case 2: {
1815
+ if (tag !== 18) {
1816
+ break;
1817
+ }
1818
+
1819
+ message.key = reader.string();
1820
+ continue;
1821
+ }
1822
+ }
1823
+ if ((tag & 7) === 4 || tag === 0) {
1824
+ break;
1825
+ }
1826
+ reader.skip(tag & 7);
1827
+ }
1828
+ return message;
1829
+ } finally {
1830
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
1831
+ }
1832
+ },
1833
+
1834
+ fromJSON(object: any): ServerApiKeySecret {
1835
+ return {
1836
+ serverApiKey: isSet(object.serverApiKey)
1837
+ ? ServerApiKey.fromJSON(object.serverApiKey)
1838
+ : isSet(object.server_api_key)
1839
+ ? ServerApiKey.fromJSON(object.server_api_key)
1840
+ : undefined,
1841
+ key: isSet(object.key) ? globalThis.String(object.key) : "",
1842
+ };
1843
+ },
1844
+
1845
+ toJSON(message: ServerApiKeySecret): unknown {
1846
+ const obj: any = {};
1847
+ if (message.serverApiKey !== undefined) {
1848
+ obj.serverApiKey = ServerApiKey.toJSON(message.serverApiKey);
1849
+ }
1850
+ if (message.key !== "") {
1851
+ obj.key = message.key;
1852
+ }
1853
+ return obj;
1854
+ },
1855
+
1856
+ create<I extends Exact<DeepPartial<ServerApiKeySecret>, I>>(base?: I): ServerApiKeySecret {
1857
+ return ServerApiKeySecret.fromPartial(base ?? ({} as any));
1858
+ },
1859
+ fromPartial<I extends Exact<DeepPartial<ServerApiKeySecret>, I>>(object: I): ServerApiKeySecret {
1860
+ const message = createBaseServerApiKeySecret();
1861
+ message.serverApiKey = (object.serverApiKey !== undefined && object.serverApiKey !== null)
1862
+ ? ServerApiKey.fromPartial(object.serverApiKey)
1863
+ : undefined;
1864
+ message.key = object.key ?? "";
1865
+ return message;
1866
+ },
1867
+ };
1868
+
1869
+ function createBaseRevealServerApiKeyRequest(): RevealServerApiKeyRequest {
1870
+ return { organizationId: "", projectId: "", id: "" };
1871
+ }
1872
+
1873
+ export const RevealServerApiKeyRequest: MessageFns<RevealServerApiKeyRequest> = {
1874
+ encode(message: RevealServerApiKeyRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
1875
+ if (message.organizationId !== "") {
1876
+ writer.uint32(10).string(message.organizationId);
1877
+ }
1878
+ if (message.projectId !== "") {
1879
+ writer.uint32(18).string(message.projectId);
1880
+ }
1881
+ if (message.id !== "") {
1882
+ writer.uint32(26).string(message.id);
1883
+ }
1884
+ return writer;
1885
+ },
1886
+
1887
+ decode(input: BinaryReader | Uint8Array, length?: number): RevealServerApiKeyRequest {
1888
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
1889
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
1890
+ if (previousRecursionDepth >= 100) {
1891
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
1892
+ }
1893
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
1894
+ try {
1895
+ const end = length === undefined ? reader.len : reader.pos + length;
1896
+ const message = createBaseRevealServerApiKeyRequest();
1897
+ while (reader.pos < end) {
1898
+ const tag = reader.uint32();
1899
+ switch (tag >>> 3) {
1900
+ case 1: {
1901
+ if (tag !== 10) {
1902
+ break;
1903
+ }
1904
+
1905
+ message.organizationId = reader.string();
1906
+ continue;
1907
+ }
1908
+ case 2: {
1909
+ if (tag !== 18) {
1910
+ break;
1911
+ }
1912
+
1913
+ message.projectId = reader.string();
1914
+ continue;
1915
+ }
1916
+ case 3: {
1917
+ if (tag !== 26) {
1918
+ break;
1919
+ }
1920
+
1921
+ message.id = reader.string();
1922
+ continue;
1923
+ }
1924
+ }
1925
+ if ((tag & 7) === 4 || tag === 0) {
1926
+ break;
1927
+ }
1928
+ reader.skip(tag & 7);
1929
+ }
1930
+ return message;
1931
+ } finally {
1932
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
1933
+ }
1934
+ },
1935
+
1936
+ fromJSON(object: any): RevealServerApiKeyRequest {
1937
+ return {
1938
+ organizationId: isSet(object.organizationId)
1939
+ ? globalThis.String(object.organizationId)
1940
+ : isSet(object.organization_id)
1941
+ ? globalThis.String(object.organization_id)
1942
+ : "",
1943
+ projectId: isSet(object.projectId)
1944
+ ? globalThis.String(object.projectId)
1945
+ : isSet(object.project_id)
1946
+ ? globalThis.String(object.project_id)
1947
+ : "",
1948
+ id: isSet(object.id) ? globalThis.String(object.id) : "",
1949
+ };
1950
+ },
1951
+
1952
+ toJSON(message: RevealServerApiKeyRequest): unknown {
1953
+ const obj: any = {};
1954
+ if (message.organizationId !== "") {
1955
+ obj.organizationId = message.organizationId;
1956
+ }
1957
+ if (message.projectId !== "") {
1958
+ obj.projectId = message.projectId;
1959
+ }
1960
+ if (message.id !== "") {
1961
+ obj.id = message.id;
1962
+ }
1963
+ return obj;
1964
+ },
1965
+
1966
+ create<I extends Exact<DeepPartial<RevealServerApiKeyRequest>, I>>(base?: I): RevealServerApiKeyRequest {
1967
+ return RevealServerApiKeyRequest.fromPartial(base ?? ({} as any));
1968
+ },
1969
+ fromPartial<I extends Exact<DeepPartial<RevealServerApiKeyRequest>, I>>(object: I): RevealServerApiKeyRequest {
1970
+ const message = createBaseRevealServerApiKeyRequest();
1971
+ message.organizationId = object.organizationId ?? "";
1972
+ message.projectId = object.projectId ?? "";
1973
+ message.id = object.id ?? "";
1974
+ return message;
1975
+ },
1976
+ };
1977
+
1978
+ function createBaseRevealServerApiKeyResponse(): RevealServerApiKeyResponse {
1979
+ return { status: undefined, serverKey: undefined };
1980
+ }
1981
+
1982
+ export const RevealServerApiKeyResponse: MessageFns<RevealServerApiKeyResponse> = {
1983
+ encode(message: RevealServerApiKeyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
1984
+ if (message.status !== undefined) {
1985
+ ResponseStatus.encode(message.status, writer.uint32(10).fork()).join();
1986
+ }
1987
+ if (message.serverKey !== undefined) {
1988
+ ServerApiKeySecret.encode(message.serverKey, writer.uint32(18).fork()).join();
1989
+ }
1990
+ return writer;
1991
+ },
1992
+
1993
+ decode(input: BinaryReader | Uint8Array, length?: number): RevealServerApiKeyResponse {
1994
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
1995
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
1996
+ if (previousRecursionDepth >= 100) {
1997
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
1998
+ }
1999
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
2000
+ try {
2001
+ const end = length === undefined ? reader.len : reader.pos + length;
2002
+ const message = createBaseRevealServerApiKeyResponse();
2003
+ while (reader.pos < end) {
2004
+ const tag = reader.uint32();
2005
+ switch (tag >>> 3) {
2006
+ case 1: {
2007
+ if (tag !== 10) {
2008
+ break;
2009
+ }
2010
+
2011
+ message.status = ResponseStatus.decode(reader, reader.uint32());
2012
+ continue;
2013
+ }
2014
+ case 2: {
2015
+ if (tag !== 18) {
2016
+ break;
2017
+ }
2018
+
2019
+ message.serverKey = ServerApiKeySecret.decode(reader, reader.uint32());
2020
+ continue;
2021
+ }
2022
+ }
2023
+ if ((tag & 7) === 4 || tag === 0) {
2024
+ break;
2025
+ }
2026
+ reader.skip(tag & 7);
2027
+ }
2028
+ return message;
2029
+ } finally {
2030
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
2031
+ }
2032
+ },
2033
+
2034
+ fromJSON(object: any): RevealServerApiKeyResponse {
2035
+ return {
2036
+ status: isSet(object.status) ? ResponseStatus.fromJSON(object.status) : undefined,
2037
+ serverKey: isSet(object.serverKey)
2038
+ ? ServerApiKeySecret.fromJSON(object.serverKey)
2039
+ : isSet(object.server_key)
2040
+ ? ServerApiKeySecret.fromJSON(object.server_key)
2041
+ : undefined,
2042
+ };
2043
+ },
2044
+
2045
+ toJSON(message: RevealServerApiKeyResponse): unknown {
2046
+ const obj: any = {};
2047
+ if (message.status !== undefined) {
2048
+ obj.status = ResponseStatus.toJSON(message.status);
2049
+ }
2050
+ if (message.serverKey !== undefined) {
2051
+ obj.serverKey = ServerApiKeySecret.toJSON(message.serverKey);
2052
+ }
2053
+ return obj;
2054
+ },
2055
+
2056
+ create<I extends Exact<DeepPartial<RevealServerApiKeyResponse>, I>>(base?: I): RevealServerApiKeyResponse {
2057
+ return RevealServerApiKeyResponse.fromPartial(base ?? ({} as any));
2058
+ },
2059
+ fromPartial<I extends Exact<DeepPartial<RevealServerApiKeyResponse>, I>>(object: I): RevealServerApiKeyResponse {
2060
+ const message = createBaseRevealServerApiKeyResponse();
2061
+ message.status = (object.status !== undefined && object.status !== null)
2062
+ ? ResponseStatus.fromPartial(object.status)
2063
+ : undefined;
2064
+ message.serverKey = (object.serverKey !== undefined && object.serverKey !== null)
2065
+ ? ServerApiKeySecret.fromPartial(object.serverKey)
2066
+ : undefined;
1706
2067
  return message;
1707
2068
  },
1708
2069
  };
@@ -3822,7 +4183,7 @@ export const WebApiKey: MessageFns<WebApiKey> = {
3822
4183
  };
3823
4184
 
3824
4185
  function createBaseCreateServerApiKeyRequest(): CreateServerApiKeyRequest {
3825
- return { organizationId: "", projectId: "", name: "", description: "" };
4186
+ return { organizationId: "", projectId: "", name: "", description: "", permissions: undefined };
3826
4187
  }
3827
4188
 
3828
4189
  export const CreateServerApiKeyRequest: MessageFns<CreateServerApiKeyRequest> = {
@@ -3839,6 +4200,9 @@ export const CreateServerApiKeyRequest: MessageFns<CreateServerApiKeyRequest> =
3839
4200
  if (message.description !== "") {
3840
4201
  writer.uint32(34).string(message.description);
3841
4202
  }
4203
+ if (message.permissions !== undefined) {
4204
+ ServerApiKeyPermissions.encode(message.permissions, writer.uint32(42).fork()).join();
4205
+ }
3842
4206
  return writer;
3843
4207
  },
3844
4208
 
@@ -3887,6 +4251,14 @@ export const CreateServerApiKeyRequest: MessageFns<CreateServerApiKeyRequest> =
3887
4251
  message.description = reader.string();
3888
4252
  continue;
3889
4253
  }
4254
+ case 5: {
4255
+ if (tag !== 42) {
4256
+ break;
4257
+ }
4258
+
4259
+ message.permissions = ServerApiKeyPermissions.decode(reader, reader.uint32());
4260
+ continue;
4261
+ }
3890
4262
  }
3891
4263
  if ((tag & 7) === 4 || tag === 0) {
3892
4264
  break;
@@ -3913,6 +4285,7 @@ export const CreateServerApiKeyRequest: MessageFns<CreateServerApiKeyRequest> =
3913
4285
  : "",
3914
4286
  name: isSet(object.name) ? globalThis.String(object.name) : "",
3915
4287
  description: isSet(object.description) ? globalThis.String(object.description) : "",
4288
+ permissions: isSet(object.permissions) ? ServerApiKeyPermissions.fromJSON(object.permissions) : undefined,
3916
4289
  };
3917
4290
  },
3918
4291
 
@@ -3930,6 +4303,9 @@ export const CreateServerApiKeyRequest: MessageFns<CreateServerApiKeyRequest> =
3930
4303
  if (message.description !== "") {
3931
4304
  obj.description = message.description;
3932
4305
  }
4306
+ if (message.permissions !== undefined) {
4307
+ obj.permissions = ServerApiKeyPermissions.toJSON(message.permissions);
4308
+ }
3933
4309
  return obj;
3934
4310
  },
3935
4311
 
@@ -3942,6 +4318,9 @@ export const CreateServerApiKeyRequest: MessageFns<CreateServerApiKeyRequest> =
3942
4318
  message.projectId = object.projectId ?? "";
3943
4319
  message.name = object.name ?? "";
3944
4320
  message.description = object.description ?? "";
4321
+ message.permissions = (object.permissions !== undefined && object.permissions !== null)
4322
+ ? ServerApiKeyPermissions.fromPartial(object.permissions)
4323
+ : undefined;
3945
4324
  return message;
3946
4325
  },
3947
4326
  };
@@ -4593,7 +4972,7 @@ export const UpdateServerApiKeyRequest: MessageFns<UpdateServerApiKeyRequest> =
4593
4972
  };
4594
4973
 
4595
4974
  function createBaseUpdateServerApiKeyRequest_ServerApiKeyUpdates(): UpdateServerApiKeyRequest_ServerApiKeyUpdates {
4596
- return { name: undefined };
4975
+ return { name: undefined, permissions: undefined };
4597
4976
  }
4598
4977
 
4599
4978
  export const UpdateServerApiKeyRequest_ServerApiKeyUpdates: MessageFns<UpdateServerApiKeyRequest_ServerApiKeyUpdates> =
@@ -4605,6 +4984,9 @@ export const UpdateServerApiKeyRequest_ServerApiKeyUpdates: MessageFns<UpdateSer
4605
4984
  if (message.name !== undefined) {
4606
4985
  writer.uint32(10).string(message.name);
4607
4986
  }
4987
+ if (message.permissions !== undefined) {
4988
+ ServerApiKeyPermissions.encode(message.permissions, writer.uint32(18).fork()).join();
4989
+ }
4608
4990
  return writer;
4609
4991
  },
4610
4992
 
@@ -4629,6 +5011,14 @@ export const UpdateServerApiKeyRequest_ServerApiKeyUpdates: MessageFns<UpdateSer
4629
5011
  message.name = reader.string();
4630
5012
  continue;
4631
5013
  }
5014
+ case 2: {
5015
+ if (tag !== 18) {
5016
+ break;
5017
+ }
5018
+
5019
+ message.permissions = ServerApiKeyPermissions.decode(reader, reader.uint32());
5020
+ continue;
5021
+ }
4632
5022
  }
4633
5023
  if ((tag & 7) === 4 || tag === 0) {
4634
5024
  break;
@@ -4642,7 +5032,10 @@ export const UpdateServerApiKeyRequest_ServerApiKeyUpdates: MessageFns<UpdateSer
4642
5032
  },
4643
5033
 
4644
5034
  fromJSON(object: any): UpdateServerApiKeyRequest_ServerApiKeyUpdates {
4645
- return { name: isSet(object.name) ? globalThis.String(object.name) : undefined };
5035
+ return {
5036
+ name: isSet(object.name) ? globalThis.String(object.name) : undefined,
5037
+ permissions: isSet(object.permissions) ? ServerApiKeyPermissions.fromJSON(object.permissions) : undefined,
5038
+ };
4646
5039
  },
4647
5040
 
4648
5041
  toJSON(message: UpdateServerApiKeyRequest_ServerApiKeyUpdates): unknown {
@@ -4650,6 +5043,9 @@ export const UpdateServerApiKeyRequest_ServerApiKeyUpdates: MessageFns<UpdateSer
4650
5043
  if (message.name !== undefined) {
4651
5044
  obj.name = message.name;
4652
5045
  }
5046
+ if (message.permissions !== undefined) {
5047
+ obj.permissions = ServerApiKeyPermissions.toJSON(message.permissions);
5048
+ }
4653
5049
  return obj;
4654
5050
  },
4655
5051
 
@@ -4663,6 +5059,9 @@ export const UpdateServerApiKeyRequest_ServerApiKeyUpdates: MessageFns<UpdateSer
4663
5059
  ): UpdateServerApiKeyRequest_ServerApiKeyUpdates {
4664
5060
  const message = createBaseUpdateServerApiKeyRequest_ServerApiKeyUpdates();
4665
5061
  message.name = object.name ?? undefined;
5062
+ message.permissions = (object.permissions !== undefined && object.permissions !== null)
5063
+ ? ServerApiKeyPermissions.fromPartial(object.permissions)
5064
+ : undefined;
4666
5065
  return message;
4667
5066
  },
4668
5067
  };
@@ -4938,6 +5337,107 @@ export const DeleteServerApiKeyResponse: MessageFns<DeleteServerApiKeyResponse>
4938
5337
  },
4939
5338
  };
4940
5339
 
5340
+ function createBaseServerApiKeyPermissions(): ServerApiKeyPermissions {
5341
+ return { read: false, write: false, ingest: false };
5342
+ }
5343
+
5344
+ export const ServerApiKeyPermissions: MessageFns<ServerApiKeyPermissions> = {
5345
+ encode(message: ServerApiKeyPermissions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
5346
+ if (message.read !== false) {
5347
+ writer.uint32(8).bool(message.read);
5348
+ }
5349
+ if (message.write !== false) {
5350
+ writer.uint32(16).bool(message.write);
5351
+ }
5352
+ if (message.ingest !== false) {
5353
+ writer.uint32(24).bool(message.ingest);
5354
+ }
5355
+ return writer;
5356
+ },
5357
+
5358
+ decode(input: BinaryReader | Uint8Array, length?: number): ServerApiKeyPermissions {
5359
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
5360
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
5361
+ if (previousRecursionDepth >= 100) {
5362
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
5363
+ }
5364
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
5365
+ try {
5366
+ const end = length === undefined ? reader.len : reader.pos + length;
5367
+ const message = createBaseServerApiKeyPermissions();
5368
+ while (reader.pos < end) {
5369
+ const tag = reader.uint32();
5370
+ switch (tag >>> 3) {
5371
+ case 1: {
5372
+ if (tag !== 8) {
5373
+ break;
5374
+ }
5375
+
5376
+ message.read = reader.bool();
5377
+ continue;
5378
+ }
5379
+ case 2: {
5380
+ if (tag !== 16) {
5381
+ break;
5382
+ }
5383
+
5384
+ message.write = reader.bool();
5385
+ continue;
5386
+ }
5387
+ case 3: {
5388
+ if (tag !== 24) {
5389
+ break;
5390
+ }
5391
+
5392
+ message.ingest = reader.bool();
5393
+ continue;
5394
+ }
5395
+ }
5396
+ if ((tag & 7) === 4 || tag === 0) {
5397
+ break;
5398
+ }
5399
+ reader.skip(tag & 7);
5400
+ }
5401
+ return message;
5402
+ } finally {
5403
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
5404
+ }
5405
+ },
5406
+
5407
+ fromJSON(object: any): ServerApiKeyPermissions {
5408
+ return {
5409
+ read: isSet(object.read) ? globalThis.Boolean(object.read) : false,
5410
+ write: isSet(object.write) ? globalThis.Boolean(object.write) : false,
5411
+ ingest: isSet(object.ingest) ? globalThis.Boolean(object.ingest) : false,
5412
+ };
5413
+ },
5414
+
5415
+ toJSON(message: ServerApiKeyPermissions): unknown {
5416
+ const obj: any = {};
5417
+ if (message.read !== false) {
5418
+ obj.read = message.read;
5419
+ }
5420
+ if (message.write !== false) {
5421
+ obj.write = message.write;
5422
+ }
5423
+ if (message.ingest !== false) {
5424
+ obj.ingest = message.ingest;
5425
+ }
5426
+ return obj;
5427
+ },
5428
+
5429
+ create<I extends Exact<DeepPartial<ServerApiKeyPermissions>, I>>(base?: I): ServerApiKeyPermissions {
5430
+ return ServerApiKeyPermissions.fromPartial(base ?? ({} as any));
5431
+ },
5432
+ fromPartial<I extends Exact<DeepPartial<ServerApiKeyPermissions>, I>>(object: I): ServerApiKeyPermissions {
5433
+ const message = createBaseServerApiKeyPermissions();
5434
+ message.read = object.read ?? false;
5435
+ message.write = object.write ?? false;
5436
+ message.ingest = object.ingest ?? false;
5437
+ return message;
5438
+ },
5439
+ };
5440
+
4941
5441
  function createBaseServerApiKey(): ServerApiKey {
4942
5442
  return {
4943
5443
  id: "",
@@ -4950,6 +5450,7 @@ function createBaseServerApiKey(): ServerApiKey {
4950
5450
  updatedAt: undefined,
4951
5451
  createdBy: "",
4952
5452
  lastUsedAt: undefined,
5453
+ permissions: undefined,
4953
5454
  };
4954
5455
  }
4955
5456
 
@@ -4985,6 +5486,9 @@ export const ServerApiKey: MessageFns<ServerApiKey> = {
4985
5486
  if (message.lastUsedAt !== undefined) {
4986
5487
  Timestamp.encode(toTimestamp(message.lastUsedAt), writer.uint32(82).fork()).join();
4987
5488
  }
5489
+ if (message.permissions !== undefined) {
5490
+ ServerApiKeyPermissions.encode(message.permissions, writer.uint32(90).fork()).join();
5491
+ }
4988
5492
  return writer;
4989
5493
  },
4990
5494
 
@@ -5081,6 +5585,14 @@ export const ServerApiKey: MessageFns<ServerApiKey> = {
5081
5585
  message.lastUsedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
5082
5586
  continue;
5083
5587
  }
5588
+ case 11: {
5589
+ if (tag !== 90) {
5590
+ break;
5591
+ }
5592
+
5593
+ message.permissions = ServerApiKeyPermissions.decode(reader, reader.uint32());
5594
+ continue;
5595
+ }
5084
5596
  }
5085
5597
  if ((tag & 7) === 4 || tag === 0) {
5086
5598
  break;
@@ -5129,6 +5641,7 @@ export const ServerApiKey: MessageFns<ServerApiKey> = {
5129
5641
  : isSet(object.last_used_at)
5130
5642
  ? fromJsonTimestamp(object.last_used_at)
5131
5643
  : undefined,
5644
+ permissions: isSet(object.permissions) ? ServerApiKeyPermissions.fromJSON(object.permissions) : undefined,
5132
5645
  };
5133
5646
  },
5134
5647
 
@@ -5164,6 +5677,9 @@ export const ServerApiKey: MessageFns<ServerApiKey> = {
5164
5677
  if (message.lastUsedAt !== undefined) {
5165
5678
  obj.lastUsedAt = message.lastUsedAt.toISOString();
5166
5679
  }
5680
+ if (message.permissions !== undefined) {
5681
+ obj.permissions = ServerApiKeyPermissions.toJSON(message.permissions);
5682
+ }
5167
5683
  return obj;
5168
5684
  },
5169
5685
 
@@ -5182,6 +5698,9 @@ export const ServerApiKey: MessageFns<ServerApiKey> = {
5182
5698
  message.updatedAt = object.updatedAt ?? undefined;
5183
5699
  message.createdBy = object.createdBy ?? "";
5184
5700
  message.lastUsedAt = object.lastUsedAt ?? undefined;
5701
+ message.permissions = (object.permissions !== undefined && object.permissions !== null)
5702
+ ? ServerApiKeyPermissions.fromPartial(object.permissions)
5703
+ : undefined;
5185
5704
  return message;
5186
5705
  },
5187
5706
  };
@@ -8552,11 +9071,232 @@ export const RevokeCliSessionResponse: MessageFns<RevokeCliSessionResponse> = {
8552
9071
  },
8553
9072
  };
8554
9073
 
9074
+ function createBaseProductFeatures(): ProductFeatures {
9075
+ return { betaInviteEnabled: false };
9076
+ }
9077
+
9078
+ export const ProductFeatures: MessageFns<ProductFeatures> = {
9079
+ encode(message: ProductFeatures, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
9080
+ if (message.betaInviteEnabled !== false) {
9081
+ writer.uint32(8).bool(message.betaInviteEnabled);
9082
+ }
9083
+ return writer;
9084
+ },
9085
+
9086
+ decode(input: BinaryReader | Uint8Array, length?: number): ProductFeatures {
9087
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
9088
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
9089
+ if (previousRecursionDepth >= 100) {
9090
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
9091
+ }
9092
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
9093
+ try {
9094
+ const end = length === undefined ? reader.len : reader.pos + length;
9095
+ const message = createBaseProductFeatures();
9096
+ while (reader.pos < end) {
9097
+ const tag = reader.uint32();
9098
+ switch (tag >>> 3) {
9099
+ case 1: {
9100
+ if (tag !== 8) {
9101
+ break;
9102
+ }
9103
+
9104
+ message.betaInviteEnabled = reader.bool();
9105
+ continue;
9106
+ }
9107
+ }
9108
+ if ((tag & 7) === 4 || tag === 0) {
9109
+ break;
9110
+ }
9111
+ reader.skip(tag & 7);
9112
+ }
9113
+ return message;
9114
+ } finally {
9115
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
9116
+ }
9117
+ },
9118
+
9119
+ fromJSON(object: any): ProductFeatures {
9120
+ return {
9121
+ betaInviteEnabled: isSet(object.betaInviteEnabled)
9122
+ ? globalThis.Boolean(object.betaInviteEnabled)
9123
+ : isSet(object.beta_invite_enabled)
9124
+ ? globalThis.Boolean(object.beta_invite_enabled)
9125
+ : false,
9126
+ };
9127
+ },
9128
+
9129
+ toJSON(message: ProductFeatures): unknown {
9130
+ const obj: any = {};
9131
+ if (message.betaInviteEnabled !== false) {
9132
+ obj.betaInviteEnabled = message.betaInviteEnabled;
9133
+ }
9134
+ return obj;
9135
+ },
9136
+
9137
+ create<I extends Exact<DeepPartial<ProductFeatures>, I>>(base?: I): ProductFeatures {
9138
+ return ProductFeatures.fromPartial(base ?? ({} as any));
9139
+ },
9140
+ fromPartial<I extends Exact<DeepPartial<ProductFeatures>, I>>(object: I): ProductFeatures {
9141
+ const message = createBaseProductFeatures();
9142
+ message.betaInviteEnabled = object.betaInviteEnabled ?? false;
9143
+ return message;
9144
+ },
9145
+ };
9146
+
9147
+ function createBaseGetProductFeaturesRequest(): GetProductFeaturesRequest {
9148
+ return {};
9149
+ }
9150
+
9151
+ export const GetProductFeaturesRequest: MessageFns<GetProductFeaturesRequest> = {
9152
+ encode(_: GetProductFeaturesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
9153
+ return writer;
9154
+ },
9155
+
9156
+ decode(input: BinaryReader | Uint8Array, length?: number): GetProductFeaturesRequest {
9157
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
9158
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
9159
+ if (previousRecursionDepth >= 100) {
9160
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
9161
+ }
9162
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
9163
+ try {
9164
+ const end = length === undefined ? reader.len : reader.pos + length;
9165
+ const message = createBaseGetProductFeaturesRequest();
9166
+ while (reader.pos < end) {
9167
+ const tag = reader.uint32();
9168
+ switch (tag >>> 3) {
9169
+ }
9170
+ if ((tag & 7) === 4 || tag === 0) {
9171
+ break;
9172
+ }
9173
+ reader.skip(tag & 7);
9174
+ }
9175
+ return message;
9176
+ } finally {
9177
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
9178
+ }
9179
+ },
9180
+
9181
+ fromJSON(_: any): GetProductFeaturesRequest {
9182
+ return {};
9183
+ },
9184
+
9185
+ toJSON(_: GetProductFeaturesRequest): unknown {
9186
+ const obj: any = {};
9187
+ return obj;
9188
+ },
9189
+
9190
+ create<I extends Exact<DeepPartial<GetProductFeaturesRequest>, I>>(base?: I): GetProductFeaturesRequest {
9191
+ return GetProductFeaturesRequest.fromPartial(base ?? ({} as any));
9192
+ },
9193
+ fromPartial<I extends Exact<DeepPartial<GetProductFeaturesRequest>, I>>(_: I): GetProductFeaturesRequest {
9194
+ const message = createBaseGetProductFeaturesRequest();
9195
+ return message;
9196
+ },
9197
+ };
9198
+
9199
+ function createBaseGetProductFeaturesResponse(): GetProductFeaturesResponse {
9200
+ return { status: undefined, features: undefined };
9201
+ }
9202
+
9203
+ export const GetProductFeaturesResponse: MessageFns<GetProductFeaturesResponse> = {
9204
+ encode(message: GetProductFeaturesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
9205
+ if (message.status !== undefined) {
9206
+ ResponseStatus.encode(message.status, writer.uint32(10).fork()).join();
9207
+ }
9208
+ if (message.features !== undefined) {
9209
+ ProductFeatures.encode(message.features, writer.uint32(18).fork()).join();
9210
+ }
9211
+ return writer;
9212
+ },
9213
+
9214
+ decode(input: BinaryReader | Uint8Array, length?: number): GetProductFeaturesResponse {
9215
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
9216
+ const previousRecursionDepth = (reader as any).__tsProtoDecodeDepth ?? 0;
9217
+ if (previousRecursionDepth >= 100) {
9218
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
9219
+ }
9220
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth + 1;
9221
+ try {
9222
+ const end = length === undefined ? reader.len : reader.pos + length;
9223
+ const message = createBaseGetProductFeaturesResponse();
9224
+ while (reader.pos < end) {
9225
+ const tag = reader.uint32();
9226
+ switch (tag >>> 3) {
9227
+ case 1: {
9228
+ if (tag !== 10) {
9229
+ break;
9230
+ }
9231
+
9232
+ message.status = ResponseStatus.decode(reader, reader.uint32());
9233
+ continue;
9234
+ }
9235
+ case 2: {
9236
+ if (tag !== 18) {
9237
+ break;
9238
+ }
9239
+
9240
+ message.features = ProductFeatures.decode(reader, reader.uint32());
9241
+ continue;
9242
+ }
9243
+ }
9244
+ if ((tag & 7) === 4 || tag === 0) {
9245
+ break;
9246
+ }
9247
+ reader.skip(tag & 7);
9248
+ }
9249
+ return message;
9250
+ } finally {
9251
+ (reader as any).__tsProtoDecodeDepth = previousRecursionDepth;
9252
+ }
9253
+ },
9254
+
9255
+ fromJSON(object: any): GetProductFeaturesResponse {
9256
+ return {
9257
+ status: isSet(object.status) ? ResponseStatus.fromJSON(object.status) : undefined,
9258
+ features: isSet(object.features) ? ProductFeatures.fromJSON(object.features) : undefined,
9259
+ };
9260
+ },
9261
+
9262
+ toJSON(message: GetProductFeaturesResponse): unknown {
9263
+ const obj: any = {};
9264
+ if (message.status !== undefined) {
9265
+ obj.status = ResponseStatus.toJSON(message.status);
9266
+ }
9267
+ if (message.features !== undefined) {
9268
+ obj.features = ProductFeatures.toJSON(message.features);
9269
+ }
9270
+ return obj;
9271
+ },
9272
+
9273
+ create<I extends Exact<DeepPartial<GetProductFeaturesResponse>, I>>(base?: I): GetProductFeaturesResponse {
9274
+ return GetProductFeaturesResponse.fromPartial(base ?? ({} as any));
9275
+ },
9276
+ fromPartial<I extends Exact<DeepPartial<GetProductFeaturesResponse>, I>>(object: I): GetProductFeaturesResponse {
9277
+ const message = createBaseGetProductFeaturesResponse();
9278
+ message.status = (object.status !== undefined && object.status !== null)
9279
+ ? ResponseStatus.fromPartial(object.status)
9280
+ : undefined;
9281
+ message.features = (object.features !== undefined && object.features !== null)
9282
+ ? ProductFeatures.fromPartial(object.features)
9283
+ : undefined;
9284
+ return message;
9285
+ },
9286
+ };
9287
+
8555
9288
  export interface AccountGatewayService {
8556
9289
  /** Authentication */
8557
9290
  Logon(request: LogonRequest, metadata?: Metadata): Promise<LogonResponse>;
9291
+ /**
9292
+ * GetProductFeatures returns this gateway's product feature flags (e.g. beta-invite gating). The
9293
+ * product is the gateway's fixed deployment identity, never a request field. Public: the pre-auth
9294
+ * signup page reads it to decide whether to show the invite-code gate.
9295
+ */
9296
+ GetProductFeatures(request: GetProductFeaturesRequest, metadata?: Metadata): Promise<GetProductFeaturesResponse>;
8558
9297
  /** Project operations */
8559
9298
  CreateProject(request: CreateProjectRequest, metadata?: Metadata): Promise<CreateProjectResponse>;
9299
+ RevealServerApiKey(request: RevealServerApiKeyRequest, metadata?: Metadata): Promise<RevealServerApiKeyResponse>;
8560
9300
  ListProjects(request: ListProjectsRequest, metadata?: Metadata): Promise<ListProjectsResponse>;
8561
9301
  UpdateProject(request: UpdateProjectRequest, metadata?: Metadata): Promise<UpdateProjectResponse>;
8562
9302
  DeleteProject(request: DeleteProjectRequest, metadata?: Metadata): Promise<DeleteProjectResponse>;
@@ -8609,7 +9349,9 @@ export class AccountGatewayServiceClientImpl implements AccountGatewayService {
8609
9349
  this.service = opts?.service || AccountGatewayServiceServiceName;
8610
9350
  this.rpc = rpc;
8611
9351
  this.Logon = this.Logon.bind(this);
9352
+ this.GetProductFeatures = this.GetProductFeatures.bind(this);
8612
9353
  this.CreateProject = this.CreateProject.bind(this);
9354
+ this.RevealServerApiKey = this.RevealServerApiKey.bind(this);
8613
9355
  this.ListProjects = this.ListProjects.bind(this);
8614
9356
  this.UpdateProject = this.UpdateProject.bind(this);
8615
9357
  this.DeleteProject = this.DeleteProject.bind(this);
@@ -8645,12 +9387,24 @@ export class AccountGatewayServiceClientImpl implements AccountGatewayService {
8645
9387
  return promise.then((data) => LogonResponse.decode(new BinaryReader(data)));
8646
9388
  }
8647
9389
 
9390
+ GetProductFeatures(request: GetProductFeaturesRequest, metadata?: Metadata): Promise<GetProductFeaturesResponse> {
9391
+ const data = GetProductFeaturesRequest.encode(request).finish();
9392
+ const promise = this.rpc.request(this.service, "GetProductFeatures", data, metadata);
9393
+ return promise.then((data) => GetProductFeaturesResponse.decode(new BinaryReader(data)));
9394
+ }
9395
+
8648
9396
  CreateProject(request: CreateProjectRequest, metadata?: Metadata): Promise<CreateProjectResponse> {
8649
9397
  const data = CreateProjectRequest.encode(request).finish();
8650
9398
  const promise = this.rpc.request(this.service, "CreateProject", data, metadata);
8651
9399
  return promise.then((data) => CreateProjectResponse.decode(new BinaryReader(data)));
8652
9400
  }
8653
9401
 
9402
+ RevealServerApiKey(request: RevealServerApiKeyRequest, metadata?: Metadata): Promise<RevealServerApiKeyResponse> {
9403
+ const data = RevealServerApiKeyRequest.encode(request).finish();
9404
+ const promise = this.rpc.request(this.service, "RevealServerApiKey", data, metadata);
9405
+ return promise.then((data) => RevealServerApiKeyResponse.decode(new BinaryReader(data)));
9406
+ }
9407
+
8654
9408
  ListProjects(request: ListProjectsRequest, metadata?: Metadata): Promise<ListProjectsResponse> {
8655
9409
  const data = ListProjectsRequest.encode(request).finish();
8656
9410
  const promise = this.rpc.request(this.service, "ListProjects", data, metadata);