diff --git a/doc/Core.xml b/doc/Core.xml
index 058425837..920967948 100644
--- a/doc/Core.xml
+++ b/doc/Core.xml
@@ -6242,6 +6242,42 @@ onvif://www.onvif.org/name/ARV-453
+
+ Configuration Renewal
+
+ The configuration allows for a renewal endpoint to be set. If the device supports this feature, it shall automatically renew the credentials
+ when they are about to expire.
+
+
+ The device shall do a GET request to the configured RenewalEndpoint with a JWT token retrieved from the configured
+ AuthorizationServer. The endpoint shall respond with a JSON payload with the following structure:
+ "
+}]]>
+ Any null value in the response shall clear the corresponding optional parameter in the StorageConfiguration.
+
+
+ When the device receives a configuration with the ConfigurationRenewal set, it shall immediately contact
+ the renewal endpoint to get up-to-date credentials. The device may use the credentials provided by the configuration in the
+ meantime to avoid service disruption.
+
+
+ Once the device has called the renewal endpoint, the corresponding StorageConfiguration shall be updated with the
+ new values provided by the endpoint.
+
+
+ The device shall ensure to renew the configuration before the expiration provided by the expiresAt field.
+ If the renewal endpoint fails to provide a valid response, the device shall continue to use the existing configuration and retry
+ later using an exponential backoff strategy.
+
+
GetStorageConfigurations
This operation lists all existing storage configurations. A device indicating storage configuration capability shall support the listing of existing storage configurations through the GetStorageConfigurations command.
diff --git a/wsdl/ver10/device/wsdl/devicemgmt.wsdl b/wsdl/ver10/device/wsdl/devicemgmt.wsdl
index cfd29a591..1b712bdd2 100644
--- a/wsdl/ver10/device/wsdl/devicemgmt.wsdl
+++ b/wsdl/ver10/device/wsdl/devicemgmt.wsdl
@@ -336,6 +336,11 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
Indicates maximum number of storage configurations supported.
+
+
+ Indicates support for renewal of storage configuration.
+
+
If present signals support for geo location. The value signals the supported number of entries.
@@ -2228,6 +2233,34 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
User credential for the storage server
+
+
+
+
+
+ Remote URL to be queried by the device to renew the storage configuration.
+
+
+
+
+ AuthorizationServer token referring to the server that provides JWT tokens to authorize with the the renewal endpoint.
+
+
+
+
+ CertPathValidationPolicyID used to validate the renewal endpoint server certificate.
+ If not configured, server certificate validation behavior is undefined and the device may either apply
+ a vendor specific default validation policy or skip validation at all.
+
+
+
+
+ Optional user readable error information (readonly).
+
+
+
+
+
diff --git a/yaml/ver10/cloudintegration/yaml/storagerenewal.yaml b/yaml/ver10/cloudintegration/yaml/storagerenewal.yaml
new file mode 100644
index 000000000..8ba0afda1
--- /dev/null
+++ b/yaml/ver10/cloudintegration/yaml/storagerenewal.yaml
@@ -0,0 +1,56 @@
+openapi: 3.0.3
+info:
+ title: Storage Configuration Renewal
+ contact:
+ name: ONVIF Technical Specification
+ url: https://github.com/onvif/specs
+ email: help@onvif.org
+ license:
+ name: ONVIF Contributor License Agreement
+ url: https://github.com/onvif/specs/blob/development/LICENSE.md
+ version: "25.06"
+paths:
+ /Configuration-Renewal:
+ get:
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/storageConfigurationRenewal'
+components:
+ schemas:
+ storageConfigurationRenewal:
+ type: object
+ required:
+ - type
+ properties:
+ region:
+ type: string
+ example: "us-east-1"
+ description: "Optional region of the storage server"
+ storageUri:
+ type: string
+ example: "https://.s3.us-east-1.amazonaws.com/"
+ description: "Storage server address"
+ user:
+ type: object
+ description: "User credentials for the storage server"
+ properties:
+ username:
+ type: string
+ example: ""
+ description: "Optional user name used to access the storage server"
+ password:
+ type: string
+ example: ""
+ description: "Optional password used to access the storage server"
+ token:
+ type: string
+ example: null
+ description: "Optional token used to access the storage server"
+ expiresAt:
+ type: string
+ example: "2024-08-14T15:31:24Z"
+ description: "Expiration date of the storage configuration as an ISO 8601 date-time"
\ No newline at end of file