shoal-web-sdk 0.0.105 → 0.0.107

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.
@@ -1,6 +1,6 @@
1
1
  import { type InfiniteData, type UseMutationOptions } from '@tanstack/react-query';
2
2
  import { type Options } from '../sdk.gen';
3
- import type { CreateEnvironmentData, CreateEnvironmentError, CreateEnvironmentResponse, CreateProjectData, CreateProjectError, CreateProjectResponse, CreateSetupIntentData, CreateSetupIntentError, CreateSetupIntentResponse, CreateSpaceData, CreateSpaceError, CreateSpaceInviteData, CreateSpaceInviteError, CreateSpaceInviteResponse, CreateSpaceResponse, CreateUsernameData, CreateUsernameError, DeleteAccountIdentityData, DeleteAccountIdentityError, DeleteAccountIdentityResponse, DeployVersionData, DeployVersionError, FetchGraphM2mData, FetchKindeOrganisationBillingAgreementsData, GetBillingPlanData, GetBillingUsageData, GetConnectedAppUrlData, GetEnvironmentOverviewData, GetGraphOverviewData, GetProjectOverviewData, GetServiceHealthData, GetSpaceInvitesData, GetSpaceOrgCodeData, GetSpaceOverviewData, GetUserIdentitiesData, GetUserInvitesData, GetUserProfileData, JoinSpaceData, JoinSpaceError, LeaveSpaceData, LeaveSpaceError, ListInstallationBranchesData, ListInstallationRepositoriesData, ListPaymentMethodsData, ListSpaceMemberRolesData, ListSpaceMembersData, ListUserInstallationsData, ListUserSpacesData, RejectSpaceInviteData, RejectSpaceInviteError, RejectSpaceInviteResponse, RemovePaymentMethodData, RemovePaymentMethodError, RemovePaymentMethodResponse, RequestAccountPasswordResetData, RequestAccountPasswordResetError, RequestSignedUploadUrlData, RevokeSpaceInviteData, RevokeSpaceInviteError, RevokeSpaceInviteResponse, SetDefaultPaymentMethodData, SetDefaultPaymentMethodError, SetDefaultPaymentMethodResponse, UpdateBillingPlanData, UpdateBillingPlanError, UpdateConnectedAppTokenData, UpdateConnectedAppTokenError, UpdateGraphStateData, UpdateGraphStateError, UpdateUsernameData, UpdateUsernameError, UpdateUserProfileData, UpdateUserProfileError } from '../types.gen';
3
+ import type { CreateEnvironmentData, CreateEnvironmentError, CreateEnvironmentResponse, CreateProjectData, CreateProjectError, CreateProjectResponse, CreateSetupIntentData, CreateSetupIntentError, CreateSetupIntentResponse, CreateSpaceData, CreateSpaceError, CreateSpaceInviteData, CreateSpaceInviteError, CreateSpaceInviteResponse, CreateSpaceResponse, CreateUsernameData, CreateUsernameError, DeleteAccountIdentityData, DeleteAccountIdentityError, DeleteAccountIdentityResponse, DeployVersionData, DeployVersionError, FetchBillingPricesData, FetchGraphM2mData, FetchKindeOrganisationBillingAgreementsData, GetBillingPlanData, GetBillingUsageData, GetConnectedAppUrlData, GetEnvironmentOverviewData, GetGraphOverviewData, GetProjectOverviewData, GetServiceHealthData, GetSpaceInvitesData, GetSpaceOrgCodeData, GetSpaceOverviewData, GetUserIdentitiesData, GetUserInvitesData, GetUserProfileData, JoinSpaceData, JoinSpaceError, LeaveSpaceData, LeaveSpaceError, ListInstallationBranchesData, ListInstallationRepositoriesData, ListPaymentMethodsData, ListSpaceMemberRolesData, ListSpaceMembersData, ListUserInstallationsData, ListUserSpacesData, RecordCloudUsageData, RecordCloudUsageError, RejectSpaceInviteData, RejectSpaceInviteError, RejectSpaceInviteResponse, RemovePaymentMethodData, RemovePaymentMethodError, RemovePaymentMethodResponse, RequestAccountPasswordResetData, RequestAccountPasswordResetError, RequestSignedUploadUrlData, RevokeSpaceInviteData, RevokeSpaceInviteError, RevokeSpaceInviteResponse, SetDefaultPaymentMethodData, SetDefaultPaymentMethodError, SetDefaultPaymentMethodResponse, UpdateBillingPlanData, UpdateBillingPlanError, UpdateConnectedAppTokenData, UpdateConnectedAppTokenError, UpdateGraphStateData, UpdateGraphStateError, UpdateUsernameData, UpdateUsernameError, UpdateUserProfileData, UpdateUserProfileError } from '../types.gen';
4
4
  export type QueryKey<TOptions extends Options> = [
5
5
  Pick<TOptions, 'baseUrl' | 'body' | 'headers' | 'path' | 'query'> & {
6
6
  _id: string;
@@ -800,6 +800,10 @@ export declare const requestSignedUploadUrlOptions: (options: Options<RequestSig
800
800
  [dataTagErrorSymbol]: Error;
801
801
  };
802
802
  };
803
+ /**
804
+ * Record a cloud usage event for a space (M2M only).
805
+ */
806
+ export declare const recordCloudUsageMutation: (options?: Partial<Options<RecordCloudUsageData>>) => UseMutationOptions<unknown, RecordCloudUsageError, Options<RecordCloudUsageData>>;
803
807
  export declare const getBillingPlanQueryKey: (options: Options<GetBillingPlanData>) => [Pick<Options<GetBillingPlanData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
804
808
  _id: string;
805
809
  _infinite?: boolean;
@@ -900,3 +904,31 @@ export declare const getBillingUsageOptions: (options: Options<GetBillingUsageDa
900
904
  [dataTagErrorSymbol]: Error;
901
905
  };
902
906
  };
907
+ export declare const fetchBillingPricesQueryKey: (options: Options<FetchBillingPricesData>) => [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
908
+ _id: string;
909
+ _infinite?: boolean;
910
+ tags?: ReadonlyArray<string>;
911
+ }];
912
+ /**
913
+ * Fetch live unit prices for all paid plans from Stripe.
914
+ */
915
+ export declare const fetchBillingPricesOptions: (options: Options<FetchBillingPricesData>) => import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("../types.gen").PlanPriceResponse[], Error, import("../types.gen").PlanPriceResponse[], [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
916
+ _id: string;
917
+ _infinite?: boolean;
918
+ tags?: ReadonlyArray<string>;
919
+ }]>, "queryFn"> & {
920
+ queryFn?: import("@tanstack/react-query").QueryFunction<import("../types.gen").PlanPriceResponse[], [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
921
+ _id: string;
922
+ _infinite?: boolean;
923
+ tags?: ReadonlyArray<string>;
924
+ }], never> | undefined;
925
+ } & {
926
+ queryKey: [Pick<Options<FetchBillingPricesData>, "query" | "body" | "headers" | "path" | "baseUrl"> & {
927
+ _id: string;
928
+ _infinite?: boolean;
929
+ tags?: ReadonlyArray<string>;
930
+ }] & {
931
+ [dataTagSymbol]: import("../types.gen").PlanPriceResponse[];
932
+ [dataTagErrorSymbol]: Error;
933
+ };
934
+ };
@@ -1,7 +1,7 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
2
  import { infiniteQueryOptions, queryOptions } from '@tanstack/react-query';
