diff --git a/redfish-core/include/registries/privilege_registry.hpp b/redfish-core/include/registries/privilege_registry.hpp
new file mode 100644
index 0000000..706a24c
--- /dev/null
+++ b/redfish-core/include/registries/privilege_registry.hpp
@@ -0,0 +1,1342 @@
+#pragma once
+// privilege_registry.hpp is generated.  Do not edit directly
+#include <privileges.hpp>
+
+namespace redfish::privileges
+{
+// clang-format off
+const std::array<Privileges, 1> privilegeSetLogin = {{
+    {"Login"}
+}};
+const std::array<Privileges, 1> privilegeSetConfigureComponents = {{
+    {"ConfigureComponents"}
+}};
+const std::array<Privileges, 1> privilegeSetConfigureUsers = {{
+    {"ConfigureUsers"}
+}};
+const std::array<Privileges, 1> privilegeSetConfigureManager = {{
+    {"ConfigureManager"}
+}};
+const std::array<Privileges, 2> privilegeSetConfigureManagerOrConfigureComponents = {{
+    {"ConfigureManager"},
+    {"ConfigureComponents"}
+}};
+const std::array<Privileges, 2> privilegeSetConfigureManagerOrConfigureSelf = {{
+    {"ConfigureManager"},
+    {"ConfigureSelf"}
+}};
+const std::array<Privileges, 3> privilegeSetConfigureManagerOrConfigureUsersOrConfigureSelf = {{
+    {"ConfigureManager"},
+    {"ConfigureUsers"},
+    {"ConfigureSelf"}
+}};
+const std::array<Privileges, 2> privilegeSetLoginOrNoAuth = {{
+    {"Login"},
+    {}
+}};
+// clang-format on
+
+// AccelerationFunction
+const auto& getAccelerationFunction = privilegeSetLogin;
+const auto& headAccelerationFunction = privilegeSetLogin;
+const auto& patchAccelerationFunction = privilegeSetConfigureComponents;
+const auto& putAccelerationFunction = privilegeSetConfigureComponents;
+const auto& deleteAccelerationFunction = privilegeSetConfigureComponents;
+const auto& postAccelerationFunction = privilegeSetConfigureComponents;
+
+// AccelerationFunctionCollection
+const auto& getAccelerationFunctionCollection = privilegeSetLogin;
+const auto& headAccelerationFunctionCollection = privilegeSetLogin;
+const auto& patchAccelerationFunctionCollection =
+    privilegeSetConfigureComponents;
+const auto& putAccelerationFunctionCollection = privilegeSetConfigureComponents;
+const auto& deleteAccelerationFunctionCollection =
+    privilegeSetConfigureComponents;
+const auto& postAccelerationFunctionCollection =
+    privilegeSetConfigureComponents;
+
+// AccountService
+const auto& getAccountService = privilegeSetLogin;
+const auto& headAccountService = privilegeSetLogin;
+const auto& patchAccountService = privilegeSetConfigureUsers;
+const auto& putAccountService = privilegeSetConfigureUsers;
+const auto& deleteAccountService = privilegeSetConfigureUsers;
+const auto& postAccountService = privilegeSetConfigureUsers;
+
+// ActionInfo
+const auto& getActionInfo = privilegeSetLogin;
+const auto& headActionInfo = privilegeSetLogin;
+const auto& patchActionInfo = privilegeSetConfigureManager;
+const auto& putActionInfo = privilegeSetConfigureManager;
+const auto& deleteActionInfo = privilegeSetConfigureManager;
+const auto& postActionInfo = privilegeSetConfigureManager;
+
+// AddressPool
+const auto& getAddressPool = privilegeSetLogin;
+const auto& headAddressPool = privilegeSetLogin;
+const auto& patchAddressPool = privilegeSetConfigureComponents;
+const auto& putAddressPool = privilegeSetConfigureComponents;
+const auto& deleteAddressPool = privilegeSetConfigureComponents;
+const auto& postAddressPool = privilegeSetConfigureComponents;
+
+// AddressPoolCollection
+const auto& getAddressPoolCollection = privilegeSetLogin;
+const auto& headAddressPoolCollection = privilegeSetLogin;
+const auto& patchAddressPoolCollection = privilegeSetConfigureComponents;
+const auto& putAddressPoolCollection = privilegeSetConfigureComponents;
+const auto& deleteAddressPoolCollection = privilegeSetConfigureComponents;
+const auto& postAddressPoolCollection = privilegeSetConfigureComponents;
+
+// Aggregate
+const auto& getAggregate = privilegeSetLogin;
+const auto& headAggregate = privilegeSetLogin;
+const auto& patchAggregate = privilegeSetConfigureManagerOrConfigureComponents;
+const auto& putAggregate = privilegeSetConfigureManagerOrConfigureComponents;
+const auto& deleteAggregate = privilegeSetConfigureManagerOrConfigureComponents;
+const auto& postAggregate = privilegeSetConfigureManagerOrConfigureComponents;
+
+// AggregateCollection
+const auto& getAggregateCollection = privilegeSetLogin;
+const auto& headAggregateCollection = privilegeSetLogin;
+const auto& patchAggregateCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+const auto& putAggregateCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+const auto& deleteAggregateCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+const auto& postAggregateCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+
+// AggregationService
+const auto& getAggregationService = privilegeSetLogin;
+const auto& headAggregationService = privilegeSetLogin;
+const auto& patchAggregationService = privilegeSetConfigureManager;
+const auto& putAggregationService = privilegeSetConfigureManager;
+const auto& deleteAggregationService = privilegeSetConfigureManager;
+const auto& postAggregationService = privilegeSetConfigureManager;
+
+// AggregationSource
+const auto& getAggregationSource = privilegeSetLogin;
+const auto& headAggregationSource = privilegeSetLogin;
+const auto& patchAggregationSource = privilegeSetConfigureManager;
+const auto& putAggregationSource = privilegeSetConfigureManager;
+const auto& deleteAggregationSource = privilegeSetConfigureManager;
+const auto& postAggregationSource = privilegeSetConfigureManager;
+
+// AggregationSourceCollection
+const auto& getAggregationSourceCollection = privilegeSetLogin;
+const auto& headAggregationSourceCollection = privilegeSetLogin;
+const auto& patchAggregationSourceCollection = privilegeSetConfigureManager;
+const auto& putAggregationSourceCollection = privilegeSetConfigureManager;
+const auto& deleteAggregationSourceCollection = privilegeSetConfigureManager;
+const auto& postAggregationSourceCollection = privilegeSetConfigureManager;
+
+// Assembly
+const auto& getAssembly = privilegeSetLogin;
+const auto& headAssembly = privilegeSetLogin;
+const auto& patchAssembly = privilegeSetConfigureComponents;
+const auto& putAssembly = privilegeSetConfigureComponents;
+const auto& deleteAssembly = privilegeSetConfigureComponents;
+const auto& postAssembly = privilegeSetConfigureComponents;
+
+// Bios
+const auto& getBios = privilegeSetLogin;
+const auto& headBios = privilegeSetLogin;
+const auto& patchBios = privilegeSetConfigureComponents;
+const auto& postBios = privilegeSetConfigureComponents;
+const auto& putBios = privilegeSetConfigureComponents;
+const auto& deleteBios = privilegeSetConfigureComponents;
+
+// BootOption
+const auto& getBootOption = privilegeSetLogin;
+const auto& headBootOption = privilegeSetLogin;
+const auto& patchBootOption = privilegeSetConfigureComponents;
+const auto& putBootOption = privilegeSetConfigureComponents;
+const auto& deleteBootOption = privilegeSetConfigureComponents;
+const auto& postBootOption = privilegeSetConfigureComponents;
+
+// BootOptionCollection
+const auto& getBootOptionCollection = privilegeSetLogin;
+const auto& headBootOptionCollection = privilegeSetLogin;
+const auto& patchBootOptionCollection = privilegeSetConfigureComponents;
+const auto& putBootOptionCollection = privilegeSetConfigureComponents;
+const auto& deleteBootOptionCollection = privilegeSetConfigureComponents;
+const auto& postBootOptionCollection = privilegeSetConfigureComponents;
+
+// Certificate
+const auto& getCertificate = privilegeSetConfigureManager;
+const auto& headCertificate = privilegeSetConfigureManager;
+const auto& patchCertificate = privilegeSetConfigureManager;
+const auto& putCertificate = privilegeSetConfigureManager;
+const auto& deleteCertificate = privilegeSetConfigureManager;
+const auto& postCertificate = privilegeSetConfigureManager;
+
+// CertificateCollection
+const auto& getCertificateCollection = privilegeSetConfigureManager;
+const auto& headCertificateCollection = privilegeSetConfigureManager;
+const auto& patchCertificateCollection = privilegeSetConfigureManager;
+const auto& putCertificateCollection = privilegeSetConfigureManager;
+const auto& deleteCertificateCollection = privilegeSetConfigureManager;
+const auto& postCertificateCollection = privilegeSetConfigureManager;
+
+// CertificateLocations
+const auto& getCertificateLocations = privilegeSetConfigureManager;
+const auto& headCertificateLocations = privilegeSetConfigureManager;
+const auto& patchCertificateLocations = privilegeSetConfigureManager;
+const auto& putCertificateLocations = privilegeSetConfigureManager;
+const auto& deleteCertificateLocations = privilegeSetConfigureManager;
+const auto& postCertificateLocations = privilegeSetConfigureManager;
+
+// CertificateService
+const auto& getCertificateService = privilegeSetLogin;
+const auto& headCertificateService = privilegeSetLogin;
+const auto& patchCertificateService = privilegeSetConfigureManager;
+const auto& putCertificateService = privilegeSetConfigureManager;
+const auto& deleteCertificateService = privilegeSetConfigureManager;
+const auto& postCertificateService = privilegeSetConfigureManager;
+
+// Chassis
+const auto& getChassis = privilegeSetLogin;
+const auto& headChassis = privilegeSetLogin;
+const auto& patchChassis = privilegeSetConfigureComponents;
+const auto& putChassis = privilegeSetConfigureComponents;
+const auto& deleteChassis = privilegeSetConfigureComponents;
+const auto& postChassis = privilegeSetConfigureComponents;
+
+// ChassisCollection
+const auto& getChassisCollection = privilegeSetLogin;
+const auto& headChassisCollection = privilegeSetLogin;
+const auto& patchChassisCollection = privilegeSetConfigureComponents;
+const auto& putChassisCollection = privilegeSetConfigureComponents;
+const auto& deleteChassisCollection = privilegeSetConfigureComponents;
+const auto& postChassisCollection = privilegeSetConfigureComponents;
+
+// Circuit
+const auto& getCircuit = privilegeSetLogin;
+const auto& headCircuit = privilegeSetLogin;
+const auto& patchCircuit = privilegeSetConfigureComponents;
+const auto& putCircuit = privilegeSetConfigureComponents;
+const auto& deleteCircuit = privilegeSetConfigureComponents;
+const auto& postCircuit = privilegeSetConfigureComponents;
+
+// CircuitCollection
+const auto& getCircuitCollection = privilegeSetLogin;
+const auto& headCircuitCollection = privilegeSetLogin;
+const auto& patchCircuitCollection = privilegeSetConfigureComponents;
+const auto& putCircuitCollection = privilegeSetConfigureComponents;
+const auto& deleteCircuitCollection = privilegeSetConfigureComponents;
+const auto& postCircuitCollection = privilegeSetConfigureComponents;
+
+// CompositionService
+const auto& getCompositionService = privilegeSetLogin;
+const auto& headCompositionService = privilegeSetLogin;
+const auto& patchCompositionService = privilegeSetConfigureManager;
+const auto& putCompositionService = privilegeSetConfigureManager;
+const auto& deleteCompositionService = privilegeSetConfigureManager;
+const auto& postCompositionService = privilegeSetConfigureManager;
+
+// ComputerSystem
+const auto& getComputerSystem = privilegeSetLogin;
+const auto& headComputerSystem = privilegeSetLogin;
+const auto& patchComputerSystem = privilegeSetConfigureComponents;
+const auto& postComputerSystem = privilegeSetConfigureComponents;
+const auto& putComputerSystem = privilegeSetConfigureComponents;
+const auto& deleteComputerSystem = privilegeSetConfigureComponents;
+
+// ComputerSystemCollection
+const auto& getComputerSystemCollection = privilegeSetLogin;
+const auto& headComputerSystemCollection = privilegeSetLogin;
+const auto& patchComputerSystemCollection = privilegeSetConfigureComponents;
+const auto& postComputerSystemCollection = privilegeSetConfigureComponents;
+const auto& putComputerSystemCollection = privilegeSetConfigureComponents;
+const auto& deleteComputerSystemCollection = privilegeSetConfigureComponents;
+
+// Connection
+const auto& getConnection = privilegeSetLogin;
+const auto& headConnection = privilegeSetLogin;
+const auto& patchConnection = privilegeSetConfigureComponents;
+const auto& postConnection = privilegeSetConfigureComponents;
+const auto& putConnection = privilegeSetConfigureComponents;
+const auto& deleteConnection = privilegeSetConfigureComponents;
+
+// ConnectionCollection
+const auto& getConnectionCollection = privilegeSetLogin;
+const auto& headConnectionCollection = privilegeSetLogin;
+const auto& patchConnectionCollection = privilegeSetConfigureComponents;
+const auto& postConnectionCollection = privilegeSetConfigureComponents;
+const auto& putConnectionCollection = privilegeSetConfigureComponents;
+const auto& deleteConnectionCollection = privilegeSetConfigureComponents;
+
+// ConnectionMethod
+const auto& getConnectionMethod = privilegeSetLogin;
+const auto& headConnectionMethod = privilegeSetLogin;
+const auto& patchConnectionMethod = privilegeSetConfigureManager;
+const auto& putConnectionMethod = privilegeSetConfigureManager;
+const auto& deleteConnectionMethod = privilegeSetConfigureManager;
+const auto& postConnectionMethod = privilegeSetConfigureManager;
+
+// ConnectionMethodCollection
+const auto& getConnectionMethodCollection = privilegeSetLogin;
+const auto& headConnectionMethodCollection = privilegeSetLogin;
+const auto& patchConnectionMethodCollection = privilegeSetConfigureManager;
+const auto& putConnectionMethodCollection = privilegeSetConfigureManager;
+const auto& deleteConnectionMethodCollection = privilegeSetConfigureManager;
+const auto& postConnectionMethodCollection = privilegeSetConfigureManager;
+
+// Drive
+const auto& getDrive = privilegeSetLogin;
+const auto& headDrive = privilegeSetLogin;
+const auto& patchDrive = privilegeSetConfigureComponents;
+const auto& postDrive = privilegeSetConfigureComponents;
+const auto& putDrive = privilegeSetConfigureComponents;
+const auto& deleteDrive = privilegeSetConfigureComponents;
+
+// DriveCollection
+const auto& getDriveCollection = privilegeSetLogin;
+const auto& headDriveCollection = privilegeSetLogin;
+const auto& patchDriveCollection = privilegeSetConfigureComponents;
+const auto& postDriveCollection = privilegeSetConfigureComponents;
+const auto& putDriveCollection = privilegeSetConfigureComponents;
+const auto& deleteDriveCollection = privilegeSetConfigureComponents;
+
+// Endpoint
+const auto& getEndpoint = privilegeSetLogin;
+const auto& headEndpoint = privilegeSetLogin;
+const auto& patchEndpoint = privilegeSetConfigureComponents;
+const auto& postEndpoint = privilegeSetConfigureComponents;
+const auto& putEndpoint = privilegeSetConfigureComponents;
+const auto& deleteEndpoint = privilegeSetConfigureComponents;
+
+// EndpointCollection
+const auto& getEndpointCollection = privilegeSetLogin;
+const auto& headEndpointCollection = privilegeSetLogin;
+const auto& patchEndpointCollection = privilegeSetConfigureComponents;
+const auto& postEndpointCollection = privilegeSetConfigureComponents;
+const auto& putEndpointCollection = privilegeSetConfigureComponents;
+const auto& deleteEndpointCollection = privilegeSetConfigureComponents;
+
+// EndpointGroup
+const auto& getEndpointGroup = privilegeSetLogin;
+const auto& headEndpointGroup = privilegeSetLogin;
+const auto& patchEndpointGroup = privilegeSetConfigureComponents;
+const auto& postEndpointGroup = privilegeSetConfigureComponents;
+const auto& putEndpointGroup = privilegeSetConfigureComponents;
+const auto& deleteEndpointGroup = privilegeSetConfigureComponents;
+
+// EndpointGroupCollection
+const auto& getEndpointGroupCollection = privilegeSetLogin;
+const auto& headEndpointGroupCollection = privilegeSetLogin;
+const auto& patchEndpointGroupCollection = privilegeSetConfigureComponents;
+const auto& postEndpointGroupCollection = privilegeSetConfigureComponents;
+const auto& putEndpointGroupCollection = privilegeSetConfigureComponents;
+const auto& deleteEndpointGroupCollection = privilegeSetConfigureComponents;
+
+// EthernetInterface
+const auto& getEthernetInterface = privilegeSetLogin;
+const auto& headEthernetInterface = privilegeSetLogin;
+const auto& patchEthernetInterface = privilegeSetConfigureComponents;
+const auto& postEthernetInterface = privilegeSetConfigureComponents;
+const auto& putEthernetInterface = privilegeSetConfigureComponents;
+const auto& deleteEthernetInterface = privilegeSetConfigureComponents;
+
+// EthernetInterfaceCollection
+const auto& getEthernetInterfaceCollection = privilegeSetLogin;
+const auto& headEthernetInterfaceCollection = privilegeSetLogin;
+const auto& patchEthernetInterfaceCollection = privilegeSetConfigureComponents;
+const auto& postEthernetInterfaceCollection = privilegeSetConfigureComponents;
+const auto& putEthernetInterfaceCollection = privilegeSetConfigureComponents;
+const auto& deleteEthernetInterfaceCollection = privilegeSetConfigureComponents;
+
+// EventDestination
+const auto& getEventDestination = privilegeSetLogin;
+const auto& headEventDestination = privilegeSetLogin;
+const auto& patchEventDestination = privilegeSetConfigureManagerOrConfigureSelf;
+const auto& postEventDestination = privilegeSetConfigureManagerOrConfigureSelf;
+const auto& putEventDestination = privilegeSetConfigureManagerOrConfigureSelf;
+const auto& deleteEventDestination =
+    privilegeSetConfigureManagerOrConfigureSelf;
+
+// EventDestinationCollection
+const auto& getEventDestinationCollection = privilegeSetLogin;
+const auto& headEventDestinationCollection = privilegeSetLogin;
+const auto& patchEventDestinationCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+const auto& postEventDestinationCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+const auto& putEventDestinationCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+const auto& deleteEventDestinationCollection =
+    privilegeSetConfigureManagerOrConfigureComponents;
+
+// EventService
+const auto& getEventService = privilegeSetLogin;
+const auto& headEventService = privilegeSetLogin;
+const auto& patchEventService = privilegeSetConfigureManager;
+const auto& postEventService = privilegeSetConfigureManager;
+const auto& putEventService = privilegeSetConfigureManager;
+const auto& deleteEventService = privilegeSetConfigureManager;
+
+// ExternalAccountProvider
+const auto& getExternalAccountProvider = privilegeSetLogin;
+const auto& headExternalAccountProvider = privilegeSetLogin;
+const auto& patchExternalAccountProvider = privilegeSetConfigureManager;
+const auto& putExternalAccountProvider = privilegeSetConfigureManager;
+const auto& deleteExternalAccountProvider = privilegeSetConfigureManager;
+const auto& postExternalAccountProvider = privilegeSetConfigureManager;
+
+// ExternalAccountProviderCollection
+const auto& getExternalAccountProviderCollection = privilegeSetLogin;
+const auto& headExternalAccountProviderCollection = privilegeSetLogin;
+const auto& patchExternalAccountProviderCollection =
+    privilegeSetConfigureManager;
+const auto& putExternalAccountProviderCollection = privilegeSetConfigureManager;
+const auto& deleteExternalAccountProviderCollection =
+    privilegeSetConfigureManager;
+const auto& postExternalAccountProviderCollection =
+    privilegeSetConfigureManager;
+
+// Fabric
+const auto& getFabric = privilegeSetLogin;
+const auto& headFabric = privilegeSetLogin;
+const auto& patchFabric = privilegeSetConfigureComponents;
+const auto& postFabric = privilegeSetConfigureComponents;
+const auto& putFabric = privilegeSetConfigureComponents;
+const auto& deleteFabric = privilegeSetConfigureComponents;
+
+// FabricCollection
+const auto& getFabricCollection = privilegeSetLogin;
+const auto& headFabricCollection = privilegeSetLogin;
+const auto& patchFabricCollection = privilegeSetConfigureComponents;
+const auto& postFabricCollection = privilegeSetConfigureComponents;
+const auto& putFabricCollection = privilegeSetConfigureComponents;
+const auto& deleteFabricCollection = privilegeSetConfigureComponents;
+
+// FabricAdapter
+const auto& getFabricAdapter = privilegeSetLogin;
+const auto& headFabricAdapter = privilegeSetLogin;
+const auto& patchFabricAdapter = privilegeSetConfigureComponents;
+const auto& postFabricAdapter = privilegeSetConfigureComponents;
+const auto& putFabricAdapter = privilegeSetConfigureComponents;
+const auto& deleteFabricAdapter = privilegeSetConfigureComponents;
+
+// FabricAdapterCollection
+const auto& getFabricAdapterCollection = privilegeSetLogin;
+const auto& headFabricAdapterCollection = privilegeSetLogin;
+const auto& patchFabricAdapterCollection = privilegeSetConfigureComponents;
+const auto& postFabricAdapterCollection = privilegeSetConfigureComponents;
+const auto& putFabricAdapterCollection = privilegeSetConfigureComponents;
+const auto& deleteFabricAdapterCollection = privilegeSetConfigureComponents;
+
+// Facility
+const auto& getFacility = privilegeSetLogin;
+const auto& headFacility = privilegeSetLogin;
+const auto& patchFacility = privilegeSetConfigureComponents;
+const auto& putFacility = privilegeSetConfigureComponents;
+const auto& deleteFacility = privilegeSetConfigureComponents;
+const auto& postFacility = privilegeSetConfigureComponents;
+
+// FacilityCollection
+const auto& getFacilityCollection = privilegeSetLogin;
+const auto& headFacilityCollection = privilegeSetLogin;
+const auto& patchFacilityCollection = privilegeSetConfigureComponents;
+const auto& putFacilityCollection = privilegeSetConfigureComponents;
+const auto& deleteFacilityCollection = privilegeSetConfigureComponents;
+const auto& postFacilityCollection = privilegeSetConfigureComponents;
+
+// HostInterface
+const auto& getHostInterface = privilegeSetLogin;
+const auto& headHostInterface = privilegeSetLogin;
+const auto& patchHostInterface = privilegeSetConfigureManager;
+const auto& postHostInterface = privilegeSetConfigureManager;
+const auto& putHostInterface = privilegeSetConfigureManager;
+const auto& deleteHostInterface = privilegeSetConfigureManager;
+
+// HostInterfaceCollection
+const auto& getHostInterfaceCollection = privilegeSetLogin;
+const auto& headHostInterfaceCollection = privilegeSetLogin;
+const auto& patchHostInterfaceCollection = privilegeSetConfigureManager;
+const auto& postHostInterfaceCollection = privilegeSetConfigureManager;
+const auto& putHostInterfaceCollection = privilegeSetConfigureManager;
+const auto& deleteHostInterfaceCollection = privilegeSetConfigureManager;
+
+// Job
+const auto& getJob = privilegeSetLogin;
+const auto& headJob = privilegeSetLogin;
+const auto& patchJob = privilegeSetConfigureManager;
+const auto& putJob = privilegeSetConfigureManager;
+const auto& deleteJob = privilegeSetConfigureManager;
+const auto& postJob = privilegeSetConfigureManager;
+
+// JobCollection
+const auto& getJobCollection = privilegeSetLogin;
+const auto& headJobCollection = privilegeSetLogin;
+const auto& patchJobCollection = privilegeSetConfigureManager;
+const auto& putJobCollection = privilegeSetConfigureManager;
+const auto& deleteJobCollection = privilegeSetConfigureManager;
+const auto& postJobCollection = privilegeSetConfigureManager;
+
+// JobService
+const auto& getJobService = privilegeSetLogin;
+const auto& headJobService = privilegeSetLogin;
+const auto& patchJobService = privilegeSetConfigureManager;
+const auto& putJobService = privilegeSetConfigureManager;
+const auto& deleteJobService = privilegeSetConfigureManager;
+const auto& postJobService = privilegeSetConfigureManager;
+
+// JsonSchemaFile
+const auto& getJsonSchemaFile = privilegeSetLogin;
+const auto& headJsonSchemaFile = privilegeSetLogin;
+const auto& patchJsonSchemaFile = privilegeSetConfigureManager;
+const auto& postJsonSchemaFile = privilegeSetConfigureManager;
+const auto& putJsonSchemaFile = privilegeSetConfigureManager;
+const auto& deleteJsonSchemaFile = privilegeSetConfigureManager;
+
+// JsonSchemaFileCollection
+const auto& getJsonSchemaFileCollection = privilegeSetLogin;
+const auto& headJsonSchemaFileCollection = privilegeSetLogin;
+const auto& patchJsonSchemaFileCollection = privilegeSetConfigureManager;
+const auto& postJsonSchemaFileCollection = privilegeSetConfigureManager;
+const auto& putJsonSchemaFileCollection = privilegeSetConfigureManager;
+const auto& deleteJsonSchemaFileCollection = privilegeSetConfigureManager;
+
+// LogEntry
+const auto& getLogEntry = privilegeSetLogin;
+const auto& headLogEntry = privilegeSetLogin;
+const auto& patchLogEntry = privilegeSetConfigureManager;
+const auto& putLogEntry = privilegeSetConfigureManager;
+const auto& deleteLogEntry = privilegeSetConfigureManager;
+const auto& postLogEntry = privilegeSetConfigureManager;
+
+// LogEntryCollection
+const auto& getLogEntryCollection = privilegeSetLogin;
+const auto& headLogEntryCollection = privilegeSetLogin;
+const auto& patchLogEntryCollection = privilegeSetConfigureManager;
+const auto& putLogEntryCollection = privilegeSetConfigureManager;
+const auto& deleteLogEntryCollection = privilegeSetConfigureManager;
+const auto& postLogEntryCollection = privilegeSetConfigureManager;
+
+// LogService
+const auto& getLogService = privilegeSetLogin;
+const auto& headLogService = privilegeSetLogin;
+const auto& patchLogService = privilegeSetConfigureManager;
+const auto& putLogService = privilegeSetConfigureManager;
+const auto& deleteLogService = privilegeSetConfigureManager;
+const auto& postLogService = privilegeSetConfigureManager;
+
+// LogServiceCollection
+const auto& getLogServiceCollection = privilegeSetLogin;
+const auto& headLogServiceCollection = privilegeSetLogin;
+const auto& patchLogServiceCollection = privilegeSetConfigureManager;
+const auto& putLogServiceCollection = privilegeSetConfigureManager;
+const auto& deleteLogServiceCollection = privilegeSetConfigureManager;
+const auto& postLogServiceCollection = privilegeSetConfigureManager;
+
+// Manager
+const auto& getManager = privilegeSetLogin;
+const auto& headManager = privilegeSetLogin;
+const auto& patchManager = privilegeSetConfigureManager;
+const auto& postManager = privilegeSetConfigureManager;
+const auto& putManager = privilegeSetConfigureManager;
+const auto& deleteManager = privilegeSetConfigureManager;
+
+// ManagerCollection
+const auto& getManagerCollection = privilegeSetLogin;
+const auto& headManagerCollection = privilegeSetLogin;
+const auto& patchManagerCollection = privilegeSetConfigureManager;
+const auto& postManagerCollection = privilegeSetConfigureManager;
+const auto& putManagerCollection = privilegeSetConfigureManager;
+const auto& deleteManagerCollection = privilegeSetConfigureManager;
+
+// ManagerAccount
+const auto& getManagerAccount =
+    privilegeSetConfigureManagerOrConfigureUsersOrConfigureSelf;
+const auto& headManagerAccount = privilegeSetLogin;
+const auto& patchManagerAccount = privilegeSetConfigureUsers;
+const auto& postManagerAccount = privilegeSetConfigureUsers;
+const auto& putManagerAccount = privilegeSetConfigureUsers;
+const auto& deleteManagerAccount = privilegeSetConfigureUsers;
+
+// ManagerAccountCollection
+const auto& getManagerAccountCollection = privilegeSetLogin;
+const auto& headManagerAccountCollection = privilegeSetLogin;
+const auto& patchManagerAccountCollection = privilegeSetConfigureUsers;
+const auto& putManagerAccountCollection = privilegeSetConfigureUsers;
+const auto& deleteManagerAccountCollection = privilegeSetConfigureUsers;
+const auto& postManagerAccountCollection = privilegeSetConfigureUsers;
+
+// ManagerNetworkProtocol
+const auto& getManagerNetworkProtocol = privilegeSetLogin;
+const auto& headManagerNetworkProtocol = privilegeSetLogin;
+const auto& patchManagerNetworkProtocol = privilegeSetConfigureManager;
+const auto& postManagerNetworkProtocol = privilegeSetConfigureManager;
+const auto& putManagerNetworkProtocol = privilegeSetConfigureManager;
+const auto& deleteManagerNetworkProtocol = privilegeSetConfigureManager;
+
+// MediaController
+const auto& getMediaController = privilegeSetLogin;
+const auto& headMediaController = privilegeSetLogin;
+const auto& patchMediaController = privilegeSetConfigureComponents;
+const auto& postMediaController = privilegeSetConfigureComponents;
+const auto& putMediaController = privilegeSetConfigureComponents;
+const auto& deleteMediaController = privilegeSetConfigureComponents;
+
+// MediaControllerCollection
+const auto& getMediaControllerCollection = privilegeSetLogin;
+const auto& headMediaControllerCollection = privilegeSetLogin;
+const auto& patchMediaControllerCollection = privilegeSetConfigureComponents;
+const auto& postMediaControllerCollection = privilegeSetConfigureComponents;
+const auto& putMediaControllerCollection = privilegeSetConfigureComponents;
+const auto& deleteMediaControllerCollection = privilegeSetConfigureComponents;
+
+// Memory
+const auto& getMemory = privilegeSetLogin;
+const auto& headMemory = privilegeSetLogin;
+const auto& patchMemory = privilegeSetConfigureComponents;
+const auto& postMemory = privilegeSetConfigureComponents;
+const auto& putMemory = privilegeSetConfigureComponents;
+const auto& deleteMemory = privilegeSetConfigureComponents;
+
+// MemoryCollection
+const auto& getMemoryCollection = privilegeSetLogin;
+const auto& headMemoryCollection = privilegeSetLogin;
+const auto& patchMemoryCollection = privilegeSetConfigureComponents;
+const auto& postMemoryCollection = privilegeSetConfigureComponents;
+const auto& putMemoryCollection = privilegeSetConfigureComponents;
+const auto& deleteMemoryCollection = privilegeSetConfigureComponents;
+
+// MemoryChunks
+const auto& getMemoryChunks = privilegeSetLogin;
+const auto& headMemoryChunks = privilegeSetLogin;
+const auto& patchMemoryChunks = privilegeSetConfigureComponents;
+const auto& postMemoryChunks = privilegeSetConfigureComponents;
+const auto& putMemoryChunks = privilegeSetConfigureComponents;
+const auto& deleteMemoryChunks = privilegeSetConfigureComponents;
+
+// MemoryChunksCollection
+const auto& getMemoryChunksCollection = privilegeSetLogin;
+const auto& headMemoryChunksCollection = privilegeSetLogin;
+const auto& patchMemoryChunksCollection = privilegeSetConfigureComponents;
+const auto& postMemoryChunksCollection = privilegeSetConfigureComponents;
+const auto& putMemoryChunksCollection = privilegeSetConfigureComponents;
+const auto& deleteMemoryChunksCollection = privilegeSetConfigureComponents;
+
+// MemoryDomain
+const auto& getMemoryDomain = privilegeSetLogin;
+const auto& headMemoryDomain = privilegeSetLogin;
+const auto& patchMemoryDomain = privilegeSetConfigureComponents;
+const auto& postMemoryDomain = privilegeSetConfigureComponents;
+const auto& putMemoryDomain = privilegeSetConfigureComponents;
+const auto& deleteMemoryDomain = privilegeSetConfigureComponents;
+
+// MemoryDomainCollection
+const auto& getMemoryDomainCollection = privilegeSetLogin;
+const auto& headMemoryDomainCollection = privilegeSetLogin;
+const auto& patchMemoryDomainCollection = privilegeSetConfigureComponents;
+const auto& postMemoryDomainCollection = privilegeSetConfigureComponents;
+const auto& putMemoryDomainCollection = privilegeSetConfigureComponents;
+const auto& deleteMemoryDomainCollection = privilegeSetConfigureComponents;
+
+// MemoryMetrics
+const auto& getMemoryMetrics = privilegeSetLogin;
+const auto& headMemoryMetrics = privilegeSetLogin;
+const auto& patchMemoryMetrics = privilegeSetConfigureComponents;
+const auto& postMemoryMetrics = privilegeSetConfigureComponents;
+const auto& putMemoryMetrics = privilegeSetConfigureComponents;
+const auto& deleteMemoryMetrics = privilegeSetConfigureComponents;
+
+// MessageRegistryFile
+const auto& getMessageRegistryFile = privilegeSetLogin;
+const auto& headMessageRegistryFile = privilegeSetLogin;
+const auto& patchMessageRegistryFile = privilegeSetConfigureManager;
+const auto& postMessageRegistryFile = privilegeSetConfigureManager;
+const auto& putMessageRegistryFile = privilegeSetConfigureManager;
+const auto& deleteMessageRegistryFile = privilegeSetConfigureManager;
+
+// MessageRegistryFileCollection
+const auto& getMessageRegistryFileCollection = privilegeSetLogin;
+const auto& headMessageRegistryFileCollection = privilegeSetLogin;
+const auto& patchMessageRegistryFileCollection = privilegeSetConfigureManager;
+const auto& postMessageRegistryFileCollection = privilegeSetConfigureManager;
+const auto& putMessageRegistryFileCollection = privilegeSetConfigureManager;
+const auto& deleteMessageRegistryFileCollection = privilegeSetConfigureManager;
+
+// MetricDefinition
+const auto& getMetricDefinition = privilegeSetLogin;
+const auto& headMetricDefinition = privilegeSetLogin;
+const auto& patchMetricDefinition = privilegeSetConfigureManager;
+const auto& putMetricDefinition = privilegeSetConfigureManager;
+const auto& deleteMetricDefinition = privilegeSetConfigureManager;
+const auto& postMetricDefinition = privilegeSetConfigureManager;
+
+// MetricDefinitionCollection
+const auto& getMetricDefinitionCollection = privilegeSetLogin;
+const auto& headMetricDefinitionCollection = privilegeSetLogin;
+const auto& patchMetricDefinitionCollection = privilegeSetConfigureManager;
+const auto& putMetricDefinitionCollection = privilegeSetConfigureManager;
+const auto& deleteMetricDefinitionCollection = privilegeSetConfigureManager;
+const auto& postMetricDefinitionCollection = privilegeSetConfigureManager;
+
+// MetricReport
+const auto& getMetricReport = privilegeSetLogin;
+const auto& headMetricReport = privilegeSetLogin;
+const auto& patchMetricReport = privilegeSetConfigureManager;
+const auto& putMetricReport = privilegeSetConfigureManager;
+const auto& deleteMetricReport = privilegeSetConfigureManager;
+const auto& postMetricReport = privilegeSetConfigureManager;
+
+// MetricReportCollection
+const auto& getMetricReportCollection = privilegeSetLogin;
+const auto& headMetricReportCollection = privilegeSetLogin;
+const auto& patchMetricReportCollection = privilegeSetConfigureManager;
+const auto& putMetricReportCollection = privilegeSetConfigureManager;
+const auto& deleteMetricReportCollection = privilegeSetConfigureManager;
+const auto& postMetricReportCollection = privilegeSetConfigureManager;
+
+// MetricReportDefinition
+const auto& getMetricReportDefinition = privilegeSetLogin;
+const auto& headMetricReportDefinition = privilegeSetLogin;
+const auto& patchMetricReportDefinition = privilegeSetConfigureManager;
+const auto& putMetricReportDefinition = privilegeSetConfigureManager;
+const auto& deleteMetricReportDefinition = privilegeSetConfigureManager;
+const auto& postMetricReportDefinition = privilegeSetConfigureManager;
+
+// MetricReportDefinitionCollection
+const auto& getMetricReportDefinitionCollection = privilegeSetLogin;
+const auto& headMetricReportDefinitionCollection = privilegeSetLogin;
+const auto& patchMetricReportDefinitionCollection =
+    privilegeSetConfigureManager;
+const auto& putMetricReportDefinitionCollection = privilegeSetConfigureManager;
+const auto& deleteMetricReportDefinitionCollection =
+    privilegeSetConfigureManager;
+const auto& postMetricReportDefinitionCollection = privilegeSetConfigureManager;
+
+// NetworkAdapter
+const auto& getNetworkAdapter = privilegeSetLogin;
+const auto& headNetworkAdapter = privilegeSetLogin;
+const auto& patchNetworkAdapter = privilegeSetConfigureComponents;
+const auto& postNetworkAdapter = privilegeSetConfigureComponents;
+const auto& putNetworkAdapter = privilegeSetConfigureComponents;
+const auto& deleteNetworkAdapter = privilegeSetConfigureComponents;
+
+// NetworkAdapterCollection
+const auto& getNetworkAdapterCollection = privilegeSetLogin;
+const auto& headNetworkAdapterCollection = privilegeSetLogin;
+const auto& patchNetworkAdapterCollection = privilegeSetConfigureComponents;
+const auto& postNetworkAdapterCollection = privilegeSetConfigureComponents;
+const auto& putNetworkAdapterCollection = privilegeSetConfigureComponents;
+const auto& deleteNetworkAdapterCollection = privilegeSetConfigureComponents;
+
+// NetworkDeviceFunction
+const auto& getNetworkDeviceFunction = privilegeSetLogin;
+const auto& headNetworkDeviceFunction = privilegeSetLogin;
+const auto& patchNetworkDeviceFunction = privilegeSetConfigureComponents;
+const auto& postNetworkDeviceFunction = privilegeSetConfigureComponents;
+const auto& putNetworkDeviceFunction = privilegeSetConfigureComponents;
+const auto& deleteNetworkDeviceFunction = privilegeSetConfigureComponents;
+
+// NetworkDeviceFunctionCollection
+const auto& getNetworkDeviceFunctionCollection = privilegeSetLogin;
+const auto& headNetworkDeviceFunctionCollection = privilegeSetLogin;
+const auto& patchNetworkDeviceFunctionCollection =
+    privilegeSetConfigureComponents;
+const auto& postNetworkDeviceFunctionCollection =
+    privilegeSetConfigureComponents;
+const auto& putNetworkDeviceFunctionCollection =
+    privilegeSetConfigureComponents;
+const auto& deleteNetworkDeviceFunctionCollection =
+    privilegeSetConfigureComponents;
+
+// NetworkInterface
+const auto& getNetworkInterface = privilegeSetLogin;
+const auto& headNetworkInterface = privilegeSetLogin;
+const auto& patchNetworkInterface = privilegeSetConfigureComponents;
+const auto& postNetworkInterface = privilegeSetConfigureComponents;
+const auto& putNetworkInterface = privilegeSetConfigureComponents;
+const auto& deleteNetworkInterface = privilegeSetConfigureComponents;
+
+// NetworkInterfaceCollection
+const auto& getNetworkInterfaceCollection = privilegeSetLogin;
+const auto& headNetworkInterfaceCollection = privilegeSetLogin;
+const auto& patchNetworkInterfaceCollection = privilegeSetConfigureComponents;
+const auto& postNetworkInterfaceCollection = privilegeSetConfigureComponents;
+const auto& putNetworkInterfaceCollection = privilegeSetConfigureComponents;
+const auto& deleteNetworkInterfaceCollection = privilegeSetConfigureComponents;
+
+// NetworkPort
+const auto& getNetworkPort = privilegeSetLogin;
+const auto& headNetworkPort = privilegeSetLogin;
+const auto& patchNetworkPort = privilegeSetConfigureComponents;
+const auto& postNetworkPort = privilegeSetConfigureComponents;
+const auto& putNetworkPort = privilegeSetConfigureComponents;
+const auto& deleteNetworkPort = privilegeSetConfigureComponents;
+
+// NetworkPortCollection
+const auto& getNetworkPortCollection = privilegeSetLogin;
+const auto& headNetworkPortCollection = privilegeSetLogin;
+const auto& patchNetworkPortCollection = privilegeSetConfigureComponents;
+const auto& postNetworkPortCollection = privilegeSetConfigureComponents;
+const auto& putNetworkPortCollection = privilegeSetConfigureComponents;
+const auto& deleteNetworkPortCollection = privilegeSetConfigureComponents;
+
+// OperatingConfig
+const auto& getOperatingConfig = privilegeSetLogin;
+const auto& headOperatingConfig = privilegeSetLogin;
+const auto& patchOperatingConfig = privilegeSetConfigureComponents;
+const auto& postOperatingConfig = privilegeSetConfigureComponents;
+const auto& putOperatingConfig = privilegeSetConfigureComponents;
+const auto& deleteOperatingConfig = privilegeSetConfigureComponents;
+
+// OperatingConfigCollection
+const auto& getOperatingConfigCollection = privilegeSetLogin;
+const auto& headOperatingConfigCollection = privilegeSetLogin;
+const auto& patchOperatingConfigCollection = privilegeSetConfigureComponents;
+const auto& postOperatingConfigCollection = privilegeSetConfigureComponents;
+const auto& putOperatingConfigCollection = privilegeSetConfigureComponents;
+const auto& deleteOperatingConfigCollection = privilegeSetConfigureComponents;
+
+// Outlet
+const auto& getOutlet = privilegeSetLogin;
+const auto& headOutlet = privilegeSetLogin;
+const auto& patchOutlet = privilegeSetConfigureComponents;
+const auto& postOutlet = privilegeSetConfigureComponents;
+const auto& putOutlet = privilegeSetConfigureComponents;
+const auto& deleteOutlet = privilegeSetConfigureComponents;
+
+// OutletCollection
+const auto& getOutletCollection = privilegeSetLogin;
+const auto& headOutletCollection = privilegeSetLogin;
+const auto& patchOutletCollection = privilegeSetConfigureComponents;
+const auto& postOutletCollection = privilegeSetConfigureComponents;
+const auto& putOutletCollection = privilegeSetConfigureComponents;
+const auto& deleteOutletCollection = privilegeSetConfigureComponents;
+
+// OutletGroup
+const auto& getOutletGroup = privilegeSetLogin;
+const auto& headOutletGroup = privilegeSetLogin;
+const auto& patchOutletGroup = privilegeSetConfigureComponents;
+const auto& postOutletGroup = privilegeSetConfigureComponents;
+const auto& putOutletGroup = privilegeSetConfigureComponents;
+const auto& deleteOutletGroup = privilegeSetConfigureComponents;
+
+// OutletGroupCollection
+const auto& getOutletGroupCollection = privilegeSetLogin;
+const auto& headOutletGroupCollection = privilegeSetLogin;
+const auto& patchOutletGroupCollection = privilegeSetConfigureComponents;
+const auto& postOutletGroupCollection = privilegeSetConfigureComponents;
+const auto& putOutletGroupCollection = privilegeSetConfigureComponents;
+const auto& deleteOutletGroupCollection = privilegeSetConfigureComponents;
+
+// PCIeDevice
+const auto& getPCIeDevice = privilegeSetLogin;
+const auto& headPCIeDevice = privilegeSetLogin;
+const auto& patchPCIeDevice = privilegeSetConfigureComponents;
+const auto& postPCIeDevice = privilegeSetConfigureComponents;
+const auto& putPCIeDevice = privilegeSetConfigureComponents;
+const auto& deletePCIeDevice = privilegeSetConfigureComponents;
+
+// PCIeDeviceCollection
+const auto& getPCIeDeviceCollection = privilegeSetLogin;
+const auto& headPCIeDeviceCollection = privilegeSetLogin;
+const auto& patchPCIeDeviceCollection = privilegeSetConfigureComponents;
+const auto& postPCIeDeviceCollection = privilegeSetConfigureComponents;
+const auto& putPCIeDeviceCollection = privilegeSetConfigureComponents;
+const auto& deletePCIeDeviceCollection = privilegeSetConfigureComponents;
+
+// PCIeFunction
+const auto& getPCIeFunction = privilegeSetLogin;
+const auto& headPCIeFunction = privilegeSetLogin;
+const auto& patchPCIeFunction = privilegeSetConfigureComponents;
+const auto& postPCIeFunction = privilegeSetConfigureComponents;
+const auto& putPCIeFunction = privilegeSetConfigureComponents;
+const auto& deletePCIeFunction = privilegeSetConfigureComponents;
+
+// PCIeFunctionCollection
+const auto& getPCIeFunctionCollection = privilegeSetLogin;
+const auto& headPCIeFunctionCollection = privilegeSetLogin;
+const auto& patchPCIeFunctionCollection = privilegeSetConfigureComponents;
+const auto& postPCIeFunctionCollection = privilegeSetConfigureComponents;
+const auto& putPCIeFunctionCollection = privilegeSetConfigureComponents;
+const auto& deletePCIeFunctionCollection = privilegeSetConfigureComponents;
+
+// PCIeSlots
+const auto& getPCIeSlots = privilegeSetLogin;
+const auto& headPCIeSlots = privilegeSetLogin;
+const auto& patchPCIeSlots = privilegeSetConfigureComponents;
+const auto& postPCIeSlots = privilegeSetConfigureComponents;
+const auto& putPCIeSlots = privilegeSetConfigureComponents;
+const auto& deletePCIeSlots = privilegeSetConfigureComponents;
+
+// Port
+const auto& getPort = privilegeSetLogin;
+const auto& headPort = privilegeSetLogin;
+const auto& patchPort = privilegeSetConfigureComponents;
+const auto& postPort = privilegeSetConfigureComponents;
+const auto& putPort = privilegeSetConfigureComponents;
+const auto& deletePort = privilegeSetConfigureComponents;
+
+// PortCollection
+const auto& getPortCollection = privilegeSetLogin;
+const auto& headPortCollection = privilegeSetLogin;
+const auto& patchPortCollection = privilegeSetConfigureComponents;
+const auto& postPortCollection = privilegeSetConfigureComponents;
+const auto& putPortCollection = privilegeSetConfigureComponents;
+const auto& deletePortCollection = privilegeSetConfigureComponents;
+
+// PortMetrics
+const auto& getPortMetrics = privilegeSetLogin;
+const auto& headPortMetrics = privilegeSetLogin;
+const auto& patchPortMetrics = privilegeSetConfigureComponents;
+const auto& postPortMetrics = privilegeSetConfigureComponents;
+const auto& putPortMetrics = privilegeSetConfigureComponents;
+const auto& deletePortMetrics = privilegeSetConfigureComponents;
+
+// Power
+const auto& getPower = privilegeSetLogin;
+const auto& headPower = privilegeSetLogin;
+const auto& patchPower = privilegeSetConfigureManager;
+const auto& putPower = privilegeSetConfigureManager;
+const auto& deletePower = privilegeSetConfigureManager;
+const auto& postPower = privilegeSetConfigureManager;
+
+// PowerDistribution
+const auto& getPowerDistribution = privilegeSetLogin;
+const auto& headPowerDistribution = privilegeSetLogin;
+const auto& patchPowerDistribution = privilegeSetConfigureComponents;
+const auto& postPowerDistribution = privilegeSetConfigureComponents;
+const auto& putPowerDistribution = privilegeSetConfigureComponents;
+const auto& deletePowerDistribution = privilegeSetConfigureComponents;
+
+// PowerDistributionCollection
+const auto& getPowerDistributionCollection = privilegeSetLogin;
+const auto& headPowerDistributionCollection = privilegeSetLogin;
+const auto& patchPowerDistributionCollection = privilegeSetConfigureComponents;
+const auto& postPowerDistributionCollection = privilegeSetConfigureComponents;
+const auto& putPowerDistributionCollection = privilegeSetConfigureComponents;
+const auto& deletePowerDistributionCollection = privilegeSetConfigureComponents;
+
+// PowerDistributionMetrics
+const auto& getPowerDistributionMetrics = privilegeSetLogin;
+const auto& headPowerDistributionMetrics = privilegeSetLogin;
+const auto& patchPowerDistributionMetrics = privilegeSetConfigureComponents;
+const auto& postPowerDistributionMetrics = privilegeSetConfigureComponents;
+const auto& putPowerDistributionMetrics = privilegeSetConfigureComponents;
+const auto& deletePowerDistributionMetrics = privilegeSetConfigureComponents;
+
+// Processor
+const auto& getProcessor = privilegeSetLogin;
+const auto& headProcessor = privilegeSetLogin;
+const auto& patchProcessor = privilegeSetConfigureComponents;
+const auto& putProcessor = privilegeSetConfigureComponents;
+const auto& deleteProcessor = privilegeSetConfigureComponents;
+const auto& postProcessor = privilegeSetConfigureComponents;
+
+// ProcessorCollection
+const auto& getProcessorCollection = privilegeSetLogin;
+const auto& headProcessorCollection = privilegeSetLogin;
+const auto& patchProcessorCollection = privilegeSetConfigureComponents;
+const auto& putProcessorCollection = privilegeSetConfigureComponents;
+const auto& deleteProcessorCollection = privilegeSetConfigureComponents;
+const auto& postProcessorCollection = privilegeSetConfigureComponents;
+
+// ProcessorMetrics
+const auto& getProcessorMetrics = privilegeSetLogin;
+const auto& headProcessorMetrics = privilegeSetLogin;
+const auto& patchProcessorMetrics = privilegeSetConfigureComponents;
+const auto& putProcessorMetrics = privilegeSetConfigureComponents;
+const auto& deleteProcessorMetrics = privilegeSetConfigureComponents;
+const auto& postProcessorMetrics = privilegeSetConfigureComponents;
+
+// ResourceBlock
+const auto& getResourceBlock = privilegeSetLogin;
+const auto& headResourceBlock = privilegeSetLogin;
+const auto& patchResourceBlock = privilegeSetConfigureComponents;
+const auto& putResourceBlock = privilegeSetConfigureComponents;
+const auto& deleteResourceBlock = privilegeSetConfigureComponents;
+const auto& postResourceBlock = privilegeSetConfigureComponents;
+
+// ResourceBlockCollection
+const auto& getResourceBlockCollection = privilegeSetLogin;
+const auto& headResourceBlockCollection = privilegeSetLogin;
+const auto& patchResourceBlockCollection = privilegeSetConfigureComponents;
+const auto& putResourceBlockCollection = privilegeSetConfigureComponents;
+const auto& deleteResourceBlockCollection = privilegeSetConfigureComponents;
+const auto& postResourceBlockCollection = privilegeSetConfigureComponents;
+
+// Role
+const auto& getRole = privilegeSetLogin;
+const auto& headRole = privilegeSetLogin;
+const auto& patchRole = privilegeSetConfigureManager;
+const auto& putRole = privilegeSetConfigureManager;
+const auto& deleteRole = privilegeSetConfigureManager;
+const auto& postRole = privilegeSetConfigureManager;
+
+// RoleCollection
+const auto& getRoleCollection = privilegeSetLogin;
+const auto& headRoleCollection = privilegeSetLogin;
+const auto& patchRoleCollection = privilegeSetConfigureManager;
+const auto& putRoleCollection = privilegeSetConfigureManager;
+const auto& deleteRoleCollection = privilegeSetConfigureManager;
+const auto& postRoleCollection = privilegeSetConfigureManager;
+
+// RouteEntry
+const auto& getRouteEntry = privilegeSetLogin;
+const auto& headRouteEntry = privilegeSetLogin;
+const auto& patchRouteEntry = privilegeSetConfigureComponents;
+const auto& putRouteEntry = privilegeSetConfigureComponents;
+const auto& deleteRouteEntry = privilegeSetConfigureComponents;
+const auto& postRouteEntry = privilegeSetConfigureComponents;
+
+// RouteEntryCollection
+const auto& getRouteEntryCollection = privilegeSetLogin;
+const auto& headRouteEntryCollection = privilegeSetLogin;
+const auto& patchRouteEntryCollection = privilegeSetConfigureComponents;
+const auto& putRouteEntryCollection = privilegeSetConfigureComponents;
+const auto& deleteRouteEntryCollection = privilegeSetConfigureComponents;
+const auto& postRouteEntryCollection = privilegeSetConfigureComponents;
+
+// RouteEntrySet
+const auto& getRouteEntrySet = privilegeSetLogin;
+const auto& headRouteEntrySet = privilegeSetLogin;
+const auto& patchRouteEntrySet = privilegeSetConfigureComponents;
+const auto& putRouteEntrySet = privilegeSetConfigureComponents;
+const auto& deleteRouteEntrySet = privilegeSetConfigureComponents;
+const auto& postRouteEntrySet = privilegeSetConfigureComponents;
+
+// RouteEntrySetCollection
+const auto& getRouteEntrySetCollection = privilegeSetLogin;
+const auto& headRouteEntrySetCollection = privilegeSetLogin;
+const auto& patchRouteEntrySetCollection = privilegeSetConfigureComponents;
+const auto& putRouteEntrySetCollection = privilegeSetConfigureComponents;
+const auto& deleteRouteEntrySetCollection = privilegeSetConfigureComponents;
+const auto& postRouteEntrySetCollection = privilegeSetConfigureComponents;
+
+// SecureBoot
+const auto& getSecureBoot = privilegeSetLogin;
+const auto& headSecureBoot = privilegeSetLogin;
+const auto& patchSecureBoot = privilegeSetConfigureComponents;
+const auto& postSecureBoot = privilegeSetConfigureComponents;
+const auto& putSecureBoot = privilegeSetConfigureComponents;
+const auto& deleteSecureBoot = privilegeSetConfigureComponents;
+
+// SecureBootDatabase
+const auto& getSecureBootDatabase = privilegeSetLogin;
+const auto& headSecureBootDatabase = privilegeSetLogin;
+const auto& patchSecureBootDatabase = privilegeSetConfigureComponents;
+const auto& postSecureBootDatabase = privilegeSetConfigureComponents;
+const auto& putSecureBootDatabase = privilegeSetConfigureComponents;
+const auto& deleteSecureBootDatabase = privilegeSetConfigureComponents;
+
+// SecureBootDatabaseCollection
+const auto& getSecureBootDatabaseCollection = privilegeSetLogin;
+const auto& headSecureBootDatabaseCollection = privilegeSetLogin;
+const auto& patchSecureBootDatabaseCollection = privilegeSetConfigureComponents;
+const auto& postSecureBootDatabaseCollection = privilegeSetConfigureComponents;
+const auto& putSecureBootDatabaseCollection = privilegeSetConfigureComponents;
+const auto& deleteSecureBootDatabaseCollection =
+    privilegeSetConfigureComponents;
+
+// Sensor
+const auto& getSensor = privilegeSetLogin;
+const auto& headSensor = privilegeSetLogin;
+const auto& patchSensor = privilegeSetConfigureComponents;
+const auto& postSensor = privilegeSetConfigureComponents;
+const auto& putSensor = privilegeSetConfigureComponents;
+const auto& deleteSensor = privilegeSetConfigureComponents;
+
+// SensorCollection
+const auto& getSensorCollection = privilegeSetLogin;
+const auto& headSensorCollection = privilegeSetLogin;
+const auto& patchSensorCollection = privilegeSetConfigureComponents;
+const auto& postSensorCollection = privilegeSetConfigureComponents;
+const auto& putSensorCollection = privilegeSetConfigureComponents;
+const auto& deleteSensorCollection = privilegeSetConfigureComponents;
+
+// SerialInterface
+const auto& getSerialInterface = privilegeSetLogin;
+const auto& headSerialInterface = privilegeSetLogin;
+const auto& patchSerialInterface = privilegeSetConfigureManager;
+const auto& putSerialInterface = privilegeSetConfigureManager;
+const auto& deleteSerialInterface = privilegeSetConfigureManager;
+const auto& postSerialInterface = privilegeSetConfigureManager;
+
+// SerialInterfaceCollection
+const auto& getSerialInterfaceCollection = privilegeSetLogin;
+const auto& headSerialInterfaceCollection = privilegeSetLogin;
+const auto& patchSerialInterfaceCollection = privilegeSetConfigureManager;
+const auto& putSerialInterfaceCollection = privilegeSetConfigureManager;
+const auto& deleteSerialInterfaceCollection = privilegeSetConfigureManager;
+const auto& postSerialInterfaceCollection = privilegeSetConfigureManager;
+
+// ServiceRoot
+const auto& getServiceRoot = privilegeSetLoginOrNoAuth;
+const auto& headServiceRoot = privilegeSetLoginOrNoAuth;
+const auto& patchServiceRoot = privilegeSetConfigureManager;
+const auto& putServiceRoot = privilegeSetConfigureManager;
+const auto& deleteServiceRoot = privilegeSetConfigureManager;
+const auto& postServiceRoot = privilegeSetConfigureManager;
+
+// Session
+const auto& getSession = privilegeSetLogin;
+const auto& headSession = privilegeSetLogin;
+const auto& patchSession = privilegeSetConfigureManager;
+const auto& putSession = privilegeSetConfigureManager;
+const auto& deleteSession = privilegeSetConfigureManagerOrConfigureSelf;
+const auto& postSession = privilegeSetConfigureManager;
+
+// SessionCollection
+const auto& getSessionCollection = privilegeSetLogin;
+const auto& headSessionCollection = privilegeSetLogin;
+const auto& patchSessionCollection = privilegeSetConfigureManager;
+const auto& putSessionCollection = privilegeSetConfigureManager;
+const auto& deleteSessionCollection = privilegeSetConfigureManager;
+const auto& postSessionCollection = privilegeSetLogin;
+
+// SessionService
+const auto& getSessionService = privilegeSetLogin;
+const auto& headSessionService = privilegeSetLogin;
+const auto& patchSessionService = privilegeSetConfigureManager;
+const auto& putSessionService = privilegeSetConfigureManager;
+const auto& deleteSessionService = privilegeSetConfigureManager;
+const auto& postSessionService = privilegeSetConfigureManager;
+
+// Signature
+const auto& getSignature = privilegeSetLogin;
+const auto& headSignature = privilegeSetLogin;
+const auto& patchSignature = privilegeSetConfigureComponents;
+const auto& postSignature = privilegeSetConfigureComponents;
+const auto& putSignature = privilegeSetConfigureComponents;
+const auto& deleteSignature = privilegeSetConfigureComponents;
+
+// SignatureCollection
+const auto& getSignatureCollection = privilegeSetLogin;
+const auto& headSignatureCollection = privilegeSetLogin;
+const auto& patchSignatureCollection = privilegeSetConfigureComponents;
+const auto& postSignatureCollection = privilegeSetConfigureComponents;
+const auto& putSignatureCollection = privilegeSetConfigureComponents;
+const auto& deleteSignatureCollection = privilegeSetConfigureComponents;
+
+// SimpleStorage
+const auto& getSimpleStorage = privilegeSetLogin;
+const auto& headSimpleStorage = privilegeSetLogin;
+const auto& patchSimpleStorage = privilegeSetConfigureComponents;
+const auto& postSimpleStorage = privilegeSetConfigureComponents;
+const auto& putSimpleStorage = privilegeSetConfigureComponents;
+const auto& deleteSimpleStorage = privilegeSetConfigureComponents;
+
+// SimpleStorageCollection
+const auto& getSimpleStorageCollection = privilegeSetLogin;
+const auto& headSimpleStorageCollection = privilegeSetLogin;
+const auto& patchSimpleStorageCollection = privilegeSetConfigureComponents;
+const auto& postSimpleStorageCollection = privilegeSetConfigureComponents;
+const auto& putSimpleStorageCollection = privilegeSetConfigureComponents;
+const auto& deleteSimpleStorageCollection = privilegeSetConfigureComponents;
+
+// SoftwareInventory
+const auto& getSoftwareInventory = privilegeSetLogin;
+const auto& headSoftwareInventory = privilegeSetLogin;
+const auto& patchSoftwareInventory = privilegeSetConfigureComponents;
+const auto& postSoftwareInventory = privilegeSetConfigureComponents;
+const auto& putSoftwareInventory = privilegeSetConfigureComponents;
+const auto& deleteSoftwareInventory = privilegeSetConfigureComponents;
+
+// SoftwareInventoryCollection
+const auto& getSoftwareInventoryCollection = privilegeSetLogin;
+const auto& headSoftwareInventoryCollection = privilegeSetLogin;
+const auto& patchSoftwareInventoryCollection = privilegeSetConfigureComponents;
+const auto& postSoftwareInventoryCollection = privilegeSetConfigureComponents;
+const auto& putSoftwareInventoryCollection = privilegeSetConfigureComponents;
+const auto& deleteSoftwareInventoryCollection = privilegeSetConfigureComponents;
+
+// Storage
+const auto& getStorage = privilegeSetLogin;
+const auto& headStorage = privilegeSetLogin;
+const auto& patchStorage = privilegeSetConfigureComponents;
+const auto& postStorage = privilegeSetConfigureComponents;
+const auto& putStorage = privilegeSetConfigureComponents;
+const auto& deleteStorage = privilegeSetConfigureComponents;
+
+// StorageCollection
+const auto& getStorageCollection = privilegeSetLogin;
+const auto& headStorageCollection = privilegeSetLogin;
+const auto& patchStorageCollection = privilegeSetConfigureComponents;
+const auto& postStorageCollection = privilegeSetConfigureComponents;
+const auto& putStorageCollection = privilegeSetConfigureComponents;
+const auto& deleteStorageCollection = privilegeSetConfigureComponents;
+
+// StorageController
+const auto& getStorageController = privilegeSetLogin;
+const auto& headStorageController = privilegeSetLogin;
+const auto& patchStorageController = privilegeSetConfigureComponents;
+const auto& postStorageController = privilegeSetConfigureComponents;
+const auto& putStorageController = privilegeSetConfigureComponents;
+const auto& deleteStorageController = privilegeSetConfigureComponents;
+
+// StorageControllerCollection
+const auto& getStorageControllerCollection = privilegeSetLogin;
+const auto& headStorageControllerCollection = privilegeSetLogin;
+const auto& patchStorageControllerCollection = privilegeSetConfigureComponents;
+const auto& postStorageControllerCollection = privilegeSetConfigureComponents;
+const auto& putStorageControllerCollection = privilegeSetConfigureComponents;
+const auto& deleteStorageControllerCollection = privilegeSetConfigureComponents;
+
+// Switch
+const auto& getSwitch = privilegeSetLogin;
+const auto& headSwitch = privilegeSetLogin;
+const auto& patchSwitch = privilegeSetConfigureComponents;
+const auto& postSwitch = privilegeSetConfigureComponents;
+const auto& putSwitch = privilegeSetConfigureComponents;
+const auto& deleteSwitch = privilegeSetConfigureComponents;
+
+// SwitchCollection
+const auto& getSwitchCollection = privilegeSetLogin;
+const auto& headSwitchCollection = privilegeSetLogin;
+const auto& patchSwitchCollection = privilegeSetConfigureComponents;
+const auto& postSwitchCollection = privilegeSetConfigureComponents;
+const auto& putSwitchCollection = privilegeSetConfigureComponents;
+const auto& deleteSwitchCollection = privilegeSetConfigureComponents;
+
+// Task
+const auto& getTask = privilegeSetLogin;
+const auto& headTask = privilegeSetLogin;
+const auto& patchTask = privilegeSetConfigureManager;
+const auto& putTask = privilegeSetConfigureManager;
+const auto& deleteTask = privilegeSetConfigureManager;
+const auto& postTask = privilegeSetConfigureManager;
+
+// TaskCollection
+const auto& getTaskCollection = privilegeSetLogin;
+const auto& headTaskCollection = privilegeSetLogin;
+const auto& patchTaskCollection = privilegeSetConfigureManager;
+const auto& putTaskCollection = privilegeSetConfigureManager;
+const auto& deleteTaskCollection = privilegeSetConfigureManager;
+const auto& postTaskCollection = privilegeSetConfigureManager;
+
+// TaskService
+const auto& getTaskService = privilegeSetLogin;
+const auto& headTaskService = privilegeSetLogin;
+const auto& patchTaskService = privilegeSetConfigureManager;
+const auto& putTaskService = privilegeSetConfigureManager;
+const auto& deleteTaskService = privilegeSetConfigureManager;
+const auto& postTaskService = privilegeSetConfigureManager;
+
+// TelemetryService
+const auto& getTelemetryService = privilegeSetLogin;
+const auto& headTelemetryService = privilegeSetLogin;
+const auto& patchTelemetryService = privilegeSetConfigureManager;
+const auto& putTelemetryService = privilegeSetConfigureManager;
+const auto& deleteTelemetryService = privilegeSetConfigureManager;
+const auto& postTelemetryService = privilegeSetConfigureManager;
+
+// Thermal
+const auto& getThermal = privilegeSetLogin;
+const auto& headThermal = privilegeSetLogin;
+const auto& patchThermal = privilegeSetConfigureManager;
+const auto& putThermal = privilegeSetConfigureManager;
+const auto& deleteThermal = privilegeSetConfigureManager;
+const auto& postThermal = privilegeSetConfigureManager;
+
+// Triggers
+const auto& getTriggers = privilegeSetLogin;
+const auto& headTriggers = privilegeSetLogin;
+const auto& patchTriggers = privilegeSetConfigureManager;
+const auto& putTriggers = privilegeSetConfigureManager;
+const auto& deleteTriggers = privilegeSetConfigureManager;
+const auto& postTriggers = privilegeSetConfigureManager;
+
+// TriggersCollection
+const auto& getTriggersCollection = privilegeSetLogin;
+const auto& headTriggersCollection = privilegeSetLogin;
+const auto& patchTriggersCollection = privilegeSetConfigureManager;
+const auto& putTriggersCollection = privilegeSetConfigureManager;
+const auto& deleteTriggersCollection = privilegeSetConfigureManager;
+const auto& postTriggersCollection = privilegeSetConfigureManager;
+
+// UpdateService
+const auto& getUpdateService = privilegeSetLogin;
+const auto& headUpdateService = privilegeSetLogin;
+const auto& patchUpdateService = privilegeSetConfigureComponents;
+const auto& postUpdateService = privilegeSetConfigureComponents;
+const auto& putUpdateService = privilegeSetConfigureComponents;
+const auto& deleteUpdateService = privilegeSetConfigureComponents;
+
+// VCATEntry
+const auto& getVCATEntry = privilegeSetLogin;
+const auto& headVCATEntry = privilegeSetLogin;
+const auto& patchVCATEntry = privilegeSetConfigureComponents;
+const auto& putVCATEntry = privilegeSetConfigureComponents;
+const auto& deleteVCATEntry = privilegeSetConfigureComponents;
+const auto& postVCATEntry = privilegeSetConfigureComponents;
+
+// VCATEntryCollection
+const auto& getVCATEntryCollection = privilegeSetLogin;
+const auto& headVCATEntryCollection = privilegeSetLogin;
+const auto& patchVCATEntryCollection = privilegeSetConfigureComponents;
+const auto& putVCATEntryCollection = privilegeSetConfigureComponents;
+const auto& deleteVCATEntryCollection = privilegeSetConfigureComponents;
+const auto& postVCATEntryCollection = privilegeSetConfigureComponents;
+
+// VLanNetworkInterface
+const auto& getVLanNetworkInterface = privilegeSetLogin;
+const auto& headVLanNetworkInterface = privilegeSetLogin;
+const auto& patchVLanNetworkInterface = privilegeSetConfigureManager;
+const auto& putVLanNetworkInterface = privilegeSetConfigureManager;
+const auto& deleteVLanNetworkInterface = privilegeSetConfigureManager;
+const auto& postVLanNetworkInterface = privilegeSetConfigureManager;
+
+// VLanNetworkInterfaceCollection
+const auto& getVLanNetworkInterfaceCollection = privilegeSetLogin;
+const auto& headVLanNetworkInterfaceCollection = privilegeSetLogin;
+const auto& patchVLanNetworkInterfaceCollection = privilegeSetConfigureManager;
+const auto& putVLanNetworkInterfaceCollection = privilegeSetConfigureManager;
+const auto& deleteVLanNetworkInterfaceCollection = privilegeSetConfigureManager;
+const auto& postVLanNetworkInterfaceCollection = privilegeSetConfigureManager;
+
+// VirtualMedia
+const auto& getVirtualMedia = privilegeSetLogin;
+const auto& headVirtualMedia = privilegeSetLogin;
+const auto& patchVirtualMedia = privilegeSetConfigureManager;
+const auto& putVirtualMedia = privilegeSetConfigureManager;
+const auto& deleteVirtualMedia = privilegeSetConfigureManager;
+const auto& postVirtualMedia = privilegeSetConfigureManager;
+
+// VirtualMediaCollection
+const auto& getVirtualMediaCollection = privilegeSetLogin;
+const auto& headVirtualMediaCollection = privilegeSetLogin;
+const auto& patchVirtualMediaCollection = privilegeSetConfigureManager;
+const auto& putVirtualMediaCollection = privilegeSetConfigureManager;
+const auto& deleteVirtualMediaCollection = privilegeSetConfigureManager;
+const auto& postVirtualMediaCollection = privilegeSetConfigureManager;
+
+// Volume
+const auto& getVolume = privilegeSetLogin;
+const auto& headVolume = privilegeSetLogin;
+const auto& patchVolume = privilegeSetConfigureComponents;
+const auto& postVolume = privilegeSetConfigureComponents;
+const auto& putVolume = privilegeSetConfigureComponents;
+const auto& deleteVolume = privilegeSetConfigureComponents;
+
+// VolumeCollection
+const auto& getVolumeCollection = privilegeSetLogin;
+const auto& headVolumeCollection = privilegeSetLogin;
+const auto& patchVolumeCollection = privilegeSetConfigureComponents;
+const auto& postVolumeCollection = privilegeSetConfigureComponents;
+const auto& putVolumeCollection = privilegeSetConfigureComponents;
+const auto& deleteVolumeCollection = privilegeSetConfigureComponents;
+
+// Zone
+const auto& getZone = privilegeSetLogin;
+const auto& headZone = privilegeSetLogin;
+const auto& patchZone = privilegeSetConfigureComponents;
+const auto& postZone = privilegeSetConfigureComponents;
+const auto& putZone = privilegeSetConfigureComponents;
+const auto& deleteZone = privilegeSetConfigureComponents;
+
+// ZoneCollection
+const auto& getZoneCollection = privilegeSetLogin;
+const auto& headZoneCollection = privilegeSetLogin;
+const auto& patchZoneCollection = privilegeSetConfigureComponents;
+const auto& postZoneCollection = privilegeSetConfigureComponents;
+const auto& putZoneCollection = privilegeSetConfigureComponents;
+const auto& deleteZoneCollection = privilegeSetConfigureComponents;
+
+} // namespace redfish::privileges
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 364d5e2..bce1853 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -20,6 +20,7 @@
 #include <error_messages.hpp>
 #include <openbmc_dbus_rest.hpp>
 #include <persistent_data.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/json_utils.hpp>
 
 #include <variant>
