import { ZuploContext, ZuploRequest, environment } from "@zuplo/runtime"; type MyPolicyOptionsType = { bucketName: string; accountName: string; }; export default async function policy( request: ZuploRequest, context: ZuploContext, options: MyPolicyOptionsType, policyName: string ) { // Get the consumerName from the URL const { consumerName } = request.params; const url = new URL(`https://dev.zuplo.com/v1/accounts/${options.accountName}/key-buckets/${options.bucketName}/consumers/${consumerName}`) url.searchParams.set("include-api-keys", "true") url.searchParams.set("key-format", "true") const response = await fetch(url.toString(), { headers: { "Authorization": `Bearer ${environment.MY_ZUPLO_API_KEY}` } }) if (!response.ok) { const text = await response.text(); context.log.error("Error retreieving consumer", text); throw new Error("Error retrieving consumer"); } /* Simplified API response { "id": "csmr_TNel8WPAbkVc5cj1UhWXMWV5", "name": "fasdff", "metadata": {}, "apiKeys": [ { "id": "key_Vs64JirxXVGxWEdJI6X7sjG2", "key": "****" } ] } */ const result = await response.json(); request.user.data request.user = { sub: result.name, data: { ...result.metadata, apiKey: result.apiKeys[0].key } } return request; }