authorizeCurrentWorkspace( $request, 'manageTeam', 'Not authorized to manage API keys.', ); if (! $workspace instanceof Workspace) { return $workspace; } $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'expires_at' => CreateApiKey::expiresAtRules(), ]); $created = CreateApiKey::execute($request->user(), $workspace, $validated); return Response::structured(array_merge( (new ApiKeyResource($created['token']))->resolve(), ['token' => $created['plain_token']], )); } public function schema(JsonSchema $schema): array { return [ 'name' => $schema->string()->required()->description('A human-readable name to identify the key (e.g. "My integration").'), 'expires_at' => $schema->string()->description('Optional expiration date (YYYY-MM-DD or ISO 8601). Omit for a key that never expires.'), ]; } }