@@ -1256,7 +1257,7 @@
 {
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getAccountService)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request& req,
                                               const std::shared_ptr<
@@ -1375,7 +1376,7 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Accounts/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getManagerAccountCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) -> void {
@@ -1447,7 +1448,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Accounts/")
-        .privileges({{"ConfigureUsers"}})
+        .privileges(redfish::privileges::postManagerAccountCollection)
         .methods(boost::beast::http::verb::post)([](const crow::Request& req,
                                                     const std::shared_ptr<
                                                         bmcweb::AsyncResp>&
@@ -1564,8 +1565,7 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Accounts/<str>/")
-        .privileges(
-            {{"ConfigureUsers"}, {"ConfigureManager"}, {"ConfigureSelf"}})
+        .privileges(redfish::privileges::getManagerAccount)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request& req,
@@ -1723,6 +1723,9 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Accounts/<str>/")
+        // TODO this privilege should be using the generated endpoints, but
+        // because of the special handling of ConfigureSelf, it's not able to
+        // yet
         .privileges({{"ConfigureUsers"}, {"ConfigureSelf"}})
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
@@ -1797,7 +1800,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Accounts/<str>/")
-        .privileges({{"ConfigureUsers"}})
+        .privileges(redfish::privileges::deleteManagerAccount)
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request& /*req*/,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/bios.hpp b/redfish-core/lib/bios.hpp
index 4ea0727..604b8e7 100644
--- a/redfish-core/lib/bios.hpp
+++ b/redfish-core/lib/bios.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/fw_utils.hpp>
 namespace redfish
 {
@@ -10,7 +11,7 @@
 inline void requestRoutesBiosService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Bios/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getBios)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -41,6 +42,8 @@
 inline void requestRoutesBiosReset(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios/")
+        // Incorrect Privilege;  Should be ConfigureComponents
+        //.privileges(redfish::privileges::postBios)
         .privileges({{"ConfigureManager"}})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 6eb66c5..467b0fd 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -3,6 +3,7 @@
 #include <app.hpp>
 #include <boost/convert.hpp>
 #include <boost/convert/strtol.hpp>
+#include <registries/privilege_registry.hpp>
 
 #include <variant>
 namespace redfish
@@ -42,7 +43,7 @@
 inline void requestRoutesCertificateService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/CertificateService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getCertificateService)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request& req,
@@ -236,6 +237,8 @@
 {
     BMCWEB_ROUTE(app, "/redfish/v1/CertificateService/Actions/"
                       "CertificateService.GenerateCSR/")
+        // Incorrect Privilege;  Should be ConfigureManager
+        //.privileges(redfish::privileges::postCertificateService)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
@@ -675,7 +678,7 @@
 {
     BMCWEB_ROUTE(app, "/redfish/v1/CertificateService/Actions/"
                       "CertificateService.ReplaceCertificate/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postCertificateService)
         .methods(
             boost::beast::http::verb::
                 post)([](const crow::Request& req,
@@ -793,7 +796,7 @@
     BMCWEB_ROUTE(
         app,
         "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificate)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request& req,
@@ -827,7 +830,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificateCollection)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -872,7 +875,7 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postCertificateCollection)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -979,7 +982,7 @@
 inline void requestRoutesCertificateLocations(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/CertificateService/CertificateLocations/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificateLocations)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -1018,7 +1021,7 @@
 inline void requestRoutesLDAPCertificateCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/LDAP/Certificates/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificateCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1064,7 +1067,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/LDAP/Certificates/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postCertificateCollection)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1121,7 +1124,7 @@
 inline void requestRoutesLDAPCertificate(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/LDAP/Certificates/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificate)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1152,7 +1155,7 @@
 inline void requestRoutesTrustStoreCertificateCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/Truststore/Certificates/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificate)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1196,7 +1199,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/Truststore/Certificates/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postCertificateCollection)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1254,7 +1257,7 @@
 inline void requestRoutesTrustStoreCertificate(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/Truststore/Certificates/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::getCertificate)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1280,7 +1283,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/Truststore/Certificates/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::deleteCertificate)
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index 8fa25f0..c41b7e1 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -20,6 +20,7 @@
 
 #include <app.hpp>
 #include <boost/container/flat_map.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/collection.hpp>
 
 #include <variant>
@@ -162,7 +163,7 @@
 inline void requestRoutesChassisCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getChassisCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -185,7 +186,7 @@
 inline void requestRoutesChassis(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getChassis)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
@@ -443,7 +444,7 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::patchChassis)
         .methods(
             boost::beast::http::verb::
                 patch)([](const crow::Request& req,
@@ -642,7 +643,7 @@
 inline void requestRoutesChassisResetAction(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Actions/Chassis.Reset/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::postChassis)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -677,7 +678,7 @@
 inline void requestRoutesChassisResetActionInfo(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/ResetActionInfo/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getActionInfo)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index 49aa3db..5141300 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -20,6 +20,7 @@
 #include <boost/container/flat_set.hpp>
 #include <dbus_singleton.hpp>
 #include <error_messages.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/json_utils.hpp>
 
 #include <optional>
@@ -1829,7 +1830,7 @@
 inline void requestEthernetInterfacesRoutes(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/EthernetInterfaces/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getEthernetInterfaceCollection)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -1878,7 +1879,7 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getEthernetInterface)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1914,7 +1915,8 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::patchEthernetInterface)
+
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2064,7 +2066,8 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/VLANs/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getVLanNetworkInterface)
+
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& /* req */,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2106,6 +2109,8 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/VLANs/<str>/")
+        // This privilege is incorrect, it should be ConfigureManager
+        //.privileges(redfish::privileges::patchVLanNetworkInterface)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
@@ -2186,6 +2191,8 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/VLANs/<str>/")
+        // This privilege is incorrect, it should be ConfigureManager
+        //.privileges(redfish::privileges::deleteVLanNetworkInterface)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request& /* req */,
@@ -2238,7 +2245,8 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/VLANs/")
-        .privileges({{"Login"}})
+
+        .privileges(redfish::privileges::getVLanNetworkInterfaceCollection)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request& /* req */,
@@ -2296,6 +2304,8 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/EthernetInterfaces/<str>/VLANs/")
+        // This privilege is wrong, it should be ConfigureManager
+        //.privileges(redfish::privileges::postVLanNetworkInterfaceCollection)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index bd11751..1330438 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -17,6 +17,8 @@
 #include "event_service_manager.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
+
 namespace redfish
 {
 
@@ -40,7 +42,7 @@
 inline void requestRoutesEventService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/EventService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getEventService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -83,7 +85,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/EventService/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchEventService)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -149,7 +151,7 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/EventService/Actions/EventService.SubmitTestEvent/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postEventService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -161,7 +163,7 @@
 inline void requestRoutesEventDestinationCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/EventService/Subscriptions")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getEventDestinationCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -188,6 +190,9 @@
                 }
             });
     BMCWEB_ROUTE(app, "/redfish/v1/EventService/Subscriptions/")
