diff --git a/src/components/APIRequest.astro b/src/components/APIRequest.astro index 18af3c6a582fac..7ec16fabd578b6 100644 --- a/src/components/APIRequest.astro +++ b/src/components/APIRequest.astro @@ -20,10 +20,13 @@ const props = z json: z.union([Record, z.array(Record)]).optional(), form: Record.optional(), code: z.custom, "title">>().optional(), + roles: z.union([z.boolean(), z.string()]).default(true), }) .strict(); -let { path, method, parameters, json, form, code } = props.parse(Astro.props); +let { path, method, parameters, json, form, code, roles } = props.parse( + Astro.props, +); if (json && form) { throw new Error(`[APIRequest] Cannot use both "json" and "form" properties.`); @@ -146,11 +149,17 @@ if (jsonSchema?.required) { } } -const tokenGroups = operation["x-api-token-group"]; +let tokenGroups = operation["x-api-token-group"]; + +if (typeof roles === "string") { + tokenGroups = tokenGroups?.filter((group) => + group.toLowerCase().includes(roles.toLowerCase()), + ); +} --- { - tokenGroups && ( + tokenGroups && roles && (
At least one of the following{" "} diff --git a/src/content/docs/style-guide/components/api-request.mdx b/src/content/docs/style-guide/components/api-request.mdx index e7e87d0cba232f..757f14936c4fff 100644 --- a/src/content/docs/style-guide/components/api-request.mdx +++ b/src/content/docs/style-guide/components/api-request.mdx @@ -24,6 +24,7 @@ import { APIRequest } from "~/components"; code={{ mark: [5, "block"], }} + roles="Domain" />