generated: '2026-07-27' method: generated source: openapi/hildebrand-glowmarkt-device-management-system-swagger.json, openapi/hildebrand-glowmarkt-notification-system-swagger.json, openapi/hildebrand-glowmarkt-resource-system-swagger.json, openapi/hildebrand-glowmarkt-user-system-swagger.json, openapi/hildebrand-glowmarkt-virtual-entity-system-swagger.json description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 106 by_action_class: acting: 45 connected: 61 by_consequence: write: 40 read: 61 physical: 1 safety-critical: 4 human_in_the_loop_required: 4 operations: - path: /devicetype method: post operationId: deviceType.addDeviceType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /devicetype method: get operationId: deviceType.findAll x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /devicetype/{id} method: get operationId: deviceType.findById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device method: get operationId: device.findAll x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device method: post operationId: device.addDevice x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /device/{id} method: get operationId: device.findById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device/resource/{resourceId} method: get operationId: device.findByResourceId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device/meter-point/{meterPointNumber}/inventory method: get operationId: device.getMeterPointInventory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device/smart-meter/{eui}/inventory method: get operationId: device.getMeterPointInventoryByEUI x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device/meter-point/{meterPointNumber}/resources method: get operationId: device.getMeterPointResources x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device/{id}/status method: get operationId: device.getStatusbyDeviceId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /device/status method: get operationId: device.getStatusbyHardwareId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discover/{hardwareId} method: get operationId: discoverDevicesAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /alerttype method: get operationId: getAlertTypes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /alerttype method: post operationId: addAlertType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /alerttype/{alertTypeId} method: get operationId: getAlertTypebyId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /alerttype/{alertTypeId} method: put operationId: updateAlertType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /alert method: post operationId: sendAlert x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /alert/{alertId} method: get operationId: findAlertById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /alert/user method: get operationId: findAlertsOfUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /template method: get operationId: getTemplates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /template method: post operationId: addTemplate x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /template/{templateId} method: get operationId: getTemplatebyId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /template/{templateId} method: put operationId: updateTemplate x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /template/{alertTypeId}/{channelType}/{cultureCode} method: get operationId: getTemplatebyCharacteristics x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /template/{alertTypeId}/{channelType}/{cultureCode} method: post operationId: addTemplatebyCode x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /notification/{notificationId} method: get operationId: findNotificationById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /notification/{notificationId}/log method: get operationId: getNotificationLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resourcetype method: post operationId: resourcetype.addResourceType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /resourcetype method: get operationId: resourcetype.findAll x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resourcetype/{id} method: get operationId: resourcetype.findById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resourcetype/{id}/resource method: get operationId: resourcetype.findResourceByType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resourcetype/{id}/appresource method: get operationId: resourcetype.findAppResourceByType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource method: post operationId: resource.addResource x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /resource method: get operationId: resource.findAll x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id} method: get operationId: resource.findById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/readings method: get operationId: resource.getReading x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/current method: get operationId: resource.getCurrentReading x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/first-time method: get operationId: resource.getFirstTime x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/last-time method: get operationId: resource.getLastTime x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/meterread method: get operationId: resource.getMeterRead x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/tariff method: get operationId: resource.getTariff x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/tariff-list method: get operationId: resource.getTariffHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/catchup method: get operationId: resource.catchUpReadings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/glowbinary method: get operationId: resource.getGlowBinary x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/{id}/cache method: delete operationId: resource.deleteCache x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /resource/{id}/daily-consumption-log method: get operationId: resource.getDailyConsumptionLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /resource/count method: get operationId: resource.countByResourceType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /register method: post operationId: addUser x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user method: get operationId: getUserbyUsername x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user method: post operationId: createUser x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/{userId} method: get operationId: getUserbyId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user/{userId} method: delete operationId: deleteUserbyId x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/verify method: post operationId: generateUserVerificationToken x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/verify method: put operationId: verifyUser x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/resetpassword method: post operationId: generateUserPasswordResetToken x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /user/resetpassword method: put operationId: resetPasswordUser x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /account method: get operationId: getAccounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /account method: post operationId: addAccount x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/{accountId} method: get operationId: getAccountbyId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /account/{accountId} method: put operationId: updateAccount x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/{accountId} method: delete operationId: deleteAccount x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/{accountId}/status method: get operationId: getAccountStatusbyId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /account/status method: get operationId: getAccountStatusbyUserToken x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /account/email method: post operationId: userChangeEmail x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/{userId}/username method: put operationId: updateUsernameUserId x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/name method: post operationId: userChangeName x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/changepassword method: post operationId: userChangePassWord x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/{accountId}/mobileapptoken method: post x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/{accountId}/mobileapptoken method: put x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /accountprofile method: get operationId: getAccountProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /accountprofile method: post operationId: addAccountProfile x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /accountprofile/{profileName} method: get operationId: getAccountProfilebyProfileName x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /accountsession method: get operationId: getAccountSession x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /accountsession method: put operationId: updateAccountSession x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /auth method: get operationId: tokencheck x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /auth method: post operationId: usernamelogin x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /auth/token method: get operationId: getTokenOfUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /auth/token/{tokenId} method: delete operationId: deleteTokenById x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /auth/newToken method: get operationId: newToken x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /auth/deleteToken method: delete operationId: deleteToken x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /auth/oauth method: get operationId: validateOAuthAccessToken x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /auth/oauth method: post operationId: generateOAuthorizationCode x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /auth/oauth/access method: post operationId: exchangeAuthorizationCodeWithAccess x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/verification/status method: get operationId: getUserMeterPointVerificationConsentStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user/verification/status/mpxns/renewal method: post operationId: renewMeterPointConsentBulk x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/verification/status/mpxns/revocation method: post operationId: renewMeterPointConsentRevokeBulk x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /user/verification/status/mpxn/{mpxn}/renewal method: get operationId: getMeterPointConsentRenewal x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user/verification/status/mpxn/{mpxn}/renewal method: post operationId: renewMeterPointConsent x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /user/verification/status/mpxn/{mpxn}/revocation method: get operationId: getMeterPointConsentRevocation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user/verification/status/mpxn/{mpxn}/revocation method: post operationId: revokeMeterPointConsent x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /vetype method: post operationId: veType.addVeType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /vetype method: get operationId: veType.findAll x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /vetype/{id} method: get operationId: veType.findById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /vetype/{id} method: put operationId: veType.updateVeType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /vetype/{id}/resources method: get operationId: veType.findResourcesOfVeType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /virtualentity method: post operationId: virtualentity.addVirtualEntity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /virtualentity method: get operationId: virtualentity.findAll x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /virtualentity/{id} method: get operationId: virtualentity.findById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /virtualentity/{id} method: put operationId: virtualentity.updateVirtualEntity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /virtualentity/{id} method: delete operationId: virtualentity.deactivateVirtualEntity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /virtualentity/{id}/resources method: get operationId: virtualentity.findResourcesbyVeId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /virtualentity/{id}/attribute method: get operationId: virtualentity.getAttributes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /virtualentity/{id}/attribute method: post operationId: virtualentity.add-updateAttributes x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /virtualentity/{id}/attribute method: delete operationId: virtualentity.deleteAttributes x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /vesys/appstats method: get operationId: stats.getApplicationVeStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none