+        // The below privilege is wrong, it should be ConfigureManager OR
+        // ConfigureComponents
+        //.privileges(redfish::privileges::postEventDestinationCollection)
         .privileges({{"ConfigureManager"}})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
@@ -483,8 +488,8 @@
 
 inline void requestRoutesEventDestination(App& app)
 {
-    BMCWEB_ROUTE(app, "/redfish/v1/EventService/Subscriptions/<str>/")
-        .privileges({{"Login"}})
+    BMCWEB_ROUTE(app, "redfish/v1/EventService/Subscriptions/<str>/")
+        .privileges(redfish::privileges::getEventDestination)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -535,7 +540,11 @@
             });
     /////redfish/v1/EventService/Subscriptions/
     // ConfigureManager
-    BMCWEB_ROUTE(app, "/redfish/v1/EventService/Subscriptions/<str>/")
+    BMCWEB_ROUTE(app, "redfish/v1/EventService/Subscriptions/<str>/")
+        // The below privilege is wrong, it should be ConfigureManager OR
+        // ConfigureSelf
+        // TODO(ed) follow up with DMTF spec and understand ConfigureSelf
+        //.privileges(redfish::privileges::patchEventDestination)
         .privileges({{"ConfigureManager"}})
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
@@ -588,7 +597,10 @@
 
                 EventServiceManager::getInstance().updateSubscriptionData();
             });
