ConstReadonlyASSUME_ROLE: "/v1/assumed-roles"POST /v1/assumed-roles
Readonlygroup: (groupId: string) => string/v1/groups/{groupId}
ReadonlygroupAutomation: (groupId: string) => string/v1/groups/{groupId}/service/automations
ReadonlygroupAutomationId: (groupId: string, automationId: string) => string/v1/groups/{groupId}/service/automations/{automationId}
ReadonlygroupNode: (groupId: string, nodeId: string) => stringDELETE /v1/groups/{groupId}/nodes/{nodeId} - Remove node from group (disassociation)
ReadonlygroupNodeAssocConfirm: (groupId: string, requestId: string) => stringPOST /v1/groups/{groupId}/node-assoc-requests/{requestId}/confirm - Confirms user-node mapping (Matter commissioning)
ReadonlygroupNodeAssocRequests: (groupId: string) => string/v1/groups/{groupId}/node-assoc-requests
ReadonlygroupNodeAssocVerify: (groupId: string, requestId: string) => string/v1/groups/{groupId}/node-assoc-requests/{requestId}/verify - Challenge_response (traditional) or nocsr_elements (Matter)
ReadonlygroupNodeConfig: (groupId: string, nodeId: string) => string/v1/groups/{groupId}/nodes/{nodeId}/config
ReadonlygroupNodeSchedules: (groupId: string, nodeId: string) => string/v1/groups/{groupId}/nodes/{nodeId}/schedules
ReadonlygroupNodeTimeseriesAggregates: (groupId: string, nodeId: string) => string/v1/groups/{groupId}/nodes/{nodeId}/timeseries/aggregates
ReadonlygroupNodeTimeseriesLatest: (groupId: string, nodeId: string) => string/v1/groups/{groupId}/nodes/{nodeId}/timeseries/latest
ReadonlygroupNodeTimeseriesRaw: (groupId: string, nodeId: string) => string/v1/groups/{groupId}/nodes/{nodeId}/timeseries/raw
ReadonlygroupNodeTriggers: (groupId: string, nodeId: string) => string/v1/groups/{groupId}/nodes/{nodeId}/triggers
ReadonlyGROUPS: "/v1/groups"GET/POST /v1/groups
ReadonlygroupSharingRequests: (groupId: string) => string/v1/groups/{groupId}/sharing-requests
ReadonlygroupSubgroup: (groupId: string, subgroupId: string) => string/v1/groups/{groupId}/subgroups/{subgroupId}
ReadonlygroupSubgroupNode: (groupId: string, subgroupId: string, nodeId: string) => string/v1/groups/{groupId}/subgroups/{subgroupId}/nodes/{nodeId}
ReadonlygroupSubgroups: (groupId: string) => string/v1/groups/{groupId}/subgroups
ReadonlygroupSubgroupSharingRequests: (groupId: string, subgroupId: string) => string/v1/groups/{groupId}/subgroups/{subgroupId}/sharing-requests
ReadonlygroupSubgroupUser: (groupId: string, subgroupId: string, userId: string) => string/v1/groups/{groupId}/subgroups/{subgroupId}/users/{userId} - Remove member (use 'me' to leave)
ReadonlygroupSubgroupUsers: (groupId: string, subgroupId: string) => stringGET /v1/groups/{groupId}/subgroups/{subgroupId}/users — list users with access to the subgroup
ReadonlygroupUser: (groupId: string, userId: string) => string/v1/groups/{groupId}/users/{userId} - Remove member (use 'me' to leave)
ReadonlygroupUsers: (groupId: string) => stringGET /v1/groups/{groupId}/users — list users with access to the group
ReadonlyintegrationEndpoint: (integrationId: string, endpointId: string) => stringDELETE unregister endpoint — /v1/integrations/{integrationId}/endpoints/{endpointId}
ReadonlyintegrationEndpoints: (integrationId: string) => stringPUT register endpoint — /v1/integrations/{integrationId}/endpoints
ReadonlyINTEGRATIONS: "/v1/integrations"GET /v1/integrations — list configured integrations (non-admin)
ReadonlySHARING_REQUESTS_RECEIVED: "/v1/sharing-requests/received"GET /v1/sharing-requests/received — list sharing requests for the current user
ReadonlysharingRequestAccept: (requestId: string) => stringPOST /v1/sharing-requests/{requestId}/accept
ReadonlysharingRequestReject: (requestId: string) => stringPOST /v1/sharing-requests/{requestId}/reject
Readonlyuser: (userId: string) => stringGET /v1/users/{userId} — user profile (me for the authenticated caller)
ReadonlyUSER_AUTH_PASSWORD: "/v1/user/auth/password"POST /v1/user/auth/password
ReadonlyUSER_AUTH_PASSWORD_RECOVERY: "/v1/user/auth/password-recovery"POST /v1/user/auth/password-recovery
ReadonlyUSER_AUTH_PASSWORD_RECOVERY_CONFIRMATION: "/v1/user/auth/password-recovery/confirmation"POST /v1/user/auth/password-recovery/confirmation
ReadonlyUSER_AUTH_SIGNOUT: "/v1/user/auth/signout"POST /v1/user/auth/signout
ReadonlyUSER_AUTH_SIGNUP: "/v1/user/auth/signup"POST /v1/user/auth/signup
ReadonlyUSER_AUTH_SIGNUP_VERIFY: "/v1/user/auth/signup/verify"POST /v1/user/auth/signup/verify
ReadonlyUSER_AUTH_TOKEN: "/v1/user/auth/token"POST /v1/user/auth/token
ReadonlyUSER_AUTH_TOKEN_REFRESH: "/v1/user/auth/token/refresh"POST /v1/user/auth/token/refresh
ReadonlyUSER_CREDENTIALS: "/v1/user/credentials"POST /v1/user/credentials (main API, not the user-auth API)
ReadonlyUSER_NODE_MAPPING_INITIATE: (groupId: string) => stringPOST /v1/groups/{groupId}/node-assoc-requests - Initiates user node mapping
ReadonlyUSER_NODE_MAPPING_VERIFY: (groupId: string, requestId: string) => stringPOST /v1/groups/{groupId}/node-assoc-requests/{requestId}/verify - Verifies user node mapping
Centralized v1 API path literals and path builder functions. Use these instead of hard-coding path strings to simplify future path changes (e.g. /v1 → /v2).