From df30d21f7ed385716a67e682085444143fd0476c Mon Sep 17 00:00:00 2001 From: Joshua Jones Date: Thu, 12 Aug 2021 16:16:38 -0700 Subject: [PATCH 1/8] Use extForeignKey for value in controls dialog --- src/nextapp/components/controls/rate-limiting.tsx | 4 ++-- src/nextapp/pages/manager/consumers/[id].tsx | 2 ++ src/test/mock-server/server.js | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/nextapp/components/controls/rate-limiting.tsx b/src/nextapp/components/controls/rate-limiting.tsx index 79913bff8..8a4d978a6 100644 --- a/src/nextapp/components/controls/rate-limiting.tsx +++ b/src/nextapp/components/controls/rate-limiting.tsx @@ -124,8 +124,8 @@ const RateLimiting: React.FC = ({ title="Rate Limiting" > diff --git a/src/nextapp/pages/manager/consumers/[id].tsx b/src/nextapp/pages/manager/consumers/[id].tsx index a5f501dce..c11e75c44 100644 --- a/src/nextapp/pages/manager/consumers/[id].tsx +++ b/src/nextapp/pages/manager/consumers/[id].tsx @@ -171,10 +171,12 @@ const query = gql` service { id name + extForeignKey } route { id name + extForeignKey } } tags diff --git a/src/test/mock-server/server.js b/src/test/mock-server/server.js index 3d8612ab5..f4d6de3ae 100644 --- a/src/test/mock-server/server.js +++ b/src/test/mock-server/server.js @@ -316,6 +316,7 @@ const server = mockServer(schemaWithMocks, { name: casual.route, namespace: casual.namespace, kongRouteId: casual.uuid, + extForeignKey: casual.uuid, methods: JSON.stringify([ casual.random_element(['GET', 'POST', 'PUT', 'DELETE']), ]), From 8c0d8416397d8ae174bc1422c00d5197a50254b7 Mon Sep 17 00:00:00 2001 From: Joshua Jones Date: Tue, 24 Aug 2021 23:45:35 -0700 Subject: [PATCH 2/8] Add Table styles. --- src/.storybook/main.js | 4 +- src/.storybook/preview-head.html | 4 ++ src/nextapp/shared/theme.ts | 16 ++++++ src/stories/Buttons.stories.mdx | 98 ++++++++++++++++++++++++++++++++ src/stories/Table.stories.mdx | 78 +++++++++++++++++++++++++ 5 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 src/stories/Buttons.stories.mdx create mode 100644 src/stories/Table.stories.mdx diff --git a/src/.storybook/main.js b/src/.storybook/main.js index 0eb8b3464..e6f71f236 100644 --- a/src/.storybook/main.js +++ b/src/.storybook/main.js @@ -15,8 +15,8 @@ module.exports = { }, stories: [ '../stories/**/*.stories.mdx', - '../stories/**/*.stories.@(js|jsx|ts|tsx)', - '../nextapp/components/**/*.stories.@(js|jsx|ts|tsx)', + '../stories/**/*.stories.@(js|jsx|ts|tsx|mdx)', + '../nextapp/components/**/*.stories.@(js|jsx|ts|tsx|mdx)', ], addons: ['@storybook/addon-links', '@storybook/addon-essentials'], webpackFinal: async (config) => { diff --git a/src/.storybook/preview-head.html b/src/.storybook/preview-head.html index 4cd6b6a64..4f76a1375 100644 --- a/src/.storybook/preview-head.html +++ b/src/.storybook/preview-head.html @@ -2,4 +2,8 @@ body { background: white !important; } + + div[dir] { + min-height: auto !important; + } diff --git a/src/nextapp/shared/theme.ts b/src/nextapp/shared/theme.ts index 677152931..6e13f524b 100644 --- a/src/nextapp/shared/theme.ts +++ b/src/nextapp/shared/theme.ts @@ -208,6 +208,22 @@ const theme = extendTheme( colorScheme: 'ui', }, }, + Table: { + sizes: { + sm: { th: { fontSize: 'sm' } }, + md: { th: { fontSize: 'md' } }, + lg: { th: { fontSize: 'lg' } }, + }, + variants: { + simple: { + th: { + borderBottom: '2px solid', + borderColor: 'bc-yellow', + textTransform: 'none', + }, + }, + }, + }, }, }, withDefaultVariant({ diff --git a/src/stories/Buttons.stories.mdx b/src/stories/Buttons.stories.mdx new file mode 100644 index 000000000..600a58e28 --- /dev/null +++ b/src/stories/Buttons.stories.mdx @@ -0,0 +1,98 @@ +import { Box, Button, Icon, HStack } from '@chakra-ui/react'; +import { FaPlus } from 'react-icons/fa' +import { Meta, Story, Canvas } from '@storybook/addon-docs'; + + + + +export const Template = (args) => ( + + + + + +) + +# Buttons + +Custom variants have been added to extend the base Chakra theme to match the BC Design Guidelines. To use: + +Reference the [Chakra Button](https://chakra-ui.com/docs/form/button) documentation for additional props + +```javascript +import { Button } from '@chakra-ui/react'; + +const Component = () => +``` + +## Primary Button + +The default `Button` is automatically set to the `primary` variant. Use for the most important actions you want users to take on your site. + + + + {Template.bind({})} + + + +## Secondary Button + +Use the `secondary` button from supporting actions users can take on your site. + + + + {Template.bind({})} + + + +## Flat Button + +In some cases with the APS UI the size and boldness of the secondary button can be too overpowering. + +**NOTE** Because Chakra doesn't offer default sizes tied to a `variant` at the theme level, manually set `flat` buttons to `size="sm"` + + + + {Template.bind({})} + + + +## Header Action Button + +When using a button in the app bar header, set the variant to `header` + + + + {Template.bind({})} + + + + + + + + + + + diff --git a/src/stories/Table.stories.mdx b/src/stories/Table.stories.mdx new file mode 100644 index 000000000..c8495aeb4 --- /dev/null +++ b/src/stories/Table.stories.mdx @@ -0,0 +1,78 @@ +import { + Button, + Table, + Thead, + Tbody, + Tfoot, + Tr, + Th, + Td, + TableCaption, +} from '@chakra-ui/react'; +import { FaPlus } from 'react-icons/fa' +import { Meta, Story, Canvas } from '@storybook/addon-docs'; + + + + +export const Template = (args) => ( + + + + + + + + + + + + + + + + + + + + + + + + +
EnvironmentAuthentication +
ProductionPublic
ConformanceClient Credentials
TestKong-API-Key-ACL
+) + +# Table + +The default simple style of table has been slightly tweaked. + +```javascript + + + + + + + + + + + + + + +
EnvironmentAuthentication +
ProductionPublic
+``` + + + + {Template.bind({})} + + From 2e164a5012866d300eb89b6663d16e749f950284 Mon Sep 17 00:00:00 2001 From: Joshua Jones Date: Fri, 27 Aug 2021 15:52:22 -0700 Subject: [PATCH 3/8] Add tag story --- src/nextapp/shared/theme.ts | 41 +++++++++++++++- src/stories/Tags.stories.mdx | 92 ++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 src/stories/Tags.stories.mdx diff --git a/src/nextapp/shared/theme.ts b/src/nextapp/shared/theme.ts index 6e13f524b..75f3ab670 100644 --- a/src/nextapp/shared/theme.ts +++ b/src/nextapp/shared/theme.ts @@ -7,6 +7,7 @@ const colors = { 'bc-component': '#606060', 'bc-link': '#1A5A96', 'bc-blue-alt': '#38598A', + 'bc-light-blue': '#77ACF1', 'bc-gray': '#f2f2f2', 'bc-border-focus': '#3B99FC', 'bc-error': '#D8292F', @@ -224,11 +225,49 @@ const theme = extendTheme( }, }, }, + Tag: { + variants: { + 'bc-input': { + container: { + borderRadius: 4, + color: 'white', + fontWeight: 'bold', + px: 4, + backgroundColor: 'bc-light-blue', + }, + }, + outline: { + container: { + borderRadius: 4, + backgroundColor: '#E9F0F8', + borderColor: 'rgba(142, 142, 142, 0.35)', + color: 'text', + }, + }, + drag: { + container: { + borderRadius: 4, + backgroundColor: 'white', + border: '1px solid', + borderColor: 'bc-gray', + color: 'text', + fontSize: 'xs', + }, + }, + }, + }, }, }, withDefaultVariant({ variant: 'bc-input', - components: ['Checkbox', 'Input', 'FormErrorMessage', 'Select', 'Textarea'], + components: [ + 'Checkbox', + 'Input', + 'FormErrorMessage', + 'Select', + 'Textarea', + 'Tag', + ], }) ); diff --git a/src/stories/Tags.stories.mdx b/src/stories/Tags.stories.mdx new file mode 100644 index 000000000..4fdcbc205 --- /dev/null +++ b/src/stories/Tags.stories.mdx @@ -0,0 +1,92 @@ +import { + Box, + Tag, + TagLabel, + TagLeftIcon, + TagRightIcon, + TagCloseButton, + Icon, + HStack, +} from '@chakra-ui/react'; +import { FaGripVertical, FaPlus } from 'react-icons/fa' +import { Meta, Story, Canvas } from '@storybook/addon-docs'; + + + + +export const Template = ({ children, ...args }) => ( + + {children} + + Tag with Close + + + + + Tag with Icon + + +) + +export const DragTemplate = (args) => ( + + Tag with Icon + + +) + +# Tags + +Custom variants have been added to extend the base Chakra theme to match the BC Design Guidelines. To use: + +Reference the [Chakra Button](https://chakra-ui.com/docs/form/button) documentation for additional props + +```javascript +import { Tag } from '@chakra-ui/react'; + +const Component = () => Button +``` + +## Default Tag + +The default implementation of this tag works well for components where it is the only tag present in a card or table row. + + + + {Template.bind({})} + + + +## Outline Tag + +Use the outline variant for groups of tags + + + + {Template.bind({})} + + + +## Draggable Tag + +Custom tag for drag and drop interfaces + + + + {DragTemplate.bind({})} + + From 06d4fd51bd3c105fd03f141328c4773497ed134f Mon Sep 17 00:00:00 2001 From: Joshua Jones Date: Mon, 30 Aug 2021 16:38:10 -0700 Subject: [PATCH 4/8] Add tabs and clean up buttons. --- src/nextapp/shared/theme.ts | 54 ++++++++++++++++++++++++++-- src/package.json | 2 +- src/stories/Button.stories.tsx | 64 --------------------------------- src/stories/Buttons.stories.mdx | 17 ++++++++- src/stories/Tabs.stories.mdx | 37 +++++++++++++++++++ src/stories/Tags.stories.mdx | 4 +-- 6 files changed, 107 insertions(+), 71 deletions(-) delete mode 100644 src/stories/Button.stories.tsx create mode 100644 src/stories/Tabs.stories.mdx diff --git a/src/nextapp/shared/theme.ts b/src/nextapp/shared/theme.ts index 75f3ab670..4dd98cf21 100644 --- a/src/nextapp/shared/theme.ts +++ b/src/nextapp/shared/theme.ts @@ -15,6 +15,33 @@ const colors = { ui: { 500: '#606060', }, + primary: { + 500: '#003366', + }, + green: { + '50': '#ECF8EF', + '100': '#CAEDD1', + '200': '#A8E1B4', + '300': '#86D596', + '400': '#64C979', + '500': '#42BD5B', + '600': '#349849', + '700': '#277237', + '800': '#1A4C24', + '900': '#0D2612', + }, + red: { + '50': '#FBE9EA', + '100': '#F4C3C4', + '200': '#ED9C9F', + '300': '#E67579', + '400': '#DF4E53', + '500': '#D8272D', + '600': '#AD1F24', + '700': '#81181B', + '800': '#561012', + '900': '#2B0809', + }, }; const _focus = { outline: '4px solid', @@ -137,13 +164,13 @@ const theme = extendTheme( }, defaultProps: { size: 'lg', - colorScheme: 'ui', + colorScheme: 'primary', }, }, Radio: { defaultProps: { size: 'lg', - colorScheme: 'ui', + colorScheme: 'primary', }, }, Input: { @@ -206,7 +233,7 @@ const theme = extendTheme( }, Switch: { defaultProps: { - colorScheme: 'ui', + colorScheme: 'primary', }, }, Table: { @@ -225,7 +252,25 @@ const theme = extendTheme( }, }, }, + Tabs: { + variants: { + line: { + tab: { + color: 'bc-component', + _selected: { + fontWeight: 'bold', + color: 'bc-blue', + }, + }, + }, + }, + }, Tag: { + baseStyle: { + label: { + lineHeight: '1.4', + }, + }, variants: { 'bc-input': { container: { @@ -253,6 +298,9 @@ const theme = extendTheme( color: 'text', fontSize: 'xs', }, + icon: { + color: 'bc-component', + }, }, }, }, diff --git a/src/package.json b/src/package.json index 51d6dc6da..b17ae8296 100644 --- a/src/package.json +++ b/src/package.json @@ -92,7 +92,7 @@ "react": "^17.0.1", "react-dom": "^17.0.1", "react-error-boundary": "^3.1.0", - "react-icons": "^4.1.0", + "react-icons": "^4.2.0", "react-intersection-observer": "^8.31.0", "react-markdown": "^5.0.3", "react-modal": "^3.12.1", diff --git a/src/stories/Button.stories.tsx b/src/stories/Button.stories.tsx deleted file mode 100644 index b5a12ae7b..000000000 --- a/src/stories/Button.stories.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import * as React from 'react'; -import { Button, Icon, Text, VStack } from '@chakra-ui/react'; -import { FaPlus } from 'react-icons/fa'; - -export default { - title: 'BCGov/Button', -}; - -export const Primary = () => ( - - Default variant for all Buttons - - - - - -); - -export const Secondary = () => ( - - - - - - -); - -export const HeaderButton = () => ( - - - - - - -); - -export const FlatButton = () => ( - - - - - - -); diff --git a/src/stories/Buttons.stories.mdx b/src/stories/Buttons.stories.mdx index 600a58e28..a5f6a18d5 100644 --- a/src/stories/Buttons.stories.mdx +++ b/src/stories/Buttons.stories.mdx @@ -88,7 +88,6 @@ When using a button in the app bar header, set the variant to `header` - @@ -96,3 +95,19 @@ When using a button in the app bar header, set the variant to `header` + +## Other variants + +There is support for common theme colours (eg red or green) that still adhere to the design guidelines without using custom variants like `primary` or `flat` + + + + + + + + + + + + diff --git a/src/stories/Tabs.stories.mdx b/src/stories/Tabs.stories.mdx new file mode 100644 index 000000000..4599c6964 --- /dev/null +++ b/src/stories/Tabs.stories.mdx @@ -0,0 +1,37 @@ +import { + Tabs, + TabList, + TabPanels, + Tab, + TabPanel +} from '@chakra-ui/react'; +import { Meta, Story, Canvas } from '@storybook/addon-docs'; + + + +# Tabs + +The default `lines` variant for Chakra tabs is recommended for most tabs situations. + + + + + + One + Two + Three + + + +

one!

+
+ +

two!

+
+ +

three!

+
+
+
+
+
diff --git a/src/stories/Tags.stories.mdx b/src/stories/Tags.stories.mdx index 4fdcbc205..134e3a5fe 100644 --- a/src/stories/Tags.stories.mdx +++ b/src/stories/Tags.stories.mdx @@ -31,7 +31,7 @@ export const Template = ({ children, ...args }) => ( export const DragTemplate = (args) => ( Tag with Icon - + ) @@ -44,7 +44,7 @@ Reference the [Chakra Button](https://chakra-ui.com/docs/form/button) documentat ```javascript import { Tag } from '@chakra-ui/react'; -const Component = () => Button +const Component = () => Tag ``` ## Default Tag From 75a4bce081c340ab267ffd80e82e223bb94ba4d7 Mon Sep 17 00:00:00 2001 From: Nithin Shekar Kuruba Date: Tue, 31 Aug 2021 09:51:49 -0700 Subject: [PATCH 5/8] removed assertion that fails when user is not found in portal but holds permissions or scopes to the portal --- src/lists/extensions/Namespace.ts | 16 +++++++++------- src/services/keystone/user.ts | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lists/extensions/Namespace.ts b/src/lists/extensions/Namespace.ts index 38aa87249..e4af9dbec 100644 --- a/src/lists/extensions/Namespace.ts +++ b/src/lists/extensions/Namespace.ts @@ -219,19 +219,21 @@ module.exports = { }); permissions = updatedPermissions; } - const listOfUsers: Array = []; + const listOfUsers = []; for (const perm of permissions) { if (perm.granted) { const user = await lookupUserByUsername( noauthContext, perm.requesterName ); - listOfUsers.push({ - id: user[0].id, - name: user[0].name, - username: user[0].username, - email: user[0].email, - }); + if (user.length > 0) { + listOfUsers.push({ + id: user[0].id, + name: user[0].name, + username: user[0].username, + email: user[0].email, + }); + } } } return listOfUsers; diff --git a/src/services/keystone/user.ts b/src/services/keystone/user.ts index 8173c349c..8ee4fa980 100644 --- a/src/services/keystone/user.ts +++ b/src/services/keystone/user.ts @@ -83,7 +83,7 @@ export async function lookupUserByUsername( variables: { username: username }, }); logger.debug('Query [lookupUserByUsername] result %j', result); - assert.strictEqual(result.data.allUsers.length, 1, 'UserNotFound'); + //assert.strictEqual(result.data.allUsers.length, 1, 'UserNotFound'); return result.data.allUsers; } From 12fdf969146f889c0e56d8e939ca100cfbc4dea5 Mon Sep 17 00:00:00 2001 From: Nithin Shekar Kuruba Date: Tue, 31 Aug 2021 13:56:32 -0700 Subject: [PATCH 6/8] Created a new query to fetch list of users with usernames and retained assert check in lookupUserByUsername --- src/lists/extensions/Namespace.ts | 27 ++++++--------------------- src/services/keystone/index.ts | 1 + src/services/keystone/user.ts | 21 ++++++++++++++++++++- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/lists/extensions/Namespace.ts b/src/lists/extensions/Namespace.ts index e4af9dbec..5739dbedb 100644 --- a/src/lists/extensions/Namespace.ts +++ b/src/lists/extensions/Namespace.ts @@ -8,10 +8,9 @@ import { } from '../../services/uma2'; import { lookupProductEnvironmentServicesBySlug, - lookupUserByUsername, + lookupUsersByUsernames, } from '../../services/keystone'; import { - getSuitableOwnerToken, getEnvironmentContext, getResourceSets, getNamespaceResourceSets, @@ -28,7 +27,6 @@ import { Logger } from '../../logger'; const logger = Logger('ext.Namespace'); import { strict as assert } from 'assert'; -import { User } from '@/services/keystone/types'; const typeUserContact = ` type UserContact { @@ -219,24 +217,11 @@ module.exports = { }); permissions = updatedPermissions; } - const listOfUsers = []; - for (const perm of permissions) { - if (perm.granted) { - const user = await lookupUserByUsername( - noauthContext, - perm.requesterName - ); - if (user.length > 0) { - listOfUsers.push({ - id: user[0].id, - name: user[0].name, - username: user[0].username, - email: user[0].email, - }); - } - } - } - return listOfUsers; + const usernameList = permissions + .filter((p) => p.granted) + .map((p) => p.requesterName); + + return await lookupUsersByUsernames(noauthContext, usernameList); }, access: EnforcementPoint, }, diff --git a/src/services/keystone/index.ts b/src/services/keystone/index.ts index eec6edba3..2cef66072 100644 --- a/src/services/keystone/index.ts +++ b/src/services/keystone/index.ts @@ -44,6 +44,7 @@ export { updateUserLegalAccept, LegalAgreed, lookupUserByUsername, + lookupUsersByUsernames, lookupUser, lookupUsersByNamespace, } from './user'; diff --git a/src/services/keystone/user.ts b/src/services/keystone/user.ts index 8ee4fa980..f49d53b52 100644 --- a/src/services/keystone/user.ts +++ b/src/services/keystone/user.ts @@ -83,7 +83,26 @@ export async function lookupUserByUsername( variables: { username: username }, }); logger.debug('Query [lookupUserByUsername] result %j', result); - //assert.strictEqual(result.data.allUsers.length, 1, 'UserNotFound'); + assert.strictEqual(result.data.allUsers.length, 1, 'UserNotFound'); + return result.data.allUsers; +} + +export async function lookupUsersByUsernames( + context: any, + usernameList: string[] +): Promise<[User]> { + const result = await context.executeGraphQL({ + query: `query GetUsersWithUsernames($usernames: [String!]!) { + allUsers(where: {username_in: $usernames}) { + id + name + username + email + } + }`, + variables: { usernames: usernameList }, + }); + logger.debug('Query [lookupUsersByUsernames] result %j', result); return result.data.allUsers; } From a1a0c82c56640f195118946dcc29c572fc60c920 Mon Sep 17 00:00:00 2001 From: Joshua Jones Date: Fri, 3 Sep 2021 13:05:21 -0700 Subject: [PATCH 7/8] Fix graph error. (#192) --- src/nextapp/components/services-list/metric-graph.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/nextapp/components/services-list/metric-graph.tsx b/src/nextapp/components/services-list/metric-graph.tsx index a291ab890..b16db1eea 100644 --- a/src/nextapp/components/services-list/metric-graph.tsx +++ b/src/nextapp/components/services-list/metric-graph.tsx @@ -179,7 +179,9 @@ const MetricGraph: React.FC = ({ Peak Daily - {numeral(peakDay.total).format('0.0a')} + + {numeral(peakDay?.total ?? 0).format('0.0a')} + Peak Day From 5bcf03917c2e0259dba691d7f8ed4f006d23a1d1 Mon Sep 17 00:00:00 2001 From: ikethecoder Date: Tue, 14 Sep 2021 13:03:16 -0700 Subject: [PATCH 8/8] fix consumer detail page fail --- src/authz/whitelist.json | 5 +++++ src/nextapp/shared/types/query.types.ts | 3 ++- src/services/keystone/types.ts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/authz/whitelist.json b/src/authz/whitelist.json index 2d71d6bb6..88ddd83c0 100644 --- a/src/authz/whitelist.json +++ b/src/authz/whitelist.json @@ -890,5 +890,10 @@ "referer": "http://localhost:4180/devportal/requests/new/61208533a343b51df6d5d066", "query": "\n mutation Add($name: String!, $description: String) {\n createApplication(data: { name: $name, description: $description }) {\n id\n appId\n name\n }\n }\n", "added": "2021-08-22T16:36:21.234Z" + }, + "4f72a18c241e589f691cecbbcaa6d0ee": { + "referer": "http://localhost:4180/manager/consumers", + "query": "\n query GetConsumer($id: ID!) {\n getGatewayConsumerPlugins(id: $id) {\n id\n username\n aclGroups\n customId\n extForeignKey\n namespace\n plugins {\n id\n name\n extForeignKey\n config\n service {\n id\n name\n extForeignKey\n }\n route {\n id\n name\n extForeignKey\n }\n }\n tags\n createdAt\n }\n\n allServiceAccesses(where: { consumer: { id: $id } }) {\n name\n consumerType\n application {\n appId\n name\n owner {\n name\n username\n email\n }\n }\n }\n\n allProductsByNamespace {\n id\n name\n environments {\n id\n appId\n name\n active\n flow\n credentialIssuer {\n id\n availableScopes\n clientRoles\n }\n services {\n name\n routes {\n name\n }\n }\n }\n }\n }\n", + "added": "2021-09-14T20:01:21.445Z" } } \ No newline at end of file diff --git a/src/nextapp/shared/types/query.types.ts b/src/nextapp/shared/types/query.types.ts index 4d075d655..219ccdcf9 100644 --- a/src/nextapp/shared/types/query.types.ts +++ b/src/nextapp/shared/types/query.types.ts @@ -5877,7 +5877,7 @@ export type NamespaceInput = { export type UserContact = { __typename?: 'UserContact'; - id: Scalars['String']; + id: Scalars['ID']; name: Scalars['String']; username: Scalars['String']; email: Scalars['String']; @@ -6852,6 +6852,7 @@ export type QueryConsumerScopesAndRolesArgs = { export type QueryUsersByNamespaceArgs = { namespace: Scalars['String']; + scopeName?: Maybe; }; diff --git a/src/services/keystone/types.ts b/src/services/keystone/types.ts index 4d075d655..219ccdcf9 100644 --- a/src/services/keystone/types.ts +++ b/src/services/keystone/types.ts @@ -5877,7 +5877,7 @@ export type NamespaceInput = { export type UserContact = { __typename?: 'UserContact'; - id: Scalars['String']; + id: Scalars['ID']; name: Scalars['String']; username: Scalars['String']; email: Scalars['String']; @@ -6852,6 +6852,7 @@ export type QueryConsumerScopesAndRolesArgs = { export type QueryUsersByNamespaceArgs = { namespace: Scalars['String']; + scopeName?: Maybe; };