-    BMCWEB_ROUTE(app, "/redfish/v1/EventService/Subscriptions/<str>/")
+    BMCWEB_ROUTE(app, "redfish/v1/EventService/Subscriptions/<str>/")
+        // The below privilege is wrong, it should be ConfigureManager OR
+        // ConfigureSelf
+        //.privileges(redfish::privileges::deleteEventDestination)
         .privileges({{"ConfigureManager"}})
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request&,
diff --git a/redfish-core/lib/hypervisor_system.hpp b/redfish-core/lib/hypervisor_system.hpp
index 5274e53..79a89fa 100644
--- a/redfish-core/lib/hypervisor_system.hpp
+++ b/redfish-core/lib/hypervisor_system.hpp
@@ -5,6 +5,7 @@
 #include <boost/container/flat_set.hpp>
 #include <dbus_singleton.hpp>
 #include <error_messages.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/json_utils.hpp>
 
 #include <optional>
@@ -725,7 +726,7 @@
      */
 
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/hypervisor/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getComputerSystem)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -769,7 +770,7 @@
      */
 
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/hypervisor/EthernetInterfaces/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getEthernetInterfaceCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -825,7 +826,7 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/hypervisor/EthernetInterfaces/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getEthernetInterface)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
@@ -856,7 +857,7 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/hypervisor/EthernetInterfaces/<str>/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::patchEthernetInterface)
         .methods(
             boost::beast::http::verb::
                 patch)([](const crow::Request& req,
@@ -970,7 +971,7 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/hypervisor/ResetActionInfo/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getActionInfo)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1029,7 +1030,7 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/hypervisor/Actions/ComputerSystem.Reset/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::postComputerSystem)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index 31f046e..b5fb066 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -31,6 +31,7 @@
 #include <boost/container/flat_map.hpp>
 #include <boost/system/linux_error.hpp>
 #include <error_messages.hpp>