3
3
  import { client } from '../client.gen';
4
- import { createEnvironment, createProject, createSetupIntent, createSpace, createSpaceInvite, createUsername, deleteAccountIdentity, deployVersion, fetchGraphM2M, fetchKindeOrganisationBillingAgreements, getBillingPlan, getBillingUsage, getConnectedAppUrl, getEnvironmentOverview, getGraphOverview, getProjectOverview, getServiceHealth, getSpaceInvites, getSpaceOrgCode, getSpaceOverview, getUserIdentities, getUserInvites, getUserProfile, joinSpace, leaveSpace, listInstallationBranches, listInstallationRepositories, listPaymentMethods, listSpaceMemberRoles, listSpaceMembers, listUserInstallations, listUserSpaces, rejectSpaceInvite, removePaymentMethod, requestAccountPasswordReset, requestSignedUploadUrl, revokeSpaceInvite, setDefaultPaymentMethod, updateBillingPlan, updateConnectedAppToken, updateGraphState, updateUsername, updateUserProfile } from '../sdk.gen';
4
+ import { createEnvironment, createProject, createSetupIntent, createSpace, createSpaceInvite, createUsername, deleteAccountIdentity, deployVersion, fetchBillingPrices, fetchGraphM2M, fetchKindeOrganisationBillingAgreements, getBillingPlan, getBillingUsage, getConnectedAppUrl, getEnvironmentOverview, getGraphOverview, getProjectOverview, getServiceHealth, getSpaceInvites, getSpaceOrgCode, getSpaceOverview, getUserIdentities, getUserInvites, getUserProfile, joinSpace, leaveSpace, listInstallationBranches, listInstallationRepositories, listPaymentMethods, listSpaceMemberRoles, listSpaceMembers, listUserInstallations, listUserSpaces, recordCloudUsage, rejectSpaceInvite, removePaymentMethod, requestAccountPasswordReset, requestSignedUploadUrl, revokeSpaceInvite, setDefaultPaymentMethod, updateBillingPlan, updateConnectedAppToken, updateGraphState, updateUsername, updateUserProfile } from '../sdk.gen';
5
5
  const createQueryKey = (id, options, infinite, tags) => {
6
6
  const params = { _id: id, baseUrl: options?.baseUrl || (options?.client ?? client).getConfig().baseUrl };
7
7
  if (infinite) {
@@ -861,6 +861,22 @@ export const requestSignedUploadUrlOptions = (options) => {
861
861
  queryKey: requestSignedUploadUrlQueryKey(options)
862
862
  });
863
863
  };
864
+ /**
865
+ * Record a cloud usage event for a space (M2M only).
866
+ */
867
+ export const recordCloudUsageMutation = (options) => {
868
+ const mutationOptions = {
869
+ mutationFn: async (fnOptions) => {
870
+ const { data } = await recordCloudUsage({
871
+ ...options,
872
+ ...fnOptions,
873
+ throwOnError: true
874
+ });
875
+ return data;
876
+ }
877
+ };
878
+ return mutationOptions;
879
+ };
864
880
  export const getBillingPlanQueryKey = (options) => createQueryKey('getBillingPlan', options);
865
881
  /**
866
882
  * Get the current billing plan for a space.
@@ -979,3 +995,21 @@ export const getBillingUsageOptions = (options) => {
979
995
  queryKey: getBillingUsageQueryKey(options)
980
996
  });
981
997
  };
998
+ export const fetchBillingPricesQueryKey = (options) => createQueryKey('fetchBillingPrices', options);
999
+ /**
1000
+ * Fetch live unit prices for all paid plans from Stripe.
1001
+ */
1002
+ export const fetchBillingPricesOptions = (options) => {
1003
+ return queryOptions({
1004
+ queryFn: async ({ queryKey, signal }) => {
1005
+ const { data } = await fetchBillingPrices({
1006
+ ...options,
1007
+ ...queryKey[0],
1008
+ signal,
1009
+ throwOnError: true
1010
+ });
1011
+ return data;
1012
+ },
1013
+ queryKey: fetchBillingPricesQueryKey(options)
1014
+ });
1015
+ };
@@ -1,5 +1,5 @@
1
1
  import type { Client, Options as Options2, TDataShape } from './client';
