diff --git a/sdks/js/packages/core/api-client/V1Beta1.ts b/sdks/js/packages/core/api-client/V1Beta1.ts index d846004a3..4b9a3d966 100644 --- a/sdks/js/packages/core/api-client/V1Beta1.ts +++ b/sdks/js/packages/core/api-client/V1Beta1.ts @@ -75,7 +75,6 @@ import { V1Beta1CreateRoleResponse, V1Beta1CreateServiceUserCredentialResponse, V1Beta1CreateServiceUserJWKResponse, - V1Beta1CreateServiceUserRequest, V1Beta1CreateServiceUserResponse, V1Beta1CreateServiceUserTokenResponse, V1Beta1CreateUserPreferencesResponse, @@ -220,6 +219,8 @@ import { V1Beta1RevertBillingUsageRequest, V1Beta1RevertBillingUsageResponse, V1Beta1RoleRequestBody, + V1Beta1ServiceUserRequestBody, + V1Beta1UpdateBillingAccountLimitsResponse, V1Beta1UpdateBillingAccountResponse, V1Beta1UpdateCurrentUserResponse, V1Beta1UpdateFeatureResponse, @@ -446,6 +447,38 @@ export class V1Beta1 extends HttpClient + this.request({ + path: `/v1beta1/admin/organizations/${orgId}/billing/${id}/limits`, + method: 'PUT', + body: body, + secure: true, + type: ContentType.Json, + format: 'json', + ...params + }); /** * @description Checkout a product to buy it one time or start a subscription plan on a billing account manually. It bypasses billing engine. * @@ -3229,6 +3262,264 @@ export class V1Beta1 extends HttpClient + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers`, + method: 'POST', + body: body, + secure: true, + type: ContentType.Json, + format: 'json', + ...params + }); + /** + * @description Get service user details by its id. + * + * @tags ServiceUser + * @name FrontierServiceGetServiceUser + * @summary Get service user + * @request GET:/v1beta1/organizations/{org_id}/serviceusers/{id} + * @secure + */ + frontierServiceGetServiceUser = (orgId: string, id: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}`, + method: 'GET', + secure: true, + format: 'json', + ...params + }); + /** + * @description Delete a service user permanently and all of its relations (keys, organizations, roles, etc) + * + * @tags ServiceUser + * @name FrontierServiceDeleteServiceUser + * @summary Delete service user + * @request DELETE:/v1beta1/organizations/{org_id}/serviceusers/{id} + * @secure + */ + frontierServiceDeleteServiceUser = (orgId: string, id: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}`, + method: 'DELETE', + secure: true, + format: 'json', + ...params + }); + /** + * @description List all the keys of a service user with its details except jwk. + * + * @tags ServiceUser + * @name FrontierServiceListServiceUserJwKs + * @summary List service user keys + * @request GET:/v1beta1/organizations/{org_id}/serviceusers/{id}/keys + * @secure + */ + frontierServiceListServiceUserJwKs = (orgId: string, id: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/keys`, + method: 'GET', + secure: true, + format: 'json', + ...params + }); + /** + * @description Generate a service user key and return it, the private key part of the response will not be persisted and should be kept securely by client. + * + * @tags ServiceUser + * @name FrontierServiceCreateServiceUserJwk + * @summary Create service user public/private key pair + * @request POST:/v1beta1/organizations/{org_id}/serviceusers/{id}/keys + * @secure + */ + frontierServiceCreateServiceUserJwk = ( + orgId: string, + id: string, + body: { + title?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/keys`, + method: 'POST', + body: body, + secure: true, + format: 'json', + ...params + }); + /** + * @description Get a service user public RSA JWK set. + * + * @tags ServiceUser + * @name FrontierServiceGetServiceUserJwk + * @summary Get service user key + * @request GET:/v1beta1/organizations/{org_id}/serviceusers/{id}/keys/{key_id} + * @secure + */ + frontierServiceGetServiceUserJwk = (orgId: string, id: string, keyId: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/keys/${keyId}`, + method: 'GET', + secure: true, + format: 'json', + ...params + }); + /** + * @description Delete a service user key permanently. + * + * @tags ServiceUser + * @name FrontierServiceDeleteServiceUserJwk + * @summary Delete service user key + * @request DELETE:/v1beta1/organizations/{org_id}/serviceusers/{id}/keys/{key_id} + * @secure + */ + frontierServiceDeleteServiceUserJwk = (orgId: string, id: string, keyId: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/keys/${keyId}`, + method: 'DELETE', + secure: true, + format: 'json', + ...params + }); + /** + * @description List all the credentials of a service user. + * + * @tags ServiceUser + * @name FrontierServiceListServiceUserCredentials + * @summary List service user credentials + * @request GET:/v1beta1/organizations/{org_id}/serviceusers/{id}/secrets + * @secure + */ + frontierServiceListServiceUserCredentials = (orgId: string, id: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/secrets`, + method: 'GET', + secure: true, + format: 'json', + ...params + }); + /** + * @description Generate a service user credential and return it. The credential value will not be persisted and should be securely stored by client. + * + * @tags ServiceUser + * @name FrontierServiceCreateServiceUserCredential + * @summary Create service user client credentials + * @request POST:/v1beta1/organizations/{org_id}/serviceusers/{id}/secrets + * @secure + */ + frontierServiceCreateServiceUserCredential = ( + orgId: string, + id: string, + body: { + title?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/secrets`, + method: 'POST', + body: body, + secure: true, + format: 'json', + ...params + }); + /** + * @description Delete a service user credential. + * + * @tags ServiceUser + * @name FrontierServiceDeleteServiceUserCredential + * @summary Delete service user credentials + * @request DELETE:/v1beta1/organizations/{org_id}/serviceusers/{id}/secrets/{secret_id} + * @secure + */ + frontierServiceDeleteServiceUserCredential = ( + orgId: string, + id: string, + secretId: string, + params: RequestParams = {} + ) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/secrets/${secretId}`, + method: 'DELETE', + secure: true, + format: 'json', + ...params + }); + /** + * @description List all the tokens of a service user. + * + * @tags ServiceUser + * @name FrontierServiceListServiceUserTokens + * @summary List service user tokens + * @request GET:/v1beta1/organizations/{org_id}/serviceusers/{id}/tokens + * @secure + */ + frontierServiceListServiceUserTokens = (orgId: string, id: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/tokens`, + method: 'GET', + secure: true, + format: 'json', + ...params + }); + /** + * @description Generate a service user token and return it. The token value will not be persisted and should be securely stored by client. + * + * @tags ServiceUser + * @name FrontierServiceCreateServiceUserToken + * @summary Create service user token + * @request POST:/v1beta1/organizations/{org_id}/serviceusers/{id}/tokens + * @secure + */ + frontierServiceCreateServiceUserToken = ( + orgId: string, + id: string, + body: { + title?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/tokens`, + method: 'POST', + body: body, + secure: true, + format: 'json', + ...params + }); + /** + * @description Delete a service user token. + * + * @tags ServiceUser + * @name FrontierServiceDeleteServiceUserToken + * @summary Delete service user token + * @request DELETE:/v1beta1/organizations/{org_id}/serviceusers/{id}/tokens/{token_id} + * @secure + */ + frontierServiceDeleteServiceUserToken = (orgId: string, id: string, tokenId: string, params: RequestParams = {}) => + this.request({ + path: `/v1beta1/organizations/${orgId}/serviceusers/${id}/tokens/${tokenId}`, + method: 'DELETE', + secure: true, + format: 'json', + ...params + }); /** * @description Check if a billing account is entitled to a feature. * @@ -4054,257 +4345,6 @@ export class V1Beta1 extends HttpClient - this.request({ - path: `/v1beta1/serviceusers`, - method: 'POST', - body: body, - secure: true, - type: ContentType.Json, - format: 'json', - ...params - }); - /** - * @description Get service user details by its id. - * - * @tags ServiceUser - * @name FrontierServiceGetServiceUser - * @summary Get service user - * @request GET:/v1beta1/serviceusers/{id} - * @secure - */ - frontierServiceGetServiceUser = (id: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}`, - method: 'GET', - secure: true, - format: 'json', - ...params - }); - /** - * @description Delete a service user permanently and all of its relations (keys, organizations, roles, etc) - * - * @tags ServiceUser - * @name FrontierServiceDeleteServiceUser - * @summary Delete service user - * @request DELETE:/v1beta1/serviceusers/{id} - * @secure - */ - frontierServiceDeleteServiceUser = ( - id: string, - query?: { - org_id?: string; - }, - params: RequestParams = {} - ) => - this.request({ - path: `/v1beta1/serviceusers/${id}`, - method: 'DELETE', - query: query, - secure: true, - format: 'json', - ...params - }); - /** - * @description List all the keys of a service user with its details except jwk. - * - * @tags ServiceUser - * @name FrontierServiceListServiceUserJwKs - * @summary List service user keys - * @request GET:/v1beta1/serviceusers/{id}/keys - * @secure - */ - frontierServiceListServiceUserJwKs = (id: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/keys`, - method: 'GET', - secure: true, - format: 'json', - ...params - }); - /** - * @description Generate a service user key and return it, the private key part of the response will not be persisted and should be kept securely by client. - * - * @tags ServiceUser - * @name FrontierServiceCreateServiceUserJwk - * @summary Create service user public/private key pair - * @request POST:/v1beta1/serviceusers/{id}/keys - * @secure - */ - frontierServiceCreateServiceUserJwk = ( - id: string, - body: { - title?: string; - }, - params: RequestParams = {} - ) => - this.request({ - path: `/v1beta1/serviceusers/${id}/keys`, - method: 'POST', - body: body, - secure: true, - format: 'json', - ...params - }); - /** - * @description Get a service user public RSA JWK set. - * - * @tags ServiceUser - * @name FrontierServiceGetServiceUserJwk - * @summary Get service user key - * @request GET:/v1beta1/serviceusers/{id}/keys/{key_id} - * @secure - */ - frontierServiceGetServiceUserJwk = (id: string, keyId: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/keys/${keyId}`, - method: 'GET', - secure: true, - format: 'json', - ...params - }); - /** - * @description Delete a service user key permanently. - * - * @tags ServiceUser - * @name FrontierServiceDeleteServiceUserJwk - * @summary Delete service user key - * @request DELETE:/v1beta1/serviceusers/{id}/keys/{key_id} - * @secure - */ - frontierServiceDeleteServiceUserJwk = (id: string, keyId: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/keys/${keyId}`, - method: 'DELETE', - secure: true, - format: 'json', - ...params - }); - /** - * @description List all the credentials of a service user. - * - * @tags ServiceUser - * @name FrontierServiceListServiceUserCredentials - * @summary List service user credentials - * @request GET:/v1beta1/serviceusers/{id}/secrets - * @secure - */ - frontierServiceListServiceUserCredentials = (id: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/secrets`, - method: 'GET', - secure: true, - format: 'json', - ...params - }); - /** - * @description Generate a service user credential and return it. The credential value will not be persisted and should be securely stored by client. - * - * @tags ServiceUser - * @name FrontierServiceCreateServiceUserCredential - * @summary Create service user client credentials - * @request POST:/v1beta1/serviceusers/{id}/secrets - * @secure - */ - frontierServiceCreateServiceUserCredential = ( - id: string, - body: { - title?: string; - }, - params: RequestParams = {} - ) => - this.request({ - path: `/v1beta1/serviceusers/${id}/secrets`, - method: 'POST', - body: body, - secure: true, - format: 'json', - ...params - }); - /** - * @description Delete a service user credential. - * - * @tags ServiceUser - * @name FrontierServiceDeleteServiceUserCredential - * @summary Delete service user credentials - * @request DELETE:/v1beta1/serviceusers/{id}/secrets/{secret_id} - * @secure - */ - frontierServiceDeleteServiceUserCredential = (id: string, secretId: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/secrets/${secretId}`, - method: 'DELETE', - secure: true, - format: 'json', - ...params - }); - /** - * @description List all the tokens of a service user. - * - * @tags ServiceUser - * @name FrontierServiceListServiceUserTokens - * @summary List service user tokens - * @request GET:/v1beta1/serviceusers/{id}/tokens - * @secure - */ - frontierServiceListServiceUserTokens = (id: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/tokens`, - method: 'GET', - secure: true, - format: 'json', - ...params - }); - /** - * @description Generate a service user token and return it. The token value will not be persisted and should be securely stored by client. - * - * @tags ServiceUser - * @name FrontierServiceCreateServiceUserToken - * @summary Create service user token - * @request POST:/v1beta1/serviceusers/{id}/tokens - * @secure - */ - frontierServiceCreateServiceUserToken = ( - id: string, - body: { - title?: string; - }, - params: RequestParams = {} - ) => - this.request({ - path: `/v1beta1/serviceusers/${id}/tokens`, - method: 'POST', - body: body, - secure: true, - format: 'json', - ...params - }); - /** - * @description Delete a service user token. - * - * @tags ServiceUser - * @name FrontierServiceDeleteServiceUserToken - * @summary Delete service user token - * @request DELETE:/v1beta1/serviceusers/{id}/tokens/{token_id} - * @secure - */ - frontierServiceDeleteServiceUserToken = (id: string, tokenId: string, params: RequestParams = {}) => - this.request({ - path: `/v1beta1/serviceusers/${id}/tokens/${tokenId}`, - method: 'DELETE', - secure: true, - format: 'json', - ...params - }); /** * @description Returns the users from all the organizations in a Frontier instance. It can be filtered by keyword, organization, group and state. Additionally you can include page number and page size for pagination. * @@ -4500,10 +4540,17 @@ export class V1Beta1 extends HttpClient + frontierServiceListOrganizationsByUser = ( + id: string, + query?: { + state?: string; + }, + params: RequestParams = {} + ) => this.request({ path: `/v1beta1/users/${id}/organizations`, method: 'GET', + query: query, secure: true, format: 'json', ...params diff --git a/sdks/js/packages/core/api-client/data-contracts.ts b/sdks/js/packages/core/api-client/data-contracts.ts index 755498668..92ed36006 100644 --- a/sdks/js/packages/core/api-client/data-contracts.ts +++ b/sdks/js/packages/core/api-client/data-contracts.ts @@ -519,12 +519,6 @@ export interface V1Beta1CreateServiceUserJWKResponse { key?: V1Beta1KeyCredential; } -export interface V1Beta1CreateServiceUserRequest { - body?: V1Beta1ServiceUserRequestBody; - /** The organization ID to which the service user belongs to. */ - org_id: string; -} - export interface V1Beta1CreateServiceUserResponse { serviceuser?: V1Beta1ServiceUser; } @@ -1855,6 +1849,8 @@ export interface V1Beta1Subscription { plan?: V1Beta1Plan; } +export type V1Beta1UpdateBillingAccountLimitsResponse = object; + export interface V1Beta1UpdateBillingAccountResponse { /** Updated billing account */ billing_account?: V1Beta1BillingAccount; diff --git a/sdks/js/packages/core/react/components/organization/api-keys/add.tsx b/sdks/js/packages/core/react/components/organization/api-keys/add.tsx index c7a40d6e9..564475269 100644 --- a/sdks/js/packages/core/react/components/organization/api-keys/add.tsx +++ b/sdks/js/packages/core/react/components/organization/api-keys/add.tsx @@ -47,15 +47,15 @@ export const AddServiceAccount = () => { try { const { data: { serviceuser } - } = await client.frontierServiceCreateServiceUser({ - body: data, - org_id: orgId + } = await client.frontierServiceCreateServiceUser(orgId, { + body: data }); if (serviceuser?.id) { const { data: { token } } = await client.frontierServiceCreateServiceUserToken( + orgId, serviceuser?.id, { title: DEFAULT_KEY_NAME } ); diff --git a/sdks/js/packages/core/react/components/organization/api-keys/delete.tsx b/sdks/js/packages/core/react/components/organization/api-keys/delete.tsx index 7da9e0ede..fb28759b3 100644 --- a/sdks/js/packages/core/react/components/organization/api-keys/delete.tsx +++ b/sdks/js/packages/core/react/components/organization/api-keys/delete.tsx @@ -12,12 +12,12 @@ export const DeleteServiceAccount = () => { const { client, activeOrganization: organization } = useFrontier(); const [isLoading, setIsLoading] = useState(false); - const orgId = organization?.id; + const orgId = organization?.id || ''; async function onDeleteClick() { try { setIsLoading(true); - await client?.frontierServiceDeleteServiceUser(id, { org_id: orgId }); + await client?.frontierServiceDeleteServiceUser(orgId, id); navigate({ to: '/api-keys', state: { diff --git a/sdks/js/packages/core/react/components/organization/api-keys/index.tsx b/sdks/js/packages/core/react/components/organization/api-keys/index.tsx index d4128d7fb..b4bbd2ff1 100644 --- a/sdks/js/packages/core/react/components/organization/api-keys/index.tsx +++ b/sdks/js/packages/core/react/components/organization/api-keys/index.tsx @@ -183,9 +183,9 @@ export default function ApiKeys() { async function getServiceAccounts(orgId: string) { try { setIsServiceUsersLoading(true); - const resp = await client?.frontierServiceListServiceUsers({ - org_id: orgId - }); + const resp = await client?.frontierServiceListOrganizationServiceUsers( + orgId + ); const data = resp?.data?.serviceusers || []; setServiceUsers(data); } catch (err) { diff --git a/sdks/js/packages/core/react/components/organization/api-keys/service-user/add-token.tsx b/sdks/js/packages/core/react/components/organization/api-keys/service-user/add-token.tsx index c5a239739..c39f3975d 100644 --- a/sdks/js/packages/core/react/components/organization/api-keys/service-user/add-token.tsx +++ b/sdks/js/packages/core/react/components/organization/api-keys/service-user/add-token.tsx @@ -23,7 +23,7 @@ export default function AddServiceUserToken({ serviceUserId: string; onAddToken: (token: V1Beta1ServiceUserToken) => void; }) { - const { client } = useFrontier(); + const { client, activeOrganization } = useFrontier(); const { control, handleSubmit, @@ -32,6 +32,8 @@ export default function AddServiceUserToken({ resolver: yupResolver(serviceAccountSchema) }); + const orgId = activeOrganization?.id || ''; + const onSubmit = useCallback( async (data: FormData) => { if (!client) return; @@ -40,6 +42,7 @@ export default function AddServiceUserToken({ const { data: { token } } = await client.frontierServiceCreateServiceUserToken( + orgId, serviceUserId, data ); @@ -53,7 +56,7 @@ export default function AddServiceUserToken({ }); } }, - [client, onAddToken, serviceUserId] + [client, onAddToken, serviceUserId, orgId] ); return ( diff --git a/sdks/js/packages/core/react/components/organization/api-keys/service-user/delete.tsx b/sdks/js/packages/core/react/components/organization/api-keys/service-user/delete.tsx index 25dd4a8a4..f15b08023 100644 --- a/sdks/js/packages/core/react/components/organization/api-keys/service-user/delete.tsx +++ b/sdks/js/packages/core/react/components/organization/api-keys/service-user/delete.tsx @@ -12,13 +12,15 @@ export const DeleteServiceAccountKey = () => { from: '/api-keys/$id/key/$tokenId/delete' }); const navigate = useNavigate({ from: '/api-keys/$id/key/$tokenId/delete' }); - const { client, config } = useFrontier(); + const { client, config, activeOrganization } = useFrontier(); const [isLoading, setIsLoading] = useState(false); + const orgId = activeOrganization?.id || ''; + async function onDeleteClick() { try { setIsLoading(true); - await client?.frontierServiceDeleteServiceUserToken(id, tokenId); + await client?.frontierServiceDeleteServiceUserToken(orgId, id, tokenId); navigate({ to: '/api-keys/$id', params: { diff --git a/sdks/js/packages/core/react/components/organization/api-keys/service-user/index.tsx b/sdks/js/packages/core/react/components/organization/api-keys/service-user/index.tsx index 33a61e79a..455e6354b 100644 --- a/sdks/js/packages/core/react/components/organization/api-keys/service-user/index.tsx +++ b/sdks/js/packages/core/react/components/organization/api-keys/service-user/index.tsx @@ -146,7 +146,7 @@ const SerivceUserTokenList = ({ export default function ServiceUserPage() { let { id } = useParams({ from: '/api-keys/$id' }); - const { client, config } = useFrontier(); + const { client, config, activeOrganization } = useFrontier(); const navigate = useNavigate({ from: '/api-keys/$id' }); const [serviceUser, setServiceUser] = useState(); @@ -162,12 +162,16 @@ export default function ServiceUserPage() { const location = useLocation(); const existingToken = location?.state?.token; const refetch = location?.state?.refetch; + const orgId = activeOrganization?.id || ''; const getServiceUser = useCallback( async (serviceUserId: string) => { try { setIsServiceUserLoading(true); - const resp = await client?.frontierServiceGetServiceUser(serviceUserId); + const resp = await client?.frontierServiceGetServiceUser( + orgId, + serviceUserId + ); const data = resp?.data?.serviceuser; setServiceUser(data); } catch (error) { @@ -176,7 +180,7 @@ export default function ServiceUserPage() { setIsServiceUserLoading(false); } }, - [client] + [client, orgId] ); const getServiceUserTokens = useCallback( @@ -184,6 +188,7 @@ export default function ServiceUserPage() { try { setIsServiceUserTokensLoading(true); const resp = await client?.frontierServiceListServiceUserTokens( + orgId, serviceUserId ); const data = resp?.data?.tokens || []; @@ -194,7 +199,7 @@ export default function ServiceUserPage() { setIsServiceUserTokensLoading(false); } }, - [client] + [client, orgId] ); useEffect(() => {