+#include <registries/privilege_registry.hpp>
 
 #include <filesystem>
 #include <optional>
@@ -908,7 +909,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogServiceCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -979,7 +980,7 @@
 inline void requestRoutesEventLogService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/EventLog/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogService)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -1150,7 +1151,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/EventLog/Entries/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1244,7 +1245,7 @@
 {
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/LogServices/EventLog/Entries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1305,7 +1306,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/EventLog/Entries/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntryCollection)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -1478,7 +1479,7 @@
 {
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/LogServices/EventLog/Entries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1609,7 +1610,7 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/LogServices/EventLog/Entries/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchLogEntry)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1642,7 +1643,8 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/LogServices/EventLog/Entries/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::deleteLogEntry)
+
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1692,7 +1694,7 @@
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/EventLog/Entries/"
                       "<str>/attachment")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1802,7 +1804,7 @@
 inline void requestRoutesBMCLogServiceCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1837,7 +1839,7 @@
 inline void requestRoutesBMCJournalLogService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Journal/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -1931,7 +1933,7 @@
 inline void requestRoutesBMCJournalLogEntryCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Journal/Entries/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntryCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2021,7 +2023,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/LogServices/Journal/Entries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2090,7 +2092,7 @@
 inline void requestRoutesBMCDumpService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Dump/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2130,7 +2132,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Dump/Entries/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntryCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2150,7 +2152,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/LogServices/Dump/Entries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2159,7 +2161,7 @@
             });
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/LogServices/Dump/Entries/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::deleteLogEntry)
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2174,7 +2176,7 @@
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Dump/"
                       "Actions/"
                       "LogService.CollectDiagnosticData/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postLogService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2187,7 +2189,7 @@
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Dump/"
                       "Actions/"
                       "LogService.ClearLog/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postLogService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2198,7 +2200,7 @@
 inline void requestRoutesSystemDumpService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/Dump/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -2242,8 +2244,8 @@
     /**
      * Functions triggers appropriate requests on DBus
      */