2
- import type { CreateEnvironmentData, CreateEnvironmentErrors, CreateEnvironmentResponses, CreateProjectData, CreateProjectErrors, CreateProjectResponses, CreateSetupIntentData, CreateSetupIntentErrors, CreateSetupIntentResponses, CreateSpaceData, CreateSpaceErrors, CreateSpaceInviteData, CreateSpaceInviteErrors, CreateSpaceInviteResponses, CreateSpaceResponses, CreateUsernameData, CreateUsernameErrors, CreateUsernameResponses, DeleteAccountIdentityData, DeleteAccountIdentityErrors, DeleteAccountIdentityResponses, DeployVersionData, DeployVersionErrors, DeployVersionResponses, FetchGraphM2mData, FetchGraphM2mErrors, FetchGraphM2mResponses, FetchKindeOrganisationBillingAgreementsData, FetchKindeOrganisationBillingAgreementsErrors, FetchKindeOrganisationBillingAgreementsResponses, GetBillingPlanData, GetBillingPlanErrors, GetBillingPlanResponses, GetBillingUsageData, GetBillingUsageErrors, GetBillingUsageResponses, GetConnectedAppUrlData, GetConnectedAppUrlErrors, GetConnectedAppUrlResponses, GetEnvironmentOverviewData, GetEnvironmentOverviewErrors, GetEnvironmentOverviewResponses, GetGraphOverviewData, GetGraphOverviewErrors, GetGraphOverviewResponses, GetProjectOverviewData, GetProjectOverviewErrors, GetProjectOverviewResponses, GetServiceHealthData, GetServiceHealthResponses, GetSpaceInvitesData, GetSpaceInvitesErrors, GetSpaceInvitesResponses, GetSpaceOrgCodeData, GetSpaceOrgCodeErrors, GetSpaceOrgCodeResponses, GetSpaceOverviewData, GetSpaceOverviewErrors, GetSpaceOverviewResponses, GetUserIdentitiesData, GetUserIdentitiesErrors, GetUserIdentitiesResponses, GetUserInvitesData, GetUserInvitesErrors, GetUserInvitesResponses, GetUserProfileData, GetUserProfileErrors, GetUserProfileResponses, JoinSpaceData, JoinSpaceErrors, JoinSpaceResponses, LeaveSpaceData, LeaveSpaceErrors, LeaveSpaceResponses, ListInstallationBranchesData, ListInstallationBranchesErrors, ListInstallationBranchesResponses, ListInstallationRepositoriesData, ListInstallationRepositoriesErrors, ListInstallationRepositoriesResponses, ListPaymentMethodsData, ListPaymentMethodsErrors, ListPaymentMethodsResponses, ListSpaceMemberRolesData, ListSpaceMemberRolesErrors, ListSpaceMemberRolesResponses, ListSpaceMembersData, ListSpaceMembersErrors, ListSpaceMembersResponses, ListUserInstallationsData, ListUserInstallationsErrors, ListUserInstallationsResponses, ListUserSpacesData, ListUserSpacesErrors, ListUserSpacesResponses, RejectSpaceInviteData, RejectSpaceInviteErrors, RejectSpaceInviteResponses, RemovePaymentMethodData, RemovePaymentMethodErrors, RemovePaymentMethodResponses, RequestAccountPasswordResetData, RequestAccountPasswordResetErrors, RequestAccountPasswordResetResponses, RequestSignedUploadUrlData, RequestSignedUploadUrlErrors, RequestSignedUploadUrlResponses, RevokeSpaceInviteData, RevokeSpaceInviteErrors, RevokeSpaceInviteResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodErrors, SetDefaultPaymentMethodResponses, UpdateBillingPlanData, UpdateBillingPlanErrors, UpdateBillingPlanResponses, UpdateConnectedAppTokenData, UpdateConnectedAppTokenErrors, UpdateConnectedAppTokenResponses, UpdateGraphStateData, UpdateGraphStateErrors, UpdateGraphStateResponses, UpdateUsernameData, UpdateUsernameErrors, UpdateUsernameResponses, UpdateUserProfileData, UpdateUserProfileErrors, UpdateUserProfileResponses } from './types.gen';
2
+ import type { CreateEnvironmentData, CreateEnvironmentErrors, CreateEnvironmentResponses, CreateProjectData, CreateProjectErrors, CreateProjectResponses, CreateSetupIntentData, CreateSetupIntentErrors, CreateSetupIntentResponses, CreateSpaceData, CreateSpaceErrors, CreateSpaceInviteData, CreateSpaceInviteErrors, CreateSpaceInviteResponses, CreateSpaceResponses, CreateUsernameData, CreateUsernameErrors, CreateUsernameResponses, DeleteAccountIdentityData, DeleteAccountIdentityErrors, DeleteAccountIdentityResponses, DeployVersionData, DeployVersionErrors, DeployVersionResponses, FetchBillingPricesData, FetchBillingPricesErrors, FetchBillingPricesResponses, FetchGraphM2mData, FetchGraphM2mErrors, FetchGraphM2mResponses, FetchKindeOrganisationBillingAgreementsData, FetchKindeOrganisationBillingAgreementsErrors, FetchKindeOrganisationBillingAgreementsResponses, GetBillingPlanData, GetBillingPlanErrors, GetBillingPlanResponses, GetBillingUsageData, GetBillingUsageErrors, GetBillingUsageResponses, GetConnectedAppUrlData, GetConnectedAppUrlErrors, GetConnectedAppUrlResponses, GetEnvironmentOverviewData, GetEnvironmentOverviewErrors, GetEnvironmentOverviewResponses, GetGraphOverviewData, GetGraphOverviewErrors, GetGraphOverviewResponses, GetProjectOverviewData, GetProjectOverviewErrors, GetProjectOverviewResponses, GetServiceHealthData, GetServiceHealthResponses, GetSpaceInvitesData, GetSpaceInvitesErrors, GetSpaceInvitesResponses, GetSpaceOrgCodeData, GetSpaceOrgCodeErrors, GetSpaceOrgCodeResponses, GetSpaceOverviewData, GetSpaceOverviewErrors, GetSpaceOverviewResponses, GetUserIdentitiesData, GetUserIdentitiesErrors, GetUserIdentitiesResponses, GetUserInvitesData, GetUserInvitesErrors, GetUserInvitesResponses, GetUserProfileData, GetUserProfileErrors, GetUserProfileResponses, JoinSpaceData, JoinSpaceErrors, JoinSpaceResponses, LeaveSpaceData, LeaveSpaceErrors, LeaveSpaceResponses, ListInstallationBranchesData, ListInstallationBranchesErrors, ListInstallationBranchesResponses, ListInstallationRepositoriesData, ListInstallationRepositoriesErrors, ListInstallationRepositoriesResponses, ListPaymentMethodsData, ListPaymentMethodsErrors, ListPaymentMethodsResponses, ListSpaceMemberRolesData, ListSpaceMemberRolesErrors, ListSpaceMemberRolesResponses, ListSpaceMembersData, ListSpaceMembersErrors, ListSpaceMembersResponses, ListUserInstallationsData, ListUserInstallationsErrors, ListUserInstallationsResponses, ListUserSpacesData, ListUserSpacesErrors, ListUserSpacesResponses, RecordCloudUsageData, RecordCloudUsageErrors, RecordCloudUsageResponses, RejectSpaceInviteData, RejectSpaceInviteErrors, RejectSpaceInviteResponses, RemovePaymentMethodData, RemovePaymentMethodErrors, RemovePaymentMethodResponses, RequestAccountPasswordResetData, RequestAccountPasswordResetErrors, RequestAccountPasswordResetResponses, RequestSignedUploadUrlData, RequestSignedUploadUrlErrors, RequestSignedUploadUrlResponses, RevokeSpaceInviteData, RevokeSpaceInviteErrors, RevokeSpaceInviteResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodErrors, SetDefaultPaymentMethodResponses, UpdateBillingPlanData, UpdateBillingPlanErrors, UpdateBillingPlanResponses, UpdateConnectedAppTokenData, UpdateConnectedAppTokenErrors, UpdateConnectedAppTokenResponses, UpdateGraphStateData, UpdateGraphStateErrors, UpdateGraphStateResponses, UpdateUsernameData, UpdateUsernameErrors, UpdateUsernameResponses, UpdateUserProfileData, UpdateUserProfileErrors, UpdateUserProfileResponses } from './types.gen';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -157,6 +157,10 @@ export declare const deployVersion: <ThrowOnError extends boolean = false>(optio
157
157
  * Request a signed upload URL to upload source code zip files.
158
158
  */
159
159
  export declare const requestSignedUploadUrl: <ThrowOnError extends boolean = false>(options: Options<RequestSignedUploadUrlData, ThrowOnError>) => import("./client").RequestResult<RequestSignedUploadUrlResponses, RequestSignedUploadUrlErrors, ThrowOnError, "fields">;
160
+ /**
161
+ * Record a cloud usage event for a space (M2M only).
162
+ */
163
+ export declare const recordCloudUsage: <ThrowOnError extends boolean = false>(options: Options<RecordCloudUsageData, ThrowOnError>) => import("./client").RequestResult<RecordCloudUsageResponses, RecordCloudUsageErrors, ThrowOnError, "fields">;
160
164
  /**
161
165
  * Get the current billing plan for a space.
162
166
  */
@@ -185,3 +189,7 @@ export declare const setDefaultPaymentMethod: <ThrowOnError extends boolean = fa
185
189
  * Get metered cloud usage for the current billing period.
186
190
  */
187
191
  export declare const getBillingUsage: <ThrowOnError extends boolean = false>(options: Options<GetBillingUsageData, ThrowOnError>) => import("./client").RequestResult<GetBillingUsageResponses, GetBillingUsageErrors, ThrowOnError, "fields">;
192
+ /**
193
+ * Fetch live unit prices for all paid plans from Stripe.
194
+ */
195
+ export declare const fetchBillingPrices: <ThrowOnError extends boolean = false>(options: Options<FetchBillingPricesData, ThrowOnError>) => import("./client").RequestResult<FetchBillingPricesResponses, FetchBillingPricesErrors, ThrowOnError, "fields">;
@@ -572,6 +572,25 @@ export const requestSignedUploadUrl = (options) => {
572
572
  ...options
573
573
  });
