From f10cd39b6a317e30b0658da032f65ef1bbdc433d Mon Sep 17 00:00:00 2001
From: Frederico Sequeira <frederico.sequeira@ext.ec.europa.eu>
Date: Tue, 7 Jan 2025 15:28:52 +0000
Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Add=20and=20update=20smithy=20do?=
 =?UTF-8?q?cumentation?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/definition/models/domainNames.smithy     | 157 +++++++++++++++
 .../models/providerCredentials.smithy         | 176 +++++++++++++++++
 .../models/providerTypeExtraConfig.smithy     | 168 ++++++++++++++++
 docs/definition/models/sys.smithy             |   2 +-
 .../models/virtualMachineMaintenance.smithy   |  20 +-
 .../models/virtualMachineType.smithy          |  10 +-
 .../models/vmAssignedExtraConfig.smithy       | 179 ++++++++++++++++++
 .../vmAssignedVirtualMachineType.smithy       | 168 ++++++++++++++++
 docs/definition/models/webhooksettings.smithy | 147 ++++++++++++++
 9 files changed, 1011 insertions(+), 16 deletions(-)
 create mode 100644 docs/definition/models/domainNames.smithy
 create mode 100644 docs/definition/models/providerCredentials.smithy
 create mode 100644 docs/definition/models/providerTypeExtraConfig.smithy
 create mode 100644 docs/definition/models/vmAssignedExtraConfig.smithy
 create mode 100644 docs/definition/models/vmAssignedVirtualMachineType.smithy
 create mode 100644 docs/definition/models/webhooksettings.smithy

diff --git a/docs/definition/models/domainNames.smithy b/docs/definition/models/domainNames.smithy
new file mode 100644
index 0000000..57dce0e
--- /dev/null
+++ b/docs/definition/models/domainNames.smithy
@@ -0,0 +1,157 @@
+$version: "2.0"
+
+namespace eu.europa.ec.snet.sys
+
+@tags(["SYS"])
+@documentation("Resource - Virtual Machine Domain Names")
+resource domainNames {
+    identifiers: {
+        id: Ids
+    }
+    properties: {
+        domain_names: Document
+        assigned_object_id: Ids
+        assigned_object_type: String
+
+    }
+    read: GetDomainNames
+    create: CreateDomainNames
+    update: UpdateDomainNames
+    delete: DeleteDomainNames
+    list: ListDomainNames
+}
+
+
+@tags(["SYS"])
+@documentation("Show Virtual Machine Domain Names information based on ID")
+@readonly
+@http(method: "GET", uri: "/api/plugins/sys/DomainNames/{id}/")
+operation GetDomainNames {
+    input := for domainNames {
+        @required
+        @httpLabel
+        $id
+    }
+
+    output := for domainNames {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+
+        $domain_names
+    }
+}
+
+@tags(["SYS"])
+@documentation("Show Virtual Machine Domain Names information")
+@idempotent
+@http(method: "POST", uri: "/api/plugins/sys/DomainNames/")
+operation CreateDomainNames {
+    input := for domainNames {
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $domain_names
+    }
+
+    output := for domainNames {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $domain_names
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Update Virtual Machine Domain Names information")
+@http(method: "PATCH", uri: "/api/plugins/sys/DomainNames/{id}/")
+operation UpdateDomainNames {
+    input := for domainNames {
+        @required
+        @httpLabel
+        $id
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+
+        $domain_names
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Delete Virtual Machine Domain Names information")
+@idempotent
+@http(method: "DELETE", uri: "/api/plugins/sys/DomainNames/{id}/")
+operation DeleteDomainNames {
+    input := for domainNames {
+        @required
+        @httpLabel
+        $id
+    }
+}
+
+
+@tags(["SYS"])
+@documentation("List Virtual Machine Domain Names Info")
+@readonly
+@http(method: "GET",uri: "/api/plugins/sys/DomainNames/")
+@paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
+operation ListDomainNames {
+    input := for domainNames {
+        @httpQuery("limit")
+        limit: Integer 
+        @httpQuery("offset")
+        offset: String
+        @httpQuery("ordering")
+        next: String
+    }
+
+    output := for domainNames {
+        count: Integer
+        next: String
+        previous: String
+        @required
+        results: DomainNamesList
+    }
+}
+
+@documentation("Unique constraint to prevent duplication of IDs")
+
+list DomainNamesList {
+
+    member: VmdomainNames
+}
+@references(
+[
+    {resource: domainNames}
+]
+)
+structure VmdomainNames for domainNames {
+    @required
+    $id
+    
+    @required
+    $assigned_object_id
+    @required
+    $assigned_object_type
+    $domain_names
+}
+
diff --git a/docs/definition/models/providerCredentials.smithy b/docs/definition/models/providerCredentials.smithy
new file mode 100644
index 0000000..2ee9b09
--- /dev/null
+++ b/docs/definition/models/providerCredentials.smithy
@@ -0,0 +1,176 @@
+$version: "2.0"
+
+namespace eu.europa.ec.snet.sys
+
+@tags(["SYS"])
+@documentation("Resource - Provider Credentials")
+resource providerCredentials {
+    identifiers: {
+        id: Ids
+    }
+    properties: {
+        assigned_object_type_id: Ids
+        assigned_object_id: String
+        provider_url: String
+        provider_name: String
+        provider_password_vault_url: String
+
+    }
+    read: GetProviderCredentials
+    create: CreateProviderCredentials
+    update: UpdateProviderCredentials
+    delete: DeleteProviderCredentials
+    list: ListProviderCredentials
+}
+
+
+@tags(["SYS"])
+@documentation("Show Provider Credentials based on ID")
+@readonly
+@http(method: "GET", uri: "/api/plugins/sys/ProviderCredentials/{id}/")
+operation GetProviderCredentials {
+    input := for providerCredentials {
+        @required
+        @httpLabel
+        $id
+    }
+
+    output := for providerCredentials {
+        @required
+        $assigned_object_type_id
+        @required
+        $assigned_object_id
+        @required
+        $provider_url
+        @required
+        $provider_name
+        @required
+        $provider_password_vault_url
+    }
+}
+
+@tags(["SYS"])
+@documentation("Show Provider Credentials information")
+@idempotent
+@http(method: "POST", uri: "/api/plugins/sys/ProviderCredentials/")
+operation CreateProviderCredentials {
+    input := for providerCredentials {
+        
+        @required
+        $assigned_object_type_id
+        @required
+        $assigned_object_id
+        @required
+        $provider_url
+        @required
+        $provider_name
+        @required
+        $provider_password_vault_url
+    }
+
+    output := for providerCredentials {
+        @required
+        $id
+        @required
+        $assigned_object_type_id
+        @required
+        $assigned_object_id
+        @required
+        $provider_url
+        @required
+        $provider_name
+        @required
+        $provider_password_vault_url
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Update Provider Credentials")
+@http(method: "PATCH", uri: "/api/plugins/sys/ProviderCredentials/{id}/")
+operation UpdateProviderCredentials {
+    input := for providerCredentials {
+        @required
+        @httpLabel
+        $id
+        @required
+        $assigned_object_type_id
+        @required
+        $assigned_object_id
+        @required
+        $provider_url
+        @required
+        $provider_name
+        @required
+        $provider_password_vault_url
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Delete Provider Credentials")
+@idempotent
+@http(method: "DELETE", uri: "/api/plugins/sys/ProviderCredentials/{id}/")
+operation DeleteProviderCredentials {
+    input := for providerCredentials {
+        @required
+        @httpLabel
+        $id
+    }
+}
+
+@tags(["SYS"])
+@documentation("List Provider Credentials")
+@readonly
+@http(method: "GET",uri: "/api/plugins/sys/ProviderCredentials/")
+@paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
+operation ListProviderCredentials {
+    input := for providerCredentials {
+        @httpQuery("limit")
+        limit: Integer 
+        @httpQuery("offset")
+        offset: String
+        @httpQuery("ordering")
+        next: String
+    }
+
+    output := for providerCredentials {
+        count: Integer
+        next: String
+        previous: String
+        @required
+        results: ProviderCredentialsList
+    }
+}
+
+@documentation("Unique constraint to prevent duplication of IDs")
+@uniqueItems
+list ProviderCredentialsList {
+
+    member: ProviderCredentialsSummary
+}
+@references(
+[
+    {resource: providerCredentials}
+]
+)
+structure ProviderCredentialsSummary for providerCredentials {
+    @required
+    $id
+    
+    @required
+    $assigned_object_type_id
+    @required
+    $assigned_object_id
+    @required
+    $provider_url
+    @required
+    $provider_name
+    @required
+    $provider_password_vault_url
+}
+
diff --git a/docs/definition/models/providerTypeExtraConfig.smithy b/docs/definition/models/providerTypeExtraConfig.smithy
new file mode 100644
index 0000000..4f06599
--- /dev/null
+++ b/docs/definition/models/providerTypeExtraConfig.smithy
@@ -0,0 +1,168 @@
+$version: "2.0"
+
+namespace eu.europa.ec.snet.sys
+
+@tags(["SYS"])
+@documentation("Resource - Provider Type Extra Config")
+resource providerTypeExtraConfig {
+    identifiers: {
+        id: Ids
+    }
+    properties: {
+        extra_config_description: String
+        extra_config_structure: String
+        assigned_object_id: Ids
+        assigned_object_type: String
+
+    }
+    read: GetproviderTypeExtraConfig
+    create: CreateproviderTypeExtraConfig
+    update: UpdateproviderTypeExtraConfig
+    delete: DeleteproviderTypeExtraConfig
+    list: ListproviderTypeExtraConfig
+}
+
+
+@tags(["SYS"])
+@documentation("Show Provider Type Extra Config based on ID")
+@readonly
+@http(method: "GET", uri: "/api/plugins/sys/ExtraConfig/{id}/")
+operation GetproviderTypeExtraConfig {
+    input := for providerTypeExtraConfig {
+        @required
+        @httpLabel
+        $id
+    }
+
+    output := for providerTypeExtraConfig {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $extra_config_structure
+
+        $extra_config_description
+    }
+}
+
+@tags(["SYS"])
+@documentation("Show Provider Type Extra Config information")
+@idempotent
+@http(method: "POST", uri: "/api/plugins/sys/ExtraConfig/")
+operation CreateproviderTypeExtraConfig {
+    input := for providerTypeExtraConfig {
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $extra_config_structure
+
+        $extra_config_description
+    }
+
+    output := for providerTypeExtraConfig {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $extra_config_structure
+
+        $extra_config_description
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Update Provider Type Extra Config")
+@http(method: "PATCH", uri: "/api/plugins/sys/ExtraConfig/{id}/")
+operation UpdateproviderTypeExtraConfig {
+    input := for providerTypeExtraConfig {
+        @required
+        @httpLabel
+        $id
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $extra_config_structure
+
+        $extra_config_description
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Delete Provider Type Extra Config")
+@idempotent
+@http(method: "DELETE", uri: "/api/plugins/sys/ExtraConfig/{id}/")
+operation DeleteproviderTypeExtraConfig {
+    input := for providerTypeExtraConfig {
+        @required
+        @httpLabel
+        $id
+    }
+}
+
+@tags(["SYS"])
+@documentation("List Provider Type Extra Config")
+@readonly
+@http(method: "GET",uri: "/api/plugins/sys/ExtraConfig/")
+@paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
+operation ListproviderTypeExtraConfig {
+    input := for providerTypeExtraConfig {
+        @httpQuery("limit")
+        limit: Integer 
+        @httpQuery("offset")
+        offset: String
+        @httpQuery("ordering")
+        next: String
+    }
+
+    output := for providerTypeExtraConfig {
+        count: Integer
+        next: String
+        previous: String
+        @required
+        results: ProviderTypeExtraConfigList
+    }
+}
+
+@documentation("Unique constraint to prevent duplication of IDs")
+@uniqueItems
+list ProviderTypeExtraConfigList {
+
+    member: ProviderTypeExtraConfigSummary
+}
+@references(
+[
+    {resource: providerTypeExtraConfig}
+]
+)
+structure ProviderTypeExtraConfigSummary for providerTypeExtraConfig {
+    @required
+    $id
+    
+    @required
+    $assigned_object_id
+    @required
+    $assigned_object_type
+    @required
+    $extra_config_structure
+
+    $extra_config_description
+}
+
diff --git a/docs/definition/models/sys.smithy b/docs/definition/models/sys.smithy
index ea7bf6d..f680893 100644
--- a/docs/definition/models/sys.smithy
+++ b/docs/definition/models/sys.smithy
@@ -9,7 +9,7 @@ use aws.protocols#restJson1
 @restJson1
 service sys {
     version: "0.0.1",
-    resources: [vmMaintenance,vmType]
+    resources: [vmMaintenance,vmType,vmAssignmentType,providerCredentials,domainNames,providerTypeExtraConfig,vmAssignmentExtraConfig,webhookSettings]
 }
 
 
diff --git a/docs/definition/models/virtualMachineMaintenance.smithy b/docs/definition/models/virtualMachineMaintenance.smithy
index 3a036ec..25fead0 100644
--- a/docs/definition/models/virtualMachineMaintenance.smithy
+++ b/docs/definition/models/virtualMachineMaintenance.smithy
@@ -23,9 +23,9 @@ resource vmMaintenance {
 
 
 @tags(["SYS"])
-@documentation("Show Virtual Machine Maintenance s information based on ID")
+@documentation("Show Virtual Machine Maintenance information based on ID")
 @readonly
-@http(method: "GET", uri: "/api/plugins/sys/vm_maintenance/{id}/")
+@http(method: "GET", uri: "/api/plugins/sys/VmMaintenance/{id}/")
 operation GetVmMaintenance {
     input := for vmMaintenance {
         @required
@@ -46,9 +46,9 @@ operation GetVmMaintenance {
 }
 
 @tags(["SYS"])
-@documentation("Show Virtual Machine Maintenance s information")
+@documentation("Show Virtual Machine Maintenance information")
 @idempotent
-@http(method: "POST", uri: "/api/plugins/sys/vm_maintenance/")
+@http(method: "POST", uri: "/api/plugins/sys/VmMaintenance/")
 operation CreateVmMaintenance {
     input := for vmMaintenance {
         
@@ -76,8 +76,8 @@ operation CreateVmMaintenance {
 
 
 @tags(["SYS"])
-@documentation("Update Virtual Machine Maintenance s information")
-@http(method: "PATCH", uri: "/api/plugins/sys/vm_maintenance/{id}/")
+@documentation("Update Virtual Machine Maintenance information")
+@http(method: "PATCH", uri: "/api/plugins/sys/VmMaintenance/{id}/")
 operation UpdateVmMaintenance {
     input := for vmMaintenance {
         @required
@@ -97,9 +97,9 @@ operation UpdateVmMaintenance {
 
 
 @tags(["SYS"])
-@documentation("Delete Virtual Machine Maintenance s information")
+@documentation("Delete Virtual Machine Maintenance information")
 @idempotent
-@http(method: "DELETE", uri: "/api/plugins/sys/vm_maintenance/{id}/")
+@http(method: "DELETE", uri: "/api/plugins/sys/VmMaintenance/{id}/")
 operation DeleteVmMaintenance {
     input := for vmMaintenance {
         @required
@@ -110,9 +110,9 @@ operation DeleteVmMaintenance {
 
 
 @tags(["SYS"])
-@documentation("List Virtual Machine Maintenance s Info")
+@documentation("List Virtual Machine Maintenance Info")
 @readonly
-@http(method: "GET",uri: "/api/plugins/sys/vm_maintenance/")
+@http(method: "GET",uri: "/api/plugins/sys/VmMaintenance/")
 @paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
 operation ListVmMaintenance {
     input := for vmMaintenance {
diff --git a/docs/definition/models/virtualMachineType.smithy b/docs/definition/models/virtualMachineType.smithy
index 62aa4b7..90ce66a 100644
--- a/docs/definition/models/virtualMachineType.smithy
+++ b/docs/definition/models/virtualMachineType.smithy
@@ -26,7 +26,7 @@ resource vmType {
 @tags(["SYS"])
 @documentation("Show Virtual Machine Type based on ID")
 @readonly
-@http(method: "GET", uri: "/api/plugins/sys/vm_type/{id}/")
+@http(method: "GET", uri: "/api/plugins/sys/VmType/{id}/")
 operation GetvmType {
     input := for vmType {
         @required
@@ -51,7 +51,7 @@ operation GetvmType {
 @tags(["SYS"])
 @documentation("Show Virtual Machine Type information")
 @idempotent
-@http(method: "POST", uri: "/api/plugins/sys/vm_type/")
+@http(method: "POST", uri: "/api/plugins/sys/VmType/")
 operation CreatevmType {
     input := for vmType {
         
@@ -84,7 +84,7 @@ operation CreatevmType {
 
 @tags(["SYS"])
 @documentation("Update Virtual Machine Type")
-@http(method: "PATCH", uri: "/api/plugins/sys/vm_type/{id}/")
+@http(method: "PATCH", uri: "/api/plugins/sys/VmType/{id}/")
 operation UpdatevmType {
     input := for vmType {
         @required
@@ -108,7 +108,7 @@ operation UpdatevmType {
 @tags(["SYS"])
 @documentation("Delete Virtual Machine Type")
 @idempotent
-@http(method: "DELETE", uri: "/api/plugins/sys/vm_type/{id}/")
+@http(method: "DELETE", uri: "/api/plugins/sys/VmType/{id}/")
 operation DeletevmType {
     input := for vmType {
         @required
@@ -120,7 +120,7 @@ operation DeletevmType {
 @tags(["SYS"])
 @documentation("List Virtual Machine Type")
 @readonly
-@http(method: "GET",uri: "/api/plugins/sys/vm_type/")
+@http(method: "GET",uri: "/api/plugins/sys/VmType/")
 @paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
 operation ListvmType {
     input := for vmType {
diff --git a/docs/definition/models/vmAssignedExtraConfig.smithy b/docs/definition/models/vmAssignedExtraConfig.smithy
new file mode 100644
index 0000000..da4e885
--- /dev/null
+++ b/docs/definition/models/vmAssignedExtraConfig.smithy
@@ -0,0 +1,179 @@
+$version: "2.0"
+
+namespace eu.europa.ec.snet.sys
+
+@tags(["SYS"])
+@documentation("Resource - VM Assigned Extra Config")
+resource vmAssignmentExtraConfig {
+    identifiers: {
+        id: Ids
+    }
+    properties: {
+        provider_type_extra_config_id: Ids
+        provider_type_extra_config_assignment_desc: String
+        extra_config_values: String
+        assigned_object_id: Ids
+        assigned_object_type: String
+
+    }
+    read: GetvmAssignmentExtraConfig
+    create: CreatevmAssignmentExtraConfig
+    update: UpdatevmAssignmentExtraConfig
+    delete: DeletevmAssignmentExtraConfig
+    list: ListvmAssignmentExtraConfig
+}
+
+
+@tags(["SYS"])
+@documentation("Show VM Assigned Extra Config based on ID")
+@readonly
+@http(method: "GET", uri: "/api/plugins/sys/AssignedExtraConfig/{id}/")
+operation GetvmAssignmentExtraConfig {
+    input := for vmAssignmentExtraConfig {
+        @required
+        @httpLabel
+        $id
+    }
+
+    output := for vmAssignmentExtraConfig {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $provider_type_extra_config_id
+        @required
+        $extra_config_values
+
+        $provider_type_extra_config_assignment_desc
+    }
+}
+
+@tags(["SYS"])
+@documentation("Show VM Assigned Extra Config information")
+@idempotent
+@http(method: "POST", uri: "/api/plugins/sys/AssignedExtraConfig/")
+operation CreatevmAssignmentExtraConfig {
+    input := for vmAssignmentExtraConfig {
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $provider_type_extra_config_id
+        @required
+        $extra_config_values
+
+        $provider_type_extra_config_assignment_desc
+    }
+
+    output := for vmAssignmentExtraConfig {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $provider_type_extra_config_id
+        @required
+        $extra_config_values
+
+        $provider_type_extra_config_assignment_desc
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Update VM Assigned Extra Config")
+@http(method: "PATCH", uri: "/api/plugins/sys/AssignedExtraConfig/{id}/")
+operation UpdatevmAssignmentExtraConfig {
+    input := for vmAssignmentExtraConfig {
+        @required
+        @httpLabel
+        $id
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $provider_type_extra_config_id
+        @required
+        $extra_config_values
+
+        $provider_type_extra_config_assignment_desc
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Delete VM Assigned Extra Config")
+@idempotent
+@http(method: "DELETE", uri: "/api/plugins/sys/AssignedExtraConfig/{id}/")
+operation DeletevmAssignmentExtraConfig {
+    input := for vmAssignmentExtraConfig {
+        @required
+        @httpLabel
+        $id
+    }
+}
+
+@tags(["SYS"])
+@documentation("List VM Assigned Extra Config")
+@readonly
+@http(method: "GET",uri: "/api/plugins/sys/AssignedExtraConfig/")
+@paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
+operation ListvmAssignmentExtraConfig {
+    input := for vmAssignmentExtraConfig {
+        @httpQuery("limit")
+        limit: Integer 
+        @httpQuery("offset")
+        offset: String
+        @httpQuery("ordering")
+        next: String
+    }
+
+    output := for vmAssignmentExtraConfig {
+        count: Integer
+        next: String
+        previous: String
+        @required
+        results: vmAssignmentExtraConfigList
+    }
+}
+
+@documentation("Unique constraint to prevent duplication of IDs")
+@uniqueItems
+list vmAssignmentExtraConfigList {
+
+    member: vmAssignmentExtraConfigSummary
+}
+@references(
+[
+    {resource: vmAssignmentExtraConfig}
+]
+)
+structure vmAssignmentExtraConfigSummary for vmAssignmentExtraConfig {
+    @required
+    $id
+    
+    @required
+    $assigned_object_id
+    @required
+    $assigned_object_type
+    @required
+    $provider_type_extra_config_id
+    @required
+    $extra_config_values
+    
+    $provider_type_extra_config_assignment_desc
+}
+
diff --git a/docs/definition/models/vmAssignedVirtualMachineType.smithy b/docs/definition/models/vmAssignedVirtualMachineType.smithy
new file mode 100644
index 0000000..11aa2d5
--- /dev/null
+++ b/docs/definition/models/vmAssignedVirtualMachineType.smithy
@@ -0,0 +1,168 @@
+$version: "2.0"
+
+namespace eu.europa.ec.snet.sys
+
+@tags(["SYS"])
+@documentation("Resource - VM Assigned VM Assigned Virtual Machine Type")
+resource vmAssignmentType {
+    identifiers: {
+        id: Ids
+    }
+    properties: {
+        virtual_machine_type_assignment_id: Ids
+        virtual_machine_type_assignment_desc: String
+        assigned_object_id: Ids
+        assigned_object_type: String
+
+    }
+    read: GetvmAssignmentType
+    create: CreatevmAssignmentType
+    update: UpdatevmAssignmentType
+    delete: DeletevmAssignmentType
+    list: ListvmAssignmentType
+}
+
+
+@tags(["SYS"])
+@documentation("Show VM Assigned Virtual Machine Type based on ID")
+@readonly
+@http(method: "GET", uri: "/api/plugins/sys/AssignedVmType/{id}/")
+operation GetvmAssignmentType {
+    input := for vmAssignmentType {
+        @required
+        @httpLabel
+        $id
+    }
+
+    output := for vmAssignmentType {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $virtual_machine_type_assignment_id
+
+        $virtual_machine_type_assignment_desc
+    }
+}
+
+@tags(["SYS"])
+@documentation("Show VM Assigned Virtual Machine Type information")
+@idempotent
+@http(method: "POST", uri: "/api/plugins/sys/AssignedVmType/")
+operation CreatevmAssignmentType {
+    input := for vmAssignmentType {
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $virtual_machine_type_assignment_id
+
+        $virtual_machine_type_assignment_desc
+    }
+
+    output := for vmAssignmentType {
+        @required
+        $id
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $virtual_machine_type_assignment_id
+
+        $virtual_machine_type_assignment_desc
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Update VM Assigned Virtual Machine Type")
+@http(method: "PATCH", uri: "/api/plugins/sys/AssignedVmType/{id}/")
+operation UpdatevmAssignmentType {
+    input := for vmAssignmentType {
+        @required
+        @httpLabel
+        $id
+        
+        @required
+        $assigned_object_id
+        @required
+        $assigned_object_type
+        @required
+        $virtual_machine_type_assignment_id
+
+        $virtual_machine_type_assignment_desc
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Delete VM Assigned Virtual Machine Type")
+@idempotent
+@http(method: "DELETE", uri: "/api/plugins/sys/AssignedVmType/{id}/")
+operation DeletevmAssignmentType {
+    input := for vmAssignmentType {
+        @required
+        @httpLabel
+        $id
+    }
+}
+
+@tags(["SYS"])
+@documentation("List VM Assigned Virtual Machine Type")
+@readonly
+@http(method: "GET",uri: "/api/plugins/sys/AssignedVmType/")
+@paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
+operation ListvmAssignmentType {
+    input := for vmAssignmentType {
+        @httpQuery("limit")
+        limit: Integer 
+        @httpQuery("offset")
+        offset: String
+        @httpQuery("ordering")
+        next: String
+    }
+
+    output := for vmAssignmentType {
+        count: Integer
+        next: String
+        previous: String
+        @required
+        results: vmAssignmentTypeList
+    }
+}
+
+@documentation("Unique constraint to prevent duplication of IDs")
+@uniqueItems
+list vmAssignmentTypeList {
+
+    member: vmAssignmentTypeSummary
+}
+@references(
+[
+    {resource: vmAssignmentType}
+]
+)
+structure vmAssignmentTypeSummary for vmAssignmentType {
+    @required
+    $id
+    
+    @required
+    $assigned_object_id
+    @required
+    $assigned_object_type
+    @required
+    $virtual_machine_type_assignment_id
+
+    $virtual_machine_type_assignment_desc
+}
+
diff --git a/docs/definition/models/webhooksettings.smithy b/docs/definition/models/webhooksettings.smithy
new file mode 100644
index 0000000..79b6c73
--- /dev/null
+++ b/docs/definition/models/webhooksettings.smithy
@@ -0,0 +1,147 @@
+$version: "2.0"
+
+namespace eu.europa.ec.snet.sys
+
+@tags(["SYS"])
+@documentation("Resource - Webhook Settings")
+resource webhookSettings {
+    identifiers: {
+        id: Ids
+    }
+    properties: {
+        payload_url: Url
+        http_content_type: String
+
+    }
+    read: GetwebhookSettings
+    create: CreatewebhookSettings
+    update: UpdatewebhookSettings
+    delete: DeletewebhookSettings
+    list: ListwebhookSettings
+}
+
+
+@tags(["SYS"])
+@documentation("Show Webhook Settings based on ID")
+@readonly
+@http(method: "GET", uri: "/api/plugins/sys/WebhookSettings/{id}/")
+operation GetwebhookSettings {
+    input := for webhookSettings {
+        @required
+        @httpLabel
+        $id
+    }
+
+    output := for webhookSettings {
+        @required
+        $id
+        @required
+        $payload_url
+        @required
+        $http_content_type
+
+    }
+}
+
+@tags(["SYS"])
+@documentation("Show Webhook Settings information")
+@idempotent
+@http(method: "POST", uri: "/api/plugins/sys/WebhookSettings/")
+operation CreatewebhookSettings {
+    input := for webhookSettings {
+        
+        @required
+        $payload_url
+        @required
+        $http_content_type
+    }
+
+    output := for webhookSettings {
+        @required
+        $id
+        @required
+        $payload_url
+        @required
+        $http_content_type
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Update Webhook Settings")
+@http(method: "PATCH", uri: "/api/plugins/sys/WebhookSettings/{id}/")
+operation UpdatewebhookSettings {
+    input := for webhookSettings {
+        @required
+        @httpLabel
+        $id
+        
+        @required
+        $payload_url
+        @required
+        $http_content_type
+    }
+
+        errors: [NotUnique,WrongAssignedobject] 
+}
+
+
+@tags(["SYS"])
+@documentation("Delete Webhook Settings")
+@idempotent
+@http(method: "DELETE", uri: "/api/plugins/sys/WebhookSettings/{id}/")
+operation DeletewebhookSettings {
+    input := for webhookSettings {
+        @required
+        @httpLabel
+        $id
+    }
+}
+
+@tags(["SYS"])
+@documentation("List Webhook Settings")
+@readonly
+@http(method: "GET",uri: "/api/plugins/sys/WebhookSettings/")
+@paginated(inputToken: "next", outputToken: "next", pageSize: "limit", items: "results")
+operation ListwebhookSettings {
+    input := for webhookSettings {
+        @httpQuery("limit")
+        limit: Integer 
+        @httpQuery("offset")
+        offset: String
+        @httpQuery("ordering")
+        next: String
+    }
+
+    output := for webhookSettings {
+        count: Integer
+        next: String
+        previous: String
+        @required
+        results: WebhookSettingsList
+    }
+}
+
+@documentation("Unique constraint to prevent duplication of IDs")
+@uniqueItems
+list WebhookSettingsList {
+
+    member: WebhookSettingsSummary
+}
+@references(
+[
+    {resource: webhookSettings}
+]
+)
+structure WebhookSettingsSummary for webhookSettings {
+    @required
+    $id
+    
+    @required
+    $payload_url
+    @required
+    $http_content_type
+}
+
-- 
GitLab