-    BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/Dump/Entries/")
-        .privileges({{"Login"}})
+    BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/LogServices/Dump/Entries/")
+        .privileges(redfish::privileges::getLogEntryCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2263,7 +2265,8 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/Dump/Entries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
+
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2273,7 +2276,7 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/Dump/Entries/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::deleteLogEntry)
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2287,7 +2290,7 @@
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/Dump/"
                       "Actions/"
                       "LogService.CollectDiagnosticData/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postLogService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -2300,7 +2303,7 @@
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/Dump/"
                       "Actions/"
                       "LogService.ClearLog/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postLogService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -2316,6 +2319,8 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/Crashdump/")
+        // This is incorrect, should be:
+        //.privileges(redfish::privileges::getLogService)
         .privileges({{"ConfigureManager"}})
         .methods(
             boost::beast::http::verb::
@@ -2357,6 +2362,8 @@
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/Crashdump/Actions/"
                  "LogService.ClearLog/")
+        // This is incorrect, should be:
+        //.privileges(redfish::privileges::postLogService)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
@@ -2441,6 +2448,8 @@
      */
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/")
+        // This is incorrect, should be.
+        //.privileges(redfish::privileges::postLogEntryCollection)
         .privileges({{"ConfigureComponents"}})
         .methods(
             boost::beast::http::verb::
@@ -2515,6 +2524,8 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/<str>/")
+        // this is incorrect, should be
+        // .privileges(redfish::privileges::getLogEntry)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
@@ -2532,7 +2543,7 @@
     BMCWEB_ROUTE(
         app,
         "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/<str>/<str>/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -2619,6 +2630,8 @@
     // method for security reasons.
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/Crashdump/"
                       "Actions/LogService.CollectDiagnosticData/")
+        // The below is incorrect;  Should be ConfigureManager
+        //.privileges(redfish::privileges::postLogService)
         .privileges({{"ConfigureComponents"}})
         .methods(
             boost::beast::http::verb::
@@ -2729,7 +2742,7 @@
 
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/EventLog/Actions/"
                       "LogService.ClearLog/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postLogService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2769,7 +2782,7 @@
 inline void requestRoutesPostCodesLogService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/LogServices/PostCodes/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2804,6 +2817,8 @@
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/PostCodes/Actions/"
                  "LogService.ClearLog/")
+        // The following privilege is incorrect;  It should be ConfigureManager
+        //.privileges(redfish::privileges::postLogService)
         .privileges({{"ConfigureComponents"}})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
@@ -3076,7 +3091,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/LogServices/PostCodes/Entries/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntryCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -3108,7 +3123,7 @@
 {
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/LogServices/PostCodes/Entries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getLogEntry)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index c6e6019..344ca83 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -22,6 +22,7 @@
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/date_time.hpp>
 #include <dbus_utility.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/fw_utils.hpp>
 #include <utils/systemd_utils.hpp>
 
@@ -109,7 +110,7 @@
      */
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/Actions/Manager.Reset/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postManager)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -165,7 +166,7 @@
 
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Managers/bmc/Actions/Manager.ResetToDefaults/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postManager)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -224,7 +225,7 @@
      */
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/ResetActionInfo/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getActionInfo)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1923,7 +1924,7 @@
     std::string uuid = persistent_data::getConfig().systemUuid;
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getManager)
         .methods(boost::beast::http::verb::get)([uuid](const crow::Request&,
                                                        const std::shared_ptr<
                                                            bmcweb::AsyncResp>&
@@ -2187,7 +2188,7 @@
         });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchManager)
         .methods(
             boost::beast::http::verb::
                 patch)([](const crow::Request& req,
@@ -2270,7 +2271,7 @@
 inline void requestRoutesManagerCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getManagerCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp
index 377d730..62d5933 100644
--- a/redfish-core/lib/memory.hpp
+++ b/redfish-core/lib/memory.hpp
@@ -20,6 +20,7 @@
 #include <app.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/format.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/collection.hpp>
 #include <utils/json_utils.hpp>
 
@@ -886,7 +887,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Memory/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMemoryCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -908,7 +909,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Memory/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMemory)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/message_registries.hpp b/redfish-core/lib/message_registries.hpp
index ae1358e..e3bd5bf 100644
--- a/redfish-core/lib/message_registries.hpp
+++ b/redfish-core/lib/message_registries.hpp
@@ -22,6 +22,7 @@
 #include "registries/task_event_message_registry.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -32,7 +33,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Registries/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMessageRegistryFileCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -57,7 +58,7 @@
 inline void requestRoutesMessageRegistryFile(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Registries/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMessageRegistryFile)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -123,7 +124,7 @@
 inline void requestRoutesMessageRegistry(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Registries/<str>/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMessageRegistryFile)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/metric_report.hpp b/redfish-core/lib/metric_report.hpp
index 66f4f93..63c8c19 100644
--- a/redfish-core/lib/metric_report.hpp
+++ b/redfish-core/lib/metric_report.hpp
@@ -3,6 +3,7 @@
 #include "utils/telemetry_utils.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -63,7 +64,7 @@
 inline void requestRoutesMetricReportCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/MetricReports/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMetricReportCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -81,7 +82,7 @@
 inline void requestRoutesMetricReport(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/MetricReports/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMetricReport)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/metric_report_definition.hpp b/redfish-core/lib/metric_report_definition.hpp
index 76ff2b2..a0c4f1d 100644
--- a/redfish-core/lib/metric_report_definition.hpp
+++ b/redfish-core/lib/metric_report_definition.hpp
@@ -6,6 +6,7 @@
 
 #include <app.hpp>
 #include <boost/container/flat_map.hpp>
+#include <registries/privilege_registry.hpp>
 
 #include <tuple>
 #include <variant>
@@ -350,7 +351,7 @@
 inline void requestRoutesMetricReportDefinitionCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/MetricReportDefinitions/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMetricReportDefinitionCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -367,7 +368,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/MetricReportDefinitions/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postMetricReportDefinitionCollection)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -413,7 +414,7 @@
 {
     BMCWEB_ROUTE(app,
                  "/redfish/v1/TelemetryService/MetricReportDefinitions/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getMetricReportDefinition)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -447,7 +448,7 @@
             });
     BMCWEB_ROUTE(app,
                  "/redfish/v1/TelemetryService/MetricReportDefinitions/<str>/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::deleteMetricReportDefinitionCollection)
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/network_protocol.hpp b/redfish-core/lib/network_protocol.hpp
index daa1965..b74513b 100644
--- a/redfish-core/lib/network_protocol.hpp
+++ b/redfish-core/lib/network_protocol.hpp
@@ -19,6 +19,7 @@
 #include "openbmc_dbus_rest.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/json_utils.hpp>
 
 #include <optional>
@@ -458,7 +459,7 @@
 inline void requestRoutesNetworkProtocol(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/NetworkProtocol/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchManagerNetworkProtocol)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -550,7 +551,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/NetworkProtocol/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getManagerNetworkProtocol)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index daff5c0..e534434 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -18,6 +18,7 @@
 
 #include <app.hpp>
 #include <boost/system/linux_error.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -75,7 +76,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/PCIeDevices/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getPCIeDeviceCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -96,7 +97,7 @@
 inline void requestRoutesSystemPCIeDevice(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/PCIeDevices/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getPCIeDevice)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -170,7 +171,7 @@
      */
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/PCIeDevices/<str>/PCIeFunctions/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getPCIeFunctionCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -251,7 +252,7 @@
     BMCWEB_ROUTE(
         app,
         "/redfish/v1/Systems/system/PCIeDevices/<str>/PCIeFunctions/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getPCIeFunction)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp
index c2a9945..3a024d3 100644
--- a/redfish-core/lib/power.hpp
+++ b/redfish-core/lib/power.hpp
@@ -19,6 +19,7 @@
 #include "sensors.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -128,7 +129,7 @@
 {
 
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Power/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getPower)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -319,7 +320,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Power/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchPower)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/processor.hpp b/redfish-core/lib/processor.hpp
index 8111717..7f973cf 100644
--- a/redfish-core/lib/processor.hpp
+++ b/redfish-core/lib/processor.hpp
@@ -19,6 +19,7 @@
 
 #include <app.hpp>
 #include <boost/container/flat_map.hpp>
+#include <registries/privilege_registry.hpp>
 #include <sdbusplus/message/native_types.hpp>
 #include <sdbusplus/utility/dedup_variant.hpp>
 #include <utils/collection.hpp>
@@ -1066,7 +1067,7 @@
 
     BMCWEB_ROUTE(
         app, "/redfish/v1/Systems/system/Processors/<str>/OperatingConfigs/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getOperatingConfigCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1129,7 +1130,7 @@
     BMCWEB_ROUTE(
         app,
         "/redfish/v1/Systems/system/Processors/<str>/OperatingConfigs/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getOperatingConfig)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request& req,
                                               const std::shared_ptr<
@@ -1192,7 +1193,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Processors/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getProcessorCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -1217,7 +1218,7 @@
      */
 
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Processors/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getProcessor)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1231,7 +1232,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Processors/<str>/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::patchProcessor)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/redfish_sessions.hpp b/redfish-core/lib/redfish_sessions.hpp
index bb7ad12..472151a 100644
--- a/redfish-core/lib/redfish_sessions.hpp
+++ b/redfish-core/lib/redfish_sessions.hpp
@@ -19,6 +19,7 @@
 #include "persistent_data.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -46,7 +47,7 @@
 inline void requestRoutesSession(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/SessionService/Sessions/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSession)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& /*req*/,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -66,7 +67,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/SessionService/Sessions/<str>/")
-        .privileges({{"ConfigureManager"}, {"ConfigureSelf"}})
+        .privileges(redfish::privileges::deleteSession)
         .methods(boost::beast::http::verb::delete_)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -105,7 +106,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/SessionService/Sessions/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSessionCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& /*req*/,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) -> void {
@@ -133,6 +134,11 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/SessionService/Sessions/")
+        // Note, this technically doesn't match the privilege registry given the
+        // way login mechanisms work.  The base privilege registry lists this
+        // endpoint as requiring login privilege, but because this is the
+        // endpoint responsible for giving the login privilege, and it is itself
+        // its own route, it needs to not require Login
         .privileges({})
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
@@ -214,7 +220,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/SessionService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSessionService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& /* req */,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) -> void {
@@ -235,7 +241,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/SessionService/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchSessionService)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) -> void {
diff --git a/redfish-core/lib/roles.hpp b/redfish-core/lib/roles.hpp
index 90b8de3..8f14b2e 100644
--- a/redfish-core/lib/roles.hpp
+++ b/redfish-core/lib/roles.hpp
@@ -16,6 +16,7 @@
 #pragma once
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 #include <variant>
 
@@ -73,7 +74,7 @@
 inline void requestRoutesRoles(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Roles/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getRole)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -102,7 +103,7 @@
 inline void requestRoutesRoleCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/AccountService/Roles/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getRoleCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 0566e93..d986565 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -21,6 +21,7 @@
 #include <boost/container/flat_map.hpp>
 #include <boost/range/algorithm/replace_copy_if.hpp>
 #include <dbus_singleton.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/json_utils.hpp>
 
 #include <cmath>
@@ -2978,7 +2979,7 @@
 inline void requestRoutesSensorCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Sensors/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSensorCollection)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
@@ -3034,7 +3035,7 @@
 inline void requestRoutesSensor(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Sensors/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSensor)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
diff --git a/redfish-core/lib/service_root.hpp b/redfish-core/lib/service_root.hpp
index efc3fed..6778141 100644
--- a/redfish-core/lib/service_root.hpp
+++ b/redfish-core/lib/service_root.hpp
@@ -16,6 +16,7 @@
 #pragma once
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/systemd_utils.hpp>
 
 namespace redfish
@@ -25,7 +26,7 @@
 {
     std::string uuid = persistent_data::getConfig().systemUuid;
     BMCWEB_ROUTE(app, "/redfish/v1/")
-        .privileges({})
+        .privileges(redfish::privileges::getServiceRoot)
         .methods(boost::beast::http::verb::get)(
             [uuid](const crow::Request&,
                    const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp
index 0a1d4e6..a48ef8c 100644
--- a/redfish-core/lib/storage.hpp
+++ b/redfish-core/lib/storage.hpp
@@ -19,13 +19,14 @@
 #include "openbmc_dbus_rest.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
 inline void requestRoutesStorageCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Storage/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getStorageCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -43,7 +44,7 @@
 inline void requestRoutesStorage(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Storage/1/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getStorage)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -266,7 +267,7 @@
 inline void requestRoutesDrive(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Storage/1/Drives/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getDrive)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 3e7b4739..2b9636f 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -22,6 +22,7 @@
 
 #include <app.hpp>
 #include <boost/container/flat_map.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/fw_utils.hpp>
 #include <utils/json_utils.hpp>
 
@@ -2220,7 +2221,7 @@
 inline void requestRoutesSystemsCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getComputerSystemCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2294,7 +2295,7 @@
      */
     BMCWEB_ROUTE(app,
                  "/redfish/v1/Systems/system/Actions/ComputerSystem.Reset/")
-        .privileges({{"ConfigureComponent"}})
+        .privileges(redfish::privileges::postComputerSystem)
         .methods(
             boost::beast::http::verb::
                 post)([](const crow::Request& req,
@@ -2421,7 +2422,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getComputerSystem)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -2542,7 +2543,7 @@
             getPowerMode(asyncResp);
         });
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/")
-        .privileges({{"ConfigureComponent"}})
+        .privileges(redfish::privileges::patchComputerSystem)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -2651,7 +2652,7 @@
      * Functions triggers appropriate requests on DBus
      */
     BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/ResetActionInfo/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getActionInfo)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index bca25a1..22e9743 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -19,6 +19,7 @@
 #include <boost/asio/post.hpp>
 #include <boost/asio/steady_timer.hpp>
 #include <boost/container/flat_map.hpp>
+#include <registries/privilege_registry.hpp>
 #include <task_messages.hpp>
 
 #include <chrono>
@@ -316,7 +317,7 @@
 inline void requestRoutesTaskMonitor(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TaskService/Tasks/<str>/Monitor/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getTask)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -355,7 +356,7 @@
 inline void requestRoutesTask(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TaskService/Tasks/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getTask)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -423,7 +424,7 @@
 inline void requestRoutesTaskCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TaskService/Tasks/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getTaskCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -453,7 +454,7 @@
 inline void requestRoutesTaskService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TaskService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getTaskService)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
diff --git a/redfish-core/lib/telemetry_service.hpp b/redfish-core/lib/telemetry_service.hpp
index 2ab69b9..ad86d5c 100644
--- a/redfish-core/lib/telemetry_service.hpp
+++ b/redfish-core/lib/telemetry_service.hpp
@@ -3,6 +3,7 @@
 #include "utils/telemetry_utils.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 #include <variant>
 
@@ -12,7 +13,7 @@
 inline void requestRoutesTelemetryService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getTelemetryService)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
diff --git a/redfish-core/lib/thermal.hpp b/redfish-core/lib/thermal.hpp
index 90f04e8..feb78a0 100644
--- a/redfish-core/lib/thermal.hpp
+++ b/redfish-core/lib/thermal.hpp
@@ -18,6 +18,7 @@
 #include "sensors.hpp"
 
 #include <app.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -25,7 +26,7 @@
 inline void requestRoutesThermal(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Thermal/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getThermal)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -47,7 +48,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Thermal/")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::patchThermal)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 33747dd..663d48b 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -19,6 +19,7 @@
 
 #include <app.hpp>
 #include <boost/container/flat_map.hpp>
+#include <registries/privilege_registry.hpp>
 #include <utils/fw_utils.hpp>
 
 #include <variant>
@@ -388,7 +389,7 @@
 {
     BMCWEB_ROUTE(
         app, "/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::postUpdateService)
         .methods(
             boost::beast::http::verb::
                 post)([](const crow::Request& req,
@@ -507,7 +508,7 @@
 inline void requestRoutesUpdateService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/UpdateService/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getUpdateService)
         .methods(
             boost::beast::http::verb::
                 get)([](const crow::Request&,
@@ -579,7 +580,7 @@
                 "xyz.openbmc_project.Software.ApplyTime", "RequestedApplyTime");
         });
     BMCWEB_ROUTE(app, "/redfish/v1/UpdateService/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::patchUpdateService)
         .methods(boost::beast::http::verb::patch)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -661,7 +662,7 @@
                 }
             });
     BMCWEB_ROUTE(app, "/redfish/v1/UpdateService/")
-        .privileges({{"ConfigureComponents"}})
+        .privileges(redfish::privileges::postUpdateService)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -687,7 +688,7 @@
 inline void requestRoutesSoftwareInventoryCollection(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/UpdateService/FirmwareInventory/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSoftwareInventoryCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
@@ -776,7 +777,7 @@
 inline void requestRoutesSoftwareInventory(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/UpdateService/FirmwareInventory/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getSoftwareInventory)
         .methods(
             boost::beast::http::verb::get)([](const crow::Request&,
                                               const std::shared_ptr<
diff --git a/redfish-core/lib/virtual_media.hpp b/redfish-core/lib/virtual_media.hpp
index 8fe31d5..6e69f20 100644
--- a/redfish-core/lib/virtual_media.hpp
+++ b/redfish-core/lib/virtual_media.hpp
@@ -21,8 +21,10 @@
 #include <boost/type_traits/has_dereference.hpp>
 #include <utils/json_utils.hpp>
 // for GetObjectType and ManagedObjectType
+
 #include <account_service.hpp>
 #include <boost/url/url_view.hpp>
+#include <registries/privilege_registry.hpp>
 
 namespace redfish
 {
@@ -775,7 +777,7 @@
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/<str>/VirtualMedia/<str>/Actions/"
                       "VirtualMedia.InsertMedia")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postVirtualMedia)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -920,7 +922,7 @@
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/<str>/VirtualMedia/<str>/Actions/"
                       "VirtualMedia.EjectMedia")
-        .privileges({{"ConfigureManager"}})
+        .privileges(redfish::privileges::postVirtualMedia)
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1010,7 +1012,7 @@
                     std::array<const char*, 0>());
             });
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/<str>/VirtualMedia/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getVirtualMediaCollection)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& /* req */,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
@@ -1054,7 +1056,7 @@
             });
 
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/<str>/VirtualMedia/<str>/")
-        .privileges({{"Login"}})
+        .privileges(redfish::privileges::getVirtualMedia)
         .methods(boost::beast::http::verb::get)(
             [](const crow::Request& /* req */,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