574
574
  };
575
+ /**
576
+ * Record a cloud usage event for a space (M2M only).
577
+ */
578
+ export const recordCloudUsage = (options) => {
579
+ return (options.client ?? client).post({
580
+ security: [
581
+ {
582
+ scheme: 'bearer',
583
+ type: 'http'
584
+ }
585
+ ],
586
+ url: '/m2m/billing/usage/record',
587
+ ...options,
588
+ headers: {
589
+ 'Content-Type': 'application/json',
590
+ ...options.headers
591
+ }
592
+ });
593
+ };
575
594
  /**
576
595
  * Get the current billing plan for a space.
577
596
  */
@@ -681,3 +700,18 @@ export const getBillingUsage = (options) => {
681
700
  ...options
682
701
  });
683
702
  };
703
+ /**
704
+ * Fetch live unit prices for all paid plans from Stripe.
705
+ */
706
+ export const fetchBillingPrices = (options) => {
707
+ return (options.client ?? client).get({
708
+ security: [
709
+ {
710
+ scheme: 'bearer',
711
+ type: 'http'
712
+ }
713
+ ],
714
+ url: '/auth/{spaceHandle}/billing/prices',
715
+ ...options
716
+ });
717
+ };
@@ -47,7 +47,7 @@ export type CreateInvite = {
47
47
  export type CreateSpace = {
48
48
  name: string;
49
49
  handle: string;
50
- billingPlanCode: string;
50
+ billingPlanCode: 'free-monthly' | 'hobby-monthly' | 'hobby-annual' | 'pro-monthly' | 'pro-annual';
51
51
  };
52
52
  export type CreateEnvironment = {
53
53
  name: string;
@@ -359,7 +359,10 @@ export type BillingPlan = {
359
359
  entitlements: Array<string>;
360
360
  };
361
361
  export type UpdatePlanRequest = {
362
- priceId: string;
362
+ /**
363
+ * Stripe price lookup key (e.g. "hobby-monthly"). Empty string = Free tier.
364
+ */
365
+ lookup_key: string;
363
366
  };
364
367
  export type PaymentMethod = {
365
368
  id: string;
@@ -375,6 +378,38 @@ export type SetupIntentResponse = {
375
378
  export type BillingUsage = {
376
379
  totalUnits: number;
377
380
  };
381
+ export type RecordUsageRequest = {
382
+ /**
383
+ * The Kinde organisation code for the space.
384
+ */
385
+ orgCode: string;
386
+ /**
387
+ * Usage quantity to record.
388
+ */
389
+ quantity: number;
390
+ /**
391
+ * Unix timestamp (seconds) at which the usage occurred. Defaults to now if omitted.
392
+ */
393
+ timestamp?: number;
394
+ };
395
+ export type PlanPriceResponse = {
396
+ /**
397
+ * Plan code (e.g. "hobby-monthly", "pro-annual").
398
+ */
399
+ code: string;
400
+ /**
401
+ * Price per seat in the smallest currency unit (e.g. cents).
402
+ */
403
+ unit_amount_cents: number;
404
+ /**
405
+ * ISO 4217 currency code (e.g. "usd").
406
+ */
407
+ currency: string;
408
+ /**
409
+ * Billing interval ("month" or "year").
410
+ */
411
+ interval: string;
412
+ };
378
413
  /**
379
414
  * Expiry query.
380
415
  */
@@ -1891,6 +1926,37 @@ export type RequestSignedUploadUrlResponses = {
1891
1926
  200: SignedUrlUploadResponse;
1892
1927
  };
1893
1928
  export type RequestSignedUploadUrlResponse = RequestSignedUploadUrlResponses[keyof RequestSignedUploadUrlResponses];
1929
+ export type RecordCloudUsageData = {
1930
+ body: RecordUsageRequest;
1931
+ path?: never;
1932
+ query?: never;
1933
+ url: '/m2m/billing/usage/record';
1934
+ };
1935
+ export type RecordCloudUsageErrors = {
1936
+ /**
1937
+ * Bad request.
1938
+ */
1939
+ 400: ErrorResponse;
1940
+ /**
1941
+ * Unauthorised.
1942
+ */
1943
+ 401: ErrorResponse;
1944
+ /**
1945
+ * Invalid credentials.
1946
+ */
1947
+ 403: ErrorResponse;
1948
+ /**
1949
+ * Unexpected error.
1950
+ */
1951
+ 500: ErrorResponse;
1952
+ };
1953
+ export type RecordCloudUsageError = RecordCloudUsageErrors[keyof RecordCloudUsageErrors];
1954
+ export type RecordCloudUsageResponses = {
1955
+ /**
1956
+ * Usage recorded successfully.
1957
+ */
1958
+ 202: unknown;
1959
+ };
1894
1960
  export type GetBillingPlanData = {
1895
1961
  body?: never;
1896
1962
  path: {
@@ -2133,3 +2199,36 @@ export type GetBillingUsageResponses = {
2133
2199
  200: BillingUsage;
2134
2200
  };
2135
2201
  export type GetBillingUsageResponse = GetBillingUsageResponses[keyof GetBillingUsageResponses];
2202
+ export type FetchBillingPricesData = {
2203
+ body?: never;
2204
+ path: {
2205
+ /**
2206
+ * The space handle. This must be globally unique.
2207
+ */
2208
+ spaceHandle: string;
2209
+ };
2210
+ query?: never;
2211
+ url: '/auth/{spaceHandle}/billing/prices';
2212
+ };
2213
+ export type FetchBillingPricesErrors = {
2214
+ /**
2215
+ * Unauthorised user.
2216
+ */
2217
+ 401: ErrorResponse;
2218
+ /**
2219
+ * Invalid credentials.
2220
+ */
2221
+ 403: ErrorResponse;
2222
+ /**
2223
+ * Unexpected error.
2224
+ */
2225
+ 500: ErrorResponse;
2226
+ };
2227
+ export type FetchBillingPricesError = FetchBillingPricesErrors[keyof FetchBillingPricesErrors];
2228
+ export type FetchBillingPricesResponses = {
2229
+ /**
2230
+ * A list of plan prices.
2231
+ */
2232
+ 200: Array<PlanPriceResponse>;
2233
+ };
2234
+ export type FetchBillingPricesResponse = FetchBillingPricesResponses[keyof FetchBillingPricesResponses];
@@ -70,7 +70,13 @@ export declare const zCreateInvite: z.ZodObject<{
70
70
  export declare const zCreateSpace: z.ZodObject<{
71
71
  name: z.ZodString;
72
72
  handle: z.ZodString;
73
- billingPlanCode: z.ZodString;
73
+ billingPlanCode: z.ZodEnum<{
74
+ "free-monthly": "free-monthly";
75
+ "hobby-monthly": "hobby-monthly";
76
+ "hobby-annual": "hobby-annual";
77
+ "pro-monthly": "pro-monthly";
78
+ "pro-annual": "pro-annual";
79
+ }>;
74
80
  }, z.core.$strip>;
75
81
  export declare const zCreateEnvironment: z.ZodObject<{
76
82
  name: z.ZodString;
@@ -1031,7 +1037,7 @@ export declare const zBillingPlan: z.ZodObject<{
1031
1037
  entitlements: z.ZodArray<z.ZodString>;
1032
1038
  }, z.core.$strip>;
1033
1039
  export declare const zUpdatePlanRequest: z.ZodObject<{
1034
- priceId: z.ZodString;
1040
+ lookup_key: z.ZodString;
1035
1041
  }, z.core.$strip>;
1036
1042
  export declare const zPaymentMethod: z.ZodObject<{
1037
1043
  id: z.ZodString;
@@ -1047,6 +1053,17 @@ export declare const zSetupIntentResponse: z.ZodObject<{
1047
1053
  export declare const zBillingUsage: z.ZodObject<{
1048
1054
  totalUnits: z.ZodCoercedBigInt<unknown>;
1049
1055
  }, z.core.$strip>;
1056
+ export declare const zRecordUsageRequest: z.ZodObject<{
1057
+ orgCode: z.ZodString;
1058
+ quantity: z.ZodCoercedBigInt<unknown>;
1059
+ timestamp: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
1060
+ }, z.core.$strip>;
1061
+ export declare const zPlanPriceResponse: z.ZodObject<{
1062
+ code: z.ZodString;
1063
+ unit_amount_cents: z.ZodCoercedBigInt<unknown>;
1064
+ currency: z.ZodString;
1065
+ interval: z.ZodString;
1066
+ }, z.core.$strip>;
1050
1067
  /**
1051
1068
  * Expiry query.
1052
1069
  */
@@ -1515,7 +1532,13 @@ export declare const zCreateSpaceData: z.ZodObject<{
1515
1532
  body: z.ZodObject<{
1516
1533
  name: z.ZodString;
1517
1534
  handle: z.ZodString;
1518
- billingPlanCode: z.ZodString;
1535
+ billingPlanCode: z.ZodEnum<{
1536
+ "free-monthly": "free-monthly";
1537
+ "hobby-monthly": "hobby-monthly";
1538
+ "hobby-annual": "hobby-annual";
1539
+ "pro-monthly": "pro-monthly";
1540
+ "pro-annual": "pro-annual";
1541
+ }>;
1519
1542
  }, z.core.$strip>;
1520
1543
  path: z.ZodOptional<z.ZodNever>;
1521
1544
  query: z.ZodOptional<z.ZodNever>;
@@ -2206,6 +2229,15 @@ export declare const zRequestSignedUploadUrlResponse: z.ZodObject<{
2206
2229
  signedUrl: z.ZodString;
2207
2230
  expiration: z.ZodISODateTime;
2208
2231
  }, z.core.$strip>;
2232
+ export declare const zRecordCloudUsageData: z.ZodObject<{
2233
+ body: z.ZodObject<{
2234
+ orgCode: z.ZodString;
2235
+ quantity: z.ZodCoercedBigInt<unknown>;
2236
+ timestamp: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
2237
+ }, z.core.$strip>;
2238
+ path: z.ZodOptional<z.ZodNever>;
2239
+ query: z.ZodOptional<z.ZodNever>;
2240
+ }, z.core.$strip>;
2209
2241
  export declare const zGetBillingPlanData: z.ZodObject<{
2210
2242
  body: z.ZodOptional<z.ZodNever>;
2211
2243
  path: z.ZodObject<{
@@ -2237,7 +2269,7 @@ export declare const zGetBillingPlanResponse: z.ZodObject<{
2237
2269
  }, z.core.$strip>;
2238
2270
  export declare const zUpdateBillingPlanData: z.ZodObject<{
2239
2271
  body: z.ZodObject<{
2240
- priceId: z.ZodString;
2272
+ lookup_key: z.ZodString;
2241
2273
  }, z.core.$strip>;
2242
2274
  path: z.ZodObject<{
2243
2275
  spaceHandle: z.ZodString;
@@ -2312,3 +2344,19 @@ export declare const zGetBillingUsageData: z.ZodObject<{
2312
2344
  export declare const zGetBillingUsageResponse: z.ZodObject<{
2313
2345
  totalUnits: z.ZodCoercedBigInt<unknown>;
2314
2346
  }, z.core.$strip>;
2347
+ export declare const zFetchBillingPricesData: z.ZodObject<{
2348
+ body: z.ZodOptional<z.ZodNever>;
2349
+ path: z.ZodObject<{
2350
+ spaceHandle: z.ZodString;
2351
+ }, z.core.$strip>;
2352
+ query: z.ZodOptional<z.ZodNever>;
2353
+ }, z.core.$strip>;
2354
+ /**
2355
+ * A list of plan prices.
2356
+ */
2357
+ export declare const zFetchBillingPricesResponse: z.ZodArray<z.ZodObject<{
2358
+ code: z.ZodString;
2359
+ unit_amount_cents: z.ZodCoercedBigInt<unknown>;
2360
+ currency: z.ZodString;
2361
+ interval: z.ZodString;
2362
+ }, z.core.$strip>>;
@@ -49,7 +49,13 @@ export const zCreateInvite = z.object({
49
49
  export const zCreateSpace = z.object({
50
50
  name: z.string(),
51
51
  handle: z.string(),
52
- billingPlanCode: z.string()
52
+ billingPlanCode: z.enum([
53
+ 'free-monthly',
54
+ 'hobby-monthly',
55
+ 'hobby-annual',
56
+ 'pro-monthly',
57
+ 'pro-annual'
58
+ ])
53
59
  });
54
60
  export const zCreateEnvironment = z.object({
55
61
  name: z.string(),
@@ -450,7 +456,7 @@ export const zBillingPlan = z.object({
450
456
  entitlements: z.array(z.string())
451
457
  });
452
458
  export const zUpdatePlanRequest = z.object({
453
- priceId: z.string()
459
+ lookup_key: z.string()
454
460
  });
455
461
  export const zPaymentMethod = z.object({
456
462
  id: z.string(),
@@ -466,6 +472,17 @@ export const zSetupIntentResponse = z.object({
466
472
  export const zBillingUsage = z.object({
467
473
  totalUnits: z.coerce.bigint()
468
474
  });
475
+ export const zRecordUsageRequest = z.object({
476
+ orgCode: z.string(),
477
+ quantity: z.coerce.bigint(),
478
+ timestamp: z.optional(z.coerce.bigint())
479
+ });
480
+ export const zPlanPriceResponse = z.object({
481
+ code: z.string(),
482
+ unit_amount_cents: z.coerce.bigint(),
483
+ currency: z.string(),
484
+ interval: z.string()
485
+ });
469
486
  /**
470
487
  * Expiry query.
471
488
  */
@@ -926,6 +943,11 @@ export const zRequestSignedUploadUrlData = z.object({
926
943
  * A successfully generated signed url.
927
944
  */
928
945
  export const zRequestSignedUploadUrlResponse = zSignedUrlUploadResponse;
946
+ export const zRecordCloudUsageData = z.object({
947
+ body: zRecordUsageRequest,
948
+ path: z.optional(z.never()),
949
+ query: z.optional(z.never())
950
+ });
929
951
  export const zGetBillingPlanData = z.object({
930
952
  body: z.optional(z.never()),
931
953
  path: z.object({
@@ -1001,3 +1023,14 @@ export const zGetBillingUsageData = z.object({
1001
1023
  * Current billing period usage.
1002
1024
  */
1003
1025
  export const zGetBillingUsageResponse = zBillingUsage;
1026
+ export const zFetchBillingPricesData = z.object({
1027
+ body: z.optional(z.never()),
1028
+ path: z.object({
1029
+ spaceHandle: z.string()
1030
+ }),
1031
+ query: z.optional(z.never())
1032
+ });
1033
+ /**
1034
+ * A list of plan prices.
1035
+ */
1036
+ export const zFetchBillingPricesResponse = z.array(zPlanPriceResponse);
@@ -1,6 +1,6 @@
1
1
  import { useMutation } from "@tanstack/react-query";
2
2
  import { GetSuccessResponse } from "../util";
3
- import { GetServiceHealthData, FetchGraphM2mData, RequestAccountPasswordResetData, RequestAccountPasswordResetResponses, UpdateUsernameData, UpdateUsernameResponses, CreateUsernameData, CreateUsernameResponses, GetUserProfileData, UpdateUserProfileData, UpdateUserProfileResponses, GetUserIdentitiesData, DeleteAccountIdentityData, DeleteAccountIdentityResponses, GetConnectedAppUrlData, UpdateConnectedAppTokenData, UpdateConnectedAppTokenResponses, ListInstallationRepositoriesData, ListInstallationBranchesData, ListUserInstallationsData, ListUserSpacesData, CreateSpaceData, CreateSpaceResponses, GetUserInvitesData, JoinSpaceData, JoinSpaceResponses, RejectSpaceInviteData, RejectSpaceInviteResponses, GetSpaceOverviewData, GetSpaceOrgCodeData, FetchKindeOrganisationBillingAgreementsData, GetSpaceInvitesData, CreateSpaceInviteData, CreateSpaceInviteResponses, RevokeSpaceInviteData, RevokeSpaceInviteResponses, ListSpaceMembersData, ListSpaceMemberRolesData, LeaveSpaceData, LeaveSpaceResponses, CreateProjectData, CreateProjectResponses, GetProjectOverviewData, CreateEnvironmentData, CreateEnvironmentResponses, GetEnvironmentOverviewData, GetGraphOverviewData, UpdateGraphStateData, UpdateGraphStateResponses, DeployVersionData, DeployVersionResponses, RequestSignedUploadUrlData, GetBillingPlanData, UpdateBillingPlanData, UpdateBillingPlanResponses, CreateSetupIntentData, CreateSetupIntentResponses, ListPaymentMethodsData, RemovePaymentMethodData, RemovePaymentMethodResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodResponses, GetBillingUsageData } from "../../sdk/types.gen";
3
+ import { GetServiceHealthData, FetchGraphM2mData, RequestAccountPasswordResetData, RequestAccountPasswordResetResponses, UpdateUsernameData, UpdateUsernameResponses, CreateUsernameData, CreateUsernameResponses, GetUserProfileData, UpdateUserProfileData, UpdateUserProfileResponses, GetUserIdentitiesData, DeleteAccountIdentityData, DeleteAccountIdentityResponses, GetConnectedAppUrlData, UpdateConnectedAppTokenData, UpdateConnectedAppTokenResponses, ListInstallationRepositoriesData, ListInstallationBranchesData, ListUserInstallationsData, ListUserSpacesData, CreateSpaceData, CreateSpaceResponses, GetUserInvitesData, JoinSpaceData, JoinSpaceResponses, RejectSpaceInviteData, RejectSpaceInviteResponses, GetSpaceOverviewData, GetSpaceOrgCodeData, FetchKindeOrganisationBillingAgreementsData, GetSpaceInvitesData, CreateSpaceInviteData, CreateSpaceInviteResponses, RevokeSpaceInviteData, RevokeSpaceInviteResponses, ListSpaceMembersData, ListSpaceMemberRolesData, LeaveSpaceData, LeaveSpaceResponses, CreateProjectData, CreateProjectResponses, GetProjectOverviewData, CreateEnvironmentData, CreateEnvironmentResponses, GetEnvironmentOverviewData, GetGraphOverviewData, UpdateGraphStateData, UpdateGraphStateResponses, DeployVersionData, DeployVersionResponses, RequestSignedUploadUrlData, RecordCloudUsageData, RecordCloudUsageResponses, GetBillingPlanData, UpdateBillingPlanData, UpdateBillingPlanResponses, CreateSetupIntentData, CreateSetupIntentResponses, ListPaymentMethodsData, RemovePaymentMethodData, RemovePaymentMethodResponses, SetDefaultPaymentMethodData, SetDefaultPaymentMethodResponses, GetBillingUsageData, FetchBillingPricesData } from "../../sdk/types.gen";
4
4
  export declare const useGetServiceHealth: (options?: Omit<GetServiceHealthData, "url"> & {
5
5
  enabled?: boolean;
6
6
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").HealthResponse | undefined, Error>;
@@ -141,6 +141,11 @@ export declare const useDeployVersion: (config?: {
141
141
  export declare const useRequestSignedUploadUrl: (options: Omit<RequestSignedUploadUrlData, "url"> & {
142
142
  enabled?: boolean;
143
143
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").SignedUrlUploadResponse | undefined, Error>;
144
+ export declare const useRecordCloudUsage: (config?: {
145
+ onSuccess?: (data: GetSuccessResponse<RecordCloudUsageResponses>) => void;
146
+ onError?: Parameters<typeof useMutation>["0"]["onError"];
147
+ retry?: boolean;
148
+ }) => import("@tanstack/react-query").UseMutationResult<unknown, unknown, Omit<RecordCloudUsageData, "url">, unknown>;
144
149
  export declare const useGetBillingPlan: (options: Omit<GetBillingPlanData, "url"> & {
145
150
  enabled?: boolean;
146
151
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").BillingPlan | undefined, Error>;
@@ -170,3 +175,6 @@ export declare const useSetDefaultPaymentMethod: (config?: {
170
175
  export declare const useGetBillingUsage: (options: Omit<GetBillingUsageData, "url"> & {
171
176
  enabled?: boolean;
172
177
  }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").BillingUsage | undefined, Error>;
178
+ export declare const useFetchBillingPrices: (options: Omit<FetchBillingPricesData, "url"> & {
179
+ enabled?: boolean;
180
+ }) => import("@tanstack/react-query").UseQueryResult<import("../../sdk/types.gen").PlanPriceResponse[] | undefined, Error>;
@@ -2,7 +2,7 @@
2
2
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
3
  import { isPromise } from "../util";
4
4
  import { useToken } from "../../provider/token-provider";
5
- import { getServiceHealth, fetchGraphM2M, requestAccountPasswordReset, updateUsername, createUsername, getUserProfile, updateUserProfile, getUserIdentities, deleteAccountIdentity, getConnectedAppUrl, updateConnectedAppToken, listInstallationRepositories, listInstallationBranches, listUserInstallations, listUserSpaces, createSpace, getUserInvites, joinSpace, rejectSpaceInvite, getSpaceOverview, getSpaceOrgCode, fetchKindeOrganisationBillingAgreements, getSpaceInvites, createSpaceInvite, revokeSpaceInvite, listSpaceMembers, listSpaceMemberRoles, leaveSpace, createProject, getProjectOverview, createEnvironment, getEnvironmentOverview, getGraphOverview, updateGraphState, deployVersion, requestSignedUploadUrl, getBillingPlan, updateBillingPlan, createSetupIntent, listPaymentMethods, removePaymentMethod, setDefaultPaymentMethod, getBillingUsage } from "../../sdk/sdk.gen";
5
+ import { getServiceHealth, fetchGraphM2M, requestAccountPasswordReset, updateUsername, createUsername, getUserProfile, updateUserProfile, getUserIdentities, deleteAccountIdentity, getConnectedAppUrl, updateConnectedAppToken, listInstallationRepositories, listInstallationBranches, listUserInstallations, listUserSpaces, createSpace, getUserInvites, joinSpace, rejectSpaceInvite, getSpaceOverview, getSpaceOrgCode, fetchKindeOrganisationBillingAgreements, getSpaceInvites, createSpaceInvite, revokeSpaceInvite, listSpaceMembers, listSpaceMemberRoles, leaveSpace, createProject, getProjectOverview, createEnvironment, getEnvironmentOverview, getGraphOverview, updateGraphState, deployVersion, requestSignedUploadUrl, recordCloudUsage, getBillingPlan, updateBillingPlan, createSetupIntent, listPaymentMethods, removePaymentMethod, setDefaultPaymentMethod, getBillingUsage, fetchBillingPrices } from "../../sdk/sdk.gen";
6
6
  export const useGetServiceHealth = (options) => {
7
7
  const token = useToken();
8
8
  let { enabled, ...rest } = options || { enabled: true };
@@ -727,6 +727,25 @@ export const useRequestSignedUploadUrl = (options) => {
727
727
  staleTime: 600000
728
728
  });
729
729
  };
730
+ export const useRecordCloudUsage = (config) => {
731
+ const token = useToken();
732
+ const queryClient = useQueryClient();
733
+ const opts = { throwOnError: true, url: "/m2m/billing/usage/record" };
734
+ const funcer = async (options) => {
735
+ const auth = isPromise(token) ? (await token) || "" : token || "";
736
+ const res = await recordCloudUsage({ ...opts, ...options, auth });
737
+ return res?.data;
738
+ };
739
+ return useMutation({
740
+ mutationFn: funcer,
741
+ onSuccess: (res, options, c, ctx) => {
742
+ queryClient.invalidateQueries({ queryKey: ["m2m", "billing", "usage", "record"] });
743
+ config?.onSuccess && config.onSuccess(res);
744
+ },
745
+ onError: config?.onError,
746
+ retry: config?.retry
747
+ });
748
+ };
730
749
  export const useGetBillingPlan = (options) => {
731
750
  const token = useToken();
732
751
  let { enabled, ...rest } = options || { enabled: true };
@@ -866,3 +885,24 @@ export const useGetBillingUsage = (options) => {
866
885
  staleTime: 600000
867
886
  });
868
887
  };
888
+ export const useFetchBillingPrices = (options) => {
889
+ const token = useToken();
890
+ let { enabled, ...rest } = options || { enabled: true };
891
+ const opts = { throwOnError: true, url: "/auth/{spaceHandle}/billing/prices" };
892
+ const funcer = async () => {
893
+ const auth = isPromise(token) ? (await token) || "" : token || "";
894
+ if (isPromise(token) && !token)
895
+ return;
896
+ const res = await fetchBillingPrices({ ...opts, ...rest, auth });
897
+ return res.data;
898
+ };
899
+ if (!token)
900
+ enabled = false;
901
+ return useQuery({
902
+ queryKey: [options?.path?.spaceHandle, "billing", "prices", options.query ?? {}],
903
+ queryFn: funcer,
904
+ enabled,
905
+ retry: false,
906
+ staleTime: 600000
907
+ });
908
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shoal-web-sdk",
3
- "version": "0.0.105",
3
+ "version": "0.0.107",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "build-hooks": "npx tsx tanstack-codegen/generator.ts",