rarForAuthorizationCode(ctx) {
          // decision points:
          // - ctx.oidc.client
          // - ctx.oidc.resourceServers
          // - ctx.oidc.params.authorization_details (unparsed authorization_details from the authorization request)
          // - ctx.oidc.grant.rar (authorization_details granted)
          mustChange('features.richAuthorizationRequests.rarForAuthorizationCode', 'transform the requested and granted RAR details to be passed in the authorization code');
          throw new Error(
            'features.richAuthorizationRequests.rarForAuthorizationCode not implemented',
          );
        }
features.richAuthorizationRequests.types

description: Supported authorization details type identifiers.

example: https://www.rfc-editor.org/rfc/rfc9396.html#appendix-A.3

```js
import { z } from 'zod'

const TaxData = z
  .object({
    duration_of_access: z.number().int().positive(),
    locations: z
      .array(
        z.literal('https://taxservice.govehub.no.example.com'),
      )
      .length(1),
    actions: z
      .array(z.literal('read_tax_declaration'))
      .length(1),
    periods: z
      .array(
        z.coerce
          .number()
          .max(new Date().getFullYear() - 1)
          .min(1997),
      )
      .min(1),
    tax_payer_id: z.string().min(1),
  })
  .strict()

const configuration = {
  features: {
    richAuthorizationRequests: {
      enabled: true,
      // ...
      types: {
        tax_data: {
          validate(ctx, detail, client) {
            const { success: valid, error } =
              TaxData.parse(detail)
            if (!valid) {
              throw new InvalidAuthorizationDetails()
            }
          },
        },
      },
    },
  },
}
```