1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9import msrest.serialization
10
11
12class AdministratorListResult(msrest.serialization.Model):
13    """A list of active directory administrators.
14
15    Variables are only populated by the server, and will be ignored when sending a request.
16
17    :ivar value: Array of results.
18    :vartype value: list[~azure.mgmt.sql.models.ServerAzureADAdministrator]
19    :ivar next_link: Link to retrieve next page of results.
20    :vartype next_link: str
21    """
22
23    _validation = {
24        'value': {'readonly': True},
25        'next_link': {'readonly': True},
26    }
27
28    _attribute_map = {
29        'value': {'key': 'value', 'type': '[ServerAzureADAdministrator]'},
30        'next_link': {'key': 'nextLink', 'type': 'str'},
31    }
32
33    def __init__(
34        self,
35        **kwargs
36    ):
37        super(AdministratorListResult, self).__init__(**kwargs)
38        self.value = None
39        self.next_link = None
40
41
42class Resource(msrest.serialization.Model):
43    """ARM resource.
44
45    Variables are only populated by the server, and will be ignored when sending a request.
46
47    :ivar id: Resource ID.
48    :vartype id: str
49    :ivar name: Resource name.
50    :vartype name: str
51    :ivar type: Resource type.
52    :vartype type: str
53    """
54
55    _validation = {
56        'id': {'readonly': True},
57        'name': {'readonly': True},
58        'type': {'readonly': True},
59    }
60
61    _attribute_map = {
62        'id': {'key': 'id', 'type': 'str'},
63        'name': {'key': 'name', 'type': 'str'},
64        'type': {'key': 'type', 'type': 'str'},
65    }
66
67    def __init__(
68        self,
69        **kwargs
70    ):
71        super(Resource, self).__init__(**kwargs)
72        self.id = None
73        self.name = None
74        self.type = None
75
76
77class ProxyResource(Resource):
78    """ARM proxy resource.
79
80    Variables are only populated by the server, and will be ignored when sending a request.
81
82    :ivar id: Resource ID.
83    :vartype id: str
84    :ivar name: Resource name.
85    :vartype name: str
86    :ivar type: Resource type.
87    :vartype type: str
88    """
89
90    _validation = {
91        'id': {'readonly': True},
92        'name': {'readonly': True},
93        'type': {'readonly': True},
94    }
95
96    _attribute_map = {
97        'id': {'key': 'id', 'type': 'str'},
98        'name': {'key': 'name', 'type': 'str'},
99        'type': {'key': 'type', 'type': 'str'},
100    }
101
102    def __init__(
103        self,
104        **kwargs
105    ):
106        super(ProxyResource, self).__init__(**kwargs)
107
108
109class Advisor(ProxyResource):
110    """Database, Server or Elastic Pool Advisor.
111
112    Variables are only populated by the server, and will be ignored when sending a request.
113
114    :ivar id: Resource ID.
115    :vartype id: str
116    :ivar name: Resource name.
117    :vartype name: str
118    :ivar type: Resource type.
119    :vartype type: str
120    :ivar kind: Resource kind.
121    :vartype kind: str
122    :ivar location: Resource location.
123    :vartype location: str
124    :ivar advisor_status: Gets the status of availability of this advisor to customers. Possible
125     values are 'GA', 'PublicPreview', 'LimitedPublicPreview' and 'PrivatePreview'. Possible values
126     include: "GA", "PublicPreview", "LimitedPublicPreview", "PrivatePreview".
127    :vartype advisor_status: str or ~azure.mgmt.sql.models.AdvisorStatus
128    :param auto_execute_status: Gets the auto-execute status (whether to let the system execute the
129     recommendations) of this advisor. Possible values are 'Enabled' and 'Disabled'. Possible values
130     include: "Enabled", "Disabled", "Default".
131    :type auto_execute_status: str or ~azure.mgmt.sql.models.AutoExecuteStatus
132    :ivar auto_execute_status_inherited_from: Gets the resource from which current value of
133     auto-execute status is inherited. Auto-execute status can be set on (and inherited from)
134     different levels in the resource hierarchy. Possible values are 'Subscription', 'Server',
135     'ElasticPool', 'Database' and 'Default' (when status is not explicitly set on any level).
136     Possible values include: "Default", "Subscription", "Server", "ElasticPool", "Database".
137    :vartype auto_execute_status_inherited_from: str or
138     ~azure.mgmt.sql.models.AutoExecuteStatusInheritedFrom
139    :ivar recommendations_status: Gets that status of recommendations for this advisor and reason
140     for not having any recommendations. Possible values include, but are not limited to, 'Ok'
141     (Recommendations available),LowActivity (not enough workload to analyze), 'DbSeemsTuned'
142     (Database is doing well), etc.
143    :vartype recommendations_status: str
144    :ivar last_checked: Gets the time when the current resource was analyzed for recommendations by
145     this advisor.
146    :vartype last_checked: ~datetime.datetime
147    :ivar recommended_actions: Gets the recommended actions for this advisor.
148    :vartype recommended_actions: list[~azure.mgmt.sql.models.RecommendedAction]
149    """
150
151    _validation = {
152        'id': {'readonly': True},
153        'name': {'readonly': True},
154        'type': {'readonly': True},
155        'kind': {'readonly': True},
156        'location': {'readonly': True},
157        'advisor_status': {'readonly': True},
158        'auto_execute_status_inherited_from': {'readonly': True},
159        'recommendations_status': {'readonly': True},
160        'last_checked': {'readonly': True},
161        'recommended_actions': {'readonly': True},
162    }
163
164    _attribute_map = {
165        'id': {'key': 'id', 'type': 'str'},
166        'name': {'key': 'name', 'type': 'str'},
167        'type': {'key': 'type', 'type': 'str'},
168        'kind': {'key': 'kind', 'type': 'str'},
169        'location': {'key': 'location', 'type': 'str'},
170        'advisor_status': {'key': 'properties.advisorStatus', 'type': 'str'},
171        'auto_execute_status': {'key': 'properties.autoExecuteStatus', 'type': 'str'},
172        'auto_execute_status_inherited_from': {'key': 'properties.autoExecuteStatusInheritedFrom', 'type': 'str'},
173        'recommendations_status': {'key': 'properties.recommendationsStatus', 'type': 'str'},
174        'last_checked': {'key': 'properties.lastChecked', 'type': 'iso-8601'},
175        'recommended_actions': {'key': 'properties.recommendedActions', 'type': '[RecommendedAction]'},
176    }
177
178    def __init__(
179        self,
180        **kwargs
181    ):
182        super(Advisor, self).__init__(**kwargs)
183        self.kind = None
184        self.location = None
185        self.advisor_status = None
186        self.auto_execute_status = kwargs.get('auto_execute_status', None)
187        self.auto_execute_status_inherited_from = None
188        self.recommendations_status = None
189        self.last_checked = None
190        self.recommended_actions = None
191
192
193class AutomaticTuningOptions(msrest.serialization.Model):
194    """Automatic tuning properties for individual advisors.
195
196    Variables are only populated by the server, and will be ignored when sending a request.
197
198    :param desired_state: Automatic tuning option desired state. Possible values include: "Off",
199     "On", "Default".
200    :type desired_state: str or ~azure.mgmt.sql.models.AutomaticTuningOptionModeDesired
201    :ivar actual_state: Automatic tuning option actual state. Possible values include: "Off", "On".
202    :vartype actual_state: str or ~azure.mgmt.sql.models.AutomaticTuningOptionModeActual
203    :ivar reason_code: Reason code if desired and actual state are different.
204    :vartype reason_code: int
205    :ivar reason_desc: Reason description if desired and actual state are different. Possible
206     values include: "Default", "Disabled", "AutoConfigured", "InheritedFromServer",
207     "QueryStoreOff", "QueryStoreReadOnly", "NotSupported".
208    :vartype reason_desc: str or ~azure.mgmt.sql.models.AutomaticTuningDisabledReason
209    """
210
211    _validation = {
212        'actual_state': {'readonly': True},
213        'reason_code': {'readonly': True},
214        'reason_desc': {'readonly': True},
215    }
216
217    _attribute_map = {
218        'desired_state': {'key': 'desiredState', 'type': 'str'},
219        'actual_state': {'key': 'actualState', 'type': 'str'},
220        'reason_code': {'key': 'reasonCode', 'type': 'int'},
221        'reason_desc': {'key': 'reasonDesc', 'type': 'str'},
222    }
223
224    def __init__(
225        self,
226        **kwargs
227    ):
228        super(AutomaticTuningOptions, self).__init__(**kwargs)
229        self.desired_state = kwargs.get('desired_state', None)
230        self.actual_state = None
231        self.reason_code = None
232        self.reason_desc = None
233
234
235class AutomaticTuningServerOptions(msrest.serialization.Model):
236    """Automatic tuning properties for individual advisors.
237
238    Variables are only populated by the server, and will be ignored when sending a request.
239
240    :param desired_state: Automatic tuning option desired state. Possible values include: "Off",
241     "On", "Default".
242    :type desired_state: str or ~azure.mgmt.sql.models.AutomaticTuningOptionModeDesired
243    :ivar actual_state: Automatic tuning option actual state. Possible values include: "Off", "On".
244    :vartype actual_state: str or ~azure.mgmt.sql.models.AutomaticTuningOptionModeActual
245    :ivar reason_code: Reason code if desired and actual state are different.
246    :vartype reason_code: int
247    :ivar reason_desc: Reason description if desired and actual state are different. Possible
248     values include: "Default", "Disabled", "AutoConfigured".
249    :vartype reason_desc: str or ~azure.mgmt.sql.models.AutomaticTuningServerReason
250    """
251
252    _validation = {
253        'actual_state': {'readonly': True},
254        'reason_code': {'readonly': True},
255        'reason_desc': {'readonly': True},
256    }
257
258    _attribute_map = {
259        'desired_state': {'key': 'desiredState', 'type': 'str'},
260        'actual_state': {'key': 'actualState', 'type': 'str'},
261        'reason_code': {'key': 'reasonCode', 'type': 'int'},
262        'reason_desc': {'key': 'reasonDesc', 'type': 'str'},
263    }
264
265    def __init__(
266        self,
267        **kwargs
268    ):
269        super(AutomaticTuningServerOptions, self).__init__(**kwargs)
270        self.desired_state = kwargs.get('desired_state', None)
271        self.actual_state = None
272        self.reason_code = None
273        self.reason_desc = None
274
275
276class AutoPauseDelayTimeRange(msrest.serialization.Model):
277    """Supported auto pause delay time range.
278
279    Variables are only populated by the server, and will be ignored when sending a request.
280
281    :ivar min_value: Minimum value.
282    :vartype min_value: int
283    :ivar max_value: Maximum value.
284    :vartype max_value: int
285    :ivar step_size: Step value for discrete values between the minimum value and the maximum
286     value.
287    :vartype step_size: int
288    :ivar default: Default value is no value is provided.
289    :vartype default: int
290    :ivar unit: Unit of time that delay is expressed in. Possible values include: "Minutes".
291    :vartype unit: str or ~azure.mgmt.sql.models.PauseDelayTimeUnit
292    :ivar do_not_pause_value: Value that is used to not pause (infinite delay before pause).
293    :vartype do_not_pause_value: int
294    """
295
296    _validation = {
297        'min_value': {'readonly': True},
298        'max_value': {'readonly': True},
299        'step_size': {'readonly': True},
300        'default': {'readonly': True},
301        'unit': {'readonly': True},
302        'do_not_pause_value': {'readonly': True},
303    }
304
305    _attribute_map = {
306        'min_value': {'key': 'minValue', 'type': 'int'},
307        'max_value': {'key': 'maxValue', 'type': 'int'},
308        'step_size': {'key': 'stepSize', 'type': 'int'},
309        'default': {'key': 'default', 'type': 'int'},
310        'unit': {'key': 'unit', 'type': 'str'},
311        'do_not_pause_value': {'key': 'doNotPauseValue', 'type': 'int'},
312    }
313
314    def __init__(
315        self,
316        **kwargs
317    ):
318        super(AutoPauseDelayTimeRange, self).__init__(**kwargs)
319        self.min_value = None
320        self.max_value = None
321        self.step_size = None
322        self.default = None
323        self.unit = None
324        self.do_not_pause_value = None
325
326
327class AzureADOnlyAuthListResult(msrest.serialization.Model):
328    """A list of active directory only authentications.
329
330    Variables are only populated by the server, and will be ignored when sending a request.
331
332    :ivar value: Array of results.
333    :vartype value: list[~azure.mgmt.sql.models.ServerAzureADOnlyAuthentication]
334    :ivar next_link: Link to retrieve next page of results.
335    :vartype next_link: str
336    """
337
338    _validation = {
339        'value': {'readonly': True},
340        'next_link': {'readonly': True},
341    }
342
343    _attribute_map = {
344        'value': {'key': 'value', 'type': '[ServerAzureADOnlyAuthentication]'},
345        'next_link': {'key': 'nextLink', 'type': 'str'},
346    }
347
348    def __init__(
349        self,
350        **kwargs
351    ):
352        super(AzureADOnlyAuthListResult, self).__init__(**kwargs)
353        self.value = None
354        self.next_link = None
355
356
357class BackupShortTermRetentionPolicy(ProxyResource):
358    """A short term retention policy.
359
360    Variables are only populated by the server, and will be ignored when sending a request.
361
362    :ivar id: Resource ID.
363    :vartype id: str
364    :ivar name: Resource name.
365    :vartype name: str
366    :ivar type: Resource type.
367    :vartype type: str
368    :param retention_days: The backup retention period in days. This is how many days Point-in-Time
369     Restore will be supported.
370    :type retention_days: int
371    :param diff_backup_interval_in_hours: The differential backup interval in hours. This is how
372     many interval hours between each differential backup will be supported. This is only applicable
373     to live databases but not dropped databases. Possible values include: 12, 24.
374    :type diff_backup_interval_in_hours: str or ~azure.mgmt.sql.models.DiffBackupIntervalInHours
375    """
376
377    _validation = {
378        'id': {'readonly': True},
379        'name': {'readonly': True},
380        'type': {'readonly': True},
381    }
382
383    _attribute_map = {
384        'id': {'key': 'id', 'type': 'str'},
385        'name': {'key': 'name', 'type': 'str'},
386        'type': {'key': 'type', 'type': 'str'},
387        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
388        'diff_backup_interval_in_hours': {'key': 'properties.diffBackupIntervalInHours', 'type': 'int'},
389    }
390
391    def __init__(
392        self,
393        **kwargs
394    ):
395        super(BackupShortTermRetentionPolicy, self).__init__(**kwargs)
396        self.retention_days = kwargs.get('retention_days', None)
397        self.diff_backup_interval_in_hours = kwargs.get('diff_backup_interval_in_hours', None)
398
399
400class BackupShortTermRetentionPolicyListResult(msrest.serialization.Model):
401    """A list of short term retention policies.
402
403    Variables are only populated by the server, and will be ignored when sending a request.
404
405    :ivar value: Array of results.
406    :vartype value: list[~azure.mgmt.sql.models.BackupShortTermRetentionPolicy]
407    :ivar next_link: Link to retrieve next page of results.
408    :vartype next_link: str
409    """
410
411    _validation = {
412        'value': {'readonly': True},
413        'next_link': {'readonly': True},
414    }
415
416    _attribute_map = {
417        'value': {'key': 'value', 'type': '[BackupShortTermRetentionPolicy]'},
418        'next_link': {'key': 'nextLink', 'type': 'str'},
419    }
420
421    def __init__(
422        self,
423        **kwargs
424    ):
425        super(BackupShortTermRetentionPolicyListResult, self).__init__(**kwargs)
426        self.value = None
427        self.next_link = None
428
429
430class CheckNameAvailabilityRequest(msrest.serialization.Model):
431    """A request to check whether the specified name for a resource is available.
432
433    Variables are only populated by the server, and will be ignored when sending a request.
434
435    All required parameters must be populated in order to send to Azure.
436
437    :param name: Required.
438    :type name: str
439    :ivar type:  Has constant value: "Microsoft.Sql/servers".
440    :vartype type: str
441    """
442
443    _validation = {
444        'name': {'required': True},
445        'type': {'required': True, 'constant': True},
446    }
447
448    _attribute_map = {
449        'name': {'key': 'name', 'type': 'str'},
450        'type': {'key': 'type', 'type': 'str'},
451    }
452
453    type = "Microsoft.Sql/servers"
454
455    def __init__(
456        self,
457        **kwargs
458    ):
459        super(CheckNameAvailabilityRequest, self).__init__(**kwargs)
460        self.name = kwargs['name']
461
462
463class CheckNameAvailabilityResponse(msrest.serialization.Model):
464    """The result of a name availability check.
465
466    Variables are only populated by the server, and will be ignored when sending a request.
467
468    :ivar name: The name whose availability was checked.
469    :vartype name: str
470    :ivar available: True if the name is available, otherwise false.
471    :vartype available: bool
472    :ivar reason: The reason code explaining why the name is unavailable. Will be undefined if the
473     name is available. Possible values include: "Invalid", "AlreadyExists".
474    :vartype reason: str or ~azure.mgmt.sql.models.CheckNameAvailabilityReason
475    :ivar message: A message explaining why the name is unavailable. Will be undefined if the name
476     is available.
477    :vartype message: str
478    """
479
480    _validation = {
481        'name': {'readonly': True},
482        'available': {'readonly': True},
483        'reason': {'readonly': True},
484        'message': {'readonly': True},
485    }
486
487    _attribute_map = {
488        'name': {'key': 'name', 'type': 'str'},
489        'available': {'key': 'available', 'type': 'bool'},
490        'reason': {'key': 'reason', 'type': 'str'},
491        'message': {'key': 'message', 'type': 'str'},
492    }
493
494    def __init__(
495        self,
496        **kwargs
497    ):
498        super(CheckNameAvailabilityResponse, self).__init__(**kwargs)
499        self.name = None
500        self.available = None
501        self.reason = None
502        self.message = None
503
504
505class CompleteDatabaseRestoreDefinition(msrest.serialization.Model):
506    """Contains the information necessary to perform a complete database restore operation.
507
508    All required parameters must be populated in order to send to Azure.
509
510    :param last_backup_name: Required. The last backup name to apply.
511    :type last_backup_name: str
512    """
513
514    _validation = {
515        'last_backup_name': {'required': True},
516    }
517
518    _attribute_map = {
519        'last_backup_name': {'key': 'lastBackupName', 'type': 'str'},
520    }
521
522    def __init__(
523        self,
524        **kwargs
525    ):
526        super(CompleteDatabaseRestoreDefinition, self).__init__(**kwargs)
527        self.last_backup_name = kwargs['last_backup_name']
528
529
530class CopyLongTermRetentionBackupParameters(msrest.serialization.Model):
531    """Contains the information necessary to perform long term retention backup copy operation.
532
533    :param target_subscription_id: The subscription that owns the target server.
534    :type target_subscription_id: str
535    :param target_resource_group: The resource group that owns the target server.
536    :type target_resource_group: str
537    :param target_server_resource_id: The resource Id of the target server that owns the database.
538    :type target_server_resource_id: str
539    :param target_server_fully_qualified_domain_name: The fully qualified domain name of the target
540     server.
541    :type target_server_fully_qualified_domain_name: str
542    :param target_database_name: The name of the database owns the copied backup.
543    :type target_database_name: str
544    :param target_backup_storage_redundancy: The storage redundancy type of the copied backup.
545     Possible values include: "Geo", "Local", "Zone".
546    :type target_backup_storage_redundancy: str or
547     ~azure.mgmt.sql.models.TargetBackupStorageRedundancy
548    """
549
550    _attribute_map = {
551        'target_subscription_id': {'key': 'properties.targetSubscriptionId', 'type': 'str'},
552        'target_resource_group': {'key': 'properties.targetResourceGroup', 'type': 'str'},
553        'target_server_resource_id': {'key': 'properties.targetServerResourceId', 'type': 'str'},
554        'target_server_fully_qualified_domain_name': {'key': 'properties.targetServerFullyQualifiedDomainName', 'type': 'str'},
555        'target_database_name': {'key': 'properties.targetDatabaseName', 'type': 'str'},
556        'target_backup_storage_redundancy': {'key': 'properties.targetBackupStorageRedundancy', 'type': 'str'},
557    }
558
559    def __init__(
560        self,
561        **kwargs
562    ):
563        super(CopyLongTermRetentionBackupParameters, self).__init__(**kwargs)
564        self.target_subscription_id = kwargs.get('target_subscription_id', None)
565        self.target_resource_group = kwargs.get('target_resource_group', None)
566        self.target_server_resource_id = kwargs.get('target_server_resource_id', None)
567        self.target_server_fully_qualified_domain_name = kwargs.get('target_server_fully_qualified_domain_name', None)
568        self.target_database_name = kwargs.get('target_database_name', None)
569        self.target_backup_storage_redundancy = kwargs.get('target_backup_storage_redundancy', None)
570
571
572class CreateDatabaseRestorePointDefinition(msrest.serialization.Model):
573    """Contains the information necessary to perform a create database restore point operation.
574
575    All required parameters must be populated in order to send to Azure.
576
577    :param restore_point_label: Required. The restore point label to apply.
578    :type restore_point_label: str
579    """
580
581    _validation = {
582        'restore_point_label': {'required': True},
583    }
584
585    _attribute_map = {
586        'restore_point_label': {'key': 'restorePointLabel', 'type': 'str'},
587    }
588
589    def __init__(
590        self,
591        **kwargs
592    ):
593        super(CreateDatabaseRestorePointDefinition, self).__init__(**kwargs)
594        self.restore_point_label = kwargs['restore_point_label']
595
596
597class TrackedResource(Resource):
598    """ARM tracked top level resource.
599
600    Variables are only populated by the server, and will be ignored when sending a request.
601
602    All required parameters must be populated in order to send to Azure.
603
604    :ivar id: Resource ID.
605    :vartype id: str
606    :ivar name: Resource name.
607    :vartype name: str
608    :ivar type: Resource type.
609    :vartype type: str
610    :param location: Required. Resource location.
611    :type location: str
612    :param tags: A set of tags. Resource tags.
613    :type tags: dict[str, str]
614    """
615
616    _validation = {
617        'id': {'readonly': True},
618        'name': {'readonly': True},
619        'type': {'readonly': True},
620        'location': {'required': True},
621    }
622
623    _attribute_map = {
624        'id': {'key': 'id', 'type': 'str'},
625        'name': {'key': 'name', 'type': 'str'},
626        'type': {'key': 'type', 'type': 'str'},
627        'location': {'key': 'location', 'type': 'str'},
628        'tags': {'key': 'tags', 'type': '{str}'},
629    }
630
631    def __init__(
632        self,
633        **kwargs
634    ):
635        super(TrackedResource, self).__init__(**kwargs)
636        self.location = kwargs['location']
637        self.tags = kwargs.get('tags', None)
638
639
640class Database(TrackedResource):
641    """A database resource.
642
643    Variables are only populated by the server, and will be ignored when sending a request.
644
645    All required parameters must be populated in order to send to Azure.
646
647    :ivar id: Resource ID.
648    :vartype id: str
649    :ivar name: Resource name.
650    :vartype name: str
651    :ivar type: Resource type.
652    :vartype type: str
653    :param location: Required. Resource location.
654    :type location: str
655    :param tags: A set of tags. Resource tags.
656    :type tags: dict[str, str]
657    :param sku: The database SKU.
658
659     The list of SKUs may vary by region and support offer. To determine the SKUs (including the
660     SKU name, tier/edition, family, and capacity) that are available to your subscription in an
661     Azure region, use the ``Capabilities_ListByLocation`` REST API or one of the following
662     commands:
663
664     .. code-block:: azurecli
665
666        az sql db list-editions -l <location> -o table
667        `
668
669     .. code-block:: powershell
670
671        Get-AzSqlServerServiceObjective -Location <location>
672        `.
673    :type sku: ~azure.mgmt.sql.models.Sku
674    :ivar kind: Kind of database. This is metadata used for the Azure portal experience.
675    :vartype kind: str
676    :ivar managed_by: Resource that manages the database.
677    :vartype managed_by: str
678    :param create_mode: Specifies the mode of database creation.
679
680     Default: regular database creation.
681
682     Copy: creates a database as a copy of an existing database. sourceDatabaseId must be specified
683     as the resource ID of the source database.
684
685     Secondary: creates a database as a secondary replica of an existing database. sourceDatabaseId
686     must be specified as the resource ID of the existing primary database.
687
688     PointInTimeRestore: Creates a database by restoring a point in time backup of an existing
689     database. sourceDatabaseId must be specified as the resource ID of the existing database, and
690     restorePointInTime must be specified.
691
692     Recovery: Creates a database by restoring a geo-replicated backup. sourceDatabaseId must be
693     specified as the recoverable database resource ID to restore.
694
695     Restore: Creates a database by restoring a backup of a deleted database. sourceDatabaseId must
696     be specified. If sourceDatabaseId is the database's original resource ID, then
697     sourceDatabaseDeletionDate must be specified. Otherwise sourceDatabaseId must be the restorable
698     dropped database resource ID and sourceDatabaseDeletionDate is ignored. restorePointInTime may
699     also be specified to restore from an earlier point in time.
700
701     RestoreLongTermRetentionBackup: Creates a database by restoring from a long term retention
702     vault. recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource
703     ID.
704
705     Copy, Secondary, and RestoreLongTermRetentionBackup are not supported for DataWarehouse
706     edition. Possible values include: "Default", "Copy", "Secondary", "PointInTimeRestore",
707     "Restore", "Recovery", "RestoreExternalBackup", "RestoreExternalBackupSecondary",
708     "RestoreLongTermRetentionBackup", "OnlineSecondary".
709    :type create_mode: str or ~azure.mgmt.sql.models.CreateMode
710    :param collation: The collation of the database.
711    :type collation: str
712    :param max_size_bytes: The max size of the database expressed in bytes.
713    :type max_size_bytes: long
714    :param sample_name: The name of the sample schema to apply when creating this database.
715     Possible values include: "AdventureWorksLT", "WideWorldImportersStd", "WideWorldImportersFull".
716    :type sample_name: str or ~azure.mgmt.sql.models.SampleName
717    :param elastic_pool_id: The resource identifier of the elastic pool containing this database.
718    :type elastic_pool_id: str
719    :param source_database_id: The resource identifier of the source database associated with
720     create operation of this database.
721    :type source_database_id: str
722    :ivar status: The status of the database. Possible values include: "Online", "Restoring",
723     "RecoveryPending", "Recovering", "Suspect", "Offline", "Standby", "Shutdown", "EmergencyMode",
724     "AutoClosed", "Copying", "Creating", "Inaccessible", "OfflineSecondary", "Pausing", "Paused",
725     "Resuming", "Scaling", "OfflineChangingDwPerformanceTiers", "OnlineChangingDwPerformanceTiers",
726     "Disabled".
727    :vartype status: str or ~azure.mgmt.sql.models.DatabaseStatus
728    :ivar database_id: The ID of the database.
729    :vartype database_id: str
730    :ivar creation_date: The creation date of the database (ISO8601 format).
731    :vartype creation_date: ~datetime.datetime
732    :ivar current_service_objective_name: The current service level objective name of the database.
733    :vartype current_service_objective_name: str
734    :ivar requested_service_objective_name: The requested service level objective name of the
735     database.
736    :vartype requested_service_objective_name: str
737    :ivar default_secondary_location: The default secondary region for this database.
738    :vartype default_secondary_location: str
739    :ivar failover_group_id: Failover Group resource identifier that this database belongs to.
740    :vartype failover_group_id: str
741    :param restore_point_in_time: Specifies the point in time (ISO8601 format) of the source
742     database that will be restored to create the new database.
743    :type restore_point_in_time: ~datetime.datetime
744    :param source_database_deletion_date: Specifies the time that the database was deleted.
745    :type source_database_deletion_date: ~datetime.datetime
746    :param recovery_services_recovery_point_id: The resource identifier of the recovery point
747     associated with create operation of this database.
748    :type recovery_services_recovery_point_id: str
749    :param long_term_retention_backup_resource_id: The resource identifier of the long term
750     retention backup associated with create operation of this database.
751    :type long_term_retention_backup_resource_id: str
752    :param recoverable_database_id: The resource identifier of the recoverable database associated
753     with create operation of this database.
754    :type recoverable_database_id: str
755    :param restorable_dropped_database_id: The resource identifier of the restorable dropped
756     database associated with create operation of this database.
757    :type restorable_dropped_database_id: str
758    :param catalog_collation: Collation of the metadata catalog. Possible values include:
759     "DATABASE_DEFAULT", "SQL_Latin1_General_CP1_CI_AS".
760    :type catalog_collation: str or ~azure.mgmt.sql.models.CatalogCollationType
761    :param zone_redundant: Whether or not this database is zone redundant, which means the replicas
762     of this database will be spread across multiple availability zones.
763    :type zone_redundant: bool
764    :param license_type: The license type to apply for this database. ``LicenseIncluded`` if you
765     need a license, or ``BasePrice`` if you have a license and are eligible for the Azure Hybrid
766     Benefit. Possible values include: "LicenseIncluded", "BasePrice".
767    :type license_type: str or ~azure.mgmt.sql.models.DatabaseLicenseType
768    :ivar max_log_size_bytes: The max log size for this database.
769    :vartype max_log_size_bytes: long
770    :ivar earliest_restore_date: This records the earliest start date and time that restore is
771     available for this database (ISO8601 format).
772    :vartype earliest_restore_date: ~datetime.datetime
773    :param read_scale: The state of read-only routing. If enabled, connections that have
774     application intent set to readonly in their connection string may be routed to a readonly
775     secondary replica in the same region. Possible values include: "Enabled", "Disabled".
776    :type read_scale: str or ~azure.mgmt.sql.models.DatabaseReadScale
777    :param high_availability_replica_count: The number of secondary replicas associated with the
778     database that are used to provide high availability.
779    :type high_availability_replica_count: int
780    :param secondary_type: The secondary type of the database if it is a secondary.  Valid values
781     are Geo and Named. Possible values include: "Geo", "Named".
782    :type secondary_type: str or ~azure.mgmt.sql.models.SecondaryType
783    :ivar current_sku: The name and tier of the SKU.
784    :vartype current_sku: ~azure.mgmt.sql.models.Sku
785    :param auto_pause_delay: Time in minutes after which database is automatically paused. A value
786     of -1 means that automatic pause is disabled.
787    :type auto_pause_delay: int
788    :ivar current_backup_storage_redundancy: The storage account type used to store backups for
789     this database. Possible values include: "Geo", "Local", "Zone".
790    :vartype current_backup_storage_redundancy: str or
791     ~azure.mgmt.sql.models.CurrentBackupStorageRedundancy
792    :param requested_backup_storage_redundancy: The storage account type to be used to store
793     backups for this database. Possible values include: "Geo", "Local", "Zone".
794    :type requested_backup_storage_redundancy: str or
795     ~azure.mgmt.sql.models.RequestedBackupStorageRedundancy
796    :param min_capacity: Minimal capacity that database will always have allocated, if not paused.
797    :type min_capacity: float
798    :ivar paused_date: The date when database was paused by user configuration or action(ISO8601
799     format). Null if the database is ready.
800    :vartype paused_date: ~datetime.datetime
801    :ivar resumed_date: The date when database was resumed by user action or database login
802     (ISO8601 format). Null if the database is paused.
803    :vartype resumed_date: ~datetime.datetime
804    :param maintenance_configuration_id: Maintenance configuration id assigned to the database.
805     This configuration defines the period when the maintenance updates will occur.
806    :type maintenance_configuration_id: str
807    :param is_ledger_on: Whether or not this database is a ledger database, which means all tables
808     in the database are ledger tables. Note: the value of this property cannot be changed after the
809     database has been created.
810    :type is_ledger_on: bool
811    :ivar is_infra_encryption_enabled: Infra encryption is enabled for this database.
812    :vartype is_infra_encryption_enabled: bool
813    """
814
815    _validation = {
816        'id': {'readonly': True},
817        'name': {'readonly': True},
818        'type': {'readonly': True},
819        'location': {'required': True},
820        'kind': {'readonly': True},
821        'managed_by': {'readonly': True},
822        'status': {'readonly': True},
823        'database_id': {'readonly': True},
824        'creation_date': {'readonly': True},
825        'current_service_objective_name': {'readonly': True},
826        'requested_service_objective_name': {'readonly': True},
827        'default_secondary_location': {'readonly': True},
828        'failover_group_id': {'readonly': True},
829        'max_log_size_bytes': {'readonly': True},
830        'earliest_restore_date': {'readonly': True},
831        'current_sku': {'readonly': True},
832        'current_backup_storage_redundancy': {'readonly': True},
833        'paused_date': {'readonly': True},
834        'resumed_date': {'readonly': True},
835        'is_infra_encryption_enabled': {'readonly': True},
836    }
837
838    _attribute_map = {
839        'id': {'key': 'id', 'type': 'str'},
840        'name': {'key': 'name', 'type': 'str'},
841        'type': {'key': 'type', 'type': 'str'},
842        'location': {'key': 'location', 'type': 'str'},
843        'tags': {'key': 'tags', 'type': '{str}'},
844        'sku': {'key': 'sku', 'type': 'Sku'},
845        'kind': {'key': 'kind', 'type': 'str'},
846        'managed_by': {'key': 'managedBy', 'type': 'str'},
847        'create_mode': {'key': 'properties.createMode', 'type': 'str'},
848        'collation': {'key': 'properties.collation', 'type': 'str'},
849        'max_size_bytes': {'key': 'properties.maxSizeBytes', 'type': 'long'},
850        'sample_name': {'key': 'properties.sampleName', 'type': 'str'},
851        'elastic_pool_id': {'key': 'properties.elasticPoolId', 'type': 'str'},
852        'source_database_id': {'key': 'properties.sourceDatabaseId', 'type': 'str'},
853        'status': {'key': 'properties.status', 'type': 'str'},
854        'database_id': {'key': 'properties.databaseId', 'type': 'str'},
855        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
856        'current_service_objective_name': {'key': 'properties.currentServiceObjectiveName', 'type': 'str'},
857        'requested_service_objective_name': {'key': 'properties.requestedServiceObjectiveName', 'type': 'str'},
858        'default_secondary_location': {'key': 'properties.defaultSecondaryLocation', 'type': 'str'},
859        'failover_group_id': {'key': 'properties.failoverGroupId', 'type': 'str'},
860        'restore_point_in_time': {'key': 'properties.restorePointInTime', 'type': 'iso-8601'},
861        'source_database_deletion_date': {'key': 'properties.sourceDatabaseDeletionDate', 'type': 'iso-8601'},
862        'recovery_services_recovery_point_id': {'key': 'properties.recoveryServicesRecoveryPointId', 'type': 'str'},
863        'long_term_retention_backup_resource_id': {'key': 'properties.longTermRetentionBackupResourceId', 'type': 'str'},
864        'recoverable_database_id': {'key': 'properties.recoverableDatabaseId', 'type': 'str'},
865        'restorable_dropped_database_id': {'key': 'properties.restorableDroppedDatabaseId', 'type': 'str'},
866        'catalog_collation': {'key': 'properties.catalogCollation', 'type': 'str'},
867        'zone_redundant': {'key': 'properties.zoneRedundant', 'type': 'bool'},
868        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
869        'max_log_size_bytes': {'key': 'properties.maxLogSizeBytes', 'type': 'long'},
870        'earliest_restore_date': {'key': 'properties.earliestRestoreDate', 'type': 'iso-8601'},
871        'read_scale': {'key': 'properties.readScale', 'type': 'str'},
872        'high_availability_replica_count': {'key': 'properties.highAvailabilityReplicaCount', 'type': 'int'},
873        'secondary_type': {'key': 'properties.secondaryType', 'type': 'str'},
874        'current_sku': {'key': 'properties.currentSku', 'type': 'Sku'},
875        'auto_pause_delay': {'key': 'properties.autoPauseDelay', 'type': 'int'},
876        'current_backup_storage_redundancy': {'key': 'properties.currentBackupStorageRedundancy', 'type': 'str'},
877        'requested_backup_storage_redundancy': {'key': 'properties.requestedBackupStorageRedundancy', 'type': 'str'},
878        'min_capacity': {'key': 'properties.minCapacity', 'type': 'float'},
879        'paused_date': {'key': 'properties.pausedDate', 'type': 'iso-8601'},
880        'resumed_date': {'key': 'properties.resumedDate', 'type': 'iso-8601'},
881        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
882        'is_ledger_on': {'key': 'properties.isLedgerOn', 'type': 'bool'},
883        'is_infra_encryption_enabled': {'key': 'properties.isInfraEncryptionEnabled', 'type': 'bool'},
884    }
885
886    def __init__(
887        self,
888        **kwargs
889    ):
890        super(Database, self).__init__(**kwargs)
891        self.sku = kwargs.get('sku', None)
892        self.kind = None
893        self.managed_by = None
894        self.create_mode = kwargs.get('create_mode', None)
895        self.collation = kwargs.get('collation', None)
896        self.max_size_bytes = kwargs.get('max_size_bytes', None)
897        self.sample_name = kwargs.get('sample_name', None)
898        self.elastic_pool_id = kwargs.get('elastic_pool_id', None)
899        self.source_database_id = kwargs.get('source_database_id', None)
900        self.status = None
901        self.database_id = None
902        self.creation_date = None
903        self.current_service_objective_name = None
904        self.requested_service_objective_name = None
905        self.default_secondary_location = None
906        self.failover_group_id = None
907        self.restore_point_in_time = kwargs.get('restore_point_in_time', None)
908        self.source_database_deletion_date = kwargs.get('source_database_deletion_date', None)
909        self.recovery_services_recovery_point_id = kwargs.get('recovery_services_recovery_point_id', None)
910        self.long_term_retention_backup_resource_id = kwargs.get('long_term_retention_backup_resource_id', None)
911        self.recoverable_database_id = kwargs.get('recoverable_database_id', None)
912        self.restorable_dropped_database_id = kwargs.get('restorable_dropped_database_id', None)
913        self.catalog_collation = kwargs.get('catalog_collation', None)
914        self.zone_redundant = kwargs.get('zone_redundant', None)
915        self.license_type = kwargs.get('license_type', None)
916        self.max_log_size_bytes = None
917        self.earliest_restore_date = None
918        self.read_scale = kwargs.get('read_scale', None)
919        self.high_availability_replica_count = kwargs.get('high_availability_replica_count', None)
920        self.secondary_type = kwargs.get('secondary_type', None)
921        self.current_sku = None
922        self.auto_pause_delay = kwargs.get('auto_pause_delay', None)
923        self.current_backup_storage_redundancy = None
924        self.requested_backup_storage_redundancy = kwargs.get('requested_backup_storage_redundancy', None)
925        self.min_capacity = kwargs.get('min_capacity', None)
926        self.paused_date = None
927        self.resumed_date = None
928        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
929        self.is_ledger_on = kwargs.get('is_ledger_on', None)
930        self.is_infra_encryption_enabled = None
931
932
933class DatabaseAutomaticTuning(ProxyResource):
934    """Database-level Automatic Tuning.
935
936    Variables are only populated by the server, and will be ignored when sending a request.
937
938    :ivar id: Resource ID.
939    :vartype id: str
940    :ivar name: Resource name.
941    :vartype name: str
942    :ivar type: Resource type.
943    :vartype type: str
944    :param desired_state: Automatic tuning desired state. Possible values include: "Inherit",
945     "Custom", "Auto", "Unspecified".
946    :type desired_state: str or ~azure.mgmt.sql.models.AutomaticTuningMode
947    :ivar actual_state: Automatic tuning actual state. Possible values include: "Inherit",
948     "Custom", "Auto", "Unspecified".
949    :vartype actual_state: str or ~azure.mgmt.sql.models.AutomaticTuningMode
950    :param options: Automatic tuning options definition.
951    :type options: dict[str, ~azure.mgmt.sql.models.AutomaticTuningOptions]
952    """
953
954    _validation = {
955        'id': {'readonly': True},
956        'name': {'readonly': True},
957        'type': {'readonly': True},
958        'actual_state': {'readonly': True},
959    }
960
961    _attribute_map = {
962        'id': {'key': 'id', 'type': 'str'},
963        'name': {'key': 'name', 'type': 'str'},
964        'type': {'key': 'type', 'type': 'str'},
965        'desired_state': {'key': 'properties.desiredState', 'type': 'str'},
966        'actual_state': {'key': 'properties.actualState', 'type': 'str'},
967        'options': {'key': 'properties.options', 'type': '{AutomaticTuningOptions}'},
968    }
969
970    def __init__(
971        self,
972        **kwargs
973    ):
974        super(DatabaseAutomaticTuning, self).__init__(**kwargs)
975        self.desired_state = kwargs.get('desired_state', None)
976        self.actual_state = None
977        self.options = kwargs.get('options', None)
978
979
980class DatabaseBlobAuditingPolicy(ProxyResource):
981    """A database blob auditing policy.
982
983    Variables are only populated by the server, and will be ignored when sending a request.
984
985    :ivar id: Resource ID.
986    :vartype id: str
987    :ivar name: Resource name.
988    :vartype name: str
989    :ivar type: Resource type.
990    :vartype type: str
991    :ivar kind: Resource kind.
992    :vartype kind: str
993    :param retention_days: Specifies the number of days to keep in the audit logs in the storage
994     account.
995    :type retention_days: int
996    :param audit_actions_and_groups: Specifies the Actions-Groups and Actions to audit.
997
998     The recommended set of action groups to use is the following combination - this will audit all
999     the queries and stored procedures executed against the database, as well as successful and
1000     failed logins:
1001
1002     BATCH_COMPLETED_GROUP,
1003     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
1004     FAILED_DATABASE_AUTHENTICATION_GROUP.
1005
1006     This above combination is also the set that is configured by default when enabling auditing
1007     from the Azure portal.
1008
1009     The supported action groups to audit are (note: choose only specific groups that cover your
1010     auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
1011
1012     APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
1013     BACKUP_RESTORE_GROUP
1014     DATABASE_LOGOUT_GROUP
1015     DATABASE_OBJECT_CHANGE_GROUP
1016     DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
1017     DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
1018     DATABASE_OPERATION_GROUP
1019     DATABASE_PERMISSION_CHANGE_GROUP
1020     DATABASE_PRINCIPAL_CHANGE_GROUP
1021     DATABASE_PRINCIPAL_IMPERSONATION_GROUP
1022     DATABASE_ROLE_MEMBER_CHANGE_GROUP
1023     FAILED_DATABASE_AUTHENTICATION_GROUP
1024     SCHEMA_OBJECT_ACCESS_GROUP
1025     SCHEMA_OBJECT_CHANGE_GROUP
1026     SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
1027     SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
1028     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
1029     USER_CHANGE_PASSWORD_GROUP
1030     BATCH_STARTED_GROUP
1031     BATCH_COMPLETED_GROUP
1032
1033     These are groups that cover all sql statements and stored procedures executed against the
1034     database, and should not be used in combination with other groups as this will result in
1035     duplicate audit logs.
1036
1037     For more information, see `Database-Level Audit Action Groups
1038     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups>`_.
1039
1040     For Database auditing policy, specific Actions can also be specified (note that Actions cannot
1041     be specified for Server auditing policy). The supported actions to audit are:
1042     SELECT
1043     UPDATE
1044     INSERT
1045     DELETE
1046     EXECUTE
1047     RECEIVE
1048     REFERENCES
1049
1050     The general form for defining an action to be audited is:
1051     {action} ON {object} BY {principal}
1052
1053     Note that :code:`<object>` in the above format can refer to an object like a table, view, or
1054     stored procedure, or an entire database or schema. For the latter cases, the forms
1055     DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
1056
1057     For example:
1058     SELECT on dbo.myTable by public
1059     SELECT on DATABASE::myDatabase by public
1060     SELECT on SCHEMA::mySchema by public
1061
1062     For more information, see `Database-Level Audit Actions
1063     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions>`_.
1064    :type audit_actions_and_groups: list[str]
1065    :param is_storage_secondary_key_in_use: Specifies whether storageAccountAccessKey value is the
1066     storage's secondary key.
1067    :type is_storage_secondary_key_in_use: bool
1068    :param is_azure_monitor_target_enabled: Specifies whether audit events are sent to Azure
1069     Monitor.
1070     In order to send the events to Azure Monitor, specify 'State' as 'Enabled' and
1071     'IsAzureMonitorTargetEnabled' as true.
1072
1073     When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents'
1074     diagnostic logs category on the database should be also created.
1075     Note that for server level audit you should use the 'master' database as {databaseName}.
1076
1077     Diagnostic Settings URI format:
1078     PUT
1079     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
1080
1081     For more information, see `Diagnostic Settings REST API
1082     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
1083     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
1084    :type is_azure_monitor_target_enabled: bool
1085    :param queue_delay_ms: Specifies the amount of time in milliseconds that can elapse before
1086     audit actions are forced to be processed.
1087     The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
1088    :type queue_delay_ms: int
1089    :param state: Specifies the state of the audit. If state is Enabled, storageEndpoint or
1090     isAzureMonitorTargetEnabled are required. Possible values include: "Enabled", "Disabled".
1091    :type state: str or ~azure.mgmt.sql.models.BlobAuditingPolicyState
1092    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
1093     https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or
1094     isAzureMonitorTargetEnabled is required.
1095    :type storage_endpoint: str
1096    :param storage_account_access_key: Specifies the identifier key of the auditing storage
1097     account.
1098     If state is Enabled and storageEndpoint is specified, not specifying the
1099     storageAccountAccessKey will use SQL server system-assigned managed identity to access the
1100     storage.
1101     Prerequisites for using managed identity authentication:
1102
1103
1104     #. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
1105     #. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data
1106     Contributor' RBAC role to the server identity.
1107        For more information, see `Auditing to storage using Managed Identity authentication
1108     <https://go.microsoft.com/fwlink/?linkid=2114355>`_.
1109    :type storage_account_access_key: str
1110    :param storage_account_subscription_id: Specifies the blob storage subscription Id.
1111    :type storage_account_subscription_id: str
1112    """
1113
1114    _validation = {
1115        'id': {'readonly': True},
1116        'name': {'readonly': True},
1117        'type': {'readonly': True},
1118        'kind': {'readonly': True},
1119    }
1120
1121    _attribute_map = {
1122        'id': {'key': 'id', 'type': 'str'},
1123        'name': {'key': 'name', 'type': 'str'},
1124        'type': {'key': 'type', 'type': 'str'},
1125        'kind': {'key': 'kind', 'type': 'str'},
1126        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
1127        'audit_actions_and_groups': {'key': 'properties.auditActionsAndGroups', 'type': '[str]'},
1128        'is_storage_secondary_key_in_use': {'key': 'properties.isStorageSecondaryKeyInUse', 'type': 'bool'},
1129        'is_azure_monitor_target_enabled': {'key': 'properties.isAzureMonitorTargetEnabled', 'type': 'bool'},
1130        'queue_delay_ms': {'key': 'properties.queueDelayMs', 'type': 'int'},
1131        'state': {'key': 'properties.state', 'type': 'str'},
1132        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
1133        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
1134        'storage_account_subscription_id': {'key': 'properties.storageAccountSubscriptionId', 'type': 'str'},
1135    }
1136
1137    def __init__(
1138        self,
1139        **kwargs
1140    ):
1141        super(DatabaseBlobAuditingPolicy, self).__init__(**kwargs)
1142        self.kind = None
1143        self.retention_days = kwargs.get('retention_days', None)
1144        self.audit_actions_and_groups = kwargs.get('audit_actions_and_groups', None)
1145        self.is_storage_secondary_key_in_use = kwargs.get('is_storage_secondary_key_in_use', None)
1146        self.is_azure_monitor_target_enabled = kwargs.get('is_azure_monitor_target_enabled', None)
1147        self.queue_delay_ms = kwargs.get('queue_delay_ms', None)
1148        self.state = kwargs.get('state', None)
1149        self.storage_endpoint = kwargs.get('storage_endpoint', None)
1150        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
1151        self.storage_account_subscription_id = kwargs.get('storage_account_subscription_id', None)
1152
1153
1154class DatabaseBlobAuditingPolicyListResult(msrest.serialization.Model):
1155    """A list of database auditing settings.
1156
1157    Variables are only populated by the server, and will be ignored when sending a request.
1158
1159    :ivar value: Array of results.
1160    :vartype value: list[~azure.mgmt.sql.models.DatabaseBlobAuditingPolicy]
1161    :ivar next_link: Link to retrieve next page of results.
1162    :vartype next_link: str
1163    """
1164
1165    _validation = {
1166        'value': {'readonly': True},
1167        'next_link': {'readonly': True},
1168    }
1169
1170    _attribute_map = {
1171        'value': {'key': 'value', 'type': '[DatabaseBlobAuditingPolicy]'},
1172        'next_link': {'key': 'nextLink', 'type': 'str'},
1173    }
1174
1175    def __init__(
1176        self,
1177        **kwargs
1178    ):
1179        super(DatabaseBlobAuditingPolicyListResult, self).__init__(**kwargs)
1180        self.value = None
1181        self.next_link = None
1182
1183
1184class DatabaseColumn(ProxyResource):
1185    """A database column resource.
1186
1187    Variables are only populated by the server, and will be ignored when sending a request.
1188
1189    :ivar id: Resource ID.
1190    :vartype id: str
1191    :ivar name: Resource name.
1192    :vartype name: str
1193    :ivar type: Resource type.
1194    :vartype type: str
1195    :param column_type: The column data type. Possible values include: "image", "text",
1196     "uniqueidentifier", "date", "time", "datetime2", "datetimeoffset", "tinyint", "smallint",
1197     "int", "smalldatetime", "real", "money", "datetime", "float", "sql_variant", "ntext", "bit",
1198     "decimal", "numeric", "smallmoney", "bigint", "hierarchyid", "geometry", "geography",
1199     "varbinary", "varchar", "binary", "char", "timestamp", "nvarchar", "nchar", "xml", "sysname".
1200    :type column_type: str or ~azure.mgmt.sql.models.ColumnDataType
1201    :param temporal_type: The table temporal type. Possible values include: "NonTemporalTable",
1202     "HistoryTable", "SystemVersionedTemporalTable".
1203    :type temporal_type: str or ~azure.mgmt.sql.models.TableTemporalType
1204    :param memory_optimized: Whether or not the column belongs to a memory optimized table.
1205    :type memory_optimized: bool
1206    :param is_computed: Whether or not the column is computed.
1207    :type is_computed: bool
1208    """
1209
1210    _validation = {
1211        'id': {'readonly': True},
1212        'name': {'readonly': True},
1213        'type': {'readonly': True},
1214    }
1215
1216    _attribute_map = {
1217        'id': {'key': 'id', 'type': 'str'},
1218        'name': {'key': 'name', 'type': 'str'},
1219        'type': {'key': 'type', 'type': 'str'},
1220        'column_type': {'key': 'properties.columnType', 'type': 'str'},
1221        'temporal_type': {'key': 'properties.temporalType', 'type': 'str'},
1222        'memory_optimized': {'key': 'properties.memoryOptimized', 'type': 'bool'},
1223        'is_computed': {'key': 'properties.isComputed', 'type': 'bool'},
1224    }
1225
1226    def __init__(
1227        self,
1228        **kwargs
1229    ):
1230        super(DatabaseColumn, self).__init__(**kwargs)
1231        self.column_type = kwargs.get('column_type', None)
1232        self.temporal_type = kwargs.get('temporal_type', None)
1233        self.memory_optimized = kwargs.get('memory_optimized', None)
1234        self.is_computed = kwargs.get('is_computed', None)
1235
1236
1237class DatabaseColumnListResult(msrest.serialization.Model):
1238    """A list of database columns.
1239
1240    Variables are only populated by the server, and will be ignored when sending a request.
1241
1242    :ivar value: Array of results.
1243    :vartype value: list[~azure.mgmt.sql.models.DatabaseColumn]
1244    :ivar next_link: Link to retrieve next page of results.
1245    :vartype next_link: str
1246    """
1247
1248    _validation = {
1249        'value': {'readonly': True},
1250        'next_link': {'readonly': True},
1251    }
1252
1253    _attribute_map = {
1254        'value': {'key': 'value', 'type': '[DatabaseColumn]'},
1255        'next_link': {'key': 'nextLink', 'type': 'str'},
1256    }
1257
1258    def __init__(
1259        self,
1260        **kwargs
1261    ):
1262        super(DatabaseColumnListResult, self).__init__(**kwargs)
1263        self.value = None
1264        self.next_link = None
1265
1266
1267class DatabaseExtensions(ProxyResource):
1268    """An export managed database operation result resource.
1269
1270    Variables are only populated by the server, and will be ignored when sending a request.
1271
1272    :ivar id: Resource ID.
1273    :vartype id: str
1274    :ivar name: Resource name.
1275    :vartype name: str
1276    :ivar type: Resource type.
1277    :vartype type: str
1278    :param operation_mode: Operation Mode. Possible values include: "PolybaseImport".
1279    :type operation_mode: str or ~azure.mgmt.sql.models.OperationMode
1280    :param storage_key_type: Storage key type. Possible values include: "SharedAccessKey",
1281     "StorageAccessKey".
1282    :type storage_key_type: str or ~azure.mgmt.sql.models.StorageKeyType
1283    :param storage_key: Storage key.
1284    :type storage_key: str
1285    :param storage_uri: Storage Uri.
1286    :type storage_uri: str
1287    """
1288
1289    _validation = {
1290        'id': {'readonly': True},
1291        'name': {'readonly': True},
1292        'type': {'readonly': True},
1293    }
1294
1295    _attribute_map = {
1296        'id': {'key': 'id', 'type': 'str'},
1297        'name': {'key': 'name', 'type': 'str'},
1298        'type': {'key': 'type', 'type': 'str'},
1299        'operation_mode': {'key': 'properties.operationMode', 'type': 'str'},
1300        'storage_key_type': {'key': 'properties.storageKeyType', 'type': 'str'},
1301        'storage_key': {'key': 'properties.storageKey', 'type': 'str'},
1302        'storage_uri': {'key': 'properties.storageUri', 'type': 'str'},
1303    }
1304
1305    def __init__(
1306        self,
1307        **kwargs
1308    ):
1309        super(DatabaseExtensions, self).__init__(**kwargs)
1310        self.operation_mode = kwargs.get('operation_mode', None)
1311        self.storage_key_type = kwargs.get('storage_key_type', None)
1312        self.storage_key = kwargs.get('storage_key', None)
1313        self.storage_uri = kwargs.get('storage_uri', None)
1314
1315
1316class DatabaseListResult(msrest.serialization.Model):
1317    """A list of databases.
1318
1319    Variables are only populated by the server, and will be ignored when sending a request.
1320
1321    :ivar value: Array of results.
1322    :vartype value: list[~azure.mgmt.sql.models.Database]
1323    :ivar next_link: Link to retrieve next page of results.
1324    :vartype next_link: str
1325    """
1326
1327    _validation = {
1328        'value': {'readonly': True},
1329        'next_link': {'readonly': True},
1330    }
1331
1332    _attribute_map = {
1333        'value': {'key': 'value', 'type': '[Database]'},
1334        'next_link': {'key': 'nextLink', 'type': 'str'},
1335    }
1336
1337    def __init__(
1338        self,
1339        **kwargs
1340    ):
1341        super(DatabaseListResult, self).__init__(**kwargs)
1342        self.value = None
1343        self.next_link = None
1344
1345
1346class DatabaseOperation(ProxyResource):
1347    """A database operation.
1348
1349    Variables are only populated by the server, and will be ignored when sending a request.
1350
1351    :ivar id: Resource ID.
1352    :vartype id: str
1353    :ivar name: Resource name.
1354    :vartype name: str
1355    :ivar type: Resource type.
1356    :vartype type: str
1357    :ivar database_name: The name of the database the operation is being performed on.
1358    :vartype database_name: str
1359    :ivar operation: The name of operation.
1360    :vartype operation: str
1361    :ivar operation_friendly_name: The friendly name of operation.
1362    :vartype operation_friendly_name: str
1363    :ivar percent_complete: The percentage of the operation completed.
1364    :vartype percent_complete: int
1365    :ivar server_name: The name of the server.
1366    :vartype server_name: str
1367    :ivar start_time: The operation start time.
1368    :vartype start_time: ~datetime.datetime
1369    :ivar state: The operation state. Possible values include: "Pending", "InProgress",
1370     "Succeeded", "Failed", "CancelInProgress", "Cancelled".
1371    :vartype state: str or ~azure.mgmt.sql.models.ManagementOperationState
1372    :ivar error_code: The operation error code.
1373    :vartype error_code: int
1374    :ivar error_description: The operation error description.
1375    :vartype error_description: str
1376    :ivar error_severity: The operation error severity.
1377    :vartype error_severity: int
1378    :ivar is_user_error: Whether or not the error is a user error.
1379    :vartype is_user_error: bool
1380    :ivar estimated_completion_time: The estimated completion time of the operation.
1381    :vartype estimated_completion_time: ~datetime.datetime
1382    :ivar description: The operation description.
1383    :vartype description: str
1384    :ivar is_cancellable: Whether the operation can be cancelled.
1385    :vartype is_cancellable: bool
1386    """
1387
1388    _validation = {
1389        'id': {'readonly': True},
1390        'name': {'readonly': True},
1391        'type': {'readonly': True},
1392        'database_name': {'readonly': True},
1393        'operation': {'readonly': True},
1394        'operation_friendly_name': {'readonly': True},
1395        'percent_complete': {'readonly': True},
1396        'server_name': {'readonly': True},
1397        'start_time': {'readonly': True},
1398        'state': {'readonly': True},
1399        'error_code': {'readonly': True},
1400        'error_description': {'readonly': True},
1401        'error_severity': {'readonly': True},
1402        'is_user_error': {'readonly': True},
1403        'estimated_completion_time': {'readonly': True},
1404        'description': {'readonly': True},
1405        'is_cancellable': {'readonly': True},
1406    }
1407
1408    _attribute_map = {
1409        'id': {'key': 'id', 'type': 'str'},
1410        'name': {'key': 'name', 'type': 'str'},
1411        'type': {'key': 'type', 'type': 'str'},
1412        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
1413        'operation': {'key': 'properties.operation', 'type': 'str'},
1414        'operation_friendly_name': {'key': 'properties.operationFriendlyName', 'type': 'str'},
1415        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
1416        'server_name': {'key': 'properties.serverName', 'type': 'str'},
1417        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
1418        'state': {'key': 'properties.state', 'type': 'str'},
1419        'error_code': {'key': 'properties.errorCode', 'type': 'int'},
1420        'error_description': {'key': 'properties.errorDescription', 'type': 'str'},
1421        'error_severity': {'key': 'properties.errorSeverity', 'type': 'int'},
1422        'is_user_error': {'key': 'properties.isUserError', 'type': 'bool'},
1423        'estimated_completion_time': {'key': 'properties.estimatedCompletionTime', 'type': 'iso-8601'},
1424        'description': {'key': 'properties.description', 'type': 'str'},
1425        'is_cancellable': {'key': 'properties.isCancellable', 'type': 'bool'},
1426    }
1427
1428    def __init__(
1429        self,
1430        **kwargs
1431    ):
1432        super(DatabaseOperation, self).__init__(**kwargs)
1433        self.database_name = None
1434        self.operation = None
1435        self.operation_friendly_name = None
1436        self.percent_complete = None
1437        self.server_name = None
1438        self.start_time = None
1439        self.state = None
1440        self.error_code = None
1441        self.error_description = None
1442        self.error_severity = None
1443        self.is_user_error = None
1444        self.estimated_completion_time = None
1445        self.description = None
1446        self.is_cancellable = None
1447
1448
1449class DatabaseOperationListResult(msrest.serialization.Model):
1450    """The response to a list database operations request.
1451
1452    Variables are only populated by the server, and will be ignored when sending a request.
1453
1454    :ivar value: Array of results.
1455    :vartype value: list[~azure.mgmt.sql.models.DatabaseOperation]
1456    :ivar next_link: Link to retrieve next page of results.
1457    :vartype next_link: str
1458    """
1459
1460    _validation = {
1461        'value': {'readonly': True},
1462        'next_link': {'readonly': True},
1463    }
1464
1465    _attribute_map = {
1466        'value': {'key': 'value', 'type': '[DatabaseOperation]'},
1467        'next_link': {'key': 'nextLink', 'type': 'str'},
1468    }
1469
1470    def __init__(
1471        self,
1472        **kwargs
1473    ):
1474        super(DatabaseOperationListResult, self).__init__(**kwargs)
1475        self.value = None
1476        self.next_link = None
1477
1478
1479class DatabaseSchema(ProxyResource):
1480    """A database schema resource.
1481
1482    Variables are only populated by the server, and will be ignored when sending a request.
1483
1484    :ivar id: Resource ID.
1485    :vartype id: str
1486    :ivar name: Resource name.
1487    :vartype name: str
1488    :ivar type: Resource type.
1489    :vartype type: str
1490    """
1491
1492    _validation = {
1493        'id': {'readonly': True},
1494        'name': {'readonly': True},
1495        'type': {'readonly': True},
1496    }
1497
1498    _attribute_map = {
1499        'id': {'key': 'id', 'type': 'str'},
1500        'name': {'key': 'name', 'type': 'str'},
1501        'type': {'key': 'type', 'type': 'str'},
1502    }
1503
1504    def __init__(
1505        self,
1506        **kwargs
1507    ):
1508        super(DatabaseSchema, self).__init__(**kwargs)
1509
1510
1511class DatabaseSchemaListResult(msrest.serialization.Model):
1512    """A list of database schemas.
1513
1514    Variables are only populated by the server, and will be ignored when sending a request.
1515
1516    :ivar value: Array of results.
1517    :vartype value: list[~azure.mgmt.sql.models.DatabaseSchema]
1518    :ivar next_link: Link to retrieve next page of results.
1519    :vartype next_link: str
1520    """
1521
1522    _validation = {
1523        'value': {'readonly': True},
1524        'next_link': {'readonly': True},
1525    }
1526
1527    _attribute_map = {
1528        'value': {'key': 'value', 'type': '[DatabaseSchema]'},
1529        'next_link': {'key': 'nextLink', 'type': 'str'},
1530    }
1531
1532    def __init__(
1533        self,
1534        **kwargs
1535    ):
1536        super(DatabaseSchemaListResult, self).__init__(**kwargs)
1537        self.value = None
1538        self.next_link = None
1539
1540
1541class DatabaseSecurityAlertListResult(msrest.serialization.Model):
1542    """A list of the database's security alert policies.
1543
1544    Variables are only populated by the server, and will be ignored when sending a request.
1545
1546    :ivar value: Array of results.
1547    :vartype value: list[~azure.mgmt.sql.models.DatabaseSecurityAlertPolicy]
1548    :ivar next_link: Link to retrieve next page of results.
1549    :vartype next_link: str
1550    """
1551
1552    _validation = {
1553        'value': {'readonly': True},
1554        'next_link': {'readonly': True},
1555    }
1556
1557    _attribute_map = {
1558        'value': {'key': 'value', 'type': '[DatabaseSecurityAlertPolicy]'},
1559        'next_link': {'key': 'nextLink', 'type': 'str'},
1560    }
1561
1562    def __init__(
1563        self,
1564        **kwargs
1565    ):
1566        super(DatabaseSecurityAlertListResult, self).__init__(**kwargs)
1567        self.value = None
1568        self.next_link = None
1569
1570
1571class DatabaseSecurityAlertPolicy(ProxyResource):
1572    """A database security alert policy.
1573
1574    Variables are only populated by the server, and will be ignored when sending a request.
1575
1576    :ivar id: Resource ID.
1577    :vartype id: str
1578    :ivar name: Resource name.
1579    :vartype name: str
1580    :ivar type: Resource type.
1581    :vartype type: str
1582    :ivar system_data: SystemData of SecurityAlertPolicyResource.
1583    :vartype system_data: ~azure.mgmt.sql.models.SystemData
1584    :param state: Specifies the state of the policy, whether it is enabled or disabled or a policy
1585     has not been applied yet on the specific database. Possible values include: "Enabled",
1586     "Disabled".
1587    :type state: str or ~azure.mgmt.sql.models.SecurityAlertsPolicyState
1588    :param disabled_alerts: Specifies an array of alerts that are disabled. Allowed values are:
1589     Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly, Data_Exfiltration, Unsafe_Action,
1590     Brute_Force.
1591    :type disabled_alerts: list[str]
1592    :param email_addresses: Specifies an array of e-mail addresses to which the alert is sent.
1593    :type email_addresses: list[str]
1594    :param email_account_admins: Specifies that the alert is sent to the account administrators.
1595    :type email_account_admins: bool
1596    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
1597     https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection
1598     audit logs.
1599    :type storage_endpoint: str
1600    :param storage_account_access_key: Specifies the identifier key of the Threat Detection audit
1601     storage account.
1602    :type storage_account_access_key: str
1603    :param retention_days: Specifies the number of days to keep in the Threat Detection audit logs.
1604    :type retention_days: int
1605    :ivar creation_time: Specifies the UTC creation time of the policy.
1606    :vartype creation_time: ~datetime.datetime
1607    """
1608
1609    _validation = {
1610        'id': {'readonly': True},
1611        'name': {'readonly': True},
1612        'type': {'readonly': True},
1613        'system_data': {'readonly': True},
1614        'creation_time': {'readonly': True},
1615    }
1616
1617    _attribute_map = {
1618        'id': {'key': 'id', 'type': 'str'},
1619        'name': {'key': 'name', 'type': 'str'},
1620        'type': {'key': 'type', 'type': 'str'},
1621        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1622        'state': {'key': 'properties.state', 'type': 'str'},
1623        'disabled_alerts': {'key': 'properties.disabledAlerts', 'type': '[str]'},
1624        'email_addresses': {'key': 'properties.emailAddresses', 'type': '[str]'},
1625        'email_account_admins': {'key': 'properties.emailAccountAdmins', 'type': 'bool'},
1626        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
1627        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
1628        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
1629        'creation_time': {'key': 'properties.creationTime', 'type': 'iso-8601'},
1630    }
1631
1632    def __init__(
1633        self,
1634        **kwargs
1635    ):
1636        super(DatabaseSecurityAlertPolicy, self).__init__(**kwargs)
1637        self.system_data = None
1638        self.state = kwargs.get('state', None)
1639        self.disabled_alerts = kwargs.get('disabled_alerts', None)
1640        self.email_addresses = kwargs.get('email_addresses', None)
1641        self.email_account_admins = kwargs.get('email_account_admins', None)
1642        self.storage_endpoint = kwargs.get('storage_endpoint', None)
1643        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
1644        self.retention_days = kwargs.get('retention_days', None)
1645        self.creation_time = None
1646
1647
1648class DatabaseTable(ProxyResource):
1649    """A database table resource.
1650
1651    Variables are only populated by the server, and will be ignored when sending a request.
1652
1653    :ivar id: Resource ID.
1654    :vartype id: str
1655    :ivar name: Resource name.
1656    :vartype name: str
1657    :ivar type: Resource type.
1658    :vartype type: str
1659    :param temporal_type: The table temporal type. Possible values include: "NonTemporalTable",
1660     "HistoryTable", "SystemVersionedTemporalTable".
1661    :type temporal_type: str or ~azure.mgmt.sql.models.TableTemporalType
1662    :param memory_optimized: Whether or not the table is memory optimized.
1663    :type memory_optimized: bool
1664    """
1665
1666    _validation = {
1667        'id': {'readonly': True},
1668        'name': {'readonly': True},
1669        'type': {'readonly': True},
1670    }
1671
1672    _attribute_map = {
1673        'id': {'key': 'id', 'type': 'str'},
1674        'name': {'key': 'name', 'type': 'str'},
1675        'type': {'key': 'type', 'type': 'str'},
1676        'temporal_type': {'key': 'properties.temporalType', 'type': 'str'},
1677        'memory_optimized': {'key': 'properties.memoryOptimized', 'type': 'bool'},
1678    }
1679
1680    def __init__(
1681        self,
1682        **kwargs
1683    ):
1684        super(DatabaseTable, self).__init__(**kwargs)
1685        self.temporal_type = kwargs.get('temporal_type', None)
1686        self.memory_optimized = kwargs.get('memory_optimized', None)
1687
1688
1689class DatabaseTableListResult(msrest.serialization.Model):
1690    """A list of database tables.
1691
1692    Variables are only populated by the server, and will be ignored when sending a request.
1693
1694    :ivar value: Array of results.
1695    :vartype value: list[~azure.mgmt.sql.models.DatabaseTable]
1696    :ivar next_link: Link to retrieve next page of results.
1697    :vartype next_link: str
1698    """
1699
1700    _validation = {
1701        'value': {'readonly': True},
1702        'next_link': {'readonly': True},
1703    }
1704
1705    _attribute_map = {
1706        'value': {'key': 'value', 'type': '[DatabaseTable]'},
1707        'next_link': {'key': 'nextLink', 'type': 'str'},
1708    }
1709
1710    def __init__(
1711        self,
1712        **kwargs
1713    ):
1714        super(DatabaseTableListResult, self).__init__(**kwargs)
1715        self.value = None
1716        self.next_link = None
1717
1718
1719class DatabaseUpdate(msrest.serialization.Model):
1720    """A database resource.
1721
1722    Variables are only populated by the server, and will be ignored when sending a request.
1723
1724    :param sku: The name and tier of the SKU.
1725    :type sku: ~azure.mgmt.sql.models.Sku
1726    :param tags: A set of tags. Resource tags.
1727    :type tags: dict[str, str]
1728    :param create_mode: Specifies the mode of database creation.
1729
1730     Default: regular database creation.
1731
1732     Copy: creates a database as a copy of an existing database. sourceDatabaseId must be specified
1733     as the resource ID of the source database.
1734
1735     Secondary: creates a database as a secondary replica of an existing database. sourceDatabaseId
1736     must be specified as the resource ID of the existing primary database.
1737
1738     PointInTimeRestore: Creates a database by restoring a point in time backup of an existing
1739     database. sourceDatabaseId must be specified as the resource ID of the existing database, and
1740     restorePointInTime must be specified.
1741
1742     Recovery: Creates a database by restoring a geo-replicated backup. sourceDatabaseId must be
1743     specified as the recoverable database resource ID to restore.
1744
1745     Restore: Creates a database by restoring a backup of a deleted database. sourceDatabaseId must
1746     be specified. If sourceDatabaseId is the database's original resource ID, then
1747     sourceDatabaseDeletionDate must be specified. Otherwise sourceDatabaseId must be the restorable
1748     dropped database resource ID and sourceDatabaseDeletionDate is ignored. restorePointInTime may
1749     also be specified to restore from an earlier point in time.
1750
1751     RestoreLongTermRetentionBackup: Creates a database by restoring from a long term retention
1752     vault. recoveryServicesRecoveryPointResourceId must be specified as the recovery point resource
1753     ID.
1754
1755     Copy, Secondary, and RestoreLongTermRetentionBackup are not supported for DataWarehouse
1756     edition. Possible values include: "Default", "Copy", "Secondary", "PointInTimeRestore",
1757     "Restore", "Recovery", "RestoreExternalBackup", "RestoreExternalBackupSecondary",
1758     "RestoreLongTermRetentionBackup", "OnlineSecondary".
1759    :type create_mode: str or ~azure.mgmt.sql.models.CreateMode
1760    :param collation: The collation of the database.
1761    :type collation: str
1762    :param max_size_bytes: The max size of the database expressed in bytes.
1763    :type max_size_bytes: long
1764    :param sample_name: The name of the sample schema to apply when creating this database.
1765     Possible values include: "AdventureWorksLT", "WideWorldImportersStd", "WideWorldImportersFull".
1766    :type sample_name: str or ~azure.mgmt.sql.models.SampleName
1767    :param elastic_pool_id: The resource identifier of the elastic pool containing this database.
1768    :type elastic_pool_id: str
1769    :param source_database_id: The resource identifier of the source database associated with
1770     create operation of this database.
1771    :type source_database_id: str
1772    :ivar status: The status of the database. Possible values include: "Online", "Restoring",
1773     "RecoveryPending", "Recovering", "Suspect", "Offline", "Standby", "Shutdown", "EmergencyMode",
1774     "AutoClosed", "Copying", "Creating", "Inaccessible", "OfflineSecondary", "Pausing", "Paused",
1775     "Resuming", "Scaling", "OfflineChangingDwPerformanceTiers", "OnlineChangingDwPerformanceTiers",
1776     "Disabled".
1777    :vartype status: str or ~azure.mgmt.sql.models.DatabaseStatus
1778    :ivar database_id: The ID of the database.
1779    :vartype database_id: str
1780    :ivar creation_date: The creation date of the database (ISO8601 format).
1781    :vartype creation_date: ~datetime.datetime
1782    :ivar current_service_objective_name: The current service level objective name of the database.
1783    :vartype current_service_objective_name: str
1784    :ivar requested_service_objective_name: The requested service level objective name of the
1785     database.
1786    :vartype requested_service_objective_name: str
1787    :ivar default_secondary_location: The default secondary region for this database.
1788    :vartype default_secondary_location: str
1789    :ivar failover_group_id: Failover Group resource identifier that this database belongs to.
1790    :vartype failover_group_id: str
1791    :param restore_point_in_time: Specifies the point in time (ISO8601 format) of the source
1792     database that will be restored to create the new database.
1793    :type restore_point_in_time: ~datetime.datetime
1794    :param source_database_deletion_date: Specifies the time that the database was deleted.
1795    :type source_database_deletion_date: ~datetime.datetime
1796    :param recovery_services_recovery_point_id: The resource identifier of the recovery point
1797     associated with create operation of this database.
1798    :type recovery_services_recovery_point_id: str
1799    :param long_term_retention_backup_resource_id: The resource identifier of the long term
1800     retention backup associated with create operation of this database.
1801    :type long_term_retention_backup_resource_id: str
1802    :param recoverable_database_id: The resource identifier of the recoverable database associated
1803     with create operation of this database.
1804    :type recoverable_database_id: str
1805    :param restorable_dropped_database_id: The resource identifier of the restorable dropped
1806     database associated with create operation of this database.
1807    :type restorable_dropped_database_id: str
1808    :param catalog_collation: Collation of the metadata catalog. Possible values include:
1809     "DATABASE_DEFAULT", "SQL_Latin1_General_CP1_CI_AS".
1810    :type catalog_collation: str or ~azure.mgmt.sql.models.CatalogCollationType
1811    :param zone_redundant: Whether or not this database is zone redundant, which means the replicas
1812     of this database will be spread across multiple availability zones.
1813    :type zone_redundant: bool
1814    :param license_type: The license type to apply for this database. ``LicenseIncluded`` if you
1815     need a license, or ``BasePrice`` if you have a license and are eligible for the Azure Hybrid
1816     Benefit. Possible values include: "LicenseIncluded", "BasePrice".
1817    :type license_type: str or ~azure.mgmt.sql.models.DatabaseLicenseType
1818    :ivar max_log_size_bytes: The max log size for this database.
1819    :vartype max_log_size_bytes: long
1820    :ivar earliest_restore_date: This records the earliest start date and time that restore is
1821     available for this database (ISO8601 format).
1822    :vartype earliest_restore_date: ~datetime.datetime
1823    :param read_scale: The state of read-only routing. If enabled, connections that have
1824     application intent set to readonly in their connection string may be routed to a readonly
1825     secondary replica in the same region. Possible values include: "Enabled", "Disabled".
1826    :type read_scale: str or ~azure.mgmt.sql.models.DatabaseReadScale
1827    :param high_availability_replica_count: The number of secondary replicas associated with the
1828     database that are used to provide high availability.
1829    :type high_availability_replica_count: int
1830    :param secondary_type: The secondary type of the database if it is a secondary.  Valid values
1831     are Geo and Named. Possible values include: "Geo", "Named".
1832    :type secondary_type: str or ~azure.mgmt.sql.models.SecondaryType
1833    :ivar current_sku: The name and tier of the SKU.
1834    :vartype current_sku: ~azure.mgmt.sql.models.Sku
1835    :param auto_pause_delay: Time in minutes after which database is automatically paused. A value
1836     of -1 means that automatic pause is disabled.
1837    :type auto_pause_delay: int
1838    :ivar current_backup_storage_redundancy: The storage account type used to store backups for
1839     this database. Possible values include: "Geo", "Local", "Zone".
1840    :vartype current_backup_storage_redundancy: str or
1841     ~azure.mgmt.sql.models.CurrentBackupStorageRedundancy
1842    :param requested_backup_storage_redundancy: The storage account type to be used to store
1843     backups for this database. Possible values include: "Geo", "Local", "Zone".
1844    :type requested_backup_storage_redundancy: str or
1845     ~azure.mgmt.sql.models.RequestedBackupStorageRedundancy
1846    :param min_capacity: Minimal capacity that database will always have allocated, if not paused.
1847    :type min_capacity: float
1848    :ivar paused_date: The date when database was paused by user configuration or action(ISO8601
1849     format). Null if the database is ready.
1850    :vartype paused_date: ~datetime.datetime
1851    :ivar resumed_date: The date when database was resumed by user action or database login
1852     (ISO8601 format). Null if the database is paused.
1853    :vartype resumed_date: ~datetime.datetime
1854    :param maintenance_configuration_id: Maintenance configuration id assigned to the database.
1855     This configuration defines the period when the maintenance updates will occur.
1856    :type maintenance_configuration_id: str
1857    :param is_ledger_on: Whether or not this database is a ledger database, which means all tables
1858     in the database are ledger tables. Note: the value of this property cannot be changed after the
1859     database has been created.
1860    :type is_ledger_on: bool
1861    :ivar is_infra_encryption_enabled: Infra encryption is enabled for this database.
1862    :vartype is_infra_encryption_enabled: bool
1863    """
1864
1865    _validation = {
1866        'status': {'readonly': True},
1867        'database_id': {'readonly': True},
1868        'creation_date': {'readonly': True},
1869        'current_service_objective_name': {'readonly': True},
1870        'requested_service_objective_name': {'readonly': True},
1871        'default_secondary_location': {'readonly': True},
1872        'failover_group_id': {'readonly': True},
1873        'max_log_size_bytes': {'readonly': True},
1874        'earliest_restore_date': {'readonly': True},
1875        'current_sku': {'readonly': True},
1876        'current_backup_storage_redundancy': {'readonly': True},
1877        'paused_date': {'readonly': True},
1878        'resumed_date': {'readonly': True},
1879        'is_infra_encryption_enabled': {'readonly': True},
1880    }
1881
1882    _attribute_map = {
1883        'sku': {'key': 'sku', 'type': 'Sku'},
1884        'tags': {'key': 'tags', 'type': '{str}'},
1885        'create_mode': {'key': 'properties.createMode', 'type': 'str'},
1886        'collation': {'key': 'properties.collation', 'type': 'str'},
1887        'max_size_bytes': {'key': 'properties.maxSizeBytes', 'type': 'long'},
1888        'sample_name': {'key': 'properties.sampleName', 'type': 'str'},
1889        'elastic_pool_id': {'key': 'properties.elasticPoolId', 'type': 'str'},
1890        'source_database_id': {'key': 'properties.sourceDatabaseId', 'type': 'str'},
1891        'status': {'key': 'properties.status', 'type': 'str'},
1892        'database_id': {'key': 'properties.databaseId', 'type': 'str'},
1893        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
1894        'current_service_objective_name': {'key': 'properties.currentServiceObjectiveName', 'type': 'str'},
1895        'requested_service_objective_name': {'key': 'properties.requestedServiceObjectiveName', 'type': 'str'},
1896        'default_secondary_location': {'key': 'properties.defaultSecondaryLocation', 'type': 'str'},
1897        'failover_group_id': {'key': 'properties.failoverGroupId', 'type': 'str'},
1898        'restore_point_in_time': {'key': 'properties.restorePointInTime', 'type': 'iso-8601'},
1899        'source_database_deletion_date': {'key': 'properties.sourceDatabaseDeletionDate', 'type': 'iso-8601'},
1900        'recovery_services_recovery_point_id': {'key': 'properties.recoveryServicesRecoveryPointId', 'type': 'str'},
1901        'long_term_retention_backup_resource_id': {'key': 'properties.longTermRetentionBackupResourceId', 'type': 'str'},
1902        'recoverable_database_id': {'key': 'properties.recoverableDatabaseId', 'type': 'str'},
1903        'restorable_dropped_database_id': {'key': 'properties.restorableDroppedDatabaseId', 'type': 'str'},
1904        'catalog_collation': {'key': 'properties.catalogCollation', 'type': 'str'},
1905        'zone_redundant': {'key': 'properties.zoneRedundant', 'type': 'bool'},
1906        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
1907        'max_log_size_bytes': {'key': 'properties.maxLogSizeBytes', 'type': 'long'},
1908        'earliest_restore_date': {'key': 'properties.earliestRestoreDate', 'type': 'iso-8601'},
1909        'read_scale': {'key': 'properties.readScale', 'type': 'str'},
1910        'high_availability_replica_count': {'key': 'properties.highAvailabilityReplicaCount', 'type': 'int'},
1911        'secondary_type': {'key': 'properties.secondaryType', 'type': 'str'},
1912        'current_sku': {'key': 'properties.currentSku', 'type': 'Sku'},
1913        'auto_pause_delay': {'key': 'properties.autoPauseDelay', 'type': 'int'},
1914        'current_backup_storage_redundancy': {'key': 'properties.currentBackupStorageRedundancy', 'type': 'str'},
1915        'requested_backup_storage_redundancy': {'key': 'properties.requestedBackupStorageRedundancy', 'type': 'str'},
1916        'min_capacity': {'key': 'properties.minCapacity', 'type': 'float'},
1917        'paused_date': {'key': 'properties.pausedDate', 'type': 'iso-8601'},
1918        'resumed_date': {'key': 'properties.resumedDate', 'type': 'iso-8601'},
1919        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
1920        'is_ledger_on': {'key': 'properties.isLedgerOn', 'type': 'bool'},
1921        'is_infra_encryption_enabled': {'key': 'properties.isInfraEncryptionEnabled', 'type': 'bool'},
1922    }
1923
1924    def __init__(
1925        self,
1926        **kwargs
1927    ):
1928        super(DatabaseUpdate, self).__init__(**kwargs)
1929        self.sku = kwargs.get('sku', None)
1930        self.tags = kwargs.get('tags', None)
1931        self.create_mode = kwargs.get('create_mode', None)
1932        self.collation = kwargs.get('collation', None)
1933        self.max_size_bytes = kwargs.get('max_size_bytes', None)
1934        self.sample_name = kwargs.get('sample_name', None)
1935        self.elastic_pool_id = kwargs.get('elastic_pool_id', None)
1936        self.source_database_id = kwargs.get('source_database_id', None)
1937        self.status = None
1938        self.database_id = None
1939        self.creation_date = None
1940        self.current_service_objective_name = None
1941        self.requested_service_objective_name = None
1942        self.default_secondary_location = None
1943        self.failover_group_id = None
1944        self.restore_point_in_time = kwargs.get('restore_point_in_time', None)
1945        self.source_database_deletion_date = kwargs.get('source_database_deletion_date', None)
1946        self.recovery_services_recovery_point_id = kwargs.get('recovery_services_recovery_point_id', None)
1947        self.long_term_retention_backup_resource_id = kwargs.get('long_term_retention_backup_resource_id', None)
1948        self.recoverable_database_id = kwargs.get('recoverable_database_id', None)
1949        self.restorable_dropped_database_id = kwargs.get('restorable_dropped_database_id', None)
1950        self.catalog_collation = kwargs.get('catalog_collation', None)
1951        self.zone_redundant = kwargs.get('zone_redundant', None)
1952        self.license_type = kwargs.get('license_type', None)
1953        self.max_log_size_bytes = None
1954        self.earliest_restore_date = None
1955        self.read_scale = kwargs.get('read_scale', None)
1956        self.high_availability_replica_count = kwargs.get('high_availability_replica_count', None)
1957        self.secondary_type = kwargs.get('secondary_type', None)
1958        self.current_sku = None
1959        self.auto_pause_delay = kwargs.get('auto_pause_delay', None)
1960        self.current_backup_storage_redundancy = None
1961        self.requested_backup_storage_redundancy = kwargs.get('requested_backup_storage_redundancy', None)
1962        self.min_capacity = kwargs.get('min_capacity', None)
1963        self.paused_date = None
1964        self.resumed_date = None
1965        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
1966        self.is_ledger_on = kwargs.get('is_ledger_on', None)
1967        self.is_infra_encryption_enabled = None
1968
1969
1970class DatabaseUsage(ProxyResource):
1971    """Usage metric of a database.
1972
1973    Variables are only populated by the server, and will be ignored when sending a request.
1974
1975    :ivar id: Resource ID.
1976    :vartype id: str
1977    :ivar name: Resource name.
1978    :vartype name: str
1979    :ivar type: Resource type.
1980    :vartype type: str
1981    :ivar display_name: User-readable name of the metric.
1982    :vartype display_name: str
1983    :ivar current_value: Current value of the metric.
1984    :vartype current_value: float
1985    :ivar limit: Boundary value of the metric.
1986    :vartype limit: float
1987    :ivar unit: Unit of the metric.
1988    :vartype unit: str
1989    """
1990
1991    _validation = {
1992        'id': {'readonly': True},
1993        'name': {'readonly': True},
1994        'type': {'readonly': True},
1995        'display_name': {'readonly': True},
1996        'current_value': {'readonly': True},
1997        'limit': {'readonly': True},
1998        'unit': {'readonly': True},
1999    }
2000
2001    _attribute_map = {
2002        'id': {'key': 'id', 'type': 'str'},
2003        'name': {'key': 'name', 'type': 'str'},
2004        'type': {'key': 'type', 'type': 'str'},
2005        'display_name': {'key': 'properties.displayName', 'type': 'str'},
2006        'current_value': {'key': 'properties.currentValue', 'type': 'float'},
2007        'limit': {'key': 'properties.limit', 'type': 'float'},
2008        'unit': {'key': 'properties.unit', 'type': 'str'},
2009    }
2010
2011    def __init__(
2012        self,
2013        **kwargs
2014    ):
2015        super(DatabaseUsage, self).__init__(**kwargs)
2016        self.display_name = None
2017        self.current_value = None
2018        self.limit = None
2019        self.unit = None
2020
2021
2022class DatabaseUsageListResult(msrest.serialization.Model):
2023    """A list of database usage metrics.
2024
2025    Variables are only populated by the server, and will be ignored when sending a request.
2026
2027    :ivar value: Array of results.
2028    :vartype value: list[~azure.mgmt.sql.models.DatabaseUsage]
2029    :ivar next_link: Link to retrieve next page of results.
2030    :vartype next_link: str
2031    """
2032
2033    _validation = {
2034        'value': {'readonly': True},
2035        'next_link': {'readonly': True},
2036    }
2037
2038    _attribute_map = {
2039        'value': {'key': 'value', 'type': '[DatabaseUsage]'},
2040        'next_link': {'key': 'nextLink', 'type': 'str'},
2041    }
2042
2043    def __init__(
2044        self,
2045        **kwargs
2046    ):
2047        super(DatabaseUsageListResult, self).__init__(**kwargs)
2048        self.value = None
2049        self.next_link = None
2050
2051
2052class DatabaseVulnerabilityAssessment(ProxyResource):
2053    """A database vulnerability assessment.
2054
2055    Variables are only populated by the server, and will be ignored when sending a request.
2056
2057    :ivar id: Resource ID.
2058    :vartype id: str
2059    :ivar name: Resource name.
2060    :vartype name: str
2061    :ivar type: Resource type.
2062    :vartype type: str
2063    :param storage_container_path: A blob storage container path to hold the scan results (e.g.
2064     https://myStorage.blob.core.windows.net/VaScans/).  It is required if server level
2065     vulnerability assessment policy doesn't set.
2066    :type storage_container_path: str
2067    :param storage_container_sas_key: A shared access signature (SAS Key) that has write access to
2068     the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey'
2069     isn't specified, StorageContainerSasKey is required.
2070    :type storage_container_sas_key: str
2071    :param storage_account_access_key: Specifies the identifier key of the storage account for
2072     vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified,
2073     storageAccountAccessKey is required.
2074    :type storage_account_access_key: str
2075    :param recurring_scans: The recurring scans settings.
2076    :type recurring_scans: ~azure.mgmt.sql.models.VulnerabilityAssessmentRecurringScansProperties
2077    """
2078
2079    _validation = {
2080        'id': {'readonly': True},
2081        'name': {'readonly': True},
2082        'type': {'readonly': True},
2083    }
2084
2085    _attribute_map = {
2086        'id': {'key': 'id', 'type': 'str'},
2087        'name': {'key': 'name', 'type': 'str'},
2088        'type': {'key': 'type', 'type': 'str'},
2089        'storage_container_path': {'key': 'properties.storageContainerPath', 'type': 'str'},
2090        'storage_container_sas_key': {'key': 'properties.storageContainerSasKey', 'type': 'str'},
2091        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
2092        'recurring_scans': {'key': 'properties.recurringScans', 'type': 'VulnerabilityAssessmentRecurringScansProperties'},
2093    }
2094
2095    def __init__(
2096        self,
2097        **kwargs
2098    ):
2099        super(DatabaseVulnerabilityAssessment, self).__init__(**kwargs)
2100        self.storage_container_path = kwargs.get('storage_container_path', None)
2101        self.storage_container_sas_key = kwargs.get('storage_container_sas_key', None)
2102        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
2103        self.recurring_scans = kwargs.get('recurring_scans', None)
2104
2105
2106class DatabaseVulnerabilityAssessmentListResult(msrest.serialization.Model):
2107    """A list of the database's vulnerability assessments.
2108
2109    Variables are only populated by the server, and will be ignored when sending a request.
2110
2111    :ivar value: Array of results.
2112    :vartype value: list[~azure.mgmt.sql.models.DatabaseVulnerabilityAssessment]
2113    :ivar next_link: Link to retrieve next page of results.
2114    :vartype next_link: str
2115    """
2116
2117    _validation = {
2118        'value': {'readonly': True},
2119        'next_link': {'readonly': True},
2120    }
2121
2122    _attribute_map = {
2123        'value': {'key': 'value', 'type': '[DatabaseVulnerabilityAssessment]'},
2124        'next_link': {'key': 'nextLink', 'type': 'str'},
2125    }
2126
2127    def __init__(
2128        self,
2129        **kwargs
2130    ):
2131        super(DatabaseVulnerabilityAssessmentListResult, self).__init__(**kwargs)
2132        self.value = None
2133        self.next_link = None
2134
2135
2136class DatabaseVulnerabilityAssessmentRuleBaseline(ProxyResource):
2137    """A database vulnerability assessment rule baseline.
2138
2139    Variables are only populated by the server, and will be ignored when sending a request.
2140
2141    :ivar id: Resource ID.
2142    :vartype id: str
2143    :ivar name: Resource name.
2144    :vartype name: str
2145    :ivar type: Resource type.
2146    :vartype type: str
2147    :param baseline_results: The rule baseline result.
2148    :type baseline_results:
2149     list[~azure.mgmt.sql.models.DatabaseVulnerabilityAssessmentRuleBaselineItem]
2150    """
2151
2152    _validation = {
2153        'id': {'readonly': True},
2154        'name': {'readonly': True},
2155        'type': {'readonly': True},
2156    }
2157
2158    _attribute_map = {
2159        'id': {'key': 'id', 'type': 'str'},
2160        'name': {'key': 'name', 'type': 'str'},
2161        'type': {'key': 'type', 'type': 'str'},
2162        'baseline_results': {'key': 'properties.baselineResults', 'type': '[DatabaseVulnerabilityAssessmentRuleBaselineItem]'},
2163    }
2164
2165    def __init__(
2166        self,
2167        **kwargs
2168    ):
2169        super(DatabaseVulnerabilityAssessmentRuleBaseline, self).__init__(**kwargs)
2170        self.baseline_results = kwargs.get('baseline_results', None)
2171
2172
2173class DatabaseVulnerabilityAssessmentRuleBaselineItem(msrest.serialization.Model):
2174    """Properties for an Azure SQL Database Vulnerability Assessment rule baseline's result.
2175
2176    All required parameters must be populated in order to send to Azure.
2177
2178    :param result: Required. The rule baseline result.
2179    :type result: list[str]
2180    """
2181
2182    _validation = {
2183        'result': {'required': True},
2184    }
2185
2186    _attribute_map = {
2187        'result': {'key': 'result', 'type': '[str]'},
2188    }
2189
2190    def __init__(
2191        self,
2192        **kwargs
2193    ):
2194        super(DatabaseVulnerabilityAssessmentRuleBaselineItem, self).__init__(**kwargs)
2195        self.result = kwargs['result']
2196
2197
2198class DatabaseVulnerabilityAssessmentScansExport(ProxyResource):
2199    """A database Vulnerability Assessment scan export resource.
2200
2201    Variables are only populated by the server, and will be ignored when sending a request.
2202
2203    :ivar id: Resource ID.
2204    :vartype id: str
2205    :ivar name: Resource name.
2206    :vartype name: str
2207    :ivar type: Resource type.
2208    :vartype type: str
2209    :ivar exported_report_location: Location of the exported report (e.g.
2210     https://myStorage.blob.core.windows.net/VaScans/scans/serverName/databaseName/scan_scanId.xlsx).
2211    :vartype exported_report_location: str
2212    """
2213
2214    _validation = {
2215        'id': {'readonly': True},
2216        'name': {'readonly': True},
2217        'type': {'readonly': True},
2218        'exported_report_location': {'readonly': True},
2219    }
2220
2221    _attribute_map = {
2222        'id': {'key': 'id', 'type': 'str'},
2223        'name': {'key': 'name', 'type': 'str'},
2224        'type': {'key': 'type', 'type': 'str'},
2225        'exported_report_location': {'key': 'properties.exportedReportLocation', 'type': 'str'},
2226    }
2227
2228    def __init__(
2229        self,
2230        **kwargs
2231    ):
2232        super(DatabaseVulnerabilityAssessmentScansExport, self).__init__(**kwargs)
2233        self.exported_report_location = None
2234
2235
2236class DataMaskingPolicy(ProxyResource):
2237    """Represents a database data masking policy.
2238
2239    Variables are only populated by the server, and will be ignored when sending a request.
2240
2241    :ivar id: Resource ID.
2242    :vartype id: str
2243    :ivar name: Resource name.
2244    :vartype name: str
2245    :ivar type: Resource type.
2246    :vartype type: str
2247    :ivar location: The location of the data masking policy.
2248    :vartype location: str
2249    :ivar kind: The kind of data masking policy. Metadata, used for Azure portal.
2250    :vartype kind: str
2251    :param data_masking_state: The state of the data masking policy. Possible values include:
2252     "Disabled", "Enabled".
2253    :type data_masking_state: str or ~azure.mgmt.sql.models.DataMaskingState
2254    :param exempt_principals: The list of the exempt principals. Specifies the semicolon-separated
2255     list of database users for which the data masking policy does not apply. The specified users
2256     receive data results without masking for all of the database queries.
2257    :type exempt_principals: str
2258    :ivar application_principals: The list of the application principals. This is a legacy
2259     parameter and is no longer used.
2260    :vartype application_principals: str
2261    :ivar masking_level: The masking level. This is a legacy parameter and is no longer used.
2262    :vartype masking_level: str
2263    """
2264
2265    _validation = {
2266        'id': {'readonly': True},
2267        'name': {'readonly': True},
2268        'type': {'readonly': True},
2269        'location': {'readonly': True},
2270        'kind': {'readonly': True},
2271        'application_principals': {'readonly': True},
2272        'masking_level': {'readonly': True},
2273    }
2274
2275    _attribute_map = {
2276        'id': {'key': 'id', 'type': 'str'},
2277        'name': {'key': 'name', 'type': 'str'},
2278        'type': {'key': 'type', 'type': 'str'},
2279        'location': {'key': 'location', 'type': 'str'},
2280        'kind': {'key': 'kind', 'type': 'str'},
2281        'data_masking_state': {'key': 'properties.dataMaskingState', 'type': 'str'},
2282        'exempt_principals': {'key': 'properties.exemptPrincipals', 'type': 'str'},
2283        'application_principals': {'key': 'properties.applicationPrincipals', 'type': 'str'},
2284        'masking_level': {'key': 'properties.maskingLevel', 'type': 'str'},
2285    }
2286
2287    def __init__(
2288        self,
2289        **kwargs
2290    ):
2291        super(DataMaskingPolicy, self).__init__(**kwargs)
2292        self.location = None
2293        self.kind = None
2294        self.data_masking_state = kwargs.get('data_masking_state', None)
2295        self.exempt_principals = kwargs.get('exempt_principals', None)
2296        self.application_principals = None
2297        self.masking_level = None
2298
2299
2300class DataMaskingRule(ProxyResource):
2301    """Represents a database data masking rule.
2302
2303    Variables are only populated by the server, and will be ignored when sending a request.
2304
2305    :ivar id: Resource ID.
2306    :vartype id: str
2307    :ivar name: Resource name.
2308    :vartype name: str
2309    :ivar type: Resource type.
2310    :vartype type: str
2311    :ivar location: The location of the data masking rule.
2312    :vartype location: str
2313    :ivar kind: The kind of Data Masking Rule. Metadata, used for Azure portal.
2314    :vartype kind: str
2315    :ivar id_properties_id: The rule Id.
2316    :vartype id_properties_id: str
2317    :param alias_name: The alias name. This is a legacy parameter and is no longer used.
2318    :type alias_name: str
2319    :param rule_state: The rule state. Used to delete a rule. To delete an existing rule, specify
2320     the schemaName, tableName, columnName, maskingFunction, and specify ruleState as disabled.
2321     However, if the rule doesn't already exist, the rule will be created with ruleState set to
2322     enabled, regardless of the provided value of ruleState. Possible values include: "Disabled",
2323     "Enabled".
2324    :type rule_state: str or ~azure.mgmt.sql.models.DataMaskingRuleState
2325    :param schema_name: The schema name on which the data masking rule is applied.
2326    :type schema_name: str
2327    :param table_name: The table name on which the data masking rule is applied.
2328    :type table_name: str
2329    :param column_name: The column name on which the data masking rule is applied.
2330    :type column_name: str
2331    :param masking_function: The masking function that is used for the data masking rule. Possible
2332     values include: "Default", "CCN", "Email", "Number", "SSN", "Text".
2333    :type masking_function: str or ~azure.mgmt.sql.models.DataMaskingFunction
2334    :param number_from: The numberFrom property of the masking rule. Required if maskingFunction is
2335     set to Number, otherwise this parameter will be ignored.
2336    :type number_from: str
2337    :param number_to: The numberTo property of the data masking rule. Required if maskingFunction
2338     is set to Number, otherwise this parameter will be ignored.
2339    :type number_to: str
2340    :param prefix_size: If maskingFunction is set to Text, the number of characters to show
2341     unmasked in the beginning of the string. Otherwise, this parameter will be ignored.
2342    :type prefix_size: str
2343    :param suffix_size: If maskingFunction is set to Text, the number of characters to show
2344     unmasked at the end of the string. Otherwise, this parameter will be ignored.
2345    :type suffix_size: str
2346    :param replacement_string: If maskingFunction is set to Text, the character to use for masking
2347     the unexposed part of the string. Otherwise, this parameter will be ignored.
2348    :type replacement_string: str
2349    """
2350
2351    _validation = {
2352        'id': {'readonly': True},
2353        'name': {'readonly': True},
2354        'type': {'readonly': True},
2355        'location': {'readonly': True},
2356        'kind': {'readonly': True},
2357        'id_properties_id': {'readonly': True},
2358    }
2359
2360    _attribute_map = {
2361        'id': {'key': 'id', 'type': 'str'},
2362        'name': {'key': 'name', 'type': 'str'},
2363        'type': {'key': 'type', 'type': 'str'},
2364        'location': {'key': 'location', 'type': 'str'},
2365        'kind': {'key': 'kind', 'type': 'str'},
2366        'id_properties_id': {'key': 'properties.id', 'type': 'str'},
2367        'alias_name': {'key': 'properties.aliasName', 'type': 'str'},
2368        'rule_state': {'key': 'properties.ruleState', 'type': 'str'},
2369        'schema_name': {'key': 'properties.schemaName', 'type': 'str'},
2370        'table_name': {'key': 'properties.tableName', 'type': 'str'},
2371        'column_name': {'key': 'properties.columnName', 'type': 'str'},
2372        'masking_function': {'key': 'properties.maskingFunction', 'type': 'str'},
2373        'number_from': {'key': 'properties.numberFrom', 'type': 'str'},
2374        'number_to': {'key': 'properties.numberTo', 'type': 'str'},
2375        'prefix_size': {'key': 'properties.prefixSize', 'type': 'str'},
2376        'suffix_size': {'key': 'properties.suffixSize', 'type': 'str'},
2377        'replacement_string': {'key': 'properties.replacementString', 'type': 'str'},
2378    }
2379
2380    def __init__(
2381        self,
2382        **kwargs
2383    ):
2384        super(DataMaskingRule, self).__init__(**kwargs)
2385        self.location = None
2386        self.kind = None
2387        self.id_properties_id = None
2388        self.alias_name = kwargs.get('alias_name', None)
2389        self.rule_state = kwargs.get('rule_state', None)
2390        self.schema_name = kwargs.get('schema_name', None)
2391        self.table_name = kwargs.get('table_name', None)
2392        self.column_name = kwargs.get('column_name', None)
2393        self.masking_function = kwargs.get('masking_function', None)
2394        self.number_from = kwargs.get('number_from', None)
2395        self.number_to = kwargs.get('number_to', None)
2396        self.prefix_size = kwargs.get('prefix_size', None)
2397        self.suffix_size = kwargs.get('suffix_size', None)
2398        self.replacement_string = kwargs.get('replacement_string', None)
2399
2400
2401class DataMaskingRuleListResult(msrest.serialization.Model):
2402    """The response to a list data masking rules request.
2403
2404    :param value: The list of database data masking rules.
2405    :type value: list[~azure.mgmt.sql.models.DataMaskingRule]
2406    """
2407
2408    _attribute_map = {
2409        'value': {'key': 'value', 'type': '[DataMaskingRule]'},
2410    }
2411
2412    def __init__(
2413        self,
2414        **kwargs
2415    ):
2416        super(DataMaskingRuleListResult, self).__init__(**kwargs)
2417        self.value = kwargs.get('value', None)
2418
2419
2420class DataWarehouseUserActivities(ProxyResource):
2421    """User activities of a data warehouse.
2422
2423    Variables are only populated by the server, and will be ignored when sending a request.
2424
2425    :ivar id: Resource ID.
2426    :vartype id: str
2427    :ivar name: Resource name.
2428    :vartype name: str
2429    :ivar type: Resource type.
2430    :vartype type: str
2431    :ivar active_queries_count: Count of running and suspended queries.
2432    :vartype active_queries_count: int
2433    """
2434
2435    _validation = {
2436        'id': {'readonly': True},
2437        'name': {'readonly': True},
2438        'type': {'readonly': True},
2439        'active_queries_count': {'readonly': True},
2440    }
2441
2442    _attribute_map = {
2443        'id': {'key': 'id', 'type': 'str'},
2444        'name': {'key': 'name', 'type': 'str'},
2445        'type': {'key': 'type', 'type': 'str'},
2446        'active_queries_count': {'key': 'properties.activeQueriesCount', 'type': 'int'},
2447    }
2448
2449    def __init__(
2450        self,
2451        **kwargs
2452    ):
2453        super(DataWarehouseUserActivities, self).__init__(**kwargs)
2454        self.active_queries_count = None
2455
2456
2457class DataWarehouseUserActivitiesListResult(msrest.serialization.Model):
2458    """User activities of a data warehouse.
2459
2460    Variables are only populated by the server, and will be ignored when sending a request.
2461
2462    :ivar value: Array of results.
2463    :vartype value: list[~azure.mgmt.sql.models.DataWarehouseUserActivities]
2464    :ivar next_link: Link to retrieve next page of results.
2465    :vartype next_link: str
2466    """
2467
2468    _validation = {
2469        'value': {'readonly': True},
2470        'next_link': {'readonly': True},
2471    }
2472
2473    _attribute_map = {
2474        'value': {'key': 'value', 'type': '[DataWarehouseUserActivities]'},
2475        'next_link': {'key': 'nextLink', 'type': 'str'},
2476    }
2477
2478    def __init__(
2479        self,
2480        **kwargs
2481    ):
2482        super(DataWarehouseUserActivitiesListResult, self).__init__(**kwargs)
2483        self.value = None
2484        self.next_link = None
2485
2486
2487class DeletedServer(ProxyResource):
2488    """A deleted server.
2489
2490    Variables are only populated by the server, and will be ignored when sending a request.
2491
2492    :ivar id: Resource ID.
2493    :vartype id: str
2494    :ivar name: Resource name.
2495    :vartype name: str
2496    :ivar type: Resource type.
2497    :vartype type: str
2498    :ivar version: The version of the deleted server.
2499    :vartype version: str
2500    :ivar deletion_time: The deletion time of the deleted server.
2501    :vartype deletion_time: ~datetime.datetime
2502    :ivar original_id: The original ID of the server before deletion.
2503    :vartype original_id: str
2504    :ivar fully_qualified_domain_name: The fully qualified domain name of the server.
2505    :vartype fully_qualified_domain_name: str
2506    """
2507
2508    _validation = {
2509        'id': {'readonly': True},
2510        'name': {'readonly': True},
2511        'type': {'readonly': True},
2512        'version': {'readonly': True},
2513        'deletion_time': {'readonly': True},
2514        'original_id': {'readonly': True},
2515        'fully_qualified_domain_name': {'readonly': True},
2516    }
2517
2518    _attribute_map = {
2519        'id': {'key': 'id', 'type': 'str'},
2520        'name': {'key': 'name', 'type': 'str'},
2521        'type': {'key': 'type', 'type': 'str'},
2522        'version': {'key': 'properties.version', 'type': 'str'},
2523        'deletion_time': {'key': 'properties.deletionTime', 'type': 'iso-8601'},
2524        'original_id': {'key': 'properties.originalId', 'type': 'str'},
2525        'fully_qualified_domain_name': {'key': 'properties.fullyQualifiedDomainName', 'type': 'str'},
2526    }
2527
2528    def __init__(
2529        self,
2530        **kwargs
2531    ):
2532        super(DeletedServer, self).__init__(**kwargs)
2533        self.version = None
2534        self.deletion_time = None
2535        self.original_id = None
2536        self.fully_qualified_domain_name = None
2537
2538
2539class DeletedServerListResult(msrest.serialization.Model):
2540    """A list of deleted servers.
2541
2542    Variables are only populated by the server, and will be ignored when sending a request.
2543
2544    :ivar value: Array of results.
2545    :vartype value: list[~azure.mgmt.sql.models.DeletedServer]
2546    :ivar next_link: Link to retrieve next page of results.
2547    :vartype next_link: str
2548    """
2549
2550    _validation = {
2551        'value': {'readonly': True},
2552        'next_link': {'readonly': True},
2553    }
2554
2555    _attribute_map = {
2556        'value': {'key': 'value', 'type': '[DeletedServer]'},
2557        'next_link': {'key': 'nextLink', 'type': 'str'},
2558    }
2559
2560    def __init__(
2561        self,
2562        **kwargs
2563    ):
2564        super(DeletedServerListResult, self).__init__(**kwargs)
2565        self.value = None
2566        self.next_link = None
2567
2568
2569class EditionCapability(msrest.serialization.Model):
2570    """The edition capability.
2571
2572    Variables are only populated by the server, and will be ignored when sending a request.
2573
2574    :ivar name: The database edition name.
2575    :vartype name: str
2576    :ivar supported_service_level_objectives: The list of supported service objectives for the
2577     edition.
2578    :vartype supported_service_level_objectives:
2579     list[~azure.mgmt.sql.models.ServiceObjectiveCapability]
2580    :ivar zone_redundant: Whether or not zone redundancy is supported for the edition.
2581    :vartype zone_redundant: bool
2582    :ivar read_scale: The read scale capability for the edition.
2583    :vartype read_scale: ~azure.mgmt.sql.models.ReadScaleCapability
2584    :ivar supported_storage_capabilities: The list of supported storage capabilities for this
2585     edition.
2586    :vartype supported_storage_capabilities: list[~azure.mgmt.sql.models.StorageCapability]
2587    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
2588     "Default", "Disabled".
2589    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
2590    :param reason: The reason for the capability not being available.
2591    :type reason: str
2592    """
2593
2594    _validation = {
2595        'name': {'readonly': True},
2596        'supported_service_level_objectives': {'readonly': True},
2597        'zone_redundant': {'readonly': True},
2598        'read_scale': {'readonly': True},
2599        'supported_storage_capabilities': {'readonly': True},
2600        'status': {'readonly': True},
2601    }
2602
2603    _attribute_map = {
2604        'name': {'key': 'name', 'type': 'str'},
2605        'supported_service_level_objectives': {'key': 'supportedServiceLevelObjectives', 'type': '[ServiceObjectiveCapability]'},
2606        'zone_redundant': {'key': 'zoneRedundant', 'type': 'bool'},
2607        'read_scale': {'key': 'readScale', 'type': 'ReadScaleCapability'},
2608        'supported_storage_capabilities': {'key': 'supportedStorageCapabilities', 'type': '[StorageCapability]'},
2609        'status': {'key': 'status', 'type': 'str'},
2610        'reason': {'key': 'reason', 'type': 'str'},
2611    }
2612
2613    def __init__(
2614        self,
2615        **kwargs
2616    ):
2617        super(EditionCapability, self).__init__(**kwargs)
2618        self.name = None
2619        self.supported_service_level_objectives = None
2620        self.zone_redundant = None
2621        self.read_scale = None
2622        self.supported_storage_capabilities = None
2623        self.status = None
2624        self.reason = kwargs.get('reason', None)
2625
2626
2627class ElasticPool(TrackedResource):
2628    """An elastic pool.
2629
2630    Variables are only populated by the server, and will be ignored when sending a request.
2631
2632    All required parameters must be populated in order to send to Azure.
2633
2634    :ivar id: Resource ID.
2635    :vartype id: str
2636    :ivar name: Resource name.
2637    :vartype name: str
2638    :ivar type: Resource type.
2639    :vartype type: str
2640    :param location: Required. Resource location.
2641    :type location: str
2642    :param tags: A set of tags. Resource tags.
2643    :type tags: dict[str, str]
2644    :param sku: The elastic pool SKU.
2645
2646     The list of SKUs may vary by region and support offer. To determine the SKUs (including the
2647     SKU name, tier/edition, family, and capacity) that are available to your subscription in an
2648     Azure region, use the ``Capabilities_ListByLocation`` REST API or the following command:
2649
2650     .. code-block:: azurecli
2651
2652        az sql elastic-pool list-editions -l <location> -o table
2653        `.
2654    :type sku: ~azure.mgmt.sql.models.Sku
2655    :ivar kind: Kind of elastic pool. This is metadata used for the Azure portal experience.
2656    :vartype kind: str
2657    :ivar state: The state of the elastic pool. Possible values include: "Creating", "Ready",
2658     "Disabled".
2659    :vartype state: str or ~azure.mgmt.sql.models.ElasticPoolState
2660    :ivar creation_date: The creation date of the elastic pool (ISO8601 format).
2661    :vartype creation_date: ~datetime.datetime
2662    :param max_size_bytes: The storage limit for the database elastic pool in bytes.
2663    :type max_size_bytes: long
2664    :param per_database_settings: The per database settings for the elastic pool.
2665    :type per_database_settings: ~azure.mgmt.sql.models.ElasticPoolPerDatabaseSettings
2666    :param zone_redundant: Whether or not this elastic pool is zone redundant, which means the
2667     replicas of this elastic pool will be spread across multiple availability zones.
2668    :type zone_redundant: bool
2669    :param license_type: The license type to apply for this elastic pool. Possible values include:
2670     "LicenseIncluded", "BasePrice".
2671    :type license_type: str or ~azure.mgmt.sql.models.ElasticPoolLicenseType
2672    :param maintenance_configuration_id: Maintenance configuration id assigned to the elastic pool.
2673     This configuration defines the period when the maintenance updates will will occur.
2674    :type maintenance_configuration_id: str
2675    """
2676
2677    _validation = {
2678        'id': {'readonly': True},
2679        'name': {'readonly': True},
2680        'type': {'readonly': True},
2681        'location': {'required': True},
2682        'kind': {'readonly': True},
2683        'state': {'readonly': True},
2684        'creation_date': {'readonly': True},
2685    }
2686
2687    _attribute_map = {
2688        'id': {'key': 'id', 'type': 'str'},
2689        'name': {'key': 'name', 'type': 'str'},
2690        'type': {'key': 'type', 'type': 'str'},
2691        'location': {'key': 'location', 'type': 'str'},
2692        'tags': {'key': 'tags', 'type': '{str}'},
2693        'sku': {'key': 'sku', 'type': 'Sku'},
2694        'kind': {'key': 'kind', 'type': 'str'},
2695        'state': {'key': 'properties.state', 'type': 'str'},
2696        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
2697        'max_size_bytes': {'key': 'properties.maxSizeBytes', 'type': 'long'},
2698        'per_database_settings': {'key': 'properties.perDatabaseSettings', 'type': 'ElasticPoolPerDatabaseSettings'},
2699        'zone_redundant': {'key': 'properties.zoneRedundant', 'type': 'bool'},
2700        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
2701        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
2702    }
2703
2704    def __init__(
2705        self,
2706        **kwargs
2707    ):
2708        super(ElasticPool, self).__init__(**kwargs)
2709        self.sku = kwargs.get('sku', None)
2710        self.kind = None
2711        self.state = None
2712        self.creation_date = None
2713        self.max_size_bytes = kwargs.get('max_size_bytes', None)
2714        self.per_database_settings = kwargs.get('per_database_settings', None)
2715        self.zone_redundant = kwargs.get('zone_redundant', None)
2716        self.license_type = kwargs.get('license_type', None)
2717        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
2718
2719
2720class ElasticPoolActivity(ProxyResource):
2721    """Represents the activity on an elastic pool.
2722
2723    Variables are only populated by the server, and will be ignored when sending a request.
2724
2725    :ivar id: Resource ID.
2726    :vartype id: str
2727    :ivar name: Resource name.
2728    :vartype name: str
2729    :ivar type: Resource type.
2730    :vartype type: str
2731    :param location: The geo-location where the resource lives.
2732    :type location: str
2733    :ivar end_time: The time the operation finished (ISO8601 format).
2734    :vartype end_time: ~datetime.datetime
2735    :ivar error_code: The error code if available.
2736    :vartype error_code: int
2737    :ivar error_message: The error message if available.
2738    :vartype error_message: str
2739    :ivar error_severity: The error severity if available.
2740    :vartype error_severity: int
2741    :ivar operation: The operation name.
2742    :vartype operation: str
2743    :ivar operation_id: The unique operation ID.
2744    :vartype operation_id: str
2745    :ivar percent_complete: The percentage complete if available.
2746    :vartype percent_complete: int
2747    :ivar requested_database_dtu_max: The requested max DTU per database if available.
2748    :vartype requested_database_dtu_max: int
2749    :ivar requested_database_dtu_min: The requested min DTU per database if available.
2750    :vartype requested_database_dtu_min: int
2751    :ivar requested_dtu: The requested DTU for the pool if available.
2752    :vartype requested_dtu: int
2753    :ivar requested_elastic_pool_name: The requested name for the elastic pool if available.
2754    :vartype requested_elastic_pool_name: str
2755    :ivar requested_storage_limit_in_gb: The requested storage limit for the pool in GB if
2756     available.
2757    :vartype requested_storage_limit_in_gb: long
2758    :ivar elastic_pool_name: The name of the elastic pool.
2759    :vartype elastic_pool_name: str
2760    :ivar server_name: The name of the server the elastic pool is in.
2761    :vartype server_name: str
2762    :ivar start_time: The time the operation started (ISO8601 format).
2763    :vartype start_time: ~datetime.datetime
2764    :ivar state: The current state of the operation.
2765    :vartype state: str
2766    :ivar requested_storage_limit_in_mb: The requested storage limit in MB.
2767    :vartype requested_storage_limit_in_mb: int
2768    :ivar requested_database_dtu_guarantee: The requested per database DTU guarantee.
2769    :vartype requested_database_dtu_guarantee: int
2770    :ivar requested_database_dtu_cap: The requested per database DTU cap.
2771    :vartype requested_database_dtu_cap: int
2772    :ivar requested_dtu_guarantee: The requested DTU guarantee.
2773    :vartype requested_dtu_guarantee: int
2774    """
2775
2776    _validation = {
2777        'id': {'readonly': True},
2778        'name': {'readonly': True},
2779        'type': {'readonly': True},
2780        'end_time': {'readonly': True},
2781        'error_code': {'readonly': True},
2782        'error_message': {'readonly': True},
2783        'error_severity': {'readonly': True},
2784        'operation': {'readonly': True},
2785        'operation_id': {'readonly': True},
2786        'percent_complete': {'readonly': True},
2787        'requested_database_dtu_max': {'readonly': True},
2788        'requested_database_dtu_min': {'readonly': True},
2789        'requested_dtu': {'readonly': True},
2790        'requested_elastic_pool_name': {'readonly': True},
2791        'requested_storage_limit_in_gb': {'readonly': True},
2792        'elastic_pool_name': {'readonly': True},
2793        'server_name': {'readonly': True},
2794        'start_time': {'readonly': True},
2795        'state': {'readonly': True},
2796        'requested_storage_limit_in_mb': {'readonly': True},
2797        'requested_database_dtu_guarantee': {'readonly': True},
2798        'requested_database_dtu_cap': {'readonly': True},
2799        'requested_dtu_guarantee': {'readonly': True},
2800    }
2801
2802    _attribute_map = {
2803        'id': {'key': 'id', 'type': 'str'},
2804        'name': {'key': 'name', 'type': 'str'},
2805        'type': {'key': 'type', 'type': 'str'},
2806        'location': {'key': 'location', 'type': 'str'},
2807        'end_time': {'key': 'properties.endTime', 'type': 'iso-8601'},
2808        'error_code': {'key': 'properties.errorCode', 'type': 'int'},
2809        'error_message': {'key': 'properties.errorMessage', 'type': 'str'},
2810        'error_severity': {'key': 'properties.errorSeverity', 'type': 'int'},
2811        'operation': {'key': 'properties.operation', 'type': 'str'},
2812        'operation_id': {'key': 'properties.operationId', 'type': 'str'},
2813        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
2814        'requested_database_dtu_max': {'key': 'properties.requestedDatabaseDtuMax', 'type': 'int'},
2815        'requested_database_dtu_min': {'key': 'properties.requestedDatabaseDtuMin', 'type': 'int'},
2816        'requested_dtu': {'key': 'properties.requestedDtu', 'type': 'int'},
2817        'requested_elastic_pool_name': {'key': 'properties.requestedElasticPoolName', 'type': 'str'},
2818        'requested_storage_limit_in_gb': {'key': 'properties.requestedStorageLimitInGB', 'type': 'long'},
2819        'elastic_pool_name': {'key': 'properties.elasticPoolName', 'type': 'str'},
2820        'server_name': {'key': 'properties.serverName', 'type': 'str'},
2821        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
2822        'state': {'key': 'properties.state', 'type': 'str'},
2823        'requested_storage_limit_in_mb': {'key': 'properties.requestedStorageLimitInMB', 'type': 'int'},
2824        'requested_database_dtu_guarantee': {'key': 'properties.requestedDatabaseDtuGuarantee', 'type': 'int'},
2825        'requested_database_dtu_cap': {'key': 'properties.requestedDatabaseDtuCap', 'type': 'int'},
2826        'requested_dtu_guarantee': {'key': 'properties.requestedDtuGuarantee', 'type': 'int'},
2827    }
2828
2829    def __init__(
2830        self,
2831        **kwargs
2832    ):
2833        super(ElasticPoolActivity, self).__init__(**kwargs)
2834        self.location = kwargs.get('location', None)
2835        self.end_time = None
2836        self.error_code = None
2837        self.error_message = None
2838        self.error_severity = None
2839        self.operation = None
2840        self.operation_id = None
2841        self.percent_complete = None
2842        self.requested_database_dtu_max = None
2843        self.requested_database_dtu_min = None
2844        self.requested_dtu = None
2845        self.requested_elastic_pool_name = None
2846        self.requested_storage_limit_in_gb = None
2847        self.elastic_pool_name = None
2848        self.server_name = None
2849        self.start_time = None
2850        self.state = None
2851        self.requested_storage_limit_in_mb = None
2852        self.requested_database_dtu_guarantee = None
2853        self.requested_database_dtu_cap = None
2854        self.requested_dtu_guarantee = None
2855
2856
2857class ElasticPoolActivityListResult(msrest.serialization.Model):
2858    """Represents the response to a list elastic pool activity request.
2859
2860    All required parameters must be populated in order to send to Azure.
2861
2862    :param value: Required. The list of elastic pool activities.
2863    :type value: list[~azure.mgmt.sql.models.ElasticPoolActivity]
2864    """
2865
2866    _validation = {
2867        'value': {'required': True},
2868    }
2869
2870    _attribute_map = {
2871        'value': {'key': 'value', 'type': '[ElasticPoolActivity]'},
2872    }
2873
2874    def __init__(
2875        self,
2876        **kwargs
2877    ):
2878        super(ElasticPoolActivityListResult, self).__init__(**kwargs)
2879        self.value = kwargs['value']
2880
2881
2882class ElasticPoolDatabaseActivity(ProxyResource):
2883    """Represents the activity on an elastic pool.
2884
2885    Variables are only populated by the server, and will be ignored when sending a request.
2886
2887    :ivar id: Resource ID.
2888    :vartype id: str
2889    :ivar name: Resource name.
2890    :vartype name: str
2891    :ivar type: Resource type.
2892    :vartype type: str
2893    :param location: The geo-location where the resource lives.
2894    :type location: str
2895    :ivar database_name: The database name.
2896    :vartype database_name: str
2897    :ivar end_time: The time the operation finished (ISO8601 format).
2898    :vartype end_time: ~datetime.datetime
2899    :ivar error_code: The error code if available.
2900    :vartype error_code: int
2901    :ivar error_message: The error message if available.
2902    :vartype error_message: str
2903    :ivar error_severity: The error severity if available.
2904    :vartype error_severity: int
2905    :ivar operation: The operation name.
2906    :vartype operation: str
2907    :ivar operation_id: The unique operation ID.
2908    :vartype operation_id: str
2909    :ivar percent_complete: The percentage complete if available.
2910    :vartype percent_complete: int
2911    :ivar requested_elastic_pool_name: The name for the elastic pool the database is moving into if
2912     available.
2913    :vartype requested_elastic_pool_name: str
2914    :ivar current_elastic_pool_name: The name of the current elastic pool the database is in if
2915     available.
2916    :vartype current_elastic_pool_name: str
2917    :ivar current_service_objective: The name of the current service objective if available.
2918    :vartype current_service_objective: str
2919    :ivar requested_service_objective: The name of the requested service objective if available.
2920    :vartype requested_service_objective: str
2921    :ivar server_name: The name of the server the elastic pool is in.
2922    :vartype server_name: str
2923    :ivar start_time: The time the operation started (ISO8601 format).
2924    :vartype start_time: ~datetime.datetime
2925    :ivar state: The current state of the operation.
2926    :vartype state: str
2927    """
2928
2929    _validation = {
2930        'id': {'readonly': True},
2931        'name': {'readonly': True},
2932        'type': {'readonly': True},
2933        'database_name': {'readonly': True},
2934        'end_time': {'readonly': True},
2935        'error_code': {'readonly': True},
2936        'error_message': {'readonly': True},
2937        'error_severity': {'readonly': True},
2938        'operation': {'readonly': True},
2939        'operation_id': {'readonly': True},
2940        'percent_complete': {'readonly': True},
2941        'requested_elastic_pool_name': {'readonly': True},
2942        'current_elastic_pool_name': {'readonly': True},
2943        'current_service_objective': {'readonly': True},
2944        'requested_service_objective': {'readonly': True},
2945        'server_name': {'readonly': True},
2946        'start_time': {'readonly': True},
2947        'state': {'readonly': True},
2948    }
2949
2950    _attribute_map = {
2951        'id': {'key': 'id', 'type': 'str'},
2952        'name': {'key': 'name', 'type': 'str'},
2953        'type': {'key': 'type', 'type': 'str'},
2954        'location': {'key': 'location', 'type': 'str'},
2955        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
2956        'end_time': {'key': 'properties.endTime', 'type': 'iso-8601'},
2957        'error_code': {'key': 'properties.errorCode', 'type': 'int'},
2958        'error_message': {'key': 'properties.errorMessage', 'type': 'str'},
2959        'error_severity': {'key': 'properties.errorSeverity', 'type': 'int'},
2960        'operation': {'key': 'properties.operation', 'type': 'str'},
2961        'operation_id': {'key': 'properties.operationId', 'type': 'str'},
2962        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
2963        'requested_elastic_pool_name': {'key': 'properties.requestedElasticPoolName', 'type': 'str'},
2964        'current_elastic_pool_name': {'key': 'properties.currentElasticPoolName', 'type': 'str'},
2965        'current_service_objective': {'key': 'properties.currentServiceObjective', 'type': 'str'},
2966        'requested_service_objective': {'key': 'properties.requestedServiceObjective', 'type': 'str'},
2967        'server_name': {'key': 'properties.serverName', 'type': 'str'},
2968        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
2969        'state': {'key': 'properties.state', 'type': 'str'},
2970    }
2971
2972    def __init__(
2973        self,
2974        **kwargs
2975    ):
2976        super(ElasticPoolDatabaseActivity, self).__init__(**kwargs)
2977        self.location = kwargs.get('location', None)
2978        self.database_name = None
2979        self.end_time = None
2980        self.error_code = None
2981        self.error_message = None
2982        self.error_severity = None
2983        self.operation = None
2984        self.operation_id = None
2985        self.percent_complete = None
2986        self.requested_elastic_pool_name = None
2987        self.current_elastic_pool_name = None
2988        self.current_service_objective = None
2989        self.requested_service_objective = None
2990        self.server_name = None
2991        self.start_time = None
2992        self.state = None
2993
2994
2995class ElasticPoolDatabaseActivityListResult(msrest.serialization.Model):
2996    """Represents the response to a list elastic pool database activity request.
2997
2998    All required parameters must be populated in order to send to Azure.
2999
3000    :param value: Required. The list of elastic pool database activities.
3001    :type value: list[~azure.mgmt.sql.models.ElasticPoolDatabaseActivity]
3002    """
3003
3004    _validation = {
3005        'value': {'required': True},
3006    }
3007
3008    _attribute_map = {
3009        'value': {'key': 'value', 'type': '[ElasticPoolDatabaseActivity]'},
3010    }
3011
3012    def __init__(
3013        self,
3014        **kwargs
3015    ):
3016        super(ElasticPoolDatabaseActivityListResult, self).__init__(**kwargs)
3017        self.value = kwargs['value']
3018
3019
3020class ElasticPoolEditionCapability(msrest.serialization.Model):
3021    """The elastic pool edition capability.
3022
3023    Variables are only populated by the server, and will be ignored when sending a request.
3024
3025    :ivar name: The elastic pool edition name.
3026    :vartype name: str
3027    :ivar supported_elastic_pool_performance_levels: The list of supported elastic pool DTU levels
3028     for the edition.
3029    :vartype supported_elastic_pool_performance_levels:
3030     list[~azure.mgmt.sql.models.ElasticPoolPerformanceLevelCapability]
3031    :ivar zone_redundant: Whether or not zone redundancy is supported for the edition.
3032    :vartype zone_redundant: bool
3033    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
3034     "Default", "Disabled".
3035    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
3036    :param reason: The reason for the capability not being available.
3037    :type reason: str
3038    """
3039
3040    _validation = {
3041        'name': {'readonly': True},
3042        'supported_elastic_pool_performance_levels': {'readonly': True},
3043        'zone_redundant': {'readonly': True},
3044        'status': {'readonly': True},
3045    }
3046
3047    _attribute_map = {
3048        'name': {'key': 'name', 'type': 'str'},
3049        'supported_elastic_pool_performance_levels': {'key': 'supportedElasticPoolPerformanceLevels', 'type': '[ElasticPoolPerformanceLevelCapability]'},
3050        'zone_redundant': {'key': 'zoneRedundant', 'type': 'bool'},
3051        'status': {'key': 'status', 'type': 'str'},
3052        'reason': {'key': 'reason', 'type': 'str'},
3053    }
3054
3055    def __init__(
3056        self,
3057        **kwargs
3058    ):
3059        super(ElasticPoolEditionCapability, self).__init__(**kwargs)
3060        self.name = None
3061        self.supported_elastic_pool_performance_levels = None
3062        self.zone_redundant = None
3063        self.status = None
3064        self.reason = kwargs.get('reason', None)
3065
3066
3067class ElasticPoolListResult(msrest.serialization.Model):
3068    """The result of an elastic pool list request.
3069
3070    Variables are only populated by the server, and will be ignored when sending a request.
3071
3072    :ivar value: Array of results.
3073    :vartype value: list[~azure.mgmt.sql.models.ElasticPool]
3074    :ivar next_link: Link to retrieve next page of results.
3075    :vartype next_link: str
3076    """
3077
3078    _validation = {
3079        'value': {'readonly': True},
3080        'next_link': {'readonly': True},
3081    }
3082
3083    _attribute_map = {
3084        'value': {'key': 'value', 'type': '[ElasticPool]'},
3085        'next_link': {'key': 'nextLink', 'type': 'str'},
3086    }
3087
3088    def __init__(
3089        self,
3090        **kwargs
3091    ):
3092        super(ElasticPoolListResult, self).__init__(**kwargs)
3093        self.value = None
3094        self.next_link = None
3095
3096
3097class ElasticPoolOperation(ProxyResource):
3098    """A elastic pool operation.
3099
3100    Variables are only populated by the server, and will be ignored when sending a request.
3101
3102    :ivar id: Resource ID.
3103    :vartype id: str
3104    :ivar name: Resource name.
3105    :vartype name: str
3106    :ivar type: Resource type.
3107    :vartype type: str
3108    :ivar elastic_pool_name: The name of the elastic pool the operation is being performed on.
3109    :vartype elastic_pool_name: str
3110    :ivar operation: The name of operation.
3111    :vartype operation: str
3112    :ivar operation_friendly_name: The friendly name of operation.
3113    :vartype operation_friendly_name: str
3114    :ivar percent_complete: The percentage of the operation completed.
3115    :vartype percent_complete: int
3116    :ivar server_name: The name of the server.
3117    :vartype server_name: str
3118    :ivar start_time: The operation start time.
3119    :vartype start_time: ~datetime.datetime
3120    :ivar state: The operation state.
3121    :vartype state: str
3122    :ivar error_code: The operation error code.
3123    :vartype error_code: int
3124    :ivar error_description: The operation error description.
3125    :vartype error_description: str
3126    :ivar error_severity: The operation error severity.
3127    :vartype error_severity: int
3128    :ivar is_user_error: Whether or not the error is a user error.
3129    :vartype is_user_error: bool
3130    :ivar estimated_completion_time: The estimated completion time of the operation.
3131    :vartype estimated_completion_time: ~datetime.datetime
3132    :ivar description: The operation description.
3133    :vartype description: str
3134    :ivar is_cancellable: Whether the operation can be cancelled.
3135    :vartype is_cancellable: bool
3136    """
3137
3138    _validation = {
3139        'id': {'readonly': True},
3140        'name': {'readonly': True},
3141        'type': {'readonly': True},
3142        'elastic_pool_name': {'readonly': True},
3143        'operation': {'readonly': True},
3144        'operation_friendly_name': {'readonly': True},
3145        'percent_complete': {'readonly': True},
3146        'server_name': {'readonly': True},
3147        'start_time': {'readonly': True},
3148        'state': {'readonly': True},
3149        'error_code': {'readonly': True},
3150        'error_description': {'readonly': True},
3151        'error_severity': {'readonly': True},
3152        'is_user_error': {'readonly': True},
3153        'estimated_completion_time': {'readonly': True},
3154        'description': {'readonly': True},
3155        'is_cancellable': {'readonly': True},
3156    }
3157
3158    _attribute_map = {
3159        'id': {'key': 'id', 'type': 'str'},
3160        'name': {'key': 'name', 'type': 'str'},
3161        'type': {'key': 'type', 'type': 'str'},
3162        'elastic_pool_name': {'key': 'properties.elasticPoolName', 'type': 'str'},
3163        'operation': {'key': 'properties.operation', 'type': 'str'},
3164        'operation_friendly_name': {'key': 'properties.operationFriendlyName', 'type': 'str'},
3165        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
3166        'server_name': {'key': 'properties.serverName', 'type': 'str'},
3167        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
3168        'state': {'key': 'properties.state', 'type': 'str'},
3169        'error_code': {'key': 'properties.errorCode', 'type': 'int'},
3170        'error_description': {'key': 'properties.errorDescription', 'type': 'str'},
3171        'error_severity': {'key': 'properties.errorSeverity', 'type': 'int'},
3172        'is_user_error': {'key': 'properties.isUserError', 'type': 'bool'},
3173        'estimated_completion_time': {'key': 'properties.estimatedCompletionTime', 'type': 'iso-8601'},
3174        'description': {'key': 'properties.description', 'type': 'str'},
3175        'is_cancellable': {'key': 'properties.isCancellable', 'type': 'bool'},
3176    }
3177
3178    def __init__(
3179        self,
3180        **kwargs
3181    ):
3182        super(ElasticPoolOperation, self).__init__(**kwargs)
3183        self.elastic_pool_name = None
3184        self.operation = None
3185        self.operation_friendly_name = None
3186        self.percent_complete = None
3187        self.server_name = None
3188        self.start_time = None
3189        self.state = None
3190        self.error_code = None
3191        self.error_description = None
3192        self.error_severity = None
3193        self.is_user_error = None
3194        self.estimated_completion_time = None
3195        self.description = None
3196        self.is_cancellable = None
3197
3198
3199class ElasticPoolOperationListResult(msrest.serialization.Model):
3200    """The response to a list elastic pool operations request.
3201
3202    Variables are only populated by the server, and will be ignored when sending a request.
3203
3204    :ivar value: Array of results.
3205    :vartype value: list[~azure.mgmt.sql.models.ElasticPoolOperation]
3206    :ivar next_link: Link to retrieve next page of results.
3207    :vartype next_link: str
3208    """
3209
3210    _validation = {
3211        'value': {'readonly': True},
3212        'next_link': {'readonly': True},
3213    }
3214
3215    _attribute_map = {
3216        'value': {'key': 'value', 'type': '[ElasticPoolOperation]'},
3217        'next_link': {'key': 'nextLink', 'type': 'str'},
3218    }
3219
3220    def __init__(
3221        self,
3222        **kwargs
3223    ):
3224        super(ElasticPoolOperationListResult, self).__init__(**kwargs)
3225        self.value = None
3226        self.next_link = None
3227
3228
3229class ElasticPoolPerDatabaseMaxPerformanceLevelCapability(msrest.serialization.Model):
3230    """The max per-database performance level capability.
3231
3232    Variables are only populated by the server, and will be ignored when sending a request.
3233
3234    :ivar limit: The maximum performance level per database.
3235    :vartype limit: float
3236    :ivar unit: Unit type used to measure performance level. Possible values include: "DTU",
3237     "VCores".
3238    :vartype unit: str or ~azure.mgmt.sql.models.PerformanceLevelUnit
3239    :ivar supported_per_database_min_performance_levels: The list of supported min database
3240     performance levels.
3241    :vartype supported_per_database_min_performance_levels:
3242     list[~azure.mgmt.sql.models.ElasticPoolPerDatabaseMinPerformanceLevelCapability]
3243    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
3244     "Default", "Disabled".
3245    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
3246    :param reason: The reason for the capability not being available.
3247    :type reason: str
3248    """
3249
3250    _validation = {
3251        'limit': {'readonly': True},
3252        'unit': {'readonly': True},
3253        'supported_per_database_min_performance_levels': {'readonly': True},
3254        'status': {'readonly': True},
3255    }
3256
3257    _attribute_map = {
3258        'limit': {'key': 'limit', 'type': 'float'},
3259        'unit': {'key': 'unit', 'type': 'str'},
3260        'supported_per_database_min_performance_levels': {'key': 'supportedPerDatabaseMinPerformanceLevels', 'type': '[ElasticPoolPerDatabaseMinPerformanceLevelCapability]'},
3261        'status': {'key': 'status', 'type': 'str'},
3262        'reason': {'key': 'reason', 'type': 'str'},
3263    }
3264
3265    def __init__(
3266        self,
3267        **kwargs
3268    ):
3269        super(ElasticPoolPerDatabaseMaxPerformanceLevelCapability, self).__init__(**kwargs)
3270        self.limit = None
3271        self.unit = None
3272        self.supported_per_database_min_performance_levels = None
3273        self.status = None
3274        self.reason = kwargs.get('reason', None)
3275
3276
3277class ElasticPoolPerDatabaseMinPerformanceLevelCapability(msrest.serialization.Model):
3278    """The minimum per-database performance level capability.
3279
3280    Variables are only populated by the server, and will be ignored when sending a request.
3281
3282    :ivar limit: The minimum performance level per database.
3283    :vartype limit: float
3284    :ivar unit: Unit type used to measure performance level. Possible values include: "DTU",
3285     "VCores".
3286    :vartype unit: str or ~azure.mgmt.sql.models.PerformanceLevelUnit
3287    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
3288     "Default", "Disabled".
3289    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
3290    :param reason: The reason for the capability not being available.
3291    :type reason: str
3292    """
3293
3294    _validation = {
3295        'limit': {'readonly': True},
3296        'unit': {'readonly': True},
3297        'status': {'readonly': True},
3298    }
3299
3300    _attribute_map = {
3301        'limit': {'key': 'limit', 'type': 'float'},
3302        'unit': {'key': 'unit', 'type': 'str'},
3303        'status': {'key': 'status', 'type': 'str'},
3304        'reason': {'key': 'reason', 'type': 'str'},
3305    }
3306
3307    def __init__(
3308        self,
3309        **kwargs
3310    ):
3311        super(ElasticPoolPerDatabaseMinPerformanceLevelCapability, self).__init__(**kwargs)
3312        self.limit = None
3313        self.unit = None
3314        self.status = None
3315        self.reason = kwargs.get('reason', None)
3316
3317
3318class ElasticPoolPerDatabaseSettings(msrest.serialization.Model):
3319    """Per database settings of an elastic pool.
3320
3321    :param min_capacity: The minimum capacity all databases are guaranteed.
3322    :type min_capacity: float
3323    :param max_capacity: The maximum capacity any one database can consume.
3324    :type max_capacity: float
3325    """
3326
3327    _attribute_map = {
3328        'min_capacity': {'key': 'minCapacity', 'type': 'float'},
3329        'max_capacity': {'key': 'maxCapacity', 'type': 'float'},
3330    }
3331
3332    def __init__(
3333        self,
3334        **kwargs
3335    ):
3336        super(ElasticPoolPerDatabaseSettings, self).__init__(**kwargs)
3337        self.min_capacity = kwargs.get('min_capacity', None)
3338        self.max_capacity = kwargs.get('max_capacity', None)
3339
3340
3341class ElasticPoolPerformanceLevelCapability(msrest.serialization.Model):
3342    """The Elastic Pool performance level capability.
3343
3344    Variables are only populated by the server, and will be ignored when sending a request.
3345
3346    :ivar performance_level: The performance level for the pool.
3347    :vartype performance_level: ~azure.mgmt.sql.models.PerformanceLevelCapability
3348    :ivar sku: The sku.
3349    :vartype sku: ~azure.mgmt.sql.models.Sku
3350    :ivar supported_license_types: List of supported license types.
3351    :vartype supported_license_types: list[~azure.mgmt.sql.models.LicenseTypeCapability]
3352    :ivar max_database_count: The maximum number of databases supported.
3353    :vartype max_database_count: int
3354    :ivar included_max_size: The included (free) max size for this performance level.
3355    :vartype included_max_size: ~azure.mgmt.sql.models.MaxSizeCapability
3356    :ivar supported_max_sizes: The list of supported max sizes.
3357    :vartype supported_max_sizes: list[~azure.mgmt.sql.models.MaxSizeRangeCapability]
3358    :ivar supported_per_database_max_sizes: The list of supported per database max sizes.
3359    :vartype supported_per_database_max_sizes: list[~azure.mgmt.sql.models.MaxSizeRangeCapability]
3360    :ivar supported_per_database_max_performance_levels: The list of supported per database max
3361     performance levels.
3362    :vartype supported_per_database_max_performance_levels:
3363     list[~azure.mgmt.sql.models.ElasticPoolPerDatabaseMaxPerformanceLevelCapability]
3364    :ivar zone_redundant: Whether or not zone redundancy is supported for the performance level.
3365    :vartype zone_redundant: bool
3366    :ivar supported_maintenance_configurations: List of supported maintenance configurations.
3367    :vartype supported_maintenance_configurations:
3368     list[~azure.mgmt.sql.models.MaintenanceConfigurationCapability]
3369    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
3370     "Default", "Disabled".
3371    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
3372    :param reason: The reason for the capability not being available.
3373    :type reason: str
3374    """
3375
3376    _validation = {
3377        'performance_level': {'readonly': True},
3378        'sku': {'readonly': True},
3379        'supported_license_types': {'readonly': True},
3380        'max_database_count': {'readonly': True},
3381        'included_max_size': {'readonly': True},
3382        'supported_max_sizes': {'readonly': True},
3383        'supported_per_database_max_sizes': {'readonly': True},
3384        'supported_per_database_max_performance_levels': {'readonly': True},
3385        'zone_redundant': {'readonly': True},
3386        'supported_maintenance_configurations': {'readonly': True},
3387        'status': {'readonly': True},
3388    }
3389
3390    _attribute_map = {
3391        'performance_level': {'key': 'performanceLevel', 'type': 'PerformanceLevelCapability'},
3392        'sku': {'key': 'sku', 'type': 'Sku'},
3393        'supported_license_types': {'key': 'supportedLicenseTypes', 'type': '[LicenseTypeCapability]'},
3394        'max_database_count': {'key': 'maxDatabaseCount', 'type': 'int'},
3395        'included_max_size': {'key': 'includedMaxSize', 'type': 'MaxSizeCapability'},
3396        'supported_max_sizes': {'key': 'supportedMaxSizes', 'type': '[MaxSizeRangeCapability]'},
3397        'supported_per_database_max_sizes': {'key': 'supportedPerDatabaseMaxSizes', 'type': '[MaxSizeRangeCapability]'},
3398        'supported_per_database_max_performance_levels': {'key': 'supportedPerDatabaseMaxPerformanceLevels', 'type': '[ElasticPoolPerDatabaseMaxPerformanceLevelCapability]'},
3399        'zone_redundant': {'key': 'zoneRedundant', 'type': 'bool'},
3400        'supported_maintenance_configurations': {'key': 'supportedMaintenanceConfigurations', 'type': '[MaintenanceConfigurationCapability]'},
3401        'status': {'key': 'status', 'type': 'str'},
3402        'reason': {'key': 'reason', 'type': 'str'},
3403    }
3404
3405    def __init__(
3406        self,
3407        **kwargs
3408    ):
3409        super(ElasticPoolPerformanceLevelCapability, self).__init__(**kwargs)
3410        self.performance_level = None
3411        self.sku = None
3412        self.supported_license_types = None
3413        self.max_database_count = None
3414        self.included_max_size = None
3415        self.supported_max_sizes = None
3416        self.supported_per_database_max_sizes = None
3417        self.supported_per_database_max_performance_levels = None
3418        self.zone_redundant = None
3419        self.supported_maintenance_configurations = None
3420        self.status = None
3421        self.reason = kwargs.get('reason', None)
3422
3423
3424class ElasticPoolUpdate(msrest.serialization.Model):
3425    """An elastic pool update.
3426
3427    :param sku: An ARM Resource SKU.
3428    :type sku: ~azure.mgmt.sql.models.Sku
3429    :param tags: A set of tags. Resource tags.
3430    :type tags: dict[str, str]
3431    :param max_size_bytes: The storage limit for the database elastic pool in bytes.
3432    :type max_size_bytes: long
3433    :param per_database_settings: The per database settings for the elastic pool.
3434    :type per_database_settings: ~azure.mgmt.sql.models.ElasticPoolPerDatabaseSettings
3435    :param zone_redundant: Whether or not this elastic pool is zone redundant, which means the
3436     replicas of this elastic pool will be spread across multiple availability zones.
3437    :type zone_redundant: bool
3438    :param license_type: The license type to apply for this elastic pool. Possible values include:
3439     "LicenseIncluded", "BasePrice".
3440    :type license_type: str or ~azure.mgmt.sql.models.ElasticPoolLicenseType
3441    :param maintenance_configuration_id: Maintenance configuration id assigned to the elastic pool.
3442     This configuration defines the period when the maintenance updates will will occur.
3443    :type maintenance_configuration_id: str
3444    """
3445
3446    _attribute_map = {
3447        'sku': {'key': 'sku', 'type': 'Sku'},
3448        'tags': {'key': 'tags', 'type': '{str}'},
3449        'max_size_bytes': {'key': 'properties.maxSizeBytes', 'type': 'long'},
3450        'per_database_settings': {'key': 'properties.perDatabaseSettings', 'type': 'ElasticPoolPerDatabaseSettings'},
3451        'zone_redundant': {'key': 'properties.zoneRedundant', 'type': 'bool'},
3452        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
3453        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
3454    }
3455
3456    def __init__(
3457        self,
3458        **kwargs
3459    ):
3460        super(ElasticPoolUpdate, self).__init__(**kwargs)
3461        self.sku = kwargs.get('sku', None)
3462        self.tags = kwargs.get('tags', None)
3463        self.max_size_bytes = kwargs.get('max_size_bytes', None)
3464        self.per_database_settings = kwargs.get('per_database_settings', None)
3465        self.zone_redundant = kwargs.get('zone_redundant', None)
3466        self.license_type = kwargs.get('license_type', None)
3467        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
3468
3469
3470class EncryptionProtector(ProxyResource):
3471    """The server encryption protector.
3472
3473    Variables are only populated by the server, and will be ignored when sending a request.
3474
3475    :ivar id: Resource ID.
3476    :vartype id: str
3477    :ivar name: Resource name.
3478    :vartype name: str
3479    :ivar type: Resource type.
3480    :vartype type: str
3481    :ivar kind: Kind of encryption protector. This is metadata used for the Azure portal
3482     experience.
3483    :vartype kind: str
3484    :ivar location: Resource location.
3485    :vartype location: str
3486    :ivar subregion: Subregion of the encryption protector.
3487    :vartype subregion: str
3488    :param server_key_name: The name of the server key.
3489    :type server_key_name: str
3490    :param server_key_type: The encryption protector type like 'ServiceManaged', 'AzureKeyVault'.
3491     Possible values include: "ServiceManaged", "AzureKeyVault".
3492    :type server_key_type: str or ~azure.mgmt.sql.models.ServerKeyType
3493    :ivar uri: The URI of the server key.
3494    :vartype uri: str
3495    :ivar thumbprint: Thumbprint of the server key.
3496    :vartype thumbprint: str
3497    :param auto_rotation_enabled: Key auto rotation opt-in flag. Either true or false.
3498    :type auto_rotation_enabled: bool
3499    """
3500
3501    _validation = {
3502        'id': {'readonly': True},
3503        'name': {'readonly': True},
3504        'type': {'readonly': True},
3505        'kind': {'readonly': True},
3506        'location': {'readonly': True},
3507        'subregion': {'readonly': True},
3508        'uri': {'readonly': True},
3509        'thumbprint': {'readonly': True},
3510    }
3511
3512    _attribute_map = {
3513        'id': {'key': 'id', 'type': 'str'},
3514        'name': {'key': 'name', 'type': 'str'},
3515        'type': {'key': 'type', 'type': 'str'},
3516        'kind': {'key': 'kind', 'type': 'str'},
3517        'location': {'key': 'location', 'type': 'str'},
3518        'subregion': {'key': 'properties.subregion', 'type': 'str'},
3519        'server_key_name': {'key': 'properties.serverKeyName', 'type': 'str'},
3520        'server_key_type': {'key': 'properties.serverKeyType', 'type': 'str'},
3521        'uri': {'key': 'properties.uri', 'type': 'str'},
3522        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
3523        'auto_rotation_enabled': {'key': 'properties.autoRotationEnabled', 'type': 'bool'},
3524    }
3525
3526    def __init__(
3527        self,
3528        **kwargs
3529    ):
3530        super(EncryptionProtector, self).__init__(**kwargs)
3531        self.kind = None
3532        self.location = None
3533        self.subregion = None
3534        self.server_key_name = kwargs.get('server_key_name', None)
3535        self.server_key_type = kwargs.get('server_key_type', None)
3536        self.uri = None
3537        self.thumbprint = None
3538        self.auto_rotation_enabled = kwargs.get('auto_rotation_enabled', None)
3539
3540
3541class EncryptionProtectorListResult(msrest.serialization.Model):
3542    """A list of server encryption protectors.
3543
3544    Variables are only populated by the server, and will be ignored when sending a request.
3545
3546    :ivar value: Array of results.
3547    :vartype value: list[~azure.mgmt.sql.models.EncryptionProtector]
3548    :ivar next_link: Link to retrieve next page of results.
3549    :vartype next_link: str
3550    """
3551
3552    _validation = {
3553        'value': {'readonly': True},
3554        'next_link': {'readonly': True},
3555    }
3556
3557    _attribute_map = {
3558        'value': {'key': 'value', 'type': '[EncryptionProtector]'},
3559        'next_link': {'key': 'nextLink', 'type': 'str'},
3560    }
3561
3562    def __init__(
3563        self,
3564        **kwargs
3565    ):
3566        super(EncryptionProtectorListResult, self).__init__(**kwargs)
3567        self.value = None
3568        self.next_link = None
3569
3570
3571class ExportDatabaseDefinition(msrest.serialization.Model):
3572    """Contains the information necessary to perform export database operation.
3573
3574    All required parameters must be populated in order to send to Azure.
3575
3576    :param storage_key_type: Required. Storage key type. Possible values include:
3577     "SharedAccessKey", "StorageAccessKey".
3578    :type storage_key_type: str or ~azure.mgmt.sql.models.StorageKeyType
3579    :param storage_key: Required. Storage key.
3580    :type storage_key: str
3581    :param storage_uri: Required. Storage Uri.
3582    :type storage_uri: str
3583    :param administrator_login: Required. Administrator login name.
3584    :type administrator_login: str
3585    :param administrator_login_password: Required. Administrator login password.
3586    :type administrator_login_password: str
3587    :param authentication_type: Authentication type.
3588    :type authentication_type: str
3589    :param network_isolation: Optional resource information to enable network isolation for
3590     request.
3591    :type network_isolation: ~azure.mgmt.sql.models.NetworkIsolationSettings
3592    """
3593
3594    _validation = {
3595        'storage_key_type': {'required': True},
3596        'storage_key': {'required': True},
3597        'storage_uri': {'required': True},
3598        'administrator_login': {'required': True},
3599        'administrator_login_password': {'required': True},
3600    }
3601
3602    _attribute_map = {
3603        'storage_key_type': {'key': 'storageKeyType', 'type': 'str'},
3604        'storage_key': {'key': 'storageKey', 'type': 'str'},
3605        'storage_uri': {'key': 'storageUri', 'type': 'str'},
3606        'administrator_login': {'key': 'administratorLogin', 'type': 'str'},
3607        'administrator_login_password': {'key': 'administratorLoginPassword', 'type': 'str'},
3608        'authentication_type': {'key': 'authenticationType', 'type': 'str'},
3609        'network_isolation': {'key': 'networkIsolation', 'type': 'NetworkIsolationSettings'},
3610    }
3611
3612    def __init__(
3613        self,
3614        **kwargs
3615    ):
3616        super(ExportDatabaseDefinition, self).__init__(**kwargs)
3617        self.storage_key_type = kwargs['storage_key_type']
3618        self.storage_key = kwargs['storage_key']
3619        self.storage_uri = kwargs['storage_uri']
3620        self.administrator_login = kwargs['administrator_login']
3621        self.administrator_login_password = kwargs['administrator_login_password']
3622        self.authentication_type = kwargs.get('authentication_type', None)
3623        self.network_isolation = kwargs.get('network_isolation', None)
3624
3625
3626class ExtendedDatabaseBlobAuditingPolicy(ProxyResource):
3627    """An extended database blob auditing policy.
3628
3629    Variables are only populated by the server, and will be ignored when sending a request.
3630
3631    :ivar id: Resource ID.
3632    :vartype id: str
3633    :ivar name: Resource name.
3634    :vartype name: str
3635    :ivar type: Resource type.
3636    :vartype type: str
3637    :param predicate_expression: Specifies condition of where clause when creating an audit.
3638    :type predicate_expression: str
3639    :param retention_days: Specifies the number of days to keep in the audit logs in the storage
3640     account.
3641    :type retention_days: int
3642    :param audit_actions_and_groups: Specifies the Actions-Groups and Actions to audit.
3643
3644     The recommended set of action groups to use is the following combination - this will audit all
3645     the queries and stored procedures executed against the database, as well as successful and
3646     failed logins:
3647
3648     BATCH_COMPLETED_GROUP,
3649     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
3650     FAILED_DATABASE_AUTHENTICATION_GROUP.
3651
3652     This above combination is also the set that is configured by default when enabling auditing
3653     from the Azure portal.
3654
3655     The supported action groups to audit are (note: choose only specific groups that cover your
3656     auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
3657
3658     APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
3659     BACKUP_RESTORE_GROUP
3660     DATABASE_LOGOUT_GROUP
3661     DATABASE_OBJECT_CHANGE_GROUP
3662     DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
3663     DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
3664     DATABASE_OPERATION_GROUP
3665     DATABASE_PERMISSION_CHANGE_GROUP
3666     DATABASE_PRINCIPAL_CHANGE_GROUP
3667     DATABASE_PRINCIPAL_IMPERSONATION_GROUP
3668     DATABASE_ROLE_MEMBER_CHANGE_GROUP
3669     FAILED_DATABASE_AUTHENTICATION_GROUP
3670     SCHEMA_OBJECT_ACCESS_GROUP
3671     SCHEMA_OBJECT_CHANGE_GROUP
3672     SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
3673     SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
3674     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
3675     USER_CHANGE_PASSWORD_GROUP
3676     BATCH_STARTED_GROUP
3677     BATCH_COMPLETED_GROUP
3678
3679     These are groups that cover all sql statements and stored procedures executed against the
3680     database, and should not be used in combination with other groups as this will result in
3681     duplicate audit logs.
3682
3683     For more information, see `Database-Level Audit Action Groups
3684     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups>`_.
3685
3686     For Database auditing policy, specific Actions can also be specified (note that Actions cannot
3687     be specified for Server auditing policy). The supported actions to audit are:
3688     SELECT
3689     UPDATE
3690     INSERT
3691     DELETE
3692     EXECUTE
3693     RECEIVE
3694     REFERENCES
3695
3696     The general form for defining an action to be audited is:
3697     {action} ON {object} BY {principal}
3698
3699     Note that :code:`<object>` in the above format can refer to an object like a table, view, or
3700     stored procedure, or an entire database or schema. For the latter cases, the forms
3701     DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
3702
3703     For example:
3704     SELECT on dbo.myTable by public
3705     SELECT on DATABASE::myDatabase by public
3706     SELECT on SCHEMA::mySchema by public
3707
3708     For more information, see `Database-Level Audit Actions
3709     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions>`_.
3710    :type audit_actions_and_groups: list[str]
3711    :param is_storage_secondary_key_in_use: Specifies whether storageAccountAccessKey value is the
3712     storage's secondary key.
3713    :type is_storage_secondary_key_in_use: bool
3714    :param is_azure_monitor_target_enabled: Specifies whether audit events are sent to Azure
3715     Monitor.
3716     In order to send the events to Azure Monitor, specify 'State' as 'Enabled' and
3717     'IsAzureMonitorTargetEnabled' as true.
3718
3719     When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents'
3720     diagnostic logs category on the database should be also created.
3721     Note that for server level audit you should use the 'master' database as {databaseName}.
3722
3723     Diagnostic Settings URI format:
3724     PUT
3725     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
3726
3727     For more information, see `Diagnostic Settings REST API
3728     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
3729     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
3730    :type is_azure_monitor_target_enabled: bool
3731    :param queue_delay_ms: Specifies the amount of time in milliseconds that can elapse before
3732     audit actions are forced to be processed.
3733     The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
3734    :type queue_delay_ms: int
3735    :param state: Specifies the state of the audit. If state is Enabled, storageEndpoint or
3736     isAzureMonitorTargetEnabled are required. Possible values include: "Enabled", "Disabled".
3737    :type state: str or ~azure.mgmt.sql.models.BlobAuditingPolicyState
3738    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
3739     https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or
3740     isAzureMonitorTargetEnabled is required.
3741    :type storage_endpoint: str
3742    :param storage_account_access_key: Specifies the identifier key of the auditing storage
3743     account.
3744     If state is Enabled and storageEndpoint is specified, not specifying the
3745     storageAccountAccessKey will use SQL server system-assigned managed identity to access the
3746     storage.
3747     Prerequisites for using managed identity authentication:
3748
3749
3750     #. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
3751     #. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data
3752     Contributor' RBAC role to the server identity.
3753        For more information, see `Auditing to storage using Managed Identity authentication
3754     <https://go.microsoft.com/fwlink/?linkid=2114355>`_.
3755    :type storage_account_access_key: str
3756    :param storage_account_subscription_id: Specifies the blob storage subscription Id.
3757    :type storage_account_subscription_id: str
3758    """
3759
3760    _validation = {
3761        'id': {'readonly': True},
3762        'name': {'readonly': True},
3763        'type': {'readonly': True},
3764    }
3765
3766    _attribute_map = {
3767        'id': {'key': 'id', 'type': 'str'},
3768        'name': {'key': 'name', 'type': 'str'},
3769        'type': {'key': 'type', 'type': 'str'},
3770        'predicate_expression': {'key': 'properties.predicateExpression', 'type': 'str'},
3771        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
3772        'audit_actions_and_groups': {'key': 'properties.auditActionsAndGroups', 'type': '[str]'},
3773        'is_storage_secondary_key_in_use': {'key': 'properties.isStorageSecondaryKeyInUse', 'type': 'bool'},
3774        'is_azure_monitor_target_enabled': {'key': 'properties.isAzureMonitorTargetEnabled', 'type': 'bool'},
3775        'queue_delay_ms': {'key': 'properties.queueDelayMs', 'type': 'int'},
3776        'state': {'key': 'properties.state', 'type': 'str'},
3777        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
3778        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
3779        'storage_account_subscription_id': {'key': 'properties.storageAccountSubscriptionId', 'type': 'str'},
3780    }
3781
3782    def __init__(
3783        self,
3784        **kwargs
3785    ):
3786        super(ExtendedDatabaseBlobAuditingPolicy, self).__init__(**kwargs)
3787        self.predicate_expression = kwargs.get('predicate_expression', None)
3788        self.retention_days = kwargs.get('retention_days', None)
3789        self.audit_actions_and_groups = kwargs.get('audit_actions_and_groups', None)
3790        self.is_storage_secondary_key_in_use = kwargs.get('is_storage_secondary_key_in_use', None)
3791        self.is_azure_monitor_target_enabled = kwargs.get('is_azure_monitor_target_enabled', None)
3792        self.queue_delay_ms = kwargs.get('queue_delay_ms', None)
3793        self.state = kwargs.get('state', None)
3794        self.storage_endpoint = kwargs.get('storage_endpoint', None)
3795        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
3796        self.storage_account_subscription_id = kwargs.get('storage_account_subscription_id', None)
3797
3798
3799class ExtendedDatabaseBlobAuditingPolicyListResult(msrest.serialization.Model):
3800    """A list of database extended auditing settings.
3801
3802    Variables are only populated by the server, and will be ignored when sending a request.
3803
3804    :ivar value: Array of results.
3805    :vartype value: list[~azure.mgmt.sql.models.ExtendedDatabaseBlobAuditingPolicy]
3806    :ivar next_link: Link to retrieve next page of results.
3807    :vartype next_link: str
3808    """
3809
3810    _validation = {
3811        'value': {'readonly': True},
3812        'next_link': {'readonly': True},
3813    }
3814
3815    _attribute_map = {
3816        'value': {'key': 'value', 'type': '[ExtendedDatabaseBlobAuditingPolicy]'},
3817        'next_link': {'key': 'nextLink', 'type': 'str'},
3818    }
3819
3820    def __init__(
3821        self,
3822        **kwargs
3823    ):
3824        super(ExtendedDatabaseBlobAuditingPolicyListResult, self).__init__(**kwargs)
3825        self.value = None
3826        self.next_link = None
3827
3828
3829class ExtendedServerBlobAuditingPolicy(ProxyResource):
3830    """An extended server blob auditing policy.
3831
3832    Variables are only populated by the server, and will be ignored when sending a request.
3833
3834    :ivar id: Resource ID.
3835    :vartype id: str
3836    :ivar name: Resource name.
3837    :vartype name: str
3838    :ivar type: Resource type.
3839    :vartype type: str
3840    :param is_devops_audit_enabled: Specifies the state of devops audit. If state is Enabled,
3841     devops logs will be sent to Azure Monitor.
3842     In order to send the events to Azure Monitor, specify 'State' as 'Enabled',
3843     'IsAzureMonitorTargetEnabled' as true and 'IsDevopsAuditEnabled' as true
3844
3845     When using REST API to configure auditing, Diagnostic Settings with 'DevOpsOperationsAudit'
3846     diagnostic logs category on the master database should also be created.
3847
3848     Diagnostic Settings URI format:
3849     PUT
3850     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/master/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
3851
3852     For more information, see `Diagnostic Settings REST API
3853     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
3854     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
3855    :type is_devops_audit_enabled: bool
3856    :param predicate_expression: Specifies condition of where clause when creating an audit.
3857    :type predicate_expression: str
3858    :param retention_days: Specifies the number of days to keep in the audit logs in the storage
3859     account.
3860    :type retention_days: int
3861    :param audit_actions_and_groups: Specifies the Actions-Groups and Actions to audit.
3862
3863     The recommended set of action groups to use is the following combination - this will audit all
3864     the queries and stored procedures executed against the database, as well as successful and
3865     failed logins:
3866
3867     BATCH_COMPLETED_GROUP,
3868     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
3869     FAILED_DATABASE_AUTHENTICATION_GROUP.
3870
3871     This above combination is also the set that is configured by default when enabling auditing
3872     from the Azure portal.
3873
3874     The supported action groups to audit are (note: choose only specific groups that cover your
3875     auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
3876
3877     APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
3878     BACKUP_RESTORE_GROUP
3879     DATABASE_LOGOUT_GROUP
3880     DATABASE_OBJECT_CHANGE_GROUP
3881     DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
3882     DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
3883     DATABASE_OPERATION_GROUP
3884     DATABASE_PERMISSION_CHANGE_GROUP
3885     DATABASE_PRINCIPAL_CHANGE_GROUP
3886     DATABASE_PRINCIPAL_IMPERSONATION_GROUP
3887     DATABASE_ROLE_MEMBER_CHANGE_GROUP
3888     FAILED_DATABASE_AUTHENTICATION_GROUP
3889     SCHEMA_OBJECT_ACCESS_GROUP
3890     SCHEMA_OBJECT_CHANGE_GROUP
3891     SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
3892     SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
3893     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
3894     USER_CHANGE_PASSWORD_GROUP
3895     BATCH_STARTED_GROUP
3896     BATCH_COMPLETED_GROUP
3897
3898     These are groups that cover all sql statements and stored procedures executed against the
3899     database, and should not be used in combination with other groups as this will result in
3900     duplicate audit logs.
3901
3902     For more information, see `Database-Level Audit Action Groups
3903     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups>`_.
3904
3905     For Database auditing policy, specific Actions can also be specified (note that Actions cannot
3906     be specified for Server auditing policy). The supported actions to audit are:
3907     SELECT
3908     UPDATE
3909     INSERT
3910     DELETE
3911     EXECUTE
3912     RECEIVE
3913     REFERENCES
3914
3915     The general form for defining an action to be audited is:
3916     {action} ON {object} BY {principal}
3917
3918     Note that :code:`<object>` in the above format can refer to an object like a table, view, or
3919     stored procedure, or an entire database or schema. For the latter cases, the forms
3920     DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
3921
3922     For example:
3923     SELECT on dbo.myTable by public
3924     SELECT on DATABASE::myDatabase by public
3925     SELECT on SCHEMA::mySchema by public
3926
3927     For more information, see `Database-Level Audit Actions
3928     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions>`_.
3929    :type audit_actions_and_groups: list[str]
3930    :param is_storage_secondary_key_in_use: Specifies whether storageAccountAccessKey value is the
3931     storage's secondary key.
3932    :type is_storage_secondary_key_in_use: bool
3933    :param is_azure_monitor_target_enabled: Specifies whether audit events are sent to Azure
3934     Monitor.
3935     In order to send the events to Azure Monitor, specify 'State' as 'Enabled' and
3936     'IsAzureMonitorTargetEnabled' as true.
3937
3938     When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents'
3939     diagnostic logs category on the database should be also created.
3940     Note that for server level audit you should use the 'master' database as {databaseName}.
3941
3942     Diagnostic Settings URI format:
3943     PUT
3944     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
3945
3946     For more information, see `Diagnostic Settings REST API
3947     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
3948     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
3949    :type is_azure_monitor_target_enabled: bool
3950    :param queue_delay_ms: Specifies the amount of time in milliseconds that can elapse before
3951     audit actions are forced to be processed.
3952     The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
3953    :type queue_delay_ms: int
3954    :param state: Specifies the state of the audit. If state is Enabled, storageEndpoint or
3955     isAzureMonitorTargetEnabled are required. Possible values include: "Enabled", "Disabled".
3956    :type state: str or ~azure.mgmt.sql.models.BlobAuditingPolicyState
3957    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
3958     https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or
3959     isAzureMonitorTargetEnabled is required.
3960    :type storage_endpoint: str
3961    :param storage_account_access_key: Specifies the identifier key of the auditing storage
3962     account.
3963     If state is Enabled and storageEndpoint is specified, not specifying the
3964     storageAccountAccessKey will use SQL server system-assigned managed identity to access the
3965     storage.
3966     Prerequisites for using managed identity authentication:
3967
3968
3969     #. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
3970     #. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data
3971     Contributor' RBAC role to the server identity.
3972        For more information, see `Auditing to storage using Managed Identity authentication
3973     <https://go.microsoft.com/fwlink/?linkid=2114355>`_.
3974    :type storage_account_access_key: str
3975    :param storage_account_subscription_id: Specifies the blob storage subscription Id.
3976    :type storage_account_subscription_id: str
3977    """
3978
3979    _validation = {
3980        'id': {'readonly': True},
3981        'name': {'readonly': True},
3982        'type': {'readonly': True},
3983    }
3984
3985    _attribute_map = {
3986        'id': {'key': 'id', 'type': 'str'},
3987        'name': {'key': 'name', 'type': 'str'},
3988        'type': {'key': 'type', 'type': 'str'},
3989        'is_devops_audit_enabled': {'key': 'properties.isDevopsAuditEnabled', 'type': 'bool'},
3990        'predicate_expression': {'key': 'properties.predicateExpression', 'type': 'str'},
3991        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
3992        'audit_actions_and_groups': {'key': 'properties.auditActionsAndGroups', 'type': '[str]'},
3993        'is_storage_secondary_key_in_use': {'key': 'properties.isStorageSecondaryKeyInUse', 'type': 'bool'},
3994        'is_azure_monitor_target_enabled': {'key': 'properties.isAzureMonitorTargetEnabled', 'type': 'bool'},
3995        'queue_delay_ms': {'key': 'properties.queueDelayMs', 'type': 'int'},
3996        'state': {'key': 'properties.state', 'type': 'str'},
3997        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
3998        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
3999        'storage_account_subscription_id': {'key': 'properties.storageAccountSubscriptionId', 'type': 'str'},
4000    }
4001
4002    def __init__(
4003        self,
4004        **kwargs
4005    ):
4006        super(ExtendedServerBlobAuditingPolicy, self).__init__(**kwargs)
4007        self.is_devops_audit_enabled = kwargs.get('is_devops_audit_enabled', None)
4008        self.predicate_expression = kwargs.get('predicate_expression', None)
4009        self.retention_days = kwargs.get('retention_days', None)
4010        self.audit_actions_and_groups = kwargs.get('audit_actions_and_groups', None)
4011        self.is_storage_secondary_key_in_use = kwargs.get('is_storage_secondary_key_in_use', None)
4012        self.is_azure_monitor_target_enabled = kwargs.get('is_azure_monitor_target_enabled', None)
4013        self.queue_delay_ms = kwargs.get('queue_delay_ms', None)
4014        self.state = kwargs.get('state', None)
4015        self.storage_endpoint = kwargs.get('storage_endpoint', None)
4016        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
4017        self.storage_account_subscription_id = kwargs.get('storage_account_subscription_id', None)
4018
4019
4020class ExtendedServerBlobAuditingPolicyListResult(msrest.serialization.Model):
4021    """A list of server extended auditing settings.
4022
4023    Variables are only populated by the server, and will be ignored when sending a request.
4024
4025    :ivar value: Array of results.
4026    :vartype value: list[~azure.mgmt.sql.models.ExtendedServerBlobAuditingPolicy]
4027    :ivar next_link: Link to retrieve next page of results.
4028    :vartype next_link: str
4029    """
4030
4031    _validation = {
4032        'value': {'readonly': True},
4033        'next_link': {'readonly': True},
4034    }
4035
4036    _attribute_map = {
4037        'value': {'key': 'value', 'type': '[ExtendedServerBlobAuditingPolicy]'},
4038        'next_link': {'key': 'nextLink', 'type': 'str'},
4039    }
4040
4041    def __init__(
4042        self,
4043        **kwargs
4044    ):
4045        super(ExtendedServerBlobAuditingPolicyListResult, self).__init__(**kwargs)
4046        self.value = None
4047        self.next_link = None
4048
4049
4050class FailoverGroup(ProxyResource):
4051    """A failover group.
4052
4053    Variables are only populated by the server, and will be ignored when sending a request.
4054
4055    :ivar id: Resource ID.
4056    :vartype id: str
4057    :ivar name: Resource name.
4058    :vartype name: str
4059    :ivar type: Resource type.
4060    :vartype type: str
4061    :ivar location: Resource location.
4062    :vartype location: str
4063    :param tags: A set of tags. Resource tags.
4064    :type tags: dict[str, str]
4065    :param read_write_endpoint: Read-write endpoint of the failover group instance.
4066    :type read_write_endpoint: ~azure.mgmt.sql.models.FailoverGroupReadWriteEndpoint
4067    :param read_only_endpoint: Read-only endpoint of the failover group instance.
4068    :type read_only_endpoint: ~azure.mgmt.sql.models.FailoverGroupReadOnlyEndpoint
4069    :ivar replication_role: Local replication role of the failover group instance. Possible values
4070     include: "Primary", "Secondary".
4071    :vartype replication_role: str or ~azure.mgmt.sql.models.FailoverGroupReplicationRole
4072    :ivar replication_state: Replication state of the failover group instance.
4073    :vartype replication_state: str
4074    :param partner_servers: List of partner server information for the failover group.
4075    :type partner_servers: list[~azure.mgmt.sql.models.PartnerInfo]
4076    :param databases: List of databases in the failover group.
4077    :type databases: list[str]
4078    """
4079
4080    _validation = {
4081        'id': {'readonly': True},
4082        'name': {'readonly': True},
4083        'type': {'readonly': True},
4084        'location': {'readonly': True},
4085        'replication_role': {'readonly': True},
4086        'replication_state': {'readonly': True},
4087    }
4088
4089    _attribute_map = {
4090        'id': {'key': 'id', 'type': 'str'},
4091        'name': {'key': 'name', 'type': 'str'},
4092        'type': {'key': 'type', 'type': 'str'},
4093        'location': {'key': 'location', 'type': 'str'},
4094        'tags': {'key': 'tags', 'type': '{str}'},
4095        'read_write_endpoint': {'key': 'properties.readWriteEndpoint', 'type': 'FailoverGroupReadWriteEndpoint'},
4096        'read_only_endpoint': {'key': 'properties.readOnlyEndpoint', 'type': 'FailoverGroupReadOnlyEndpoint'},
4097        'replication_role': {'key': 'properties.replicationRole', 'type': 'str'},
4098        'replication_state': {'key': 'properties.replicationState', 'type': 'str'},
4099        'partner_servers': {'key': 'properties.partnerServers', 'type': '[PartnerInfo]'},
4100        'databases': {'key': 'properties.databases', 'type': '[str]'},
4101    }
4102
4103    def __init__(
4104        self,
4105        **kwargs
4106    ):
4107        super(FailoverGroup, self).__init__(**kwargs)
4108        self.location = None
4109        self.tags = kwargs.get('tags', None)
4110        self.read_write_endpoint = kwargs.get('read_write_endpoint', None)
4111        self.read_only_endpoint = kwargs.get('read_only_endpoint', None)
4112        self.replication_role = None
4113        self.replication_state = None
4114        self.partner_servers = kwargs.get('partner_servers', None)
4115        self.databases = kwargs.get('databases', None)
4116
4117
4118class FailoverGroupListResult(msrest.serialization.Model):
4119    """A list of failover groups.
4120
4121    Variables are only populated by the server, and will be ignored when sending a request.
4122
4123    :ivar value: Array of results.
4124    :vartype value: list[~azure.mgmt.sql.models.FailoverGroup]
4125    :ivar next_link: Link to retrieve next page of results.
4126    :vartype next_link: str
4127    """
4128
4129    _validation = {
4130        'value': {'readonly': True},
4131        'next_link': {'readonly': True},
4132    }
4133
4134    _attribute_map = {
4135        'value': {'key': 'value', 'type': '[FailoverGroup]'},
4136        'next_link': {'key': 'nextLink', 'type': 'str'},
4137    }
4138
4139    def __init__(
4140        self,
4141        **kwargs
4142    ):
4143        super(FailoverGroupListResult, self).__init__(**kwargs)
4144        self.value = None
4145        self.next_link = None
4146
4147
4148class FailoverGroupReadOnlyEndpoint(msrest.serialization.Model):
4149    """Read-only endpoint of the failover group instance.
4150
4151    :param failover_policy: Failover policy of the read-only endpoint for the failover group.
4152     Possible values include: "Disabled", "Enabled".
4153    :type failover_policy: str or ~azure.mgmt.sql.models.ReadOnlyEndpointFailoverPolicy
4154    """
4155
4156    _attribute_map = {
4157        'failover_policy': {'key': 'failoverPolicy', 'type': 'str'},
4158    }
4159
4160    def __init__(
4161        self,
4162        **kwargs
4163    ):
4164        super(FailoverGroupReadOnlyEndpoint, self).__init__(**kwargs)
4165        self.failover_policy = kwargs.get('failover_policy', None)
4166
4167
4168class FailoverGroupReadWriteEndpoint(msrest.serialization.Model):
4169    """Read-write endpoint of the failover group instance.
4170
4171    All required parameters must be populated in order to send to Azure.
4172
4173    :param failover_policy: Required. Failover policy of the read-write endpoint for the failover
4174     group. If failoverPolicy is Automatic then failoverWithDataLossGracePeriodMinutes is required.
4175     Possible values include: "Manual", "Automatic".
4176    :type failover_policy: str or ~azure.mgmt.sql.models.ReadWriteEndpointFailoverPolicy
4177    :param failover_with_data_loss_grace_period_minutes: Grace period before failover with data
4178     loss is attempted for the read-write endpoint. If failoverPolicy is Automatic then
4179     failoverWithDataLossGracePeriodMinutes is required.
4180    :type failover_with_data_loss_grace_period_minutes: int
4181    """
4182
4183    _validation = {
4184        'failover_policy': {'required': True},
4185    }
4186
4187    _attribute_map = {
4188        'failover_policy': {'key': 'failoverPolicy', 'type': 'str'},
4189        'failover_with_data_loss_grace_period_minutes': {'key': 'failoverWithDataLossGracePeriodMinutes', 'type': 'int'},
4190    }
4191
4192    def __init__(
4193        self,
4194        **kwargs
4195    ):
4196        super(FailoverGroupReadWriteEndpoint, self).__init__(**kwargs)
4197        self.failover_policy = kwargs['failover_policy']
4198        self.failover_with_data_loss_grace_period_minutes = kwargs.get('failover_with_data_loss_grace_period_minutes', None)
4199
4200
4201class FailoverGroupUpdate(msrest.serialization.Model):
4202    """A failover group update request.
4203
4204    :param tags: A set of tags. Resource tags.
4205    :type tags: dict[str, str]
4206    :param read_write_endpoint: Read-write endpoint of the failover group instance.
4207    :type read_write_endpoint: ~azure.mgmt.sql.models.FailoverGroupReadWriteEndpoint
4208    :param read_only_endpoint: Read-only endpoint of the failover group instance.
4209    :type read_only_endpoint: ~azure.mgmt.sql.models.FailoverGroupReadOnlyEndpoint
4210    :param databases: List of databases in the failover group.
4211    :type databases: list[str]
4212    """
4213
4214    _attribute_map = {
4215        'tags': {'key': 'tags', 'type': '{str}'},
4216        'read_write_endpoint': {'key': 'properties.readWriteEndpoint', 'type': 'FailoverGroupReadWriteEndpoint'},
4217        'read_only_endpoint': {'key': 'properties.readOnlyEndpoint', 'type': 'FailoverGroupReadOnlyEndpoint'},
4218        'databases': {'key': 'properties.databases', 'type': '[str]'},
4219    }
4220
4221    def __init__(
4222        self,
4223        **kwargs
4224    ):
4225        super(FailoverGroupUpdate, self).__init__(**kwargs)
4226        self.tags = kwargs.get('tags', None)
4227        self.read_write_endpoint = kwargs.get('read_write_endpoint', None)
4228        self.read_only_endpoint = kwargs.get('read_only_endpoint', None)
4229        self.databases = kwargs.get('databases', None)
4230
4231
4232class ResourceWithWritableName(msrest.serialization.Model):
4233    """ARM resource.
4234
4235    Variables are only populated by the server, and will be ignored when sending a request.
4236
4237    :ivar id: Resource ID.
4238    :vartype id: str
4239    :param name: Resource name.
4240    :type name: str
4241    :ivar type: Resource type.
4242    :vartype type: str
4243    """
4244
4245    _validation = {
4246        'id': {'readonly': True},
4247        'type': {'readonly': True},
4248    }
4249
4250    _attribute_map = {
4251        'id': {'key': 'id', 'type': 'str'},
4252        'name': {'key': 'name', 'type': 'str'},
4253        'type': {'key': 'type', 'type': 'str'},
4254    }
4255
4256    def __init__(
4257        self,
4258        **kwargs
4259    ):
4260        super(ResourceWithWritableName, self).__init__(**kwargs)
4261        self.id = None
4262        self.name = kwargs.get('name', None)
4263        self.type = None
4264
4265
4266class ProxyResourceWithWritableName(ResourceWithWritableName):
4267    """ARM proxy resource.
4268
4269    Variables are only populated by the server, and will be ignored when sending a request.
4270
4271    :ivar id: Resource ID.
4272    :vartype id: str
4273    :param name: Resource name.
4274    :type name: str
4275    :ivar type: Resource type.
4276    :vartype type: str
4277    """
4278
4279    _validation = {
4280        'id': {'readonly': True},
4281        'type': {'readonly': True},
4282    }
4283
4284    _attribute_map = {
4285        'id': {'key': 'id', 'type': 'str'},
4286        'name': {'key': 'name', 'type': 'str'},
4287        'type': {'key': 'type', 'type': 'str'},
4288    }
4289
4290    def __init__(
4291        self,
4292        **kwargs
4293    ):
4294        super(ProxyResourceWithWritableName, self).__init__(**kwargs)
4295
4296
4297class FirewallRule(ProxyResourceWithWritableName):
4298    """A server firewall rule.
4299
4300    Variables are only populated by the server, and will be ignored when sending a request.
4301
4302    :ivar id: Resource ID.
4303    :vartype id: str
4304    :param name: Resource name.
4305    :type name: str
4306    :ivar type: Resource type.
4307    :vartype type: str
4308    :param start_ip_address: The start IP address of the firewall rule. Must be IPv4 format. Use
4309     value '0.0.0.0' for all Azure-internal IP addresses.
4310    :type start_ip_address: str
4311    :param end_ip_address: The end IP address of the firewall rule. Must be IPv4 format. Must be
4312     greater than or equal to startIpAddress. Use value '0.0.0.0' for all Azure-internal IP
4313     addresses.
4314    :type end_ip_address: str
4315    """
4316
4317    _validation = {
4318        'id': {'readonly': True},
4319        'type': {'readonly': True},
4320    }
4321
4322    _attribute_map = {
4323        'id': {'key': 'id', 'type': 'str'},
4324        'name': {'key': 'name', 'type': 'str'},
4325        'type': {'key': 'type', 'type': 'str'},
4326        'start_ip_address': {'key': 'properties.startIpAddress', 'type': 'str'},
4327        'end_ip_address': {'key': 'properties.endIpAddress', 'type': 'str'},
4328    }
4329
4330    def __init__(
4331        self,
4332        **kwargs
4333    ):
4334        super(FirewallRule, self).__init__(**kwargs)
4335        self.start_ip_address = kwargs.get('start_ip_address', None)
4336        self.end_ip_address = kwargs.get('end_ip_address', None)
4337
4338
4339class FirewallRuleList(msrest.serialization.Model):
4340    """A list of server firewall rules.
4341
4342    :param values:
4343    :type values: list[~azure.mgmt.sql.models.FirewallRule]
4344    """
4345
4346    _attribute_map = {
4347        'values': {'key': 'values', 'type': '[FirewallRule]'},
4348    }
4349
4350    def __init__(
4351        self,
4352        **kwargs
4353    ):
4354        super(FirewallRuleList, self).__init__(**kwargs)
4355        self.values = kwargs.get('values', None)
4356
4357
4358class FirewallRuleListResult(msrest.serialization.Model):
4359    """The response to a list firewall rules request.
4360
4361    Variables are only populated by the server, and will be ignored when sending a request.
4362
4363    :ivar value: Array of results.
4364    :vartype value: list[~azure.mgmt.sql.models.FirewallRule]
4365    :ivar next_link: Link to retrieve next page of results.
4366    :vartype next_link: str
4367    """
4368
4369    _validation = {
4370        'value': {'readonly': True},
4371        'next_link': {'readonly': True},
4372    }
4373
4374    _attribute_map = {
4375        'value': {'key': 'value', 'type': '[FirewallRule]'},
4376        'next_link': {'key': 'nextLink', 'type': 'str'},
4377    }
4378
4379    def __init__(
4380        self,
4381        **kwargs
4382    ):
4383        super(FirewallRuleListResult, self).__init__(**kwargs)
4384        self.value = None
4385        self.next_link = None
4386
4387
4388class GeoBackupPolicy(ProxyResource):
4389    """A database geo backup policy.
4390
4391    Variables are only populated by the server, and will be ignored when sending a request.
4392
4393    All required parameters must be populated in order to send to Azure.
4394
4395    :ivar id: Resource ID.
4396    :vartype id: str
4397    :ivar name: Resource name.
4398    :vartype name: str
4399    :ivar type: Resource type.
4400    :vartype type: str
4401    :ivar kind: Kind of geo backup policy.  This is metadata used for the Azure portal experience.
4402    :vartype kind: str
4403    :ivar location: Backup policy location.
4404    :vartype location: str
4405    :param state: Required. The state of the geo backup policy. Possible values include:
4406     "Disabled", "Enabled".
4407    :type state: str or ~azure.mgmt.sql.models.GeoBackupPolicyState
4408    :ivar storage_type: The storage type of the geo backup policy.
4409    :vartype storage_type: str
4410    """
4411
4412    _validation = {
4413        'id': {'readonly': True},
4414        'name': {'readonly': True},
4415        'type': {'readonly': True},
4416        'kind': {'readonly': True},
4417        'location': {'readonly': True},
4418        'state': {'required': True},
4419        'storage_type': {'readonly': True},
4420    }
4421
4422    _attribute_map = {
4423        'id': {'key': 'id', 'type': 'str'},
4424        'name': {'key': 'name', 'type': 'str'},
4425        'type': {'key': 'type', 'type': 'str'},
4426        'kind': {'key': 'kind', 'type': 'str'},
4427        'location': {'key': 'location', 'type': 'str'},
4428        'state': {'key': 'properties.state', 'type': 'str'},
4429        'storage_type': {'key': 'properties.storageType', 'type': 'str'},
4430    }
4431
4432    def __init__(
4433        self,
4434        **kwargs
4435    ):
4436        super(GeoBackupPolicy, self).__init__(**kwargs)
4437        self.kind = None
4438        self.location = None
4439        self.state = kwargs['state']
4440        self.storage_type = None
4441
4442
4443class GeoBackupPolicyListResult(msrest.serialization.Model):
4444    """The response to a list geo backup policies request.
4445
4446    :param value: The list of geo backup policies.
4447    :type value: list[~azure.mgmt.sql.models.GeoBackupPolicy]
4448    """
4449
4450    _attribute_map = {
4451        'value': {'key': 'value', 'type': '[GeoBackupPolicy]'},
4452    }
4453
4454    def __init__(
4455        self,
4456        **kwargs
4457    ):
4458        super(GeoBackupPolicyListResult, self).__init__(**kwargs)
4459        self.value = kwargs.get('value', None)
4460
4461
4462class ImportExistingDatabaseDefinition(msrest.serialization.Model):
4463    """Contains the information necessary to perform import operation for existing database.
4464
4465    All required parameters must be populated in order to send to Azure.
4466
4467    :param storage_key_type: Required. Storage key type. Possible values include:
4468     "SharedAccessKey", "StorageAccessKey".
4469    :type storage_key_type: str or ~azure.mgmt.sql.models.StorageKeyType
4470    :param storage_key: Required. Storage key.
4471    :type storage_key: str
4472    :param storage_uri: Required. Storage Uri.
4473    :type storage_uri: str
4474    :param administrator_login: Required. Administrator login name.
4475    :type administrator_login: str
4476    :param administrator_login_password: Required. Administrator login password.
4477    :type administrator_login_password: str
4478    :param authentication_type: Authentication type.
4479    :type authentication_type: str
4480    :param network_isolation: Optional resource information to enable network isolation for
4481     request.
4482    :type network_isolation: ~azure.mgmt.sql.models.NetworkIsolationSettings
4483    """
4484
4485    _validation = {
4486        'storage_key_type': {'required': True},
4487        'storage_key': {'required': True},
4488        'storage_uri': {'required': True},
4489        'administrator_login': {'required': True},
4490        'administrator_login_password': {'required': True},
4491    }
4492
4493    _attribute_map = {
4494        'storage_key_type': {'key': 'storageKeyType', 'type': 'str'},
4495        'storage_key': {'key': 'storageKey', 'type': 'str'},
4496        'storage_uri': {'key': 'storageUri', 'type': 'str'},
4497        'administrator_login': {'key': 'administratorLogin', 'type': 'str'},
4498        'administrator_login_password': {'key': 'administratorLoginPassword', 'type': 'str'},
4499        'authentication_type': {'key': 'authenticationType', 'type': 'str'},
4500        'network_isolation': {'key': 'networkIsolation', 'type': 'NetworkIsolationSettings'},
4501    }
4502
4503    def __init__(
4504        self,
4505        **kwargs
4506    ):
4507        super(ImportExistingDatabaseDefinition, self).__init__(**kwargs)
4508        self.storage_key_type = kwargs['storage_key_type']
4509        self.storage_key = kwargs['storage_key']
4510        self.storage_uri = kwargs['storage_uri']
4511        self.administrator_login = kwargs['administrator_login']
4512        self.administrator_login_password = kwargs['administrator_login_password']
4513        self.authentication_type = kwargs.get('authentication_type', None)
4514        self.network_isolation = kwargs.get('network_isolation', None)
4515
4516
4517class ImportExportExtensionsOperationListResult(msrest.serialization.Model):
4518    """Import export operation extensions list.
4519
4520    Variables are only populated by the server, and will be ignored when sending a request.
4521
4522    :ivar value: Array of results.
4523    :vartype value: list[~azure.mgmt.sql.models.ImportExportExtensionsOperationResult]
4524    :ivar next_link: Link to retrieve next page of results.
4525    :vartype next_link: str
4526    """
4527
4528    _validation = {
4529        'value': {'readonly': True},
4530        'next_link': {'readonly': True},
4531    }
4532
4533    _attribute_map = {
4534        'value': {'key': 'value', 'type': '[ImportExportExtensionsOperationResult]'},
4535        'next_link': {'key': 'nextLink', 'type': 'str'},
4536    }
4537
4538    def __init__(
4539        self,
4540        **kwargs
4541    ):
4542        super(ImportExportExtensionsOperationListResult, self).__init__(**kwargs)
4543        self.value = None
4544        self.next_link = None
4545
4546
4547class ImportExportExtensionsOperationResult(ProxyResource):
4548    """An Extension operation result resource.
4549
4550    Variables are only populated by the server, and will be ignored when sending a request.
4551
4552    :ivar id: Resource ID.
4553    :vartype id: str
4554    :ivar name: Resource name.
4555    :vartype name: str
4556    :ivar type: Resource type.
4557    :vartype type: str
4558    :ivar request_id: Request Id.
4559    :vartype request_id: str
4560    :ivar request_type: Request type.
4561    :vartype request_type: str
4562    :ivar last_modified_time: Last modified time.
4563    :vartype last_modified_time: str
4564    :ivar server_name: Server name.
4565    :vartype server_name: str
4566    :ivar database_name: Database name.
4567    :vartype database_name: str
4568    :ivar status: Operation status.
4569    :vartype status: str
4570    :ivar error_message: Error message.
4571    :vartype error_message: str
4572    """
4573
4574    _validation = {
4575        'id': {'readonly': True},
4576        'name': {'readonly': True},
4577        'type': {'readonly': True},
4578        'request_id': {'readonly': True},
4579        'request_type': {'readonly': True},
4580        'last_modified_time': {'readonly': True},
4581        'server_name': {'readonly': True},
4582        'database_name': {'readonly': True},
4583        'status': {'readonly': True},
4584        'error_message': {'readonly': True},
4585    }
4586
4587    _attribute_map = {
4588        'id': {'key': 'id', 'type': 'str'},
4589        'name': {'key': 'name', 'type': 'str'},
4590        'type': {'key': 'type', 'type': 'str'},
4591        'request_id': {'key': 'properties.requestId', 'type': 'str'},
4592        'request_type': {'key': 'properties.requestType', 'type': 'str'},
4593        'last_modified_time': {'key': 'properties.lastModifiedTime', 'type': 'str'},
4594        'server_name': {'key': 'properties.serverName', 'type': 'str'},
4595        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
4596        'status': {'key': 'properties.status', 'type': 'str'},
4597        'error_message': {'key': 'properties.errorMessage', 'type': 'str'},
4598    }
4599
4600    def __init__(
4601        self,
4602        **kwargs
4603    ):
4604        super(ImportExportExtensionsOperationResult, self).__init__(**kwargs)
4605        self.request_id = None
4606        self.request_type = None
4607        self.last_modified_time = None
4608        self.server_name = None
4609        self.database_name = None
4610        self.status = None
4611        self.error_message = None
4612
4613
4614class ImportExportOperationResult(ProxyResource):
4615    """An ImportExport operation result resource.
4616
4617    Variables are only populated by the server, and will be ignored when sending a request.
4618
4619    :ivar id: Resource ID.
4620    :vartype id: str
4621    :ivar name: Resource name.
4622    :vartype name: str
4623    :ivar type: Resource type.
4624    :vartype type: str
4625    :ivar request_id: Request Id.
4626    :vartype request_id: str
4627    :ivar request_type: Request type.
4628    :vartype request_type: str
4629    :ivar queued_time: Queued time.
4630    :vartype queued_time: str
4631    :ivar last_modified_time: Last modified time.
4632    :vartype last_modified_time: str
4633    :ivar blob_uri: Blob Uri.
4634    :vartype blob_uri: str
4635    :ivar server_name: Server name.
4636    :vartype server_name: str
4637    :ivar database_name: Database name.
4638    :vartype database_name: str
4639    :ivar status: Operation status.
4640    :vartype status: str
4641    :ivar error_message: Error message.
4642    :vartype error_message: str
4643    :ivar private_endpoint_connections: Gets the status of private endpoints associated with this
4644     request.
4645    :vartype private_endpoint_connections:
4646     list[~azure.mgmt.sql.models.PrivateEndpointConnectionRequestStatus]
4647    """
4648
4649    _validation = {
4650        'id': {'readonly': True},
4651        'name': {'readonly': True},
4652        'type': {'readonly': True},
4653        'request_id': {'readonly': True},
4654        'request_type': {'readonly': True},
4655        'queued_time': {'readonly': True},
4656        'last_modified_time': {'readonly': True},
4657        'blob_uri': {'readonly': True},
4658        'server_name': {'readonly': True},
4659        'database_name': {'readonly': True},
4660        'status': {'readonly': True},
4661        'error_message': {'readonly': True},
4662        'private_endpoint_connections': {'readonly': True},
4663    }
4664
4665    _attribute_map = {
4666        'id': {'key': 'id', 'type': 'str'},
4667        'name': {'key': 'name', 'type': 'str'},
4668        'type': {'key': 'type', 'type': 'str'},
4669        'request_id': {'key': 'properties.requestId', 'type': 'str'},
4670        'request_type': {'key': 'properties.requestType', 'type': 'str'},
4671        'queued_time': {'key': 'properties.queuedTime', 'type': 'str'},
4672        'last_modified_time': {'key': 'properties.lastModifiedTime', 'type': 'str'},
4673        'blob_uri': {'key': 'properties.blobUri', 'type': 'str'},
4674        'server_name': {'key': 'properties.serverName', 'type': 'str'},
4675        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
4676        'status': {'key': 'properties.status', 'type': 'str'},
4677        'error_message': {'key': 'properties.errorMessage', 'type': 'str'},
4678        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[PrivateEndpointConnectionRequestStatus]'},
4679    }
4680
4681    def __init__(
4682        self,
4683        **kwargs
4684    ):
4685        super(ImportExportOperationResult, self).__init__(**kwargs)
4686        self.request_id = None
4687        self.request_type = None
4688        self.queued_time = None
4689        self.last_modified_time = None
4690        self.blob_uri = None
4691        self.server_name = None
4692        self.database_name = None
4693        self.status = None
4694        self.error_message = None
4695        self.private_endpoint_connections = None
4696
4697
4698class ImportNewDatabaseDefinition(msrest.serialization.Model):
4699    """Contains the information necessary to perform import operation for new database.
4700
4701    All required parameters must be populated in order to send to Azure.
4702
4703    :param database_name: Name of the import database.
4704    :type database_name: str
4705    :param edition: Edition of the import database.
4706    :type edition: str
4707    :param service_objective_name: Service level objective name of the import database.
4708    :type service_objective_name: str
4709    :param max_size_bytes: Max size in bytes for the import database.
4710    :type max_size_bytes: str
4711    :param storage_key_type: Required. Storage key type. Possible values include:
4712     "SharedAccessKey", "StorageAccessKey".
4713    :type storage_key_type: str or ~azure.mgmt.sql.models.StorageKeyType
4714    :param storage_key: Required. Storage key.
4715    :type storage_key: str
4716    :param storage_uri: Required. Storage Uri.
4717    :type storage_uri: str
4718    :param administrator_login: Required. Administrator login name.
4719    :type administrator_login: str
4720    :param administrator_login_password: Required. Administrator login password.
4721    :type administrator_login_password: str
4722    :param authentication_type: Authentication type.
4723    :type authentication_type: str
4724    :param network_isolation: Optional resource information to enable network isolation for
4725     request.
4726    :type network_isolation: ~azure.mgmt.sql.models.NetworkIsolationSettings
4727    """
4728
4729    _validation = {
4730        'storage_key_type': {'required': True},
4731        'storage_key': {'required': True},
4732        'storage_uri': {'required': True},
4733        'administrator_login': {'required': True},
4734        'administrator_login_password': {'required': True},
4735    }
4736
4737    _attribute_map = {
4738        'database_name': {'key': 'databaseName', 'type': 'str'},
4739        'edition': {'key': 'edition', 'type': 'str'},
4740        'service_objective_name': {'key': 'serviceObjectiveName', 'type': 'str'},
4741        'max_size_bytes': {'key': 'maxSizeBytes', 'type': 'str'},
4742        'storage_key_type': {'key': 'storageKeyType', 'type': 'str'},
4743        'storage_key': {'key': 'storageKey', 'type': 'str'},
4744        'storage_uri': {'key': 'storageUri', 'type': 'str'},
4745        'administrator_login': {'key': 'administratorLogin', 'type': 'str'},
4746        'administrator_login_password': {'key': 'administratorLoginPassword', 'type': 'str'},
4747        'authentication_type': {'key': 'authenticationType', 'type': 'str'},
4748        'network_isolation': {'key': 'networkIsolation', 'type': 'NetworkIsolationSettings'},
4749    }
4750
4751    def __init__(
4752        self,
4753        **kwargs
4754    ):
4755        super(ImportNewDatabaseDefinition, self).__init__(**kwargs)
4756        self.database_name = kwargs.get('database_name', None)
4757        self.edition = kwargs.get('edition', None)
4758        self.service_objective_name = kwargs.get('service_objective_name', None)
4759        self.max_size_bytes = kwargs.get('max_size_bytes', None)
4760        self.storage_key_type = kwargs['storage_key_type']
4761        self.storage_key = kwargs['storage_key']
4762        self.storage_uri = kwargs['storage_uri']
4763        self.administrator_login = kwargs['administrator_login']
4764        self.administrator_login_password = kwargs['administrator_login_password']
4765        self.authentication_type = kwargs.get('authentication_type', None)
4766        self.network_isolation = kwargs.get('network_isolation', None)
4767
4768
4769class InstanceFailoverGroup(ProxyResource):
4770    """An instance failover group.
4771
4772    Variables are only populated by the server, and will be ignored when sending a request.
4773
4774    :ivar id: Resource ID.
4775    :vartype id: str
4776    :ivar name: Resource name.
4777    :vartype name: str
4778    :ivar type: Resource type.
4779    :vartype type: str
4780    :param read_write_endpoint: Read-write endpoint of the failover group instance.
4781    :type read_write_endpoint: ~azure.mgmt.sql.models.InstanceFailoverGroupReadWriteEndpoint
4782    :param read_only_endpoint: Read-only endpoint of the failover group instance.
4783    :type read_only_endpoint: ~azure.mgmt.sql.models.InstanceFailoverGroupReadOnlyEndpoint
4784    :ivar replication_role: Local replication role of the failover group instance. Possible values
4785     include: "Primary", "Secondary".
4786    :vartype replication_role: str or ~azure.mgmt.sql.models.InstanceFailoverGroupReplicationRole
4787    :ivar replication_state: Replication state of the failover group instance.
4788    :vartype replication_state: str
4789    :param partner_regions: Partner region information for the failover group.
4790    :type partner_regions: list[~azure.mgmt.sql.models.PartnerRegionInfo]
4791    :param managed_instance_pairs: List of managed instance pairs in the failover group.
4792    :type managed_instance_pairs: list[~azure.mgmt.sql.models.ManagedInstancePairInfo]
4793    """
4794
4795    _validation = {
4796        'id': {'readonly': True},
4797        'name': {'readonly': True},
4798        'type': {'readonly': True},
4799        'replication_role': {'readonly': True},
4800        'replication_state': {'readonly': True},
4801    }
4802
4803    _attribute_map = {
4804        'id': {'key': 'id', 'type': 'str'},
4805        'name': {'key': 'name', 'type': 'str'},
4806        'type': {'key': 'type', 'type': 'str'},
4807        'read_write_endpoint': {'key': 'properties.readWriteEndpoint', 'type': 'InstanceFailoverGroupReadWriteEndpoint'},
4808        'read_only_endpoint': {'key': 'properties.readOnlyEndpoint', 'type': 'InstanceFailoverGroupReadOnlyEndpoint'},
4809        'replication_role': {'key': 'properties.replicationRole', 'type': 'str'},
4810        'replication_state': {'key': 'properties.replicationState', 'type': 'str'},
4811        'partner_regions': {'key': 'properties.partnerRegions', 'type': '[PartnerRegionInfo]'},
4812        'managed_instance_pairs': {'key': 'properties.managedInstancePairs', 'type': '[ManagedInstancePairInfo]'},
4813    }
4814
4815    def __init__(
4816        self,
4817        **kwargs
4818    ):
4819        super(InstanceFailoverGroup, self).__init__(**kwargs)
4820        self.read_write_endpoint = kwargs.get('read_write_endpoint', None)
4821        self.read_only_endpoint = kwargs.get('read_only_endpoint', None)
4822        self.replication_role = None
4823        self.replication_state = None
4824        self.partner_regions = kwargs.get('partner_regions', None)
4825        self.managed_instance_pairs = kwargs.get('managed_instance_pairs', None)
4826
4827
4828class InstanceFailoverGroupListResult(msrest.serialization.Model):
4829    """A list of instance failover groups.
4830
4831    Variables are only populated by the server, and will be ignored when sending a request.
4832
4833    :ivar value: Array of results.
4834    :vartype value: list[~azure.mgmt.sql.models.InstanceFailoverGroup]
4835    :ivar next_link: Link to retrieve next page of results.
4836    :vartype next_link: str
4837    """
4838
4839    _validation = {
4840        'value': {'readonly': True},
4841        'next_link': {'readonly': True},
4842    }
4843
4844    _attribute_map = {
4845        'value': {'key': 'value', 'type': '[InstanceFailoverGroup]'},
4846        'next_link': {'key': 'nextLink', 'type': 'str'},
4847    }
4848
4849    def __init__(
4850        self,
4851        **kwargs
4852    ):
4853        super(InstanceFailoverGroupListResult, self).__init__(**kwargs)
4854        self.value = None
4855        self.next_link = None
4856
4857
4858class InstanceFailoverGroupReadOnlyEndpoint(msrest.serialization.Model):
4859    """Read-only endpoint of the failover group instance.
4860
4861    :param failover_policy: Failover policy of the read-only endpoint for the failover group.
4862     Possible values include: "Disabled", "Enabled".
4863    :type failover_policy: str or ~azure.mgmt.sql.models.ReadOnlyEndpointFailoverPolicy
4864    """
4865
4866    _attribute_map = {
4867        'failover_policy': {'key': 'failoverPolicy', 'type': 'str'},
4868    }
4869
4870    def __init__(
4871        self,
4872        **kwargs
4873    ):
4874        super(InstanceFailoverGroupReadOnlyEndpoint, self).__init__(**kwargs)
4875        self.failover_policy = kwargs.get('failover_policy', None)
4876
4877
4878class InstanceFailoverGroupReadWriteEndpoint(msrest.serialization.Model):
4879    """Read-write endpoint of the failover group instance.
4880
4881    All required parameters must be populated in order to send to Azure.
4882
4883    :param failover_policy: Required. Failover policy of the read-write endpoint for the failover
4884     group. If failoverPolicy is Automatic then failoverWithDataLossGracePeriodMinutes is required.
4885     Possible values include: "Manual", "Automatic".
4886    :type failover_policy: str or ~azure.mgmt.sql.models.ReadWriteEndpointFailoverPolicy
4887    :param failover_with_data_loss_grace_period_minutes: Grace period before failover with data
4888     loss is attempted for the read-write endpoint. If failoverPolicy is Automatic then
4889     failoverWithDataLossGracePeriodMinutes is required.
4890    :type failover_with_data_loss_grace_period_minutes: int
4891    """
4892
4893    _validation = {
4894        'failover_policy': {'required': True},
4895    }
4896
4897    _attribute_map = {
4898        'failover_policy': {'key': 'failoverPolicy', 'type': 'str'},
4899        'failover_with_data_loss_grace_period_minutes': {'key': 'failoverWithDataLossGracePeriodMinutes', 'type': 'int'},
4900    }
4901
4902    def __init__(
4903        self,
4904        **kwargs
4905    ):
4906        super(InstanceFailoverGroupReadWriteEndpoint, self).__init__(**kwargs)
4907        self.failover_policy = kwargs['failover_policy']
4908        self.failover_with_data_loss_grace_period_minutes = kwargs.get('failover_with_data_loss_grace_period_minutes', None)
4909
4910
4911class InstancePool(TrackedResource):
4912    """An Azure SQL instance pool.
4913
4914    Variables are only populated by the server, and will be ignored when sending a request.
4915
4916    All required parameters must be populated in order to send to Azure.
4917
4918    :ivar id: Resource ID.
4919    :vartype id: str
4920    :ivar name: Resource name.
4921    :vartype name: str
4922    :ivar type: Resource type.
4923    :vartype type: str
4924    :param location: Required. Resource location.
4925    :type location: str
4926    :param tags: A set of tags. Resource tags.
4927    :type tags: dict[str, str]
4928    :param sku: The name and tier of the SKU.
4929    :type sku: ~azure.mgmt.sql.models.Sku
4930    :param subnet_id: Resource ID of the subnet to place this instance pool in.
4931    :type subnet_id: str
4932    :param v_cores: Count of vCores belonging to this instance pool.
4933    :type v_cores: int
4934    :param license_type: The license type. Possible values are 'LicenseIncluded' (price for SQL
4935     license is included) and 'BasePrice' (without SQL license price). Possible values include:
4936     "LicenseIncluded", "BasePrice".
4937    :type license_type: str or ~azure.mgmt.sql.models.InstancePoolLicenseType
4938    """
4939
4940    _validation = {
4941        'id': {'readonly': True},
4942        'name': {'readonly': True},
4943        'type': {'readonly': True},
4944        'location': {'required': True},
4945    }
4946
4947    _attribute_map = {
4948        'id': {'key': 'id', 'type': 'str'},
4949        'name': {'key': 'name', 'type': 'str'},
4950        'type': {'key': 'type', 'type': 'str'},
4951        'location': {'key': 'location', 'type': 'str'},
4952        'tags': {'key': 'tags', 'type': '{str}'},
4953        'sku': {'key': 'sku', 'type': 'Sku'},
4954        'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
4955        'v_cores': {'key': 'properties.vCores', 'type': 'int'},
4956        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
4957    }
4958
4959    def __init__(
4960        self,
4961        **kwargs
4962    ):
4963        super(InstancePool, self).__init__(**kwargs)
4964        self.sku = kwargs.get('sku', None)
4965        self.subnet_id = kwargs.get('subnet_id', None)
4966        self.v_cores = kwargs.get('v_cores', None)
4967        self.license_type = kwargs.get('license_type', None)
4968
4969
4970class InstancePoolEditionCapability(msrest.serialization.Model):
4971    """The instance pool capability.
4972
4973    Variables are only populated by the server, and will be ignored when sending a request.
4974
4975    :ivar name: The instance pool version name.
4976    :vartype name: str
4977    :ivar supported_families: The supported families.
4978    :vartype supported_families: list[~azure.mgmt.sql.models.InstancePoolFamilyCapability]
4979    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
4980     "Default", "Disabled".
4981    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
4982    :param reason: The reason for the capability not being available.
4983    :type reason: str
4984    """
4985
4986    _validation = {
4987        'name': {'readonly': True},
4988        'supported_families': {'readonly': True},
4989        'status': {'readonly': True},
4990    }
4991
4992    _attribute_map = {
4993        'name': {'key': 'name', 'type': 'str'},
4994        'supported_families': {'key': 'supportedFamilies', 'type': '[InstancePoolFamilyCapability]'},
4995        'status': {'key': 'status', 'type': 'str'},
4996        'reason': {'key': 'reason', 'type': 'str'},
4997    }
4998
4999    def __init__(
5000        self,
5001        **kwargs
5002    ):
5003        super(InstancePoolEditionCapability, self).__init__(**kwargs)
5004        self.name = None
5005        self.supported_families = None
5006        self.status = None
5007        self.reason = kwargs.get('reason', None)
5008
5009
5010class InstancePoolFamilyCapability(msrest.serialization.Model):
5011    """The instance pool family capability.
5012
5013    Variables are only populated by the server, and will be ignored when sending a request.
5014
5015    :ivar name: Family name.
5016    :vartype name: str
5017    :ivar supported_license_types: List of supported license types.
5018    :vartype supported_license_types: list[~azure.mgmt.sql.models.LicenseTypeCapability]
5019    :ivar supported_vcores_values: List of supported virtual cores values.
5020    :vartype supported_vcores_values: list[~azure.mgmt.sql.models.InstancePoolVcoresCapability]
5021    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
5022     "Default", "Disabled".
5023    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
5024    :param reason: The reason for the capability not being available.
5025    :type reason: str
5026    """
5027
5028    _validation = {
5029        'name': {'readonly': True},
5030        'supported_license_types': {'readonly': True},
5031        'supported_vcores_values': {'readonly': True},
5032        'status': {'readonly': True},
5033    }
5034
5035    _attribute_map = {
5036        'name': {'key': 'name', 'type': 'str'},
5037        'supported_license_types': {'key': 'supportedLicenseTypes', 'type': '[LicenseTypeCapability]'},
5038        'supported_vcores_values': {'key': 'supportedVcoresValues', 'type': '[InstancePoolVcoresCapability]'},
5039        'status': {'key': 'status', 'type': 'str'},
5040        'reason': {'key': 'reason', 'type': 'str'},
5041    }
5042
5043    def __init__(
5044        self,
5045        **kwargs
5046    ):
5047        super(InstancePoolFamilyCapability, self).__init__(**kwargs)
5048        self.name = None
5049        self.supported_license_types = None
5050        self.supported_vcores_values = None
5051        self.status = None
5052        self.reason = kwargs.get('reason', None)
5053
5054
5055class InstancePoolListResult(msrest.serialization.Model):
5056    """A list of Azure SQL instance pools.
5057
5058    Variables are only populated by the server, and will be ignored when sending a request.
5059
5060    :ivar value: Array of results.
5061    :vartype value: list[~azure.mgmt.sql.models.InstancePool]
5062    :ivar next_link: Link to retrieve next page of results.
5063    :vartype next_link: str
5064    """
5065
5066    _validation = {
5067        'value': {'readonly': True},
5068        'next_link': {'readonly': True},
5069    }
5070
5071    _attribute_map = {
5072        'value': {'key': 'value', 'type': '[InstancePool]'},
5073        'next_link': {'key': 'nextLink', 'type': 'str'},
5074    }
5075
5076    def __init__(
5077        self,
5078        **kwargs
5079    ):
5080        super(InstancePoolListResult, self).__init__(**kwargs)
5081        self.value = None
5082        self.next_link = None
5083
5084
5085class InstancePoolUpdate(msrest.serialization.Model):
5086    """An update to an Instance pool.
5087
5088    :param tags: A set of tags. Resource tags.
5089    :type tags: dict[str, str]
5090    """
5091
5092    _attribute_map = {
5093        'tags': {'key': 'tags', 'type': '{str}'},
5094    }
5095
5096    def __init__(
5097        self,
5098        **kwargs
5099    ):
5100        super(InstancePoolUpdate, self).__init__(**kwargs)
5101        self.tags = kwargs.get('tags', None)
5102
5103
5104class InstancePoolVcoresCapability(msrest.serialization.Model):
5105    """The managed instance virtual cores capability.
5106
5107    Variables are only populated by the server, and will be ignored when sending a request.
5108
5109    :ivar name: The virtual cores identifier.
5110    :vartype name: str
5111    :ivar value: The virtual cores value.
5112    :vartype value: int
5113    :ivar storage_limit: Storage limit.
5114    :vartype storage_limit: ~azure.mgmt.sql.models.MaxSizeCapability
5115    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
5116     "Default", "Disabled".
5117    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
5118    :param reason: The reason for the capability not being available.
5119    :type reason: str
5120    """
5121
5122    _validation = {
5123        'name': {'readonly': True},
5124        'value': {'readonly': True},
5125        'storage_limit': {'readonly': True},
5126        'status': {'readonly': True},
5127    }
5128
5129    _attribute_map = {
5130        'name': {'key': 'name', 'type': 'str'},
5131        'value': {'key': 'value', 'type': 'int'},
5132        'storage_limit': {'key': 'storageLimit', 'type': 'MaxSizeCapability'},
5133        'status': {'key': 'status', 'type': 'str'},
5134        'reason': {'key': 'reason', 'type': 'str'},
5135    }
5136
5137    def __init__(
5138        self,
5139        **kwargs
5140    ):
5141        super(InstancePoolVcoresCapability, self).__init__(**kwargs)
5142        self.name = None
5143        self.value = None
5144        self.storage_limit = None
5145        self.status = None
5146        self.reason = kwargs.get('reason', None)
5147
5148
5149class Job(ProxyResource):
5150    """A job.
5151
5152    Variables are only populated by the server, and will be ignored when sending a request.
5153
5154    :ivar id: Resource ID.
5155    :vartype id: str
5156    :ivar name: Resource name.
5157    :vartype name: str
5158    :ivar type: Resource type.
5159    :vartype type: str
5160    :param description: User-defined description of the job.
5161    :type description: str
5162    :ivar version: The job version number.
5163    :vartype version: int
5164    :param schedule: Schedule properties of the job.
5165    :type schedule: ~azure.mgmt.sql.models.JobSchedule
5166    """
5167
5168    _validation = {
5169        'id': {'readonly': True},
5170        'name': {'readonly': True},
5171        'type': {'readonly': True},
5172        'version': {'readonly': True},
5173    }
5174
5175    _attribute_map = {
5176        'id': {'key': 'id', 'type': 'str'},
5177        'name': {'key': 'name', 'type': 'str'},
5178        'type': {'key': 'type', 'type': 'str'},
5179        'description': {'key': 'properties.description', 'type': 'str'},
5180        'version': {'key': 'properties.version', 'type': 'int'},
5181        'schedule': {'key': 'properties.schedule', 'type': 'JobSchedule'},
5182    }
5183
5184    def __init__(
5185        self,
5186        **kwargs
5187    ):
5188        super(Job, self).__init__(**kwargs)
5189        self.description = kwargs.get('description', "")
5190        self.version = None
5191        self.schedule = kwargs.get('schedule', None)
5192
5193
5194class JobAgent(TrackedResource):
5195    """An Azure SQL job agent.
5196
5197    Variables are only populated by the server, and will be ignored when sending a request.
5198
5199    All required parameters must be populated in order to send to Azure.
5200
5201    :ivar id: Resource ID.
5202    :vartype id: str
5203    :ivar name: Resource name.
5204    :vartype name: str
5205    :ivar type: Resource type.
5206    :vartype type: str
5207    :param location: Required. Resource location.
5208    :type location: str
5209    :param tags: A set of tags. Resource tags.
5210    :type tags: dict[str, str]
5211    :param sku: The name and tier of the SKU.
5212    :type sku: ~azure.mgmt.sql.models.Sku
5213    :param database_id: Resource ID of the database to store job metadata in.
5214    :type database_id: str
5215    :ivar state: The state of the job agent. Possible values include: "Creating", "Ready",
5216     "Updating", "Deleting", "Disabled".
5217    :vartype state: str or ~azure.mgmt.sql.models.JobAgentState
5218    """
5219
5220    _validation = {
5221        'id': {'readonly': True},
5222        'name': {'readonly': True},
5223        'type': {'readonly': True},
5224        'location': {'required': True},
5225        'state': {'readonly': True},
5226    }
5227
5228    _attribute_map = {
5229        'id': {'key': 'id', 'type': 'str'},
5230        'name': {'key': 'name', 'type': 'str'},
5231        'type': {'key': 'type', 'type': 'str'},
5232        'location': {'key': 'location', 'type': 'str'},
5233        'tags': {'key': 'tags', 'type': '{str}'},
5234        'sku': {'key': 'sku', 'type': 'Sku'},
5235        'database_id': {'key': 'properties.databaseId', 'type': 'str'},
5236        'state': {'key': 'properties.state', 'type': 'str'},
5237    }
5238
5239    def __init__(
5240        self,
5241        **kwargs
5242    ):
5243        super(JobAgent, self).__init__(**kwargs)
5244        self.sku = kwargs.get('sku', None)
5245        self.database_id = kwargs.get('database_id', None)
5246        self.state = None
5247
5248
5249class JobAgentListResult(msrest.serialization.Model):
5250    """A list of Azure SQL job agents.
5251
5252    Variables are only populated by the server, and will be ignored when sending a request.
5253
5254    :ivar value: Array of results.
5255    :vartype value: list[~azure.mgmt.sql.models.JobAgent]
5256    :ivar next_link: Link to retrieve next page of results.
5257    :vartype next_link: str
5258    """
5259
5260    _validation = {
5261        'value': {'readonly': True},
5262        'next_link': {'readonly': True},
5263    }
5264
5265    _attribute_map = {
5266        'value': {'key': 'value', 'type': '[JobAgent]'},
5267        'next_link': {'key': 'nextLink', 'type': 'str'},
5268    }
5269
5270    def __init__(
5271        self,
5272        **kwargs
5273    ):
5274        super(JobAgentListResult, self).__init__(**kwargs)
5275        self.value = None
5276        self.next_link = None
5277
5278
5279class JobAgentUpdate(msrest.serialization.Model):
5280    """An update to an Azure SQL job agent.
5281
5282    :param tags: A set of tags. Resource tags.
5283    :type tags: dict[str, str]
5284    """
5285
5286    _attribute_map = {
5287        'tags': {'key': 'tags', 'type': '{str}'},
5288    }
5289
5290    def __init__(
5291        self,
5292        **kwargs
5293    ):
5294        super(JobAgentUpdate, self).__init__(**kwargs)
5295        self.tags = kwargs.get('tags', None)
5296
5297
5298class JobCredential(ProxyResource):
5299    """A stored credential that can be used by a job to connect to target databases.
5300
5301    Variables are only populated by the server, and will be ignored when sending a request.
5302
5303    :ivar id: Resource ID.
5304    :vartype id: str
5305    :ivar name: Resource name.
5306    :vartype name: str
5307    :ivar type: Resource type.
5308    :vartype type: str
5309    :param username: The credential user name.
5310    :type username: str
5311    :param password: The credential password.
5312    :type password: str
5313    """
5314
5315    _validation = {
5316        'id': {'readonly': True},
5317        'name': {'readonly': True},
5318        'type': {'readonly': True},
5319    }
5320
5321    _attribute_map = {
5322        'id': {'key': 'id', 'type': 'str'},
5323        'name': {'key': 'name', 'type': 'str'},
5324        'type': {'key': 'type', 'type': 'str'},
5325        'username': {'key': 'properties.username', 'type': 'str'},
5326        'password': {'key': 'properties.password', 'type': 'str'},
5327    }
5328
5329    def __init__(
5330        self,
5331        **kwargs
5332    ):
5333        super(JobCredential, self).__init__(**kwargs)
5334        self.username = kwargs.get('username', None)
5335        self.password = kwargs.get('password', None)
5336
5337
5338class JobCredentialListResult(msrest.serialization.Model):
5339    """A list of job credentials.
5340
5341    Variables are only populated by the server, and will be ignored when sending a request.
5342
5343    :ivar value: Array of results.
5344    :vartype value: list[~azure.mgmt.sql.models.JobCredential]
5345    :ivar next_link: Link to retrieve next page of results.
5346    :vartype next_link: str
5347    """
5348
5349    _validation = {
5350        'value': {'readonly': True},
5351        'next_link': {'readonly': True},
5352    }
5353
5354    _attribute_map = {
5355        'value': {'key': 'value', 'type': '[JobCredential]'},
5356        'next_link': {'key': 'nextLink', 'type': 'str'},
5357    }
5358
5359    def __init__(
5360        self,
5361        **kwargs
5362    ):
5363        super(JobCredentialListResult, self).__init__(**kwargs)
5364        self.value = None
5365        self.next_link = None
5366
5367
5368class JobExecution(ProxyResource):
5369    """An execution of a job.
5370
5371    Variables are only populated by the server, and will be ignored when sending a request.
5372
5373    :ivar id: Resource ID.
5374    :vartype id: str
5375    :ivar name: Resource name.
5376    :vartype name: str
5377    :ivar type: Resource type.
5378    :vartype type: str
5379    :ivar job_version: The job version number.
5380    :vartype job_version: int
5381    :ivar step_name: The job step name.
5382    :vartype step_name: str
5383    :ivar step_id: The job step id.
5384    :vartype step_id: int
5385    :ivar job_execution_id: The unique identifier of the job execution.
5386    :vartype job_execution_id: str
5387    :ivar lifecycle: The detailed state of the job execution. Possible values include: "Created",
5388     "InProgress", "WaitingForChildJobExecutions", "WaitingForRetry", "Succeeded",
5389     "SucceededWithSkipped", "Failed", "TimedOut", "Canceled", "Skipped".
5390    :vartype lifecycle: str or ~azure.mgmt.sql.models.JobExecutionLifecycle
5391    :ivar provisioning_state: The ARM provisioning state of the job execution. Possible values
5392     include: "Created", "InProgress", "Succeeded", "Failed", "Canceled".
5393    :vartype provisioning_state: str or ~azure.mgmt.sql.models.ProvisioningState
5394    :ivar create_time: The time that the job execution was created.
5395    :vartype create_time: ~datetime.datetime
5396    :ivar start_time: The time that the job execution started.
5397    :vartype start_time: ~datetime.datetime
5398    :ivar end_time: The time that the job execution completed.
5399    :vartype end_time: ~datetime.datetime
5400    :param current_attempts: Number of times the job execution has been attempted.
5401    :type current_attempts: int
5402    :ivar current_attempt_start_time: Start time of the current attempt.
5403    :vartype current_attempt_start_time: ~datetime.datetime
5404    :ivar last_message: The last status or error message.
5405    :vartype last_message: str
5406    :ivar target: The target that this execution is executed on.
5407    :vartype target: ~azure.mgmt.sql.models.JobExecutionTarget
5408    """
5409
5410    _validation = {
5411        'id': {'readonly': True},
5412        'name': {'readonly': True},
5413        'type': {'readonly': True},
5414        'job_version': {'readonly': True},
5415        'step_name': {'readonly': True},
5416        'step_id': {'readonly': True},
5417        'job_execution_id': {'readonly': True},
5418        'lifecycle': {'readonly': True},
5419        'provisioning_state': {'readonly': True},
5420        'create_time': {'readonly': True},
5421        'start_time': {'readonly': True},
5422        'end_time': {'readonly': True},
5423        'current_attempt_start_time': {'readonly': True},
5424        'last_message': {'readonly': True},
5425        'target': {'readonly': True},
5426    }
5427
5428    _attribute_map = {
5429        'id': {'key': 'id', 'type': 'str'},
5430        'name': {'key': 'name', 'type': 'str'},
5431        'type': {'key': 'type', 'type': 'str'},
5432        'job_version': {'key': 'properties.jobVersion', 'type': 'int'},
5433        'step_name': {'key': 'properties.stepName', 'type': 'str'},
5434        'step_id': {'key': 'properties.stepId', 'type': 'int'},
5435        'job_execution_id': {'key': 'properties.jobExecutionId', 'type': 'str'},
5436        'lifecycle': {'key': 'properties.lifecycle', 'type': 'str'},
5437        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5438        'create_time': {'key': 'properties.createTime', 'type': 'iso-8601'},
5439        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
5440        'end_time': {'key': 'properties.endTime', 'type': 'iso-8601'},
5441        'current_attempts': {'key': 'properties.currentAttempts', 'type': 'int'},
5442        'current_attempt_start_time': {'key': 'properties.currentAttemptStartTime', 'type': 'iso-8601'},
5443        'last_message': {'key': 'properties.lastMessage', 'type': 'str'},
5444        'target': {'key': 'properties.target', 'type': 'JobExecutionTarget'},
5445    }
5446
5447    def __init__(
5448        self,
5449        **kwargs
5450    ):
5451        super(JobExecution, self).__init__(**kwargs)
5452        self.job_version = None
5453        self.step_name = None
5454        self.step_id = None
5455        self.job_execution_id = None
5456        self.lifecycle = None
5457        self.provisioning_state = None
5458        self.create_time = None
5459        self.start_time = None
5460        self.end_time = None
5461        self.current_attempts = kwargs.get('current_attempts', None)
5462        self.current_attempt_start_time = None
5463        self.last_message = None
5464        self.target = None
5465
5466
5467class JobExecutionListResult(msrest.serialization.Model):
5468    """A list of job executions.
5469
5470    Variables are only populated by the server, and will be ignored when sending a request.
5471
5472    :ivar value: Array of results.
5473    :vartype value: list[~azure.mgmt.sql.models.JobExecution]
5474    :ivar next_link: Link to retrieve next page of results.
5475    :vartype next_link: str
5476    """
5477
5478    _validation = {
5479        'value': {'readonly': True},
5480        'next_link': {'readonly': True},
5481    }
5482
5483    _attribute_map = {
5484        'value': {'key': 'value', 'type': '[JobExecution]'},
5485        'next_link': {'key': 'nextLink', 'type': 'str'},
5486    }
5487
5488    def __init__(
5489        self,
5490        **kwargs
5491    ):
5492        super(JobExecutionListResult, self).__init__(**kwargs)
5493        self.value = None
5494        self.next_link = None
5495
5496
5497class JobExecutionTarget(msrest.serialization.Model):
5498    """The target that a job execution is executed on.
5499
5500    Variables are only populated by the server, and will be ignored when sending a request.
5501
5502    :ivar type: The type of the target. Possible values include: "TargetGroup", "SqlDatabase",
5503     "SqlElasticPool", "SqlShardMap", "SqlServer".
5504    :vartype type: str or ~azure.mgmt.sql.models.JobTargetType
5505    :ivar server_name: The server name.
5506    :vartype server_name: str
5507    :ivar database_name: The database name.
5508    :vartype database_name: str
5509    """
5510
5511    _validation = {
5512        'type': {'readonly': True},
5513        'server_name': {'readonly': True},
5514        'database_name': {'readonly': True},
5515    }
5516
5517    _attribute_map = {
5518        'type': {'key': 'type', 'type': 'str'},
5519        'server_name': {'key': 'serverName', 'type': 'str'},
5520        'database_name': {'key': 'databaseName', 'type': 'str'},
5521    }
5522
5523    def __init__(
5524        self,
5525        **kwargs
5526    ):
5527        super(JobExecutionTarget, self).__init__(**kwargs)
5528        self.type = None
5529        self.server_name = None
5530        self.database_name = None
5531
5532
5533class JobListResult(msrest.serialization.Model):
5534    """A list of jobs.
5535
5536    Variables are only populated by the server, and will be ignored when sending a request.
5537
5538    :ivar value: Array of results.
5539    :vartype value: list[~azure.mgmt.sql.models.Job]
5540    :ivar next_link: Link to retrieve next page of results.
5541    :vartype next_link: str
5542    """
5543
5544    _validation = {
5545        'value': {'readonly': True},
5546        'next_link': {'readonly': True},
5547    }
5548
5549    _attribute_map = {
5550        'value': {'key': 'value', 'type': '[Job]'},
5551        'next_link': {'key': 'nextLink', 'type': 'str'},
5552    }
5553
5554    def __init__(
5555        self,
5556        **kwargs
5557    ):
5558        super(JobListResult, self).__init__(**kwargs)
5559        self.value = None
5560        self.next_link = None
5561
5562
5563class JobSchedule(msrest.serialization.Model):
5564    """Scheduling properties of a job.
5565
5566    :param start_time: Schedule start time.
5567    :type start_time: ~datetime.datetime
5568    :param end_time: Schedule end time.
5569    :type end_time: ~datetime.datetime
5570    :param type: Schedule interval type. Possible values include: "Once", "Recurring". Default
5571     value: "Once".
5572    :type type: str or ~azure.mgmt.sql.models.JobScheduleType
5573    :param enabled: Whether or not the schedule is enabled.
5574    :type enabled: bool
5575    :param interval: Value of the schedule's recurring interval, if the ScheduleType is recurring.
5576     ISO8601 duration format.
5577    :type interval: str
5578    """
5579
5580    _attribute_map = {
5581        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
5582        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
5583        'type': {'key': 'type', 'type': 'str'},
5584        'enabled': {'key': 'enabled', 'type': 'bool'},
5585        'interval': {'key': 'interval', 'type': 'str'},
5586    }
5587
5588    def __init__(
5589        self,
5590        **kwargs
5591    ):
5592        super(JobSchedule, self).__init__(**kwargs)
5593        self.start_time = kwargs.get('start_time', "0001-01-01T00:00:00+00:00")
5594        self.end_time = kwargs.get('end_time', "9999-12-31T11:59:59+00:00")
5595        self.type = kwargs.get('type', "Once")
5596        self.enabled = kwargs.get('enabled', None)
5597        self.interval = kwargs.get('interval', None)
5598
5599
5600class JobStep(ProxyResource):
5601    """A job step.
5602
5603    Variables are only populated by the server, and will be ignored when sending a request.
5604
5605    :ivar id: Resource ID.
5606    :vartype id: str
5607    :ivar name: Resource name.
5608    :vartype name: str
5609    :ivar type: Resource type.
5610    :vartype type: str
5611    :param step_id: The job step's index within the job. If not specified when creating the job
5612     step, it will be created as the last step. If not specified when updating the job step, the
5613     step id is not modified.
5614    :type step_id: int
5615    :param target_group: The resource ID of the target group that the job step will be executed on.
5616    :type target_group: str
5617    :param credential: The resource ID of the job credential that will be used to connect to the
5618     targets.
5619    :type credential: str
5620    :param action: The action payload of the job step.
5621    :type action: ~azure.mgmt.sql.models.JobStepAction
5622    :param output: Output destination properties of the job step.
5623    :type output: ~azure.mgmt.sql.models.JobStepOutput
5624    :param execution_options: Execution options for the job step.
5625    :type execution_options: ~azure.mgmt.sql.models.JobStepExecutionOptions
5626    """
5627
5628    _validation = {
5629        'id': {'readonly': True},
5630        'name': {'readonly': True},
5631        'type': {'readonly': True},
5632    }
5633
5634    _attribute_map = {
5635        'id': {'key': 'id', 'type': 'str'},
5636        'name': {'key': 'name', 'type': 'str'},
5637        'type': {'key': 'type', 'type': 'str'},
5638        'step_id': {'key': 'properties.stepId', 'type': 'int'},
5639        'target_group': {'key': 'properties.targetGroup', 'type': 'str'},
5640        'credential': {'key': 'properties.credential', 'type': 'str'},
5641        'action': {'key': 'properties.action', 'type': 'JobStepAction'},
5642        'output': {'key': 'properties.output', 'type': 'JobStepOutput'},
5643        'execution_options': {'key': 'properties.executionOptions', 'type': 'JobStepExecutionOptions'},
5644    }
5645
5646    def __init__(
5647        self,
5648        **kwargs
5649    ):
5650        super(JobStep, self).__init__(**kwargs)
5651        self.step_id = kwargs.get('step_id', None)
5652        self.target_group = kwargs.get('target_group', None)
5653        self.credential = kwargs.get('credential', None)
5654        self.action = kwargs.get('action', None)
5655        self.output = kwargs.get('output', None)
5656        self.execution_options = kwargs.get('execution_options', None)
5657
5658
5659class JobStepAction(msrest.serialization.Model):
5660    """The action to be executed by a job step.
5661
5662    All required parameters must be populated in order to send to Azure.
5663
5664    :param type: Type of action being executed by the job step. Possible values include: "TSql".
5665     Default value: "TSql".
5666    :type type: str or ~azure.mgmt.sql.models.JobStepActionType
5667    :param source: The source of the action to execute. Possible values include: "Inline". Default
5668     value: "Inline".
5669    :type source: str or ~azure.mgmt.sql.models.JobStepActionSource
5670    :param value: Required. The action value, for example the text of the T-SQL script to execute.
5671    :type value: str
5672    """
5673
5674    _validation = {
5675        'value': {'required': True},
5676    }
5677
5678    _attribute_map = {
5679        'type': {'key': 'type', 'type': 'str'},
5680        'source': {'key': 'source', 'type': 'str'},
5681        'value': {'key': 'value', 'type': 'str'},
5682    }
5683
5684    def __init__(
5685        self,
5686        **kwargs
5687    ):
5688        super(JobStepAction, self).__init__(**kwargs)
5689        self.type = kwargs.get('type', "TSql")
5690        self.source = kwargs.get('source', "Inline")
5691        self.value = kwargs['value']
5692
5693
5694class JobStepExecutionOptions(msrest.serialization.Model):
5695    """The execution options of a job step.
5696
5697    :param timeout_seconds: Execution timeout for the job step.
5698    :type timeout_seconds: int
5699    :param retry_attempts: Maximum number of times the job step will be reattempted if the first
5700     attempt fails.
5701    :type retry_attempts: int
5702    :param initial_retry_interval_seconds: Initial delay between retries for job step execution.
5703    :type initial_retry_interval_seconds: int
5704    :param maximum_retry_interval_seconds: The maximum amount of time to wait between retries for
5705     job step execution.
5706    :type maximum_retry_interval_seconds: int
5707    :param retry_interval_backoff_multiplier: The backoff multiplier for the time between retries.
5708    :type retry_interval_backoff_multiplier: float
5709    """
5710
5711    _attribute_map = {
5712        'timeout_seconds': {'key': 'timeoutSeconds', 'type': 'int'},
5713        'retry_attempts': {'key': 'retryAttempts', 'type': 'int'},
5714        'initial_retry_interval_seconds': {'key': 'initialRetryIntervalSeconds', 'type': 'int'},
5715        'maximum_retry_interval_seconds': {'key': 'maximumRetryIntervalSeconds', 'type': 'int'},
5716        'retry_interval_backoff_multiplier': {'key': 'retryIntervalBackoffMultiplier', 'type': 'float'},
5717    }
5718
5719    def __init__(
5720        self,
5721        **kwargs
5722    ):
5723        super(JobStepExecutionOptions, self).__init__(**kwargs)
5724        self.timeout_seconds = kwargs.get('timeout_seconds', 43200)
5725        self.retry_attempts = kwargs.get('retry_attempts', 10)
5726        self.initial_retry_interval_seconds = kwargs.get('initial_retry_interval_seconds', 1)
5727        self.maximum_retry_interval_seconds = kwargs.get('maximum_retry_interval_seconds', 120)
5728        self.retry_interval_backoff_multiplier = kwargs.get('retry_interval_backoff_multiplier', 2)
5729
5730
5731class JobStepListResult(msrest.serialization.Model):
5732    """A list of job steps.
5733
5734    Variables are only populated by the server, and will be ignored when sending a request.
5735
5736    :ivar value: Array of results.
5737    :vartype value: list[~azure.mgmt.sql.models.JobStep]
5738    :ivar next_link: Link to retrieve next page of results.
5739    :vartype next_link: str
5740    """
5741
5742    _validation = {
5743        'value': {'readonly': True},
5744        'next_link': {'readonly': True},
5745    }
5746
5747    _attribute_map = {
5748        'value': {'key': 'value', 'type': '[JobStep]'},
5749        'next_link': {'key': 'nextLink', 'type': 'str'},
5750    }
5751
5752    def __init__(
5753        self,
5754        **kwargs
5755    ):
5756        super(JobStepListResult, self).__init__(**kwargs)
5757        self.value = None
5758        self.next_link = None
5759
5760
5761class JobStepOutput(msrest.serialization.Model):
5762    """The output configuration of a job step.
5763
5764    All required parameters must be populated in order to send to Azure.
5765
5766    :param type: The output destination type. Possible values include: "SqlDatabase". Default
5767     value: "SqlDatabase".
5768    :type type: str or ~azure.mgmt.sql.models.JobStepOutputType
5769    :param subscription_id: The output destination subscription id.
5770    :type subscription_id: str
5771    :param resource_group_name: The output destination resource group.
5772    :type resource_group_name: str
5773    :param server_name: Required. The output destination server name.
5774    :type server_name: str
5775    :param database_name: Required. The output destination database.
5776    :type database_name: str
5777    :param schema_name: The output destination schema.
5778    :type schema_name: str
5779    :param table_name: Required. The output destination table.
5780    :type table_name: str
5781    :param credential: Required. The resource ID of the credential to use to connect to the output
5782     destination.
5783    :type credential: str
5784    """
5785
5786    _validation = {
5787        'server_name': {'required': True},
5788        'database_name': {'required': True},
5789        'table_name': {'required': True},
5790        'credential': {'required': True},
5791    }
5792
5793    _attribute_map = {
5794        'type': {'key': 'type', 'type': 'str'},
5795        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
5796        'resource_group_name': {'key': 'resourceGroupName', 'type': 'str'},
5797        'server_name': {'key': 'serverName', 'type': 'str'},
5798        'database_name': {'key': 'databaseName', 'type': 'str'},
5799        'schema_name': {'key': 'schemaName', 'type': 'str'},
5800        'table_name': {'key': 'tableName', 'type': 'str'},
5801        'credential': {'key': 'credential', 'type': 'str'},
5802    }
5803
5804    def __init__(
5805        self,
5806        **kwargs
5807    ):
5808        super(JobStepOutput, self).__init__(**kwargs)
5809        self.type = kwargs.get('type', "SqlDatabase")
5810        self.subscription_id = kwargs.get('subscription_id', None)
5811        self.resource_group_name = kwargs.get('resource_group_name', None)
5812        self.server_name = kwargs['server_name']
5813        self.database_name = kwargs['database_name']
5814        self.schema_name = kwargs.get('schema_name', "dbo")
5815        self.table_name = kwargs['table_name']
5816        self.credential = kwargs['credential']
5817
5818
5819class JobTarget(msrest.serialization.Model):
5820    """A job target, for example a specific database or a container of databases that is evaluated during job execution.
5821
5822    All required parameters must be populated in order to send to Azure.
5823
5824    :param membership_type: Whether the target is included or excluded from the group. Possible
5825     values include: "Include", "Exclude". Default value: "Include".
5826    :type membership_type: str or ~azure.mgmt.sql.models.JobTargetGroupMembershipType
5827    :param type: Required. The target type. Possible values include: "TargetGroup", "SqlDatabase",
5828     "SqlElasticPool", "SqlShardMap", "SqlServer".
5829    :type type: str or ~azure.mgmt.sql.models.JobTargetType
5830    :param server_name: The target server name.
5831    :type server_name: str
5832    :param database_name: The target database name.
5833    :type database_name: str
5834    :param elastic_pool_name: The target elastic pool name.
5835    :type elastic_pool_name: str
5836    :param shard_map_name: The target shard map.
5837    :type shard_map_name: str
5838    :param refresh_credential: The resource ID of the credential that is used during job execution
5839     to connect to the target and determine the list of databases inside the target.
5840    :type refresh_credential: str
5841    """
5842
5843    _validation = {
5844        'type': {'required': True},
5845    }
5846
5847    _attribute_map = {
5848        'membership_type': {'key': 'membershipType', 'type': 'str'},
5849        'type': {'key': 'type', 'type': 'str'},
5850        'server_name': {'key': 'serverName', 'type': 'str'},
5851        'database_name': {'key': 'databaseName', 'type': 'str'},
5852        'elastic_pool_name': {'key': 'elasticPoolName', 'type': 'str'},
5853        'shard_map_name': {'key': 'shardMapName', 'type': 'str'},
5854        'refresh_credential': {'key': 'refreshCredential', 'type': 'str'},
5855    }
5856
5857    def __init__(
5858        self,
5859        **kwargs
5860    ):
5861        super(JobTarget, self).__init__(**kwargs)
5862        self.membership_type = kwargs.get('membership_type', "Include")
5863        self.type = kwargs['type']
5864        self.server_name = kwargs.get('server_name', None)
5865        self.database_name = kwargs.get('database_name', None)
5866        self.elastic_pool_name = kwargs.get('elastic_pool_name', None)
5867        self.shard_map_name = kwargs.get('shard_map_name', None)
5868        self.refresh_credential = kwargs.get('refresh_credential', None)
5869
5870
5871class JobTargetGroup(ProxyResource):
5872    """A group of job targets.
5873
5874    Variables are only populated by the server, and will be ignored when sending a request.
5875
5876    :ivar id: Resource ID.
5877    :vartype id: str
5878    :ivar name: Resource name.
5879    :vartype name: str
5880    :ivar type: Resource type.
5881    :vartype type: str
5882    :param members: Members of the target group.
5883    :type members: list[~azure.mgmt.sql.models.JobTarget]
5884    """
5885
5886    _validation = {
5887        'id': {'readonly': True},
5888        'name': {'readonly': True},
5889        'type': {'readonly': True},
5890    }
5891
5892    _attribute_map = {
5893        'id': {'key': 'id', 'type': 'str'},
5894        'name': {'key': 'name', 'type': 'str'},
5895        'type': {'key': 'type', 'type': 'str'},
5896        'members': {'key': 'properties.members', 'type': '[JobTarget]'},
5897    }
5898
5899    def __init__(
5900        self,
5901        **kwargs
5902    ):
5903        super(JobTargetGroup, self).__init__(**kwargs)
5904        self.members = kwargs.get('members', None)
5905
5906
5907class JobTargetGroupListResult(msrest.serialization.Model):
5908    """A list of target groups.
5909
5910    Variables are only populated by the server, and will be ignored when sending a request.
5911
5912    :ivar value: Array of results.
5913    :vartype value: list[~azure.mgmt.sql.models.JobTargetGroup]
5914    :ivar next_link: Link to retrieve next page of results.
5915    :vartype next_link: str
5916    """
5917
5918    _validation = {
5919        'value': {'readonly': True},
5920        'next_link': {'readonly': True},
5921    }
5922
5923    _attribute_map = {
5924        'value': {'key': 'value', 'type': '[JobTargetGroup]'},
5925        'next_link': {'key': 'nextLink', 'type': 'str'},
5926    }
5927
5928    def __init__(
5929        self,
5930        **kwargs
5931    ):
5932        super(JobTargetGroupListResult, self).__init__(**kwargs)
5933        self.value = None
5934        self.next_link = None
5935
5936
5937class JobVersion(ProxyResource):
5938    """A job version.
5939
5940    Variables are only populated by the server, and will be ignored when sending a request.
5941
5942    :ivar id: Resource ID.
5943    :vartype id: str
5944    :ivar name: Resource name.
5945    :vartype name: str
5946    :ivar type: Resource type.
5947    :vartype type: str
5948    """
5949
5950    _validation = {
5951        'id': {'readonly': True},
5952        'name': {'readonly': True},
5953        'type': {'readonly': True},
5954    }
5955
5956    _attribute_map = {
5957        'id': {'key': 'id', 'type': 'str'},
5958        'name': {'key': 'name', 'type': 'str'},
5959        'type': {'key': 'type', 'type': 'str'},
5960    }
5961
5962    def __init__(
5963        self,
5964        **kwargs
5965    ):
5966        super(JobVersion, self).__init__(**kwargs)
5967
5968
5969class JobVersionListResult(msrest.serialization.Model):
5970    """A list of job versions.
5971
5972    Variables are only populated by the server, and will be ignored when sending a request.
5973
5974    :ivar value: Array of results.
5975    :vartype value: list[~azure.mgmt.sql.models.JobVersion]
5976    :ivar next_link: Link to retrieve next page of results.
5977    :vartype next_link: str
5978    """
5979
5980    _validation = {
5981        'value': {'readonly': True},
5982        'next_link': {'readonly': True},
5983    }
5984
5985    _attribute_map = {
5986        'value': {'key': 'value', 'type': '[JobVersion]'},
5987        'next_link': {'key': 'nextLink', 'type': 'str'},
5988    }
5989
5990    def __init__(
5991        self,
5992        **kwargs
5993    ):
5994        super(JobVersionListResult, self).__init__(**kwargs)
5995        self.value = None
5996        self.next_link = None
5997
5998
5999class LedgerDigestUploads(ProxyResource):
6000    """Azure SQL Database ledger digest upload settings.
6001
6002    Variables are only populated by the server, and will be ignored when sending a request.
6003
6004    :ivar id: Resource ID.
6005    :vartype id: str
6006    :ivar name: Resource name.
6007    :vartype name: str
6008    :ivar type: Resource type.
6009    :vartype type: str
6010    :param digest_storage_endpoint: The digest storage endpoint, which must be either an Azure blob
6011     storage endpoint or an URI for Azure Confidential Ledger.
6012    :type digest_storage_endpoint: str
6013    :ivar state: Specifies the state of ledger digest upload. Possible values include: "Enabled",
6014     "Disabled".
6015    :vartype state: str or ~azure.mgmt.sql.models.LedgerDigestUploadsState
6016    """
6017
6018    _validation = {
6019        'id': {'readonly': True},
6020        'name': {'readonly': True},
6021        'type': {'readonly': True},
6022        'state': {'readonly': True},
6023    }
6024
6025    _attribute_map = {
6026        'id': {'key': 'id', 'type': 'str'},
6027        'name': {'key': 'name', 'type': 'str'},
6028        'type': {'key': 'type', 'type': 'str'},
6029        'digest_storage_endpoint': {'key': 'properties.digestStorageEndpoint', 'type': 'str'},
6030        'state': {'key': 'properties.state', 'type': 'str'},
6031    }
6032
6033    def __init__(
6034        self,
6035        **kwargs
6036    ):
6037        super(LedgerDigestUploads, self).__init__(**kwargs)
6038        self.digest_storage_endpoint = kwargs.get('digest_storage_endpoint', None)
6039        self.state = None
6040
6041
6042class LedgerDigestUploadsListResult(msrest.serialization.Model):
6043    """A list of ledger digest upload settings.
6044
6045    Variables are only populated by the server, and will be ignored when sending a request.
6046
6047    :ivar value: Array of results.
6048    :vartype value: list[~azure.mgmt.sql.models.LedgerDigestUploads]
6049    :ivar next_link: Link to retrieve next page of results.
6050    :vartype next_link: str
6051    """
6052
6053    _validation = {
6054        'value': {'readonly': True},
6055        'next_link': {'readonly': True},
6056    }
6057
6058    _attribute_map = {
6059        'value': {'key': 'value', 'type': '[LedgerDigestUploads]'},
6060        'next_link': {'key': 'nextLink', 'type': 'str'},
6061    }
6062
6063    def __init__(
6064        self,
6065        **kwargs
6066    ):
6067        super(LedgerDigestUploadsListResult, self).__init__(**kwargs)
6068        self.value = None
6069        self.next_link = None
6070
6071
6072class LicenseTypeCapability(msrest.serialization.Model):
6073    """The license type capability.
6074
6075    Variables are only populated by the server, and will be ignored when sending a request.
6076
6077    :ivar name: License type identifier.
6078    :vartype name: str
6079    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
6080     "Default", "Disabled".
6081    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
6082    :param reason: The reason for the capability not being available.
6083    :type reason: str
6084    """
6085
6086    _validation = {
6087        'name': {'readonly': True},
6088        'status': {'readonly': True},
6089    }
6090
6091    _attribute_map = {
6092        'name': {'key': 'name', 'type': 'str'},
6093        'status': {'key': 'status', 'type': 'str'},
6094        'reason': {'key': 'reason', 'type': 'str'},
6095    }
6096
6097    def __init__(
6098        self,
6099        **kwargs
6100    ):
6101        super(LicenseTypeCapability, self).__init__(**kwargs)
6102        self.name = None
6103        self.status = None
6104        self.reason = kwargs.get('reason', None)
6105
6106
6107class LocationCapabilities(msrest.serialization.Model):
6108    """The location capability.
6109
6110    Variables are only populated by the server, and will be ignored when sending a request.
6111
6112    :ivar name: The location name.
6113    :vartype name: str
6114    :ivar supported_server_versions: The list of supported server versions.
6115    :vartype supported_server_versions: list[~azure.mgmt.sql.models.ServerVersionCapability]
6116    :ivar supported_managed_instance_versions: The list of supported managed instance versions.
6117    :vartype supported_managed_instance_versions:
6118     list[~azure.mgmt.sql.models.ManagedInstanceVersionCapability]
6119    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
6120     "Default", "Disabled".
6121    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
6122    :param reason: The reason for the capability not being available.
6123    :type reason: str
6124    """
6125
6126    _validation = {
6127        'name': {'readonly': True},
6128        'supported_server_versions': {'readonly': True},
6129        'supported_managed_instance_versions': {'readonly': True},
6130        'status': {'readonly': True},
6131    }
6132
6133    _attribute_map = {
6134        'name': {'key': 'name', 'type': 'str'},
6135        'supported_server_versions': {'key': 'supportedServerVersions', 'type': '[ServerVersionCapability]'},
6136        'supported_managed_instance_versions': {'key': 'supportedManagedInstanceVersions', 'type': '[ManagedInstanceVersionCapability]'},
6137        'status': {'key': 'status', 'type': 'str'},
6138        'reason': {'key': 'reason', 'type': 'str'},
6139    }
6140
6141    def __init__(
6142        self,
6143        **kwargs
6144    ):
6145        super(LocationCapabilities, self).__init__(**kwargs)
6146        self.name = None
6147        self.supported_server_versions = None
6148        self.supported_managed_instance_versions = None
6149        self.status = None
6150        self.reason = kwargs.get('reason', None)
6151
6152
6153class LogicalServerSecurityAlertPolicyListResult(msrest.serialization.Model):
6154    """A list of the server's security alert policies.
6155
6156    Variables are only populated by the server, and will be ignored when sending a request.
6157
6158    :ivar value: Array of results.
6159    :vartype value: list[~azure.mgmt.sql.models.ServerSecurityAlertPolicy]
6160    :ivar next_link: Link to retrieve next page of results.
6161    :vartype next_link: str
6162    """
6163
6164    _validation = {
6165        'value': {'readonly': True},
6166        'next_link': {'readonly': True},
6167    }
6168
6169    _attribute_map = {
6170        'value': {'key': 'value', 'type': '[ServerSecurityAlertPolicy]'},
6171        'next_link': {'key': 'nextLink', 'type': 'str'},
6172    }
6173
6174    def __init__(
6175        self,
6176        **kwargs
6177    ):
6178        super(LogicalServerSecurityAlertPolicyListResult, self).__init__(**kwargs)
6179        self.value = None
6180        self.next_link = None
6181
6182
6183class LogSizeCapability(msrest.serialization.Model):
6184    """The log size capability.
6185
6186    Variables are only populated by the server, and will be ignored when sending a request.
6187
6188    :ivar limit: The log size limit (see 'unit' for the units).
6189    :vartype limit: int
6190    :ivar unit: The units that the limit is expressed in. Possible values include: "Megabytes",
6191     "Gigabytes", "Terabytes", "Petabytes", "Percent".
6192    :vartype unit: str or ~azure.mgmt.sql.models.LogSizeUnit
6193    """
6194
6195    _validation = {
6196        'limit': {'readonly': True},
6197        'unit': {'readonly': True},
6198    }
6199
6200    _attribute_map = {
6201        'limit': {'key': 'limit', 'type': 'int'},
6202        'unit': {'key': 'unit', 'type': 'str'},
6203    }
6204
6205    def __init__(
6206        self,
6207        **kwargs
6208    ):
6209        super(LogSizeCapability, self).__init__(**kwargs)
6210        self.limit = None
6211        self.unit = None
6212
6213
6214class LongTermRetentionBackup(ProxyResource):
6215    """A long term retention backup.
6216
6217    Variables are only populated by the server, and will be ignored when sending a request.
6218
6219    :ivar id: Resource ID.
6220    :vartype id: str
6221    :ivar name: Resource name.
6222    :vartype name: str
6223    :ivar type: Resource type.
6224    :vartype type: str
6225    :ivar server_name: The server name that the backup database belong to.
6226    :vartype server_name: str
6227    :ivar server_create_time: The create time of the server.
6228    :vartype server_create_time: ~datetime.datetime
6229    :ivar database_name: The name of the database the backup belong to.
6230    :vartype database_name: str
6231    :ivar database_deletion_time: The delete time of the database.
6232    :vartype database_deletion_time: ~datetime.datetime
6233    :ivar backup_time: The time the backup was taken.
6234    :vartype backup_time: ~datetime.datetime
6235    :ivar backup_expiration_time: The time the long term retention backup will expire.
6236    :vartype backup_expiration_time: ~datetime.datetime
6237    :ivar backup_storage_redundancy: The storage redundancy type of the backup. Possible values
6238     include: "Geo", "Local", "Zone".
6239    :vartype backup_storage_redundancy: str or ~azure.mgmt.sql.models.BackupStorageRedundancy
6240    :param requested_backup_storage_redundancy: The storage redundancy type of the backup. Possible
6241     values include: "Geo", "Local", "Zone".
6242    :type requested_backup_storage_redundancy: str or
6243     ~azure.mgmt.sql.models.BackupStorageRedundancy
6244    """
6245
6246    _validation = {
6247        'id': {'readonly': True},
6248        'name': {'readonly': True},
6249        'type': {'readonly': True},
6250        'server_name': {'readonly': True},
6251        'server_create_time': {'readonly': True},
6252        'database_name': {'readonly': True},
6253        'database_deletion_time': {'readonly': True},
6254        'backup_time': {'readonly': True},
6255        'backup_expiration_time': {'readonly': True},
6256        'backup_storage_redundancy': {'readonly': True},
6257    }
6258
6259    _attribute_map = {
6260        'id': {'key': 'id', 'type': 'str'},
6261        'name': {'key': 'name', 'type': 'str'},
6262        'type': {'key': 'type', 'type': 'str'},
6263        'server_name': {'key': 'properties.serverName', 'type': 'str'},
6264        'server_create_time': {'key': 'properties.serverCreateTime', 'type': 'iso-8601'},
6265        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
6266        'database_deletion_time': {'key': 'properties.databaseDeletionTime', 'type': 'iso-8601'},
6267        'backup_time': {'key': 'properties.backupTime', 'type': 'iso-8601'},
6268        'backup_expiration_time': {'key': 'properties.backupExpirationTime', 'type': 'iso-8601'},
6269        'backup_storage_redundancy': {'key': 'properties.backupStorageRedundancy', 'type': 'str'},
6270        'requested_backup_storage_redundancy': {'key': 'properties.requestedBackupStorageRedundancy', 'type': 'str'},
6271    }
6272
6273    def __init__(
6274        self,
6275        **kwargs
6276    ):
6277        super(LongTermRetentionBackup, self).__init__(**kwargs)
6278        self.server_name = None
6279        self.server_create_time = None
6280        self.database_name = None
6281        self.database_deletion_time = None
6282        self.backup_time = None
6283        self.backup_expiration_time = None
6284        self.backup_storage_redundancy = None
6285        self.requested_backup_storage_redundancy = kwargs.get('requested_backup_storage_redundancy', None)
6286
6287
6288class LongTermRetentionBackupListResult(msrest.serialization.Model):
6289    """A list of long term retention backups.
6290
6291    Variables are only populated by the server, and will be ignored when sending a request.
6292
6293    :ivar value: Array of results.
6294    :vartype value: list[~azure.mgmt.sql.models.LongTermRetentionBackup]
6295    :ivar next_link: Link to retrieve next page of results.
6296    :vartype next_link: str
6297    """
6298
6299    _validation = {
6300        'value': {'readonly': True},
6301        'next_link': {'readonly': True},
6302    }
6303
6304    _attribute_map = {
6305        'value': {'key': 'value', 'type': '[LongTermRetentionBackup]'},
6306        'next_link': {'key': 'nextLink', 'type': 'str'},
6307    }
6308
6309    def __init__(
6310        self,
6311        **kwargs
6312    ):
6313        super(LongTermRetentionBackupListResult, self).__init__(**kwargs)
6314        self.value = None
6315        self.next_link = None
6316
6317
6318class LongTermRetentionBackupOperationResult(ProxyResource):
6319    """A LongTermRetentionBackup operation result resource.
6320
6321    Variables are only populated by the server, and will be ignored when sending a request.
6322
6323    :ivar id: Resource ID.
6324    :vartype id: str
6325    :ivar name: Resource name.
6326    :vartype name: str
6327    :ivar type: Resource type.
6328    :vartype type: str
6329    :ivar request_id: Request Id.
6330    :vartype request_id: str
6331    :ivar operation_type: Operation type.
6332    :vartype operation_type: str
6333    :ivar from_backup_resource_id: Source backup resource id.
6334    :vartype from_backup_resource_id: str
6335    :ivar to_backup_resource_id: Target backup resource id.
6336    :vartype to_backup_resource_id: str
6337    :ivar target_backup_storage_redundancy: The storage redundancy type of the copied backup.
6338     Possible values include: "Geo", "Local", "Zone".
6339    :vartype target_backup_storage_redundancy: str or
6340     ~azure.mgmt.sql.models.BackupStorageRedundancy
6341    :ivar status: Operation status.
6342    :vartype status: str
6343    :ivar message: Progress message.
6344    :vartype message: str
6345    """
6346
6347    _validation = {
6348        'id': {'readonly': True},
6349        'name': {'readonly': True},
6350        'type': {'readonly': True},
6351        'request_id': {'readonly': True},
6352        'operation_type': {'readonly': True},
6353        'from_backup_resource_id': {'readonly': True},
6354        'to_backup_resource_id': {'readonly': True},
6355        'target_backup_storage_redundancy': {'readonly': True},
6356        'status': {'readonly': True},
6357        'message': {'readonly': True},
6358    }
6359
6360    _attribute_map = {
6361        'id': {'key': 'id', 'type': 'str'},
6362        'name': {'key': 'name', 'type': 'str'},
6363        'type': {'key': 'type', 'type': 'str'},
6364        'request_id': {'key': 'properties.requestId', 'type': 'str'},
6365        'operation_type': {'key': 'properties.operationType', 'type': 'str'},
6366        'from_backup_resource_id': {'key': 'properties.fromBackupResourceId', 'type': 'str'},
6367        'to_backup_resource_id': {'key': 'properties.toBackupResourceId', 'type': 'str'},
6368        'target_backup_storage_redundancy': {'key': 'properties.targetBackupStorageRedundancy', 'type': 'str'},
6369        'status': {'key': 'properties.status', 'type': 'str'},
6370        'message': {'key': 'properties.message', 'type': 'str'},
6371    }
6372
6373    def __init__(
6374        self,
6375        **kwargs
6376    ):
6377        super(LongTermRetentionBackupOperationResult, self).__init__(**kwargs)
6378        self.request_id = None
6379        self.operation_type = None
6380        self.from_backup_resource_id = None
6381        self.to_backup_resource_id = None
6382        self.target_backup_storage_redundancy = None
6383        self.status = None
6384        self.message = None
6385
6386
6387class LongTermRetentionPolicy(ProxyResource):
6388    """A long term retention policy.
6389
6390    Variables are only populated by the server, and will be ignored when sending a request.
6391
6392    :ivar id: Resource ID.
6393    :vartype id: str
6394    :ivar name: Resource name.
6395    :vartype name: str
6396    :ivar type: Resource type.
6397    :vartype type: str
6398    :param weekly_retention: The weekly retention policy for an LTR backup in an ISO 8601 format.
6399    :type weekly_retention: str
6400    :param monthly_retention: The monthly retention policy for an LTR backup in an ISO 8601 format.
6401    :type monthly_retention: str
6402    :param yearly_retention: The yearly retention policy for an LTR backup in an ISO 8601 format.
6403    :type yearly_retention: str
6404    :param week_of_year: The week of year to take the yearly backup in an ISO 8601 format.
6405    :type week_of_year: int
6406    """
6407
6408    _validation = {
6409        'id': {'readonly': True},
6410        'name': {'readonly': True},
6411        'type': {'readonly': True},
6412    }
6413
6414    _attribute_map = {
6415        'id': {'key': 'id', 'type': 'str'},
6416        'name': {'key': 'name', 'type': 'str'},
6417        'type': {'key': 'type', 'type': 'str'},
6418        'weekly_retention': {'key': 'properties.weeklyRetention', 'type': 'str'},
6419        'monthly_retention': {'key': 'properties.monthlyRetention', 'type': 'str'},
6420        'yearly_retention': {'key': 'properties.yearlyRetention', 'type': 'str'},
6421        'week_of_year': {'key': 'properties.weekOfYear', 'type': 'int'},
6422    }
6423
6424    def __init__(
6425        self,
6426        **kwargs
6427    ):
6428        super(LongTermRetentionPolicy, self).__init__(**kwargs)
6429        self.weekly_retention = kwargs.get('weekly_retention', None)
6430        self.monthly_retention = kwargs.get('monthly_retention', None)
6431        self.yearly_retention = kwargs.get('yearly_retention', None)
6432        self.week_of_year = kwargs.get('week_of_year', None)
6433
6434
6435class LongTermRetentionPolicyListResult(msrest.serialization.Model):
6436    """A list of long term retention policies.
6437
6438    Variables are only populated by the server, and will be ignored when sending a request.
6439
6440    :ivar value: Array of results.
6441    :vartype value: list[~azure.mgmt.sql.models.LongTermRetentionPolicy]
6442    :ivar next_link: Link to retrieve next page of results.
6443    :vartype next_link: str
6444    """
6445
6446    _validation = {
6447        'value': {'readonly': True},
6448        'next_link': {'readonly': True},
6449    }
6450
6451    _attribute_map = {
6452        'value': {'key': 'value', 'type': '[LongTermRetentionPolicy]'},
6453        'next_link': {'key': 'nextLink', 'type': 'str'},
6454    }
6455
6456    def __init__(
6457        self,
6458        **kwargs
6459    ):
6460        super(LongTermRetentionPolicyListResult, self).__init__(**kwargs)
6461        self.value = None
6462        self.next_link = None
6463
6464
6465class MaintenanceConfigurationCapability(msrest.serialization.Model):
6466    """The maintenance configuration capability.
6467
6468    Variables are only populated by the server, and will be ignored when sending a request.
6469
6470    :ivar name: Maintenance configuration name.
6471    :vartype name: str
6472    :ivar zone_redundant: Whether or not zone redundancy is supported for the maintenance
6473     configuration.
6474    :vartype zone_redundant: bool
6475    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
6476     "Default", "Disabled".
6477    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
6478    :param reason: The reason for the capability not being available.
6479    :type reason: str
6480    """
6481
6482    _validation = {
6483        'name': {'readonly': True},
6484        'zone_redundant': {'readonly': True},
6485        'status': {'readonly': True},
6486    }
6487
6488    _attribute_map = {
6489        'name': {'key': 'name', 'type': 'str'},
6490        'zone_redundant': {'key': 'zoneRedundant', 'type': 'bool'},
6491        'status': {'key': 'status', 'type': 'str'},
6492        'reason': {'key': 'reason', 'type': 'str'},
6493    }
6494
6495    def __init__(
6496        self,
6497        **kwargs
6498    ):
6499        super(MaintenanceConfigurationCapability, self).__init__(**kwargs)
6500        self.name = None
6501        self.zone_redundant = None
6502        self.status = None
6503        self.reason = kwargs.get('reason', None)
6504
6505
6506class MaintenanceWindowOptions(ProxyResource):
6507    """Maintenance window options.
6508
6509    Variables are only populated by the server, and will be ignored when sending a request.
6510
6511    :ivar id: Resource ID.
6512    :vartype id: str
6513    :ivar name: Resource name.
6514    :vartype name: str
6515    :ivar type: Resource type.
6516    :vartype type: str
6517    :param is_enabled: Whether maintenance windows are enabled for the database.
6518    :type is_enabled: bool
6519    :param maintenance_window_cycles: Available maintenance cycles e.g. {Saturday, 0, 48\ *60},
6520     {Wednesday, 0, 24*\ 60}.
6521    :type maintenance_window_cycles: list[~azure.mgmt.sql.models.MaintenanceWindowTimeRange]
6522    :param min_duration_in_minutes: Minimum duration of maintenance window.
6523    :type min_duration_in_minutes: int
6524    :param default_duration_in_minutes: Default duration for maintenance window.
6525    :type default_duration_in_minutes: int
6526    :param min_cycles: Minimum number of maintenance windows cycles to be set on the database.
6527    :type min_cycles: int
6528    :param time_granularity_in_minutes: Time granularity in minutes for maintenance windows.
6529    :type time_granularity_in_minutes: int
6530    :param allow_multiple_maintenance_windows_per_cycle: Whether we allow multiple maintenance
6531     windows per cycle.
6532    :type allow_multiple_maintenance_windows_per_cycle: bool
6533    """
6534
6535    _validation = {
6536        'id': {'readonly': True},
6537        'name': {'readonly': True},
6538        'type': {'readonly': True},
6539    }
6540
6541    _attribute_map = {
6542        'id': {'key': 'id', 'type': 'str'},
6543        'name': {'key': 'name', 'type': 'str'},
6544        'type': {'key': 'type', 'type': 'str'},
6545        'is_enabled': {'key': 'properties.isEnabled', 'type': 'bool'},
6546        'maintenance_window_cycles': {'key': 'properties.maintenanceWindowCycles', 'type': '[MaintenanceWindowTimeRange]'},
6547        'min_duration_in_minutes': {'key': 'properties.minDurationInMinutes', 'type': 'int'},
6548        'default_duration_in_minutes': {'key': 'properties.defaultDurationInMinutes', 'type': 'int'},
6549        'min_cycles': {'key': 'properties.minCycles', 'type': 'int'},
6550        'time_granularity_in_minutes': {'key': 'properties.timeGranularityInMinutes', 'type': 'int'},
6551        'allow_multiple_maintenance_windows_per_cycle': {'key': 'properties.allowMultipleMaintenanceWindowsPerCycle', 'type': 'bool'},
6552    }
6553
6554    def __init__(
6555        self,
6556        **kwargs
6557    ):
6558        super(MaintenanceWindowOptions, self).__init__(**kwargs)
6559        self.is_enabled = kwargs.get('is_enabled', None)
6560        self.maintenance_window_cycles = kwargs.get('maintenance_window_cycles', None)
6561        self.min_duration_in_minutes = kwargs.get('min_duration_in_minutes', None)
6562        self.default_duration_in_minutes = kwargs.get('default_duration_in_minutes', None)
6563        self.min_cycles = kwargs.get('min_cycles', None)
6564        self.time_granularity_in_minutes = kwargs.get('time_granularity_in_minutes', None)
6565        self.allow_multiple_maintenance_windows_per_cycle = kwargs.get('allow_multiple_maintenance_windows_per_cycle', None)
6566
6567
6568class MaintenanceWindows(ProxyResource):
6569    """Maintenance windows.
6570
6571    Variables are only populated by the server, and will be ignored when sending a request.
6572
6573    :ivar id: Resource ID.
6574    :vartype id: str
6575    :ivar name: Resource name.
6576    :vartype name: str
6577    :ivar type: Resource type.
6578    :vartype type: str
6579    :param time_ranges:
6580    :type time_ranges: list[~azure.mgmt.sql.models.MaintenanceWindowTimeRange]
6581    """
6582
6583    _validation = {
6584        'id': {'readonly': True},
6585        'name': {'readonly': True},
6586        'type': {'readonly': True},
6587    }
6588
6589    _attribute_map = {
6590        'id': {'key': 'id', 'type': 'str'},
6591        'name': {'key': 'name', 'type': 'str'},
6592        'type': {'key': 'type', 'type': 'str'},
6593        'time_ranges': {'key': 'properties.timeRanges', 'type': '[MaintenanceWindowTimeRange]'},
6594    }
6595
6596    def __init__(
6597        self,
6598        **kwargs
6599    ):
6600        super(MaintenanceWindows, self).__init__(**kwargs)
6601        self.time_ranges = kwargs.get('time_ranges', None)
6602
6603
6604class MaintenanceWindowTimeRange(msrest.serialization.Model):
6605    """Maintenance window time range.
6606
6607    :param day_of_week: Day of maintenance window. Possible values include: "Sunday", "Monday",
6608     "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday".
6609    :type day_of_week: str or ~azure.mgmt.sql.models.DayOfWeek
6610    :param start_time: Start time minutes offset from 12am.
6611    :type start_time: str
6612    :param duration: Duration of maintenance window in minutes.
6613    :type duration: str
6614    """
6615
6616    _attribute_map = {
6617        'day_of_week': {'key': 'dayOfWeek', 'type': 'str'},
6618        'start_time': {'key': 'startTime', 'type': 'str'},
6619        'duration': {'key': 'duration', 'type': 'str'},
6620    }
6621
6622    def __init__(
6623        self,
6624        **kwargs
6625    ):
6626        super(MaintenanceWindowTimeRange, self).__init__(**kwargs)
6627        self.day_of_week = kwargs.get('day_of_week', None)
6628        self.start_time = kwargs.get('start_time', None)
6629        self.duration = kwargs.get('duration', None)
6630
6631
6632class ManagedBackupShortTermRetentionPolicy(ProxyResource):
6633    """A short term retention policy.
6634
6635    Variables are only populated by the server, and will be ignored when sending a request.
6636
6637    :ivar id: Resource ID.
6638    :vartype id: str
6639    :ivar name: Resource name.
6640    :vartype name: str
6641    :ivar type: Resource type.
6642    :vartype type: str
6643    :param retention_days: The backup retention period in days. This is how many days Point-in-Time
6644     Restore will be supported.
6645    :type retention_days: int
6646    """
6647
6648    _validation = {
6649        'id': {'readonly': True},
6650        'name': {'readonly': True},
6651        'type': {'readonly': True},
6652    }
6653
6654    _attribute_map = {
6655        'id': {'key': 'id', 'type': 'str'},
6656        'name': {'key': 'name', 'type': 'str'},
6657        'type': {'key': 'type', 'type': 'str'},
6658        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
6659    }
6660
6661    def __init__(
6662        self,
6663        **kwargs
6664    ):
6665        super(ManagedBackupShortTermRetentionPolicy, self).__init__(**kwargs)
6666        self.retention_days = kwargs.get('retention_days', None)
6667
6668
6669class ManagedBackupShortTermRetentionPolicyListResult(msrest.serialization.Model):
6670    """A list of short term retention policies.
6671
6672    Variables are only populated by the server, and will be ignored when sending a request.
6673
6674    :ivar value: Array of results.
6675    :vartype value: list[~azure.mgmt.sql.models.ManagedBackupShortTermRetentionPolicy]
6676    :ivar next_link: Link to retrieve next page of results.
6677    :vartype next_link: str
6678    """
6679
6680    _validation = {
6681        'value': {'readonly': True},
6682        'next_link': {'readonly': True},
6683    }
6684
6685    _attribute_map = {
6686        'value': {'key': 'value', 'type': '[ManagedBackupShortTermRetentionPolicy]'},
6687        'next_link': {'key': 'nextLink', 'type': 'str'},
6688    }
6689
6690    def __init__(
6691        self,
6692        **kwargs
6693    ):
6694        super(ManagedBackupShortTermRetentionPolicyListResult, self).__init__(**kwargs)
6695        self.value = None
6696        self.next_link = None
6697
6698
6699class ManagedDatabase(TrackedResource):
6700    """A managed database resource.
6701
6702    Variables are only populated by the server, and will be ignored when sending a request.
6703
6704    All required parameters must be populated in order to send to Azure.
6705
6706    :ivar id: Resource ID.
6707    :vartype id: str
6708    :ivar name: Resource name.
6709    :vartype name: str
6710    :ivar type: Resource type.
6711    :vartype type: str
6712    :param location: Required. Resource location.
6713    :type location: str
6714    :param tags: A set of tags. Resource tags.
6715    :type tags: dict[str, str]
6716    :param collation: Collation of the managed database.
6717    :type collation: str
6718    :ivar status: Status of the database. Possible values include: "Online", "Offline", "Shutdown",
6719     "Creating", "Inaccessible", "Restoring", "Updating".
6720    :vartype status: str or ~azure.mgmt.sql.models.ManagedDatabaseStatus
6721    :ivar creation_date: Creation date of the database.
6722    :vartype creation_date: ~datetime.datetime
6723    :ivar earliest_restore_point: Earliest restore point in time for point in time restore.
6724    :vartype earliest_restore_point: ~datetime.datetime
6725    :param restore_point_in_time: Conditional. If createMode is PointInTimeRestore, this value is
6726     required. Specifies the point in time (ISO8601 format) of the source database that will be
6727     restored to create the new database.
6728    :type restore_point_in_time: ~datetime.datetime
6729    :ivar default_secondary_location: Geo paired region.
6730    :vartype default_secondary_location: str
6731    :param catalog_collation: Collation of the metadata catalog. Possible values include:
6732     "DATABASE_DEFAULT", "SQL_Latin1_General_CP1_CI_AS".
6733    :type catalog_collation: str or ~azure.mgmt.sql.models.CatalogCollationType
6734    :param create_mode: Managed database create mode. PointInTimeRestore: Create a database by
6735     restoring a point in time backup of an existing database. SourceDatabaseName,
6736     SourceManagedInstanceName and PointInTime must be specified. RestoreExternalBackup: Create a
6737     database by restoring from external backup files. Collation, StorageContainerUri and
6738     StorageContainerSasToken must be specified. Recovery: Creates a database by restoring a
6739     geo-replicated backup. RecoverableDatabaseId must be specified as the recoverable database
6740     resource ID to restore. RestoreLongTermRetentionBackup: Create a database by restoring from a
6741     long term retention backup (longTermRetentionBackupResourceId required). Possible values
6742     include: "Default", "RestoreExternalBackup", "PointInTimeRestore", "Recovery",
6743     "RestoreLongTermRetentionBackup".
6744    :type create_mode: str or ~azure.mgmt.sql.models.ManagedDatabaseCreateMode
6745    :param storage_container_uri: Conditional. If createMode is RestoreExternalBackup, this value
6746     is required. Specifies the uri of the storage container where backups for this restore are
6747     stored.
6748    :type storage_container_uri: str
6749    :param source_database_id: The resource identifier of the source database associated with
6750     create operation of this database.
6751    :type source_database_id: str
6752    :param restorable_dropped_database_id: The restorable dropped database resource id to restore
6753     when creating this database.
6754    :type restorable_dropped_database_id: str
6755    :param storage_container_sas_token: Conditional. If createMode is RestoreExternalBackup, this
6756     value is required. Specifies the storage container sas token.
6757    :type storage_container_sas_token: str
6758    :ivar failover_group_id: Instance Failover Group resource identifier that this managed database
6759     belongs to.
6760    :vartype failover_group_id: str
6761    :param recoverable_database_id: The resource identifier of the recoverable database associated
6762     with create operation of this database.
6763    :type recoverable_database_id: str
6764    :param long_term_retention_backup_resource_id: The name of the Long Term Retention backup to be
6765     used for restore of this managed database.
6766    :type long_term_retention_backup_resource_id: str
6767    :param auto_complete_restore: Whether to auto complete restore of this managed database.
6768    :type auto_complete_restore: bool
6769    :param last_backup_name: Last backup file name for restore of this managed database.
6770    :type last_backup_name: str
6771    """
6772
6773    _validation = {
6774        'id': {'readonly': True},
6775        'name': {'readonly': True},
6776        'type': {'readonly': True},
6777        'location': {'required': True},
6778        'status': {'readonly': True},
6779        'creation_date': {'readonly': True},
6780        'earliest_restore_point': {'readonly': True},
6781        'default_secondary_location': {'readonly': True},
6782        'failover_group_id': {'readonly': True},
6783    }
6784
6785    _attribute_map = {
6786        'id': {'key': 'id', 'type': 'str'},
6787        'name': {'key': 'name', 'type': 'str'},
6788        'type': {'key': 'type', 'type': 'str'},
6789        'location': {'key': 'location', 'type': 'str'},
6790        'tags': {'key': 'tags', 'type': '{str}'},
6791        'collation': {'key': 'properties.collation', 'type': 'str'},
6792        'status': {'key': 'properties.status', 'type': 'str'},
6793        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
6794        'earliest_restore_point': {'key': 'properties.earliestRestorePoint', 'type': 'iso-8601'},
6795        'restore_point_in_time': {'key': 'properties.restorePointInTime', 'type': 'iso-8601'},
6796        'default_secondary_location': {'key': 'properties.defaultSecondaryLocation', 'type': 'str'},
6797        'catalog_collation': {'key': 'properties.catalogCollation', 'type': 'str'},
6798        'create_mode': {'key': 'properties.createMode', 'type': 'str'},
6799        'storage_container_uri': {'key': 'properties.storageContainerUri', 'type': 'str'},
6800        'source_database_id': {'key': 'properties.sourceDatabaseId', 'type': 'str'},
6801        'restorable_dropped_database_id': {'key': 'properties.restorableDroppedDatabaseId', 'type': 'str'},
6802        'storage_container_sas_token': {'key': 'properties.storageContainerSasToken', 'type': 'str'},
6803        'failover_group_id': {'key': 'properties.failoverGroupId', 'type': 'str'},
6804        'recoverable_database_id': {'key': 'properties.recoverableDatabaseId', 'type': 'str'},
6805        'long_term_retention_backup_resource_id': {'key': 'properties.longTermRetentionBackupResourceId', 'type': 'str'},
6806        'auto_complete_restore': {'key': 'properties.autoCompleteRestore', 'type': 'bool'},
6807        'last_backup_name': {'key': 'properties.lastBackupName', 'type': 'str'},
6808    }
6809
6810    def __init__(
6811        self,
6812        **kwargs
6813    ):
6814        super(ManagedDatabase, self).__init__(**kwargs)
6815        self.collation = kwargs.get('collation', None)
6816        self.status = None
6817        self.creation_date = None
6818        self.earliest_restore_point = None
6819        self.restore_point_in_time = kwargs.get('restore_point_in_time', None)
6820        self.default_secondary_location = None
6821        self.catalog_collation = kwargs.get('catalog_collation', None)
6822        self.create_mode = kwargs.get('create_mode', None)
6823        self.storage_container_uri = kwargs.get('storage_container_uri', None)
6824        self.source_database_id = kwargs.get('source_database_id', None)
6825        self.restorable_dropped_database_id = kwargs.get('restorable_dropped_database_id', None)
6826        self.storage_container_sas_token = kwargs.get('storage_container_sas_token', None)
6827        self.failover_group_id = None
6828        self.recoverable_database_id = kwargs.get('recoverable_database_id', None)
6829        self.long_term_retention_backup_resource_id = kwargs.get('long_term_retention_backup_resource_id', None)
6830        self.auto_complete_restore = kwargs.get('auto_complete_restore', None)
6831        self.last_backup_name = kwargs.get('last_backup_name', None)
6832
6833
6834class ManagedDatabaseListResult(msrest.serialization.Model):
6835    """A list of managed databases.
6836
6837    Variables are only populated by the server, and will be ignored when sending a request.
6838
6839    :ivar value: Array of results.
6840    :vartype value: list[~azure.mgmt.sql.models.ManagedDatabase]
6841    :ivar next_link: Link to retrieve next page of results.
6842    :vartype next_link: str
6843    """
6844
6845    _validation = {
6846        'value': {'readonly': True},
6847        'next_link': {'readonly': True},
6848    }
6849
6850    _attribute_map = {
6851        'value': {'key': 'value', 'type': '[ManagedDatabase]'},
6852        'next_link': {'key': 'nextLink', 'type': 'str'},
6853    }
6854
6855    def __init__(
6856        self,
6857        **kwargs
6858    ):
6859        super(ManagedDatabaseListResult, self).__init__(**kwargs)
6860        self.value = None
6861        self.next_link = None
6862
6863
6864class ManagedDatabaseRestoreDetailsResult(ProxyResource):
6865    """A managed database restore details.
6866
6867    Variables are only populated by the server, and will be ignored when sending a request.
6868
6869    :ivar id: Resource ID.
6870    :vartype id: str
6871    :ivar name: Resource name.
6872    :vartype name: str
6873    :ivar type: Resource type.
6874    :vartype type: str
6875    :ivar status: Restore status.
6876    :vartype status: str
6877    :ivar current_restoring_file_name: Current restoring file name.
6878    :vartype current_restoring_file_name: str
6879    :ivar last_restored_file_name: Last restored file name.
6880    :vartype last_restored_file_name: str
6881    :ivar last_restored_file_time: Last restored file time.
6882    :vartype last_restored_file_time: ~datetime.datetime
6883    :ivar percent_completed: Percent completed.
6884    :vartype percent_completed: float
6885    :ivar unrestorable_files: List of unrestorable files.
6886    :vartype unrestorable_files: list[str]
6887    :ivar number_of_files_detected: Number of files detected.
6888    :vartype number_of_files_detected: long
6889    :ivar last_uploaded_file_name: Last uploaded file name.
6890    :vartype last_uploaded_file_name: str
6891    :ivar last_uploaded_file_time: Last uploaded file time.
6892    :vartype last_uploaded_file_time: ~datetime.datetime
6893    :ivar block_reason: The reason why restore is in Blocked state.
6894    :vartype block_reason: str
6895    """
6896
6897    _validation = {
6898        'id': {'readonly': True},
6899        'name': {'readonly': True},
6900        'type': {'readonly': True},
6901        'status': {'readonly': True},
6902        'current_restoring_file_name': {'readonly': True},
6903        'last_restored_file_name': {'readonly': True},
6904        'last_restored_file_time': {'readonly': True},
6905        'percent_completed': {'readonly': True},
6906        'unrestorable_files': {'readonly': True},
6907        'number_of_files_detected': {'readonly': True},
6908        'last_uploaded_file_name': {'readonly': True},
6909        'last_uploaded_file_time': {'readonly': True},
6910        'block_reason': {'readonly': True},
6911    }
6912
6913    _attribute_map = {
6914        'id': {'key': 'id', 'type': 'str'},
6915        'name': {'key': 'name', 'type': 'str'},
6916        'type': {'key': 'type', 'type': 'str'},
6917        'status': {'key': 'properties.status', 'type': 'str'},
6918        'current_restoring_file_name': {'key': 'properties.currentRestoringFileName', 'type': 'str'},
6919        'last_restored_file_name': {'key': 'properties.lastRestoredFileName', 'type': 'str'},
6920        'last_restored_file_time': {'key': 'properties.lastRestoredFileTime', 'type': 'iso-8601'},
6921        'percent_completed': {'key': 'properties.percentCompleted', 'type': 'float'},
6922        'unrestorable_files': {'key': 'properties.unrestorableFiles', 'type': '[str]'},
6923        'number_of_files_detected': {'key': 'properties.numberOfFilesDetected', 'type': 'long'},
6924        'last_uploaded_file_name': {'key': 'properties.lastUploadedFileName', 'type': 'str'},
6925        'last_uploaded_file_time': {'key': 'properties.lastUploadedFileTime', 'type': 'iso-8601'},
6926        'block_reason': {'key': 'properties.blockReason', 'type': 'str'},
6927    }
6928
6929    def __init__(
6930        self,
6931        **kwargs
6932    ):
6933        super(ManagedDatabaseRestoreDetailsResult, self).__init__(**kwargs)
6934        self.status = None
6935        self.current_restoring_file_name = None
6936        self.last_restored_file_name = None
6937        self.last_restored_file_time = None
6938        self.percent_completed = None
6939        self.unrestorable_files = None
6940        self.number_of_files_detected = None
6941        self.last_uploaded_file_name = None
6942        self.last_uploaded_file_time = None
6943        self.block_reason = None
6944
6945
6946class ManagedDatabaseSecurityAlertPolicy(ProxyResource):
6947    """A managed database security alert policy.
6948
6949    Variables are only populated by the server, and will be ignored when sending a request.
6950
6951    :ivar id: Resource ID.
6952    :vartype id: str
6953    :ivar name: Resource name.
6954    :vartype name: str
6955    :ivar type: Resource type.
6956    :vartype type: str
6957    :param state: Specifies the state of the policy, whether it is enabled or disabled or a policy
6958     has not been applied yet on the specific database. Possible values include: "New", "Enabled",
6959     "Disabled".
6960    :type state: str or ~azure.mgmt.sql.models.SecurityAlertPolicyState
6961    :param disabled_alerts: Specifies an array of alerts that are disabled. Allowed values are:
6962     Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly, Data_Exfiltration, Unsafe_Action,
6963     Brute_Force.
6964    :type disabled_alerts: list[str]
6965    :param email_addresses: Specifies an array of e-mail addresses to which the alert is sent.
6966    :type email_addresses: list[str]
6967    :param email_account_admins: Specifies that the alert is sent to the account administrators.
6968    :type email_account_admins: bool
6969    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
6970     https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection
6971     audit logs.
6972    :type storage_endpoint: str
6973    :param storage_account_access_key: Specifies the identifier key of the Threat Detection audit
6974     storage account.
6975    :type storage_account_access_key: str
6976    :param retention_days: Specifies the number of days to keep in the Threat Detection audit logs.
6977    :type retention_days: int
6978    :ivar creation_time: Specifies the UTC creation time of the policy.
6979    :vartype creation_time: ~datetime.datetime
6980    """
6981
6982    _validation = {
6983        'id': {'readonly': True},
6984        'name': {'readonly': True},
6985        'type': {'readonly': True},
6986        'creation_time': {'readonly': True},
6987    }
6988
6989    _attribute_map = {
6990        'id': {'key': 'id', 'type': 'str'},
6991        'name': {'key': 'name', 'type': 'str'},
6992        'type': {'key': 'type', 'type': 'str'},
6993        'state': {'key': 'properties.state', 'type': 'str'},
6994        'disabled_alerts': {'key': 'properties.disabledAlerts', 'type': '[str]'},
6995        'email_addresses': {'key': 'properties.emailAddresses', 'type': '[str]'},
6996        'email_account_admins': {'key': 'properties.emailAccountAdmins', 'type': 'bool'},
6997        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
6998        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
6999        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
7000        'creation_time': {'key': 'properties.creationTime', 'type': 'iso-8601'},
7001    }
7002
7003    def __init__(
7004        self,
7005        **kwargs
7006    ):
7007        super(ManagedDatabaseSecurityAlertPolicy, self).__init__(**kwargs)
7008        self.state = kwargs.get('state', None)
7009        self.disabled_alerts = kwargs.get('disabled_alerts', None)
7010        self.email_addresses = kwargs.get('email_addresses', None)
7011        self.email_account_admins = kwargs.get('email_account_admins', None)
7012        self.storage_endpoint = kwargs.get('storage_endpoint', None)
7013        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
7014        self.retention_days = kwargs.get('retention_days', None)
7015        self.creation_time = None
7016
7017
7018class ManagedDatabaseSecurityAlertPolicyListResult(msrest.serialization.Model):
7019    """A list of the managed database's security alert policies.
7020
7021    Variables are only populated by the server, and will be ignored when sending a request.
7022
7023    :ivar value: Array of results.
7024    :vartype value: list[~azure.mgmt.sql.models.ManagedDatabaseSecurityAlertPolicy]
7025    :ivar next_link: Link to retrieve next page of results.
7026    :vartype next_link: str
7027    """
7028
7029    _validation = {
7030        'value': {'readonly': True},
7031        'next_link': {'readonly': True},
7032    }
7033
7034    _attribute_map = {
7035        'value': {'key': 'value', 'type': '[ManagedDatabaseSecurityAlertPolicy]'},
7036        'next_link': {'key': 'nextLink', 'type': 'str'},
7037    }
7038
7039    def __init__(
7040        self,
7041        **kwargs
7042    ):
7043        super(ManagedDatabaseSecurityAlertPolicyListResult, self).__init__(**kwargs)
7044        self.value = None
7045        self.next_link = None
7046
7047
7048class ManagedDatabaseUpdate(msrest.serialization.Model):
7049    """An managed database update.
7050
7051    Variables are only populated by the server, and will be ignored when sending a request.
7052
7053    :param tags: A set of tags. Resource tags.
7054    :type tags: dict[str, str]
7055    :param collation: Collation of the managed database.
7056    :type collation: str
7057    :ivar status: Status of the database. Possible values include: "Online", "Offline", "Shutdown",
7058     "Creating", "Inaccessible", "Restoring", "Updating".
7059    :vartype status: str or ~azure.mgmt.sql.models.ManagedDatabaseStatus
7060    :ivar creation_date: Creation date of the database.
7061    :vartype creation_date: ~datetime.datetime
7062    :ivar earliest_restore_point: Earliest restore point in time for point in time restore.
7063    :vartype earliest_restore_point: ~datetime.datetime
7064    :param restore_point_in_time: Conditional. If createMode is PointInTimeRestore, this value is
7065     required. Specifies the point in time (ISO8601 format) of the source database that will be
7066     restored to create the new database.
7067    :type restore_point_in_time: ~datetime.datetime
7068    :ivar default_secondary_location: Geo paired region.
7069    :vartype default_secondary_location: str
7070    :param catalog_collation: Collation of the metadata catalog. Possible values include:
7071     "DATABASE_DEFAULT", "SQL_Latin1_General_CP1_CI_AS".
7072    :type catalog_collation: str or ~azure.mgmt.sql.models.CatalogCollationType
7073    :param create_mode: Managed database create mode. PointInTimeRestore: Create a database by
7074     restoring a point in time backup of an existing database. SourceDatabaseName,
7075     SourceManagedInstanceName and PointInTime must be specified. RestoreExternalBackup: Create a
7076     database by restoring from external backup files. Collation, StorageContainerUri and
7077     StorageContainerSasToken must be specified. Recovery: Creates a database by restoring a
7078     geo-replicated backup. RecoverableDatabaseId must be specified as the recoverable database
7079     resource ID to restore. RestoreLongTermRetentionBackup: Create a database by restoring from a
7080     long term retention backup (longTermRetentionBackupResourceId required). Possible values
7081     include: "Default", "RestoreExternalBackup", "PointInTimeRestore", "Recovery",
7082     "RestoreLongTermRetentionBackup".
7083    :type create_mode: str or ~azure.mgmt.sql.models.ManagedDatabaseCreateMode
7084    :param storage_container_uri: Conditional. If createMode is RestoreExternalBackup, this value
7085     is required. Specifies the uri of the storage container where backups for this restore are
7086     stored.
7087    :type storage_container_uri: str
7088    :param source_database_id: The resource identifier of the source database associated with
7089     create operation of this database.
7090    :type source_database_id: str
7091    :param restorable_dropped_database_id: The restorable dropped database resource id to restore
7092     when creating this database.
7093    :type restorable_dropped_database_id: str
7094    :param storage_container_sas_token: Conditional. If createMode is RestoreExternalBackup, this
7095     value is required. Specifies the storage container sas token.
7096    :type storage_container_sas_token: str
7097    :ivar failover_group_id: Instance Failover Group resource identifier that this managed database
7098     belongs to.
7099    :vartype failover_group_id: str
7100    :param recoverable_database_id: The resource identifier of the recoverable database associated
7101     with create operation of this database.
7102    :type recoverable_database_id: str
7103    :param long_term_retention_backup_resource_id: The name of the Long Term Retention backup to be
7104     used for restore of this managed database.
7105    :type long_term_retention_backup_resource_id: str
7106    :param auto_complete_restore: Whether to auto complete restore of this managed database.
7107    :type auto_complete_restore: bool
7108    :param last_backup_name: Last backup file name for restore of this managed database.
7109    :type last_backup_name: str
7110    """
7111
7112    _validation = {
7113        'status': {'readonly': True},
7114        'creation_date': {'readonly': True},
7115        'earliest_restore_point': {'readonly': True},
7116        'default_secondary_location': {'readonly': True},
7117        'failover_group_id': {'readonly': True},
7118    }
7119
7120    _attribute_map = {
7121        'tags': {'key': 'tags', 'type': '{str}'},
7122        'collation': {'key': 'properties.collation', 'type': 'str'},
7123        'status': {'key': 'properties.status', 'type': 'str'},
7124        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
7125        'earliest_restore_point': {'key': 'properties.earliestRestorePoint', 'type': 'iso-8601'},
7126        'restore_point_in_time': {'key': 'properties.restorePointInTime', 'type': 'iso-8601'},
7127        'default_secondary_location': {'key': 'properties.defaultSecondaryLocation', 'type': 'str'},
7128        'catalog_collation': {'key': 'properties.catalogCollation', 'type': 'str'},
7129        'create_mode': {'key': 'properties.createMode', 'type': 'str'},
7130        'storage_container_uri': {'key': 'properties.storageContainerUri', 'type': 'str'},
7131        'source_database_id': {'key': 'properties.sourceDatabaseId', 'type': 'str'},
7132        'restorable_dropped_database_id': {'key': 'properties.restorableDroppedDatabaseId', 'type': 'str'},
7133        'storage_container_sas_token': {'key': 'properties.storageContainerSasToken', 'type': 'str'},
7134        'failover_group_id': {'key': 'properties.failoverGroupId', 'type': 'str'},
7135        'recoverable_database_id': {'key': 'properties.recoverableDatabaseId', 'type': 'str'},
7136        'long_term_retention_backup_resource_id': {'key': 'properties.longTermRetentionBackupResourceId', 'type': 'str'},
7137        'auto_complete_restore': {'key': 'properties.autoCompleteRestore', 'type': 'bool'},
7138        'last_backup_name': {'key': 'properties.lastBackupName', 'type': 'str'},
7139    }
7140
7141    def __init__(
7142        self,
7143        **kwargs
7144    ):
7145        super(ManagedDatabaseUpdate, self).__init__(**kwargs)
7146        self.tags = kwargs.get('tags', None)
7147        self.collation = kwargs.get('collation', None)
7148        self.status = None
7149        self.creation_date = None
7150        self.earliest_restore_point = None
7151        self.restore_point_in_time = kwargs.get('restore_point_in_time', None)
7152        self.default_secondary_location = None
7153        self.catalog_collation = kwargs.get('catalog_collation', None)
7154        self.create_mode = kwargs.get('create_mode', None)
7155        self.storage_container_uri = kwargs.get('storage_container_uri', None)
7156        self.source_database_id = kwargs.get('source_database_id', None)
7157        self.restorable_dropped_database_id = kwargs.get('restorable_dropped_database_id', None)
7158        self.storage_container_sas_token = kwargs.get('storage_container_sas_token', None)
7159        self.failover_group_id = None
7160        self.recoverable_database_id = kwargs.get('recoverable_database_id', None)
7161        self.long_term_retention_backup_resource_id = kwargs.get('long_term_retention_backup_resource_id', None)
7162        self.auto_complete_restore = kwargs.get('auto_complete_restore', None)
7163        self.last_backup_name = kwargs.get('last_backup_name', None)
7164
7165
7166class ManagedInstance(TrackedResource):
7167    """An Azure SQL managed instance.
7168
7169    Variables are only populated by the server, and will be ignored when sending a request.
7170
7171    All required parameters must be populated in order to send to Azure.
7172
7173    :ivar id: Resource ID.
7174    :vartype id: str
7175    :ivar name: Resource name.
7176    :vartype name: str
7177    :ivar type: Resource type.
7178    :vartype type: str
7179    :param location: Required. Resource location.
7180    :type location: str
7181    :param tags: A set of tags. Resource tags.
7182    :type tags: dict[str, str]
7183    :param identity: The Azure Active Directory identity of the managed instance.
7184    :type identity: ~azure.mgmt.sql.models.ResourceIdentity
7185    :param sku: Managed instance SKU. Allowed values for sku.name: GP_Gen4, GP_Gen5, BC_Gen4,
7186     BC_Gen5.
7187    :type sku: ~azure.mgmt.sql.models.Sku
7188    :ivar provisioning_state:  Possible values include: "Creating", "Deleting", "Updating",
7189     "Unknown", "Succeeded", "Failed".
7190    :vartype provisioning_state: str or
7191     ~azure.mgmt.sql.models.ManagedInstancePropertiesProvisioningState
7192    :param managed_instance_create_mode: Specifies the mode of database creation.
7193
7194     Default: Regular instance creation.
7195
7196     Restore: Creates an instance by restoring a set of backups to specific point in time.
7197     RestorePointInTime and SourceManagedInstanceId must be specified. Possible values include:
7198     "Default", "PointInTimeRestore".
7199    :type managed_instance_create_mode: str or ~azure.mgmt.sql.models.ManagedServerCreateMode
7200    :ivar fully_qualified_domain_name: The fully qualified domain name of the managed instance.
7201    :vartype fully_qualified_domain_name: str
7202    :param administrator_login: Administrator username for the managed instance. Can only be
7203     specified when the managed instance is being created (and is required for creation).
7204    :type administrator_login: str
7205    :param administrator_login_password: The administrator login password (required for managed
7206     instance creation).
7207    :type administrator_login_password: str
7208    :param subnet_id: Subnet resource ID for the managed instance.
7209    :type subnet_id: str
7210    :ivar state: The state of the managed instance.
7211    :vartype state: str
7212    :param license_type: The license type. Possible values are 'LicenseIncluded' (regular price
7213     inclusive of a new SQL license) and 'BasePrice' (discounted AHB price for bringing your own SQL
7214     licenses). Possible values include: "LicenseIncluded", "BasePrice".
7215    :type license_type: str or ~azure.mgmt.sql.models.ManagedInstanceLicenseType
7216    :param v_cores: The number of vCores. Allowed values: 8, 16, 24, 32, 40, 64, 80.
7217    :type v_cores: int
7218    :param storage_size_in_gb: Storage size in GB. Minimum value: 32. Maximum value: 8192.
7219     Increments of 32 GB allowed only.
7220    :type storage_size_in_gb: int
7221    :param collation: Collation of the managed instance.
7222    :type collation: str
7223    :ivar dns_zone: The Dns Zone that the managed instance is in.
7224    :vartype dns_zone: str
7225    :param dns_zone_partner: The resource id of another managed instance whose DNS zone this
7226     managed instance will share after creation.
7227    :type dns_zone_partner: str
7228    :param public_data_endpoint_enabled: Whether or not the public data endpoint is enabled.
7229    :type public_data_endpoint_enabled: bool
7230    :param source_managed_instance_id: The resource identifier of the source managed instance
7231     associated with create operation of this instance.
7232    :type source_managed_instance_id: str
7233    :param restore_point_in_time: Specifies the point in time (ISO8601 format) of the source
7234     database that will be restored to create the new database.
7235    :type restore_point_in_time: ~datetime.datetime
7236    :param proxy_override: Connection type used for connecting to the instance. Possible values
7237     include: "Proxy", "Redirect", "Default".
7238    :type proxy_override: str or ~azure.mgmt.sql.models.ManagedInstanceProxyOverride
7239    :param timezone_id: Id of the timezone. Allowed values are timezones supported by Windows.
7240     Windows keeps details on supported timezones, including the id, in registry under
7241     KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.
7242     You can get those registry values via SQL Server by querying SELECT name AS timezone_id FROM
7243     sys.time_zone_info.
7244     List of Ids can also be obtained by executing [System.TimeZoneInfo]::GetSystemTimeZones() in
7245     PowerShell.
7246     An example of valid timezone id is "Pacific Standard Time" or "W. Europe Standard Time".
7247    :type timezone_id: str
7248    :param instance_pool_id: The Id of the instance pool this managed server belongs to.
7249    :type instance_pool_id: str
7250    :param maintenance_configuration_id: Specifies maintenance configuration id to apply to this
7251     managed instance.
7252    :type maintenance_configuration_id: str
7253    :ivar private_endpoint_connections: List of private endpoint connections on a managed instance.
7254    :vartype private_endpoint_connections: list[~azure.mgmt.sql.models.ManagedInstancePecProperty]
7255    :param minimal_tls_version: Minimal TLS version. Allowed values: 'None', '1.0', '1.1', '1.2'.
7256    :type minimal_tls_version: str
7257    :param storage_account_type: The storage account type used to store backups for this instance.
7258     The options are LRS (LocallyRedundantStorage), ZRS (ZoneRedundantStorage) and GRS
7259     (GeoRedundantStorage). Possible values include: "GRS", "LRS", "ZRS".
7260    :type storage_account_type: str or ~azure.mgmt.sql.models.StorageAccountType
7261    :param zone_redundant: Whether or not the multi-az is enabled.
7262    :type zone_redundant: bool
7263    :param primary_user_assigned_identity_id: The resource id of a user assigned identity to be
7264     used by default.
7265    :type primary_user_assigned_identity_id: str
7266    :param key_id: A CMK URI of the key to use for encryption.
7267    :type key_id: str
7268    :param administrators: The Azure Active Directory administrator of the server.
7269    :type administrators: ~azure.mgmt.sql.models.ManagedInstanceExternalAdministrator
7270    """
7271
7272    _validation = {
7273        'id': {'readonly': True},
7274        'name': {'readonly': True},
7275        'type': {'readonly': True},
7276        'location': {'required': True},
7277        'provisioning_state': {'readonly': True},
7278        'fully_qualified_domain_name': {'readonly': True},
7279        'state': {'readonly': True},
7280        'dns_zone': {'readonly': True},
7281        'private_endpoint_connections': {'readonly': True},
7282    }
7283
7284    _attribute_map = {
7285        'id': {'key': 'id', 'type': 'str'},
7286        'name': {'key': 'name', 'type': 'str'},
7287        'type': {'key': 'type', 'type': 'str'},
7288        'location': {'key': 'location', 'type': 'str'},
7289        'tags': {'key': 'tags', 'type': '{str}'},
7290        'identity': {'key': 'identity', 'type': 'ResourceIdentity'},
7291        'sku': {'key': 'sku', 'type': 'Sku'},
7292        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7293        'managed_instance_create_mode': {'key': 'properties.managedInstanceCreateMode', 'type': 'str'},
7294        'fully_qualified_domain_name': {'key': 'properties.fullyQualifiedDomainName', 'type': 'str'},
7295        'administrator_login': {'key': 'properties.administratorLogin', 'type': 'str'},
7296        'administrator_login_password': {'key': 'properties.administratorLoginPassword', 'type': 'str'},
7297        'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
7298        'state': {'key': 'properties.state', 'type': 'str'},
7299        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
7300        'v_cores': {'key': 'properties.vCores', 'type': 'int'},
7301        'storage_size_in_gb': {'key': 'properties.storageSizeInGB', 'type': 'int'},
7302        'collation': {'key': 'properties.collation', 'type': 'str'},
7303        'dns_zone': {'key': 'properties.dnsZone', 'type': 'str'},
7304        'dns_zone_partner': {'key': 'properties.dnsZonePartner', 'type': 'str'},
7305        'public_data_endpoint_enabled': {'key': 'properties.publicDataEndpointEnabled', 'type': 'bool'},
7306        'source_managed_instance_id': {'key': 'properties.sourceManagedInstanceId', 'type': 'str'},
7307        'restore_point_in_time': {'key': 'properties.restorePointInTime', 'type': 'iso-8601'},
7308        'proxy_override': {'key': 'properties.proxyOverride', 'type': 'str'},
7309        'timezone_id': {'key': 'properties.timezoneId', 'type': 'str'},
7310        'instance_pool_id': {'key': 'properties.instancePoolId', 'type': 'str'},
7311        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
7312        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[ManagedInstancePecProperty]'},
7313        'minimal_tls_version': {'key': 'properties.minimalTlsVersion', 'type': 'str'},
7314        'storage_account_type': {'key': 'properties.storageAccountType', 'type': 'str'},
7315        'zone_redundant': {'key': 'properties.zoneRedundant', 'type': 'bool'},
7316        'primary_user_assigned_identity_id': {'key': 'properties.primaryUserAssignedIdentityId', 'type': 'str'},
7317        'key_id': {'key': 'properties.keyId', 'type': 'str'},
7318        'administrators': {'key': 'properties.administrators', 'type': 'ManagedInstanceExternalAdministrator'},
7319    }
7320
7321    def __init__(
7322        self,
7323        **kwargs
7324    ):
7325        super(ManagedInstance, self).__init__(**kwargs)
7326        self.identity = kwargs.get('identity', None)
7327        self.sku = kwargs.get('sku', None)
7328        self.provisioning_state = None
7329        self.managed_instance_create_mode = kwargs.get('managed_instance_create_mode', None)
7330        self.fully_qualified_domain_name = None
7331        self.administrator_login = kwargs.get('administrator_login', None)
7332        self.administrator_login_password = kwargs.get('administrator_login_password', None)
7333        self.subnet_id = kwargs.get('subnet_id', None)
7334        self.state = None
7335        self.license_type = kwargs.get('license_type', None)
7336        self.v_cores = kwargs.get('v_cores', None)
7337        self.storage_size_in_gb = kwargs.get('storage_size_in_gb', None)
7338        self.collation = kwargs.get('collation', None)
7339        self.dns_zone = None
7340        self.dns_zone_partner = kwargs.get('dns_zone_partner', None)
7341        self.public_data_endpoint_enabled = kwargs.get('public_data_endpoint_enabled', None)
7342        self.source_managed_instance_id = kwargs.get('source_managed_instance_id', None)
7343        self.restore_point_in_time = kwargs.get('restore_point_in_time', None)
7344        self.proxy_override = kwargs.get('proxy_override', None)
7345        self.timezone_id = kwargs.get('timezone_id', None)
7346        self.instance_pool_id = kwargs.get('instance_pool_id', None)
7347        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
7348        self.private_endpoint_connections = None
7349        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
7350        self.storage_account_type = kwargs.get('storage_account_type', None)
7351        self.zone_redundant = kwargs.get('zone_redundant', None)
7352        self.primary_user_assigned_identity_id = kwargs.get('primary_user_assigned_identity_id', None)
7353        self.key_id = kwargs.get('key_id', None)
7354        self.administrators = kwargs.get('administrators', None)
7355
7356
7357class ManagedInstanceAdministrator(ProxyResource):
7358    """An Azure SQL managed instance administrator.
7359
7360    Variables are only populated by the server, and will be ignored when sending a request.
7361
7362    :ivar id: Resource ID.
7363    :vartype id: str
7364    :ivar name: Resource name.
7365    :vartype name: str
7366    :ivar type: Resource type.
7367    :vartype type: str
7368    :param administrator_type: Type of the managed instance administrator. Possible values include:
7369     "ActiveDirectory".
7370    :type administrator_type: str or ~azure.mgmt.sql.models.ManagedInstanceAdministratorType
7371    :param login: Login name of the managed instance administrator.
7372    :type login: str
7373    :param sid: SID (object ID) of the managed instance administrator.
7374    :type sid: str
7375    :param tenant_id: Tenant ID of the managed instance administrator.
7376    :type tenant_id: str
7377    """
7378
7379    _validation = {
7380        'id': {'readonly': True},
7381        'name': {'readonly': True},
7382        'type': {'readonly': True},
7383    }
7384
7385    _attribute_map = {
7386        'id': {'key': 'id', 'type': 'str'},
7387        'name': {'key': 'name', 'type': 'str'},
7388        'type': {'key': 'type', 'type': 'str'},
7389        'administrator_type': {'key': 'properties.administratorType', 'type': 'str'},
7390        'login': {'key': 'properties.login', 'type': 'str'},
7391        'sid': {'key': 'properties.sid', 'type': 'str'},
7392        'tenant_id': {'key': 'properties.tenantId', 'type': 'str'},
7393    }
7394
7395    def __init__(
7396        self,
7397        **kwargs
7398    ):
7399        super(ManagedInstanceAdministrator, self).__init__(**kwargs)
7400        self.administrator_type = kwargs.get('administrator_type', None)
7401        self.login = kwargs.get('login', None)
7402        self.sid = kwargs.get('sid', None)
7403        self.tenant_id = kwargs.get('tenant_id', None)
7404
7405
7406class ManagedInstanceAdministratorListResult(msrest.serialization.Model):
7407    """A list of managed instance administrators.
7408
7409    Variables are only populated by the server, and will be ignored when sending a request.
7410
7411    :ivar value: Array of results.
7412    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceAdministrator]
7413    :ivar next_link: Link to retrieve next page of results.
7414    :vartype next_link: str
7415    """
7416
7417    _validation = {
7418        'value': {'readonly': True},
7419        'next_link': {'readonly': True},
7420    }
7421
7422    _attribute_map = {
7423        'value': {'key': 'value', 'type': '[ManagedInstanceAdministrator]'},
7424        'next_link': {'key': 'nextLink', 'type': 'str'},
7425    }
7426
7427    def __init__(
7428        self,
7429        **kwargs
7430    ):
7431        super(ManagedInstanceAdministratorListResult, self).__init__(**kwargs)
7432        self.value = None
7433        self.next_link = None
7434
7435
7436class ManagedInstanceAzureADOnlyAuthentication(ProxyResource):
7437    """Azure Active Directory only authentication.
7438
7439    Variables are only populated by the server, and will be ignored when sending a request.
7440
7441    :ivar id: Resource ID.
7442    :vartype id: str
7443    :ivar name: Resource name.
7444    :vartype name: str
7445    :ivar type: Resource type.
7446    :vartype type: str
7447    :param azure_ad_only_authentication: Azure Active Directory only Authentication enabled.
7448    :type azure_ad_only_authentication: bool
7449    """
7450
7451    _validation = {
7452        'id': {'readonly': True},
7453        'name': {'readonly': True},
7454        'type': {'readonly': True},
7455    }
7456
7457    _attribute_map = {
7458        'id': {'key': 'id', 'type': 'str'},
7459        'name': {'key': 'name', 'type': 'str'},
7460        'type': {'key': 'type', 'type': 'str'},
7461        'azure_ad_only_authentication': {'key': 'properties.azureADOnlyAuthentication', 'type': 'bool'},
7462    }
7463
7464    def __init__(
7465        self,
7466        **kwargs
7467    ):
7468        super(ManagedInstanceAzureADOnlyAuthentication, self).__init__(**kwargs)
7469        self.azure_ad_only_authentication = kwargs.get('azure_ad_only_authentication', None)
7470
7471
7472class ManagedInstanceAzureADOnlyAuthListResult(msrest.serialization.Model):
7473    """A list of active directory only authentications.
7474
7475    Variables are only populated by the server, and will be ignored when sending a request.
7476
7477    :ivar value: Array of results.
7478    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceAzureADOnlyAuthentication]
7479    :ivar next_link: Link to retrieve next page of results.
7480    :vartype next_link: str
7481    """
7482
7483    _validation = {
7484        'value': {'readonly': True},
7485        'next_link': {'readonly': True},
7486    }
7487
7488    _attribute_map = {
7489        'value': {'key': 'value', 'type': '[ManagedInstanceAzureADOnlyAuthentication]'},
7490        'next_link': {'key': 'nextLink', 'type': 'str'},
7491    }
7492
7493    def __init__(
7494        self,
7495        **kwargs
7496    ):
7497        super(ManagedInstanceAzureADOnlyAuthListResult, self).__init__(**kwargs)
7498        self.value = None
7499        self.next_link = None
7500
7501
7502class ManagedInstanceEditionCapability(msrest.serialization.Model):
7503    """The managed server capability.
7504
7505    Variables are only populated by the server, and will be ignored when sending a request.
7506
7507    :ivar name: The managed server version name.
7508    :vartype name: str
7509    :ivar supported_families: The supported families.
7510    :vartype supported_families: list[~azure.mgmt.sql.models.ManagedInstanceFamilyCapability]
7511    :ivar supported_storage_capabilities: The list of supported storage capabilities for this
7512     edition.
7513    :vartype supported_storage_capabilities: list[~azure.mgmt.sql.models.StorageCapability]
7514    :ivar zone_redundant: Whether or not zone redundancy is supported for the edition.
7515    :vartype zone_redundant: bool
7516    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
7517     "Default", "Disabled".
7518    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
7519    :param reason: The reason for the capability not being available.
7520    :type reason: str
7521    """
7522
7523    _validation = {
7524        'name': {'readonly': True},
7525        'supported_families': {'readonly': True},
7526        'supported_storage_capabilities': {'readonly': True},
7527        'zone_redundant': {'readonly': True},
7528        'status': {'readonly': True},
7529    }
7530
7531    _attribute_map = {
7532        'name': {'key': 'name', 'type': 'str'},
7533        'supported_families': {'key': 'supportedFamilies', 'type': '[ManagedInstanceFamilyCapability]'},
7534        'supported_storage_capabilities': {'key': 'supportedStorageCapabilities', 'type': '[StorageCapability]'},
7535        'zone_redundant': {'key': 'zoneRedundant', 'type': 'bool'},
7536        'status': {'key': 'status', 'type': 'str'},
7537        'reason': {'key': 'reason', 'type': 'str'},
7538    }
7539
7540    def __init__(
7541        self,
7542        **kwargs
7543    ):
7544        super(ManagedInstanceEditionCapability, self).__init__(**kwargs)
7545        self.name = None
7546        self.supported_families = None
7547        self.supported_storage_capabilities = None
7548        self.zone_redundant = None
7549        self.status = None
7550        self.reason = kwargs.get('reason', None)
7551
7552
7553class ManagedInstanceEncryptionProtector(ProxyResource):
7554    """The managed instance encryption protector.
7555
7556    Variables are only populated by the server, and will be ignored when sending a request.
7557
7558    :ivar id: Resource ID.
7559    :vartype id: str
7560    :ivar name: Resource name.
7561    :vartype name: str
7562    :ivar type: Resource type.
7563    :vartype type: str
7564    :ivar kind: Kind of encryption protector. This is metadata used for the Azure portal
7565     experience.
7566    :vartype kind: str
7567    :param server_key_name: The name of the managed instance key.
7568    :type server_key_name: str
7569    :param server_key_type: The encryption protector type like 'ServiceManaged', 'AzureKeyVault'.
7570     Possible values include: "ServiceManaged", "AzureKeyVault".
7571    :type server_key_type: str or ~azure.mgmt.sql.models.ServerKeyType
7572    :ivar uri: The URI of the server key.
7573    :vartype uri: str
7574    :ivar thumbprint: Thumbprint of the server key.
7575    :vartype thumbprint: str
7576    :param auto_rotation_enabled: Key auto rotation opt-in flag. Either true or false.
7577    :type auto_rotation_enabled: bool
7578    """
7579
7580    _validation = {
7581        'id': {'readonly': True},
7582        'name': {'readonly': True},
7583        'type': {'readonly': True},
7584        'kind': {'readonly': True},
7585        'uri': {'readonly': True},
7586        'thumbprint': {'readonly': True},
7587    }
7588
7589    _attribute_map = {
7590        'id': {'key': 'id', 'type': 'str'},
7591        'name': {'key': 'name', 'type': 'str'},
7592        'type': {'key': 'type', 'type': 'str'},
7593        'kind': {'key': 'kind', 'type': 'str'},
7594        'server_key_name': {'key': 'properties.serverKeyName', 'type': 'str'},
7595        'server_key_type': {'key': 'properties.serverKeyType', 'type': 'str'},
7596        'uri': {'key': 'properties.uri', 'type': 'str'},
7597        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
7598        'auto_rotation_enabled': {'key': 'properties.autoRotationEnabled', 'type': 'bool'},
7599    }
7600
7601    def __init__(
7602        self,
7603        **kwargs
7604    ):
7605        super(ManagedInstanceEncryptionProtector, self).__init__(**kwargs)
7606        self.kind = None
7607        self.server_key_name = kwargs.get('server_key_name', None)
7608        self.server_key_type = kwargs.get('server_key_type', None)
7609        self.uri = None
7610        self.thumbprint = None
7611        self.auto_rotation_enabled = kwargs.get('auto_rotation_enabled', None)
7612
7613
7614class ManagedInstanceEncryptionProtectorListResult(msrest.serialization.Model):
7615    """A list of managed instance encryption protectors.
7616
7617    Variables are only populated by the server, and will be ignored when sending a request.
7618
7619    :ivar value: Array of results.
7620    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceEncryptionProtector]
7621    :ivar next_link: Link to retrieve next page of results.
7622    :vartype next_link: str
7623    """
7624
7625    _validation = {
7626        'value': {'readonly': True},
7627        'next_link': {'readonly': True},
7628    }
7629
7630    _attribute_map = {
7631        'value': {'key': 'value', 'type': '[ManagedInstanceEncryptionProtector]'},
7632        'next_link': {'key': 'nextLink', 'type': 'str'},
7633    }
7634
7635    def __init__(
7636        self,
7637        **kwargs
7638    ):
7639        super(ManagedInstanceEncryptionProtectorListResult, self).__init__(**kwargs)
7640        self.value = None
7641        self.next_link = None
7642
7643
7644class ManagedInstanceExternalAdministrator(msrest.serialization.Model):
7645    """Properties of a active directory administrator.
7646
7647    :param administrator_type: Type of the sever administrator. Possible values include:
7648     "ActiveDirectory".
7649    :type administrator_type: str or ~azure.mgmt.sql.models.AdministratorType
7650    :param principal_type: Principal Type of the sever administrator. Possible values include:
7651     "User", "Group", "Application".
7652    :type principal_type: str or ~azure.mgmt.sql.models.PrincipalType
7653    :param login: Login name of the server administrator.
7654    :type login: str
7655    :param sid: SID (object ID) of the server administrator.
7656    :type sid: str
7657    :param tenant_id: Tenant ID of the administrator.
7658    :type tenant_id: str
7659    :param azure_ad_only_authentication: Azure Active Directory only Authentication enabled.
7660    :type azure_ad_only_authentication: bool
7661    """
7662
7663    _attribute_map = {
7664        'administrator_type': {'key': 'administratorType', 'type': 'str'},
7665        'principal_type': {'key': 'principalType', 'type': 'str'},
7666        'login': {'key': 'login', 'type': 'str'},
7667        'sid': {'key': 'sid', 'type': 'str'},
7668        'tenant_id': {'key': 'tenantId', 'type': 'str'},
7669        'azure_ad_only_authentication': {'key': 'azureADOnlyAuthentication', 'type': 'bool'},
7670    }
7671
7672    def __init__(
7673        self,
7674        **kwargs
7675    ):
7676        super(ManagedInstanceExternalAdministrator, self).__init__(**kwargs)
7677        self.administrator_type = kwargs.get('administrator_type', None)
7678        self.principal_type = kwargs.get('principal_type', None)
7679        self.login = kwargs.get('login', None)
7680        self.sid = kwargs.get('sid', None)
7681        self.tenant_id = kwargs.get('tenant_id', None)
7682        self.azure_ad_only_authentication = kwargs.get('azure_ad_only_authentication', None)
7683
7684
7685class ManagedInstanceFamilyCapability(msrest.serialization.Model):
7686    """The managed server family capability.
7687
7688    Variables are only populated by the server, and will be ignored when sending a request.
7689
7690    :ivar name: Family name.
7691    :vartype name: str
7692    :ivar sku: SKU name.
7693    :vartype sku: str
7694    :ivar supported_license_types: List of supported license types.
7695    :vartype supported_license_types: list[~azure.mgmt.sql.models.LicenseTypeCapability]
7696    :ivar supported_vcores_values: List of supported virtual cores values.
7697    :vartype supported_vcores_values: list[~azure.mgmt.sql.models.ManagedInstanceVcoresCapability]
7698    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
7699     "Default", "Disabled".
7700    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
7701    :param reason: The reason for the capability not being available.
7702    :type reason: str
7703    """
7704
7705    _validation = {
7706        'name': {'readonly': True},
7707        'sku': {'readonly': True},
7708        'supported_license_types': {'readonly': True},
7709        'supported_vcores_values': {'readonly': True},
7710        'status': {'readonly': True},
7711    }
7712
7713    _attribute_map = {
7714        'name': {'key': 'name', 'type': 'str'},
7715        'sku': {'key': 'sku', 'type': 'str'},
7716        'supported_license_types': {'key': 'supportedLicenseTypes', 'type': '[LicenseTypeCapability]'},
7717        'supported_vcores_values': {'key': 'supportedVcoresValues', 'type': '[ManagedInstanceVcoresCapability]'},
7718        'status': {'key': 'status', 'type': 'str'},
7719        'reason': {'key': 'reason', 'type': 'str'},
7720    }
7721
7722    def __init__(
7723        self,
7724        **kwargs
7725    ):
7726        super(ManagedInstanceFamilyCapability, self).__init__(**kwargs)
7727        self.name = None
7728        self.sku = None
7729        self.supported_license_types = None
7730        self.supported_vcores_values = None
7731        self.status = None
7732        self.reason = kwargs.get('reason', None)
7733
7734
7735class ManagedInstanceKey(ProxyResource):
7736    """A managed instance key.
7737
7738    Variables are only populated by the server, and will be ignored when sending a request.
7739
7740    :ivar id: Resource ID.
7741    :vartype id: str
7742    :ivar name: Resource name.
7743    :vartype name: str
7744    :ivar type: Resource type.
7745    :vartype type: str
7746    :ivar kind: Kind of encryption protector. This is metadata used for the Azure portal
7747     experience.
7748    :vartype kind: str
7749    :param server_key_type: The key type like 'ServiceManaged', 'AzureKeyVault'. Possible values
7750     include: "ServiceManaged", "AzureKeyVault".
7751    :type server_key_type: str or ~azure.mgmt.sql.models.ServerKeyType
7752    :param uri: The URI of the key. If the ServerKeyType is AzureKeyVault, then the URI is
7753     required.
7754    :type uri: str
7755    :ivar thumbprint: Thumbprint of the key.
7756    :vartype thumbprint: str
7757    :ivar creation_date: The key creation date.
7758    :vartype creation_date: ~datetime.datetime
7759    :ivar auto_rotation_enabled: Key auto rotation opt-in flag. Either true or false.
7760    :vartype auto_rotation_enabled: bool
7761    """
7762
7763    _validation = {
7764        'id': {'readonly': True},
7765        'name': {'readonly': True},
7766        'type': {'readonly': True},
7767        'kind': {'readonly': True},
7768        'thumbprint': {'readonly': True},
7769        'creation_date': {'readonly': True},
7770        'auto_rotation_enabled': {'readonly': True},
7771    }
7772
7773    _attribute_map = {
7774        'id': {'key': 'id', 'type': 'str'},
7775        'name': {'key': 'name', 'type': 'str'},
7776        'type': {'key': 'type', 'type': 'str'},
7777        'kind': {'key': 'kind', 'type': 'str'},
7778        'server_key_type': {'key': 'properties.serverKeyType', 'type': 'str'},
7779        'uri': {'key': 'properties.uri', 'type': 'str'},
7780        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
7781        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
7782        'auto_rotation_enabled': {'key': 'properties.autoRotationEnabled', 'type': 'bool'},
7783    }
7784
7785    def __init__(
7786        self,
7787        **kwargs
7788    ):
7789        super(ManagedInstanceKey, self).__init__(**kwargs)
7790        self.kind = None
7791        self.server_key_type = kwargs.get('server_key_type', None)
7792        self.uri = kwargs.get('uri', None)
7793        self.thumbprint = None
7794        self.creation_date = None
7795        self.auto_rotation_enabled = None
7796
7797
7798class ManagedInstanceKeyListResult(msrest.serialization.Model):
7799    """A list of managed instance keys.
7800
7801    Variables are only populated by the server, and will be ignored when sending a request.
7802
7803    :ivar value: Array of results.
7804    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceKey]
7805    :ivar next_link: Link to retrieve next page of results.
7806    :vartype next_link: str
7807    """
7808
7809    _validation = {
7810        'value': {'readonly': True},
7811        'next_link': {'readonly': True},
7812    }
7813
7814    _attribute_map = {
7815        'value': {'key': 'value', 'type': '[ManagedInstanceKey]'},
7816        'next_link': {'key': 'nextLink', 'type': 'str'},
7817    }
7818
7819    def __init__(
7820        self,
7821        **kwargs
7822    ):
7823        super(ManagedInstanceKeyListResult, self).__init__(**kwargs)
7824        self.value = None
7825        self.next_link = None
7826
7827
7828class ManagedInstanceListResult(msrest.serialization.Model):
7829    """A list of managed instances.
7830
7831    Variables are only populated by the server, and will be ignored when sending a request.
7832
7833    :ivar value: Array of results.
7834    :vartype value: list[~azure.mgmt.sql.models.ManagedInstance]
7835    :ivar next_link: Link to retrieve next page of results.
7836    :vartype next_link: str
7837    """
7838
7839    _validation = {
7840        'value': {'readonly': True},
7841        'next_link': {'readonly': True},
7842    }
7843
7844    _attribute_map = {
7845        'value': {'key': 'value', 'type': '[ManagedInstance]'},
7846        'next_link': {'key': 'nextLink', 'type': 'str'},
7847    }
7848
7849    def __init__(
7850        self,
7851        **kwargs
7852    ):
7853        super(ManagedInstanceListResult, self).__init__(**kwargs)
7854        self.value = None
7855        self.next_link = None
7856
7857
7858class ManagedInstanceLongTermRetentionBackup(ProxyResource):
7859    """A long term retention backup for a managed database.
7860
7861    Variables are only populated by the server, and will be ignored when sending a request.
7862
7863    :ivar id: Resource ID.
7864    :vartype id: str
7865    :ivar name: Resource name.
7866    :vartype name: str
7867    :ivar type: Resource type.
7868    :vartype type: str
7869    :ivar managed_instance_name: The managed instance that the backup database belongs to.
7870    :vartype managed_instance_name: str
7871    :ivar managed_instance_create_time: The create time of the instance.
7872    :vartype managed_instance_create_time: ~datetime.datetime
7873    :ivar database_name: The name of the database the backup belong to.
7874    :vartype database_name: str
7875    :ivar database_deletion_time: The delete time of the database.
7876    :vartype database_deletion_time: ~datetime.datetime
7877    :ivar backup_time: The time the backup was taken.
7878    :vartype backup_time: ~datetime.datetime
7879    :ivar backup_expiration_time: The time the long term retention backup will expire.
7880    :vartype backup_expiration_time: ~datetime.datetime
7881    :ivar backup_storage_redundancy: The storage redundancy type of the backup. Possible values
7882     include: "Geo", "Local", "Zone".
7883    :vartype backup_storage_redundancy: str or ~azure.mgmt.sql.models.BackupStorageRedundancy
7884    """
7885
7886    _validation = {
7887        'id': {'readonly': True},
7888        'name': {'readonly': True},
7889        'type': {'readonly': True},
7890        'managed_instance_name': {'readonly': True},
7891        'managed_instance_create_time': {'readonly': True},
7892        'database_name': {'readonly': True},
7893        'database_deletion_time': {'readonly': True},
7894        'backup_time': {'readonly': True},
7895        'backup_expiration_time': {'readonly': True},
7896        'backup_storage_redundancy': {'readonly': True},
7897    }
7898
7899    _attribute_map = {
7900        'id': {'key': 'id', 'type': 'str'},
7901        'name': {'key': 'name', 'type': 'str'},
7902        'type': {'key': 'type', 'type': 'str'},
7903        'managed_instance_name': {'key': 'properties.managedInstanceName', 'type': 'str'},
7904        'managed_instance_create_time': {'key': 'properties.managedInstanceCreateTime', 'type': 'iso-8601'},
7905        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
7906        'database_deletion_time': {'key': 'properties.databaseDeletionTime', 'type': 'iso-8601'},
7907        'backup_time': {'key': 'properties.backupTime', 'type': 'iso-8601'},
7908        'backup_expiration_time': {'key': 'properties.backupExpirationTime', 'type': 'iso-8601'},
7909        'backup_storage_redundancy': {'key': 'properties.backupStorageRedundancy', 'type': 'str'},
7910    }
7911
7912    def __init__(
7913        self,
7914        **kwargs
7915    ):
7916        super(ManagedInstanceLongTermRetentionBackup, self).__init__(**kwargs)
7917        self.managed_instance_name = None
7918        self.managed_instance_create_time = None
7919        self.database_name = None
7920        self.database_deletion_time = None
7921        self.backup_time = None
7922        self.backup_expiration_time = None
7923        self.backup_storage_redundancy = None
7924
7925
7926class ManagedInstanceLongTermRetentionBackupListResult(msrest.serialization.Model):
7927    """A list of long term retention backups for managed database(s).
7928
7929    Variables are only populated by the server, and will be ignored when sending a request.
7930
7931    :ivar value: Array of results.
7932    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceLongTermRetentionBackup]
7933    :ivar next_link: Link to retrieve next page of results.
7934    :vartype next_link: str
7935    """
7936
7937    _validation = {
7938        'value': {'readonly': True},
7939        'next_link': {'readonly': True},
7940    }
7941
7942    _attribute_map = {
7943        'value': {'key': 'value', 'type': '[ManagedInstanceLongTermRetentionBackup]'},
7944        'next_link': {'key': 'nextLink', 'type': 'str'},
7945    }
7946
7947    def __init__(
7948        self,
7949        **kwargs
7950    ):
7951        super(ManagedInstanceLongTermRetentionBackupListResult, self).__init__(**kwargs)
7952        self.value = None
7953        self.next_link = None
7954
7955
7956class ManagedInstanceLongTermRetentionPolicy(ProxyResource):
7957    """A long term retention policy.
7958
7959    Variables are only populated by the server, and will be ignored when sending a request.
7960
7961    :ivar id: Resource ID.
7962    :vartype id: str
7963    :ivar name: Resource name.
7964    :vartype name: str
7965    :ivar type: Resource type.
7966    :vartype type: str
7967    :param weekly_retention: The weekly retention policy for an LTR backup in an ISO 8601 format.
7968    :type weekly_retention: str
7969    :param monthly_retention: The monthly retention policy for an LTR backup in an ISO 8601 format.
7970    :type monthly_retention: str
7971    :param yearly_retention: The yearly retention policy for an LTR backup in an ISO 8601 format.
7972    :type yearly_retention: str
7973    :param week_of_year: The week of year to take the yearly backup in an ISO 8601 format.
7974    :type week_of_year: int
7975    """
7976
7977    _validation = {
7978        'id': {'readonly': True},
7979        'name': {'readonly': True},
7980        'type': {'readonly': True},
7981    }
7982
7983    _attribute_map = {
7984        'id': {'key': 'id', 'type': 'str'},
7985        'name': {'key': 'name', 'type': 'str'},
7986        'type': {'key': 'type', 'type': 'str'},
7987        'weekly_retention': {'key': 'properties.weeklyRetention', 'type': 'str'},
7988        'monthly_retention': {'key': 'properties.monthlyRetention', 'type': 'str'},
7989        'yearly_retention': {'key': 'properties.yearlyRetention', 'type': 'str'},
7990        'week_of_year': {'key': 'properties.weekOfYear', 'type': 'int'},
7991    }
7992
7993    def __init__(
7994        self,
7995        **kwargs
7996    ):
7997        super(ManagedInstanceLongTermRetentionPolicy, self).__init__(**kwargs)
7998        self.weekly_retention = kwargs.get('weekly_retention', None)
7999        self.monthly_retention = kwargs.get('monthly_retention', None)
8000        self.yearly_retention = kwargs.get('yearly_retention', None)
8001        self.week_of_year = kwargs.get('week_of_year', None)
8002
8003
8004class ManagedInstanceLongTermRetentionPolicyListResult(msrest.serialization.Model):
8005    """A list of long term retention policies.
8006
8007    Variables are only populated by the server, and will be ignored when sending a request.
8008
8009    :ivar value: Array of results.
8010    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceLongTermRetentionPolicy]
8011    :ivar next_link: Link to retrieve next page of results.
8012    :vartype next_link: str
8013    """
8014
8015    _validation = {
8016        'value': {'readonly': True},
8017        'next_link': {'readonly': True},
8018    }
8019
8020    _attribute_map = {
8021        'value': {'key': 'value', 'type': '[ManagedInstanceLongTermRetentionPolicy]'},
8022        'next_link': {'key': 'nextLink', 'type': 'str'},
8023    }
8024
8025    def __init__(
8026        self,
8027        **kwargs
8028    ):
8029        super(ManagedInstanceLongTermRetentionPolicyListResult, self).__init__(**kwargs)
8030        self.value = None
8031        self.next_link = None
8032
8033
8034class ManagedInstanceMaintenanceConfigurationCapability(msrest.serialization.Model):
8035    """The maintenance configuration capability.
8036
8037    Variables are only populated by the server, and will be ignored when sending a request.
8038
8039    :ivar name: Maintenance configuration name.
8040    :vartype name: str
8041    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
8042     "Default", "Disabled".
8043    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
8044    :param reason: The reason for the capability not being available.
8045    :type reason: str
8046    """
8047
8048    _validation = {
8049        'name': {'readonly': True},
8050        'status': {'readonly': True},
8051    }
8052
8053    _attribute_map = {
8054        'name': {'key': 'name', 'type': 'str'},
8055        'status': {'key': 'status', 'type': 'str'},
8056        'reason': {'key': 'reason', 'type': 'str'},
8057    }
8058
8059    def __init__(
8060        self,
8061        **kwargs
8062    ):
8063        super(ManagedInstanceMaintenanceConfigurationCapability, self).__init__(**kwargs)
8064        self.name = None
8065        self.status = None
8066        self.reason = kwargs.get('reason', None)
8067
8068
8069class ManagedInstanceOperation(ProxyResource):
8070    """A managed instance operation.
8071
8072    Variables are only populated by the server, and will be ignored when sending a request.
8073
8074    :ivar id: Resource ID.
8075    :vartype id: str
8076    :ivar name: Resource name.
8077    :vartype name: str
8078    :ivar type: Resource type.
8079    :vartype type: str
8080    :ivar managed_instance_name: The name of the managed instance the operation is being performed
8081     on.
8082    :vartype managed_instance_name: str
8083    :ivar operation: The name of operation.
8084    :vartype operation: str
8085    :ivar operation_friendly_name: The friendly name of operation.
8086    :vartype operation_friendly_name: str
8087    :ivar percent_complete: The percentage of the operation completed.
8088    :vartype percent_complete: int
8089    :ivar start_time: The operation start time.
8090    :vartype start_time: ~datetime.datetime
8091    :ivar state: The operation state. Possible values include: "Pending", "InProgress",
8092     "Succeeded", "Failed", "CancelInProgress", "Cancelled".
8093    :vartype state: str or ~azure.mgmt.sql.models.ManagementOperationState
8094    :ivar error_code: The operation error code.
8095    :vartype error_code: int
8096    :ivar error_description: The operation error description.
8097    :vartype error_description: str
8098    :ivar error_severity: The operation error severity.
8099    :vartype error_severity: int
8100    :ivar is_user_error: Whether or not the error is a user error.
8101    :vartype is_user_error: bool
8102    :ivar estimated_completion_time: The estimated completion time of the operation.
8103    :vartype estimated_completion_time: ~datetime.datetime
8104    :ivar description: The operation description.
8105    :vartype description: str
8106    :ivar is_cancellable: Whether the operation can be cancelled.
8107    :vartype is_cancellable: bool
8108    :ivar operation_parameters: The operation parameters.
8109    :vartype operation_parameters: ~azure.mgmt.sql.models.ManagedInstanceOperationParametersPair
8110    :ivar operation_steps: The operation steps.
8111    :vartype operation_steps: ~azure.mgmt.sql.models.ManagedInstanceOperationSteps
8112    """
8113
8114    _validation = {
8115        'id': {'readonly': True},
8116        'name': {'readonly': True},
8117        'type': {'readonly': True},
8118        'managed_instance_name': {'readonly': True},
8119        'operation': {'readonly': True},
8120        'operation_friendly_name': {'readonly': True},
8121        'percent_complete': {'readonly': True},
8122        'start_time': {'readonly': True},
8123        'state': {'readonly': True},
8124        'error_code': {'readonly': True},
8125        'error_description': {'readonly': True},
8126        'error_severity': {'readonly': True},
8127        'is_user_error': {'readonly': True},
8128        'estimated_completion_time': {'readonly': True},
8129        'description': {'readonly': True},
8130        'is_cancellable': {'readonly': True},
8131        'operation_parameters': {'readonly': True},
8132        'operation_steps': {'readonly': True},
8133    }
8134
8135    _attribute_map = {
8136        'id': {'key': 'id', 'type': 'str'},
8137        'name': {'key': 'name', 'type': 'str'},
8138        'type': {'key': 'type', 'type': 'str'},
8139        'managed_instance_name': {'key': 'properties.managedInstanceName', 'type': 'str'},
8140        'operation': {'key': 'properties.operation', 'type': 'str'},
8141        'operation_friendly_name': {'key': 'properties.operationFriendlyName', 'type': 'str'},
8142        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
8143        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
8144        'state': {'key': 'properties.state', 'type': 'str'},
8145        'error_code': {'key': 'properties.errorCode', 'type': 'int'},
8146        'error_description': {'key': 'properties.errorDescription', 'type': 'str'},
8147        'error_severity': {'key': 'properties.errorSeverity', 'type': 'int'},
8148        'is_user_error': {'key': 'properties.isUserError', 'type': 'bool'},
8149        'estimated_completion_time': {'key': 'properties.estimatedCompletionTime', 'type': 'iso-8601'},
8150        'description': {'key': 'properties.description', 'type': 'str'},
8151        'is_cancellable': {'key': 'properties.isCancellable', 'type': 'bool'},
8152        'operation_parameters': {'key': 'properties.operationParameters', 'type': 'ManagedInstanceOperationParametersPair'},
8153        'operation_steps': {'key': 'properties.operationSteps', 'type': 'ManagedInstanceOperationSteps'},
8154    }
8155
8156    def __init__(
8157        self,
8158        **kwargs
8159    ):
8160        super(ManagedInstanceOperation, self).__init__(**kwargs)
8161        self.managed_instance_name = None
8162        self.operation = None
8163        self.operation_friendly_name = None
8164        self.percent_complete = None
8165        self.start_time = None
8166        self.state = None
8167        self.error_code = None
8168        self.error_description = None
8169        self.error_severity = None
8170        self.is_user_error = None
8171        self.estimated_completion_time = None
8172        self.description = None
8173        self.is_cancellable = None
8174        self.operation_parameters = None
8175        self.operation_steps = None
8176
8177
8178class ManagedInstanceOperationListResult(msrest.serialization.Model):
8179    """The response to a list managed instance operations request.
8180
8181    Variables are only populated by the server, and will be ignored when sending a request.
8182
8183    :ivar value: Array of results.
8184    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceOperation]
8185    :ivar next_link: Link to retrieve next page of results.
8186    :vartype next_link: str
8187    """
8188
8189    _validation = {
8190        'value': {'readonly': True},
8191        'next_link': {'readonly': True},
8192    }
8193
8194    _attribute_map = {
8195        'value': {'key': 'value', 'type': '[ManagedInstanceOperation]'},
8196        'next_link': {'key': 'nextLink', 'type': 'str'},
8197    }
8198
8199    def __init__(
8200        self,
8201        **kwargs
8202    ):
8203        super(ManagedInstanceOperationListResult, self).__init__(**kwargs)
8204        self.value = None
8205        self.next_link = None
8206
8207
8208class ManagedInstanceOperationParametersPair(msrest.serialization.Model):
8209    """The parameters of a managed instance operation.
8210
8211    Variables are only populated by the server, and will be ignored when sending a request.
8212
8213    :ivar current_parameters: The current parameters.
8214    :vartype current_parameters: ~azure.mgmt.sql.models.UpsertManagedServerOperationParameters
8215    :ivar requested_parameters: The requested parameters.
8216    :vartype requested_parameters: ~azure.mgmt.sql.models.UpsertManagedServerOperationParameters
8217    """
8218
8219    _validation = {
8220        'current_parameters': {'readonly': True},
8221        'requested_parameters': {'readonly': True},
8222    }
8223
8224    _attribute_map = {
8225        'current_parameters': {'key': 'currentParameters', 'type': 'UpsertManagedServerOperationParameters'},
8226        'requested_parameters': {'key': 'requestedParameters', 'type': 'UpsertManagedServerOperationParameters'},
8227    }
8228
8229    def __init__(
8230        self,
8231        **kwargs
8232    ):
8233        super(ManagedInstanceOperationParametersPair, self).__init__(**kwargs)
8234        self.current_parameters = None
8235        self.requested_parameters = None
8236
8237
8238class ManagedInstanceOperationSteps(msrest.serialization.Model):
8239    """The steps of a managed instance operation.
8240
8241    Variables are only populated by the server, and will be ignored when sending a request.
8242
8243    :ivar total_steps: The total number of operation steps.
8244    :vartype total_steps: str
8245    :ivar current_step: The number of current operation steps.
8246    :vartype current_step: int
8247    :ivar steps_list: The operation steps list.
8248    :vartype steps_list: list[~azure.mgmt.sql.models.UpsertManagedServerOperationStep]
8249    """
8250
8251    _validation = {
8252        'total_steps': {'readonly': True},
8253        'current_step': {'readonly': True},
8254        'steps_list': {'readonly': True},
8255    }
8256
8257    _attribute_map = {
8258        'total_steps': {'key': 'totalSteps', 'type': 'str'},
8259        'current_step': {'key': 'currentStep', 'type': 'int'},
8260        'steps_list': {'key': 'stepsList', 'type': '[UpsertManagedServerOperationStep]'},
8261    }
8262
8263    def __init__(
8264        self,
8265        **kwargs
8266    ):
8267        super(ManagedInstanceOperationSteps, self).__init__(**kwargs)
8268        self.total_steps = None
8269        self.current_step = None
8270        self.steps_list = None
8271
8272
8273class ManagedInstancePairInfo(msrest.serialization.Model):
8274    """Pairs of Managed Instances in the failover group.
8275
8276    :param primary_managed_instance_id: Id of Primary Managed Instance in pair.
8277    :type primary_managed_instance_id: str
8278    :param partner_managed_instance_id: Id of Partner Managed Instance in pair.
8279    :type partner_managed_instance_id: str
8280    """
8281
8282    _attribute_map = {
8283        'primary_managed_instance_id': {'key': 'primaryManagedInstanceId', 'type': 'str'},
8284        'partner_managed_instance_id': {'key': 'partnerManagedInstanceId', 'type': 'str'},
8285    }
8286
8287    def __init__(
8288        self,
8289        **kwargs
8290    ):
8291        super(ManagedInstancePairInfo, self).__init__(**kwargs)
8292        self.primary_managed_instance_id = kwargs.get('primary_managed_instance_id', None)
8293        self.partner_managed_instance_id = kwargs.get('partner_managed_instance_id', None)
8294
8295
8296class ManagedInstancePecProperty(msrest.serialization.Model):
8297    """A private endpoint connection under a managed instance.
8298
8299    Variables are only populated by the server, and will be ignored when sending a request.
8300
8301    :ivar id: Resource ID.
8302    :vartype id: str
8303    :ivar properties: Private endpoint connection properties.
8304    :vartype properties: ~azure.mgmt.sql.models.ManagedInstancePrivateEndpointConnectionProperties
8305    """
8306
8307    _validation = {
8308        'id': {'readonly': True},
8309        'properties': {'readonly': True},
8310    }
8311
8312    _attribute_map = {
8313        'id': {'key': 'id', 'type': 'str'},
8314        'properties': {'key': 'properties', 'type': 'ManagedInstancePrivateEndpointConnectionProperties'},
8315    }
8316
8317    def __init__(
8318        self,
8319        **kwargs
8320    ):
8321        super(ManagedInstancePecProperty, self).__init__(**kwargs)
8322        self.id = None
8323        self.properties = None
8324
8325
8326class ManagedInstancePrivateEndpointConnection(ProxyResource):
8327    """A private endpoint connection.
8328
8329    Variables are only populated by the server, and will be ignored when sending a request.
8330
8331    :ivar id: Resource ID.
8332    :vartype id: str
8333    :ivar name: Resource name.
8334    :vartype name: str
8335    :ivar type: Resource type.
8336    :vartype type: str
8337    :param private_endpoint: Private endpoint which the connection belongs to.
8338    :type private_endpoint: ~azure.mgmt.sql.models.ManagedInstancePrivateEndpointProperty
8339    :param private_link_service_connection_state: Connection State of the Private Endpoint
8340     Connection.
8341    :type private_link_service_connection_state:
8342     ~azure.mgmt.sql.models.ManagedInstancePrivateLinkServiceConnectionStateProperty
8343    :ivar provisioning_state: State of the Private Endpoint Connection.
8344    :vartype provisioning_state: str
8345    """
8346
8347    _validation = {
8348        'id': {'readonly': True},
8349        'name': {'readonly': True},
8350        'type': {'readonly': True},
8351        'provisioning_state': {'readonly': True},
8352    }
8353
8354    _attribute_map = {
8355        'id': {'key': 'id', 'type': 'str'},
8356        'name': {'key': 'name', 'type': 'str'},
8357        'type': {'key': 'type', 'type': 'str'},
8358        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'ManagedInstancePrivateEndpointProperty'},
8359        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'ManagedInstancePrivateLinkServiceConnectionStateProperty'},
8360        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8361    }
8362
8363    def __init__(
8364        self,
8365        **kwargs
8366    ):
8367        super(ManagedInstancePrivateEndpointConnection, self).__init__(**kwargs)
8368        self.private_endpoint = kwargs.get('private_endpoint', None)
8369        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
8370        self.provisioning_state = None
8371
8372
8373class ManagedInstancePrivateEndpointConnectionListResult(msrest.serialization.Model):
8374    """A list of private endpoint connections.
8375
8376    Variables are only populated by the server, and will be ignored when sending a request.
8377
8378    :ivar value: Array of results.
8379    :vartype value: list[~azure.mgmt.sql.models.ManagedInstancePrivateEndpointConnection]
8380    :ivar next_link: Link to retrieve next page of results.
8381    :vartype next_link: str
8382    """
8383
8384    _validation = {
8385        'value': {'readonly': True},
8386        'next_link': {'readonly': True},
8387    }
8388
8389    _attribute_map = {
8390        'value': {'key': 'value', 'type': '[ManagedInstancePrivateEndpointConnection]'},
8391        'next_link': {'key': 'nextLink', 'type': 'str'},
8392    }
8393
8394    def __init__(
8395        self,
8396        **kwargs
8397    ):
8398        super(ManagedInstancePrivateEndpointConnectionListResult, self).__init__(**kwargs)
8399        self.value = None
8400        self.next_link = None
8401
8402
8403class ManagedInstancePrivateEndpointConnectionProperties(msrest.serialization.Model):
8404    """Properties of a private endpoint connection.
8405
8406    Variables are only populated by the server, and will be ignored when sending a request.
8407
8408    :param private_endpoint: Private endpoint which the connection belongs to.
8409    :type private_endpoint: ~azure.mgmt.sql.models.ManagedInstancePrivateEndpointProperty
8410    :param private_link_service_connection_state: Connection State of the Private Endpoint
8411     Connection.
8412    :type private_link_service_connection_state:
8413     ~azure.mgmt.sql.models.ManagedInstancePrivateLinkServiceConnectionStateProperty
8414    :ivar provisioning_state: State of the Private Endpoint Connection.
8415    :vartype provisioning_state: str
8416    """
8417
8418    _validation = {
8419        'provisioning_state': {'readonly': True},
8420    }
8421
8422    _attribute_map = {
8423        'private_endpoint': {'key': 'privateEndpoint', 'type': 'ManagedInstancePrivateEndpointProperty'},
8424        'private_link_service_connection_state': {'key': 'privateLinkServiceConnectionState', 'type': 'ManagedInstancePrivateLinkServiceConnectionStateProperty'},
8425        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
8426    }
8427
8428    def __init__(
8429        self,
8430        **kwargs
8431    ):
8432        super(ManagedInstancePrivateEndpointConnectionProperties, self).__init__(**kwargs)
8433        self.private_endpoint = kwargs.get('private_endpoint', None)
8434        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
8435        self.provisioning_state = None
8436
8437
8438class ManagedInstancePrivateEndpointProperty(msrest.serialization.Model):
8439    """ManagedInstancePrivateEndpointProperty.
8440
8441    :param id: Resource id of the private endpoint.
8442    :type id: str
8443    """
8444
8445    _attribute_map = {
8446        'id': {'key': 'id', 'type': 'str'},
8447    }
8448
8449    def __init__(
8450        self,
8451        **kwargs
8452    ):
8453        super(ManagedInstancePrivateEndpointProperty, self).__init__(**kwargs)
8454        self.id = kwargs.get('id', None)
8455
8456
8457class ManagedInstancePrivateLink(ProxyResource):
8458    """A private link resource.
8459
8460    Variables are only populated by the server, and will be ignored when sending a request.
8461
8462    :ivar id: Resource ID.
8463    :vartype id: str
8464    :ivar name: Resource name.
8465    :vartype name: str
8466    :ivar type: Resource type.
8467    :vartype type: str
8468    :ivar properties: The private link resource group id.
8469    :vartype properties: ~azure.mgmt.sql.models.ManagedInstancePrivateLinkProperties
8470    """
8471
8472    _validation = {
8473        'id': {'readonly': True},
8474        'name': {'readonly': True},
8475        'type': {'readonly': True},
8476        'properties': {'readonly': True},
8477    }
8478
8479    _attribute_map = {
8480        'id': {'key': 'id', 'type': 'str'},
8481        'name': {'key': 'name', 'type': 'str'},
8482        'type': {'key': 'type', 'type': 'str'},
8483        'properties': {'key': 'properties', 'type': 'ManagedInstancePrivateLinkProperties'},
8484    }
8485
8486    def __init__(
8487        self,
8488        **kwargs
8489    ):
8490        super(ManagedInstancePrivateLink, self).__init__(**kwargs)
8491        self.properties = None
8492
8493
8494class ManagedInstancePrivateLinkListResult(msrest.serialization.Model):
8495    """A list of private link resources.
8496
8497    Variables are only populated by the server, and will be ignored when sending a request.
8498
8499    :ivar value: Array of results.
8500    :vartype value: list[~azure.mgmt.sql.models.ManagedInstancePrivateLink]
8501    :ivar next_link: Link to retrieve next page of results.
8502    :vartype next_link: str
8503    """
8504
8505    _validation = {
8506        'value': {'readonly': True},
8507        'next_link': {'readonly': True},
8508    }
8509
8510    _attribute_map = {
8511        'value': {'key': 'value', 'type': '[ManagedInstancePrivateLink]'},
8512        'next_link': {'key': 'nextLink', 'type': 'str'},
8513    }
8514
8515    def __init__(
8516        self,
8517        **kwargs
8518    ):
8519        super(ManagedInstancePrivateLinkListResult, self).__init__(**kwargs)
8520        self.value = None
8521        self.next_link = None
8522
8523
8524class ManagedInstancePrivateLinkProperties(msrest.serialization.Model):
8525    """Properties of a private link resource.
8526
8527    Variables are only populated by the server, and will be ignored when sending a request.
8528
8529    :ivar group_id: The private link resource group id.
8530    :vartype group_id: str
8531    :ivar required_members: The private link resource required member names.
8532    :vartype required_members: list[str]
8533    """
8534
8535    _validation = {
8536        'group_id': {'readonly': True},
8537        'required_members': {'readonly': True},
8538    }
8539
8540    _attribute_map = {
8541        'group_id': {'key': 'groupId', 'type': 'str'},
8542        'required_members': {'key': 'requiredMembers', 'type': '[str]'},
8543    }
8544
8545    def __init__(
8546        self,
8547        **kwargs
8548    ):
8549        super(ManagedInstancePrivateLinkProperties, self).__init__(**kwargs)
8550        self.group_id = None
8551        self.required_members = None
8552
8553
8554class ManagedInstancePrivateLinkServiceConnectionStateProperty(msrest.serialization.Model):
8555    """ManagedInstancePrivateLinkServiceConnectionStateProperty.
8556
8557    Variables are only populated by the server, and will be ignored when sending a request.
8558
8559    All required parameters must be populated in order to send to Azure.
8560
8561    :param status: Required. The private link service connection status.
8562    :type status: str
8563    :param description: Required. The private link service connection description.
8564    :type description: str
8565    :ivar actions_required: The private link service connection description.
8566    :vartype actions_required: str
8567    """
8568
8569    _validation = {
8570        'status': {'required': True},
8571        'description': {'required': True},
8572        'actions_required': {'readonly': True},
8573    }
8574
8575    _attribute_map = {
8576        'status': {'key': 'status', 'type': 'str'},
8577        'description': {'key': 'description', 'type': 'str'},
8578        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
8579    }
8580
8581    def __init__(
8582        self,
8583        **kwargs
8584    ):
8585        super(ManagedInstancePrivateLinkServiceConnectionStateProperty, self).__init__(**kwargs)
8586        self.status = kwargs['status']
8587        self.description = kwargs['description']
8588        self.actions_required = None
8589
8590
8591class ManagedInstanceQuery(ProxyResource):
8592    """Database query.
8593
8594    Variables are only populated by the server, and will be ignored when sending a request.
8595
8596    :ivar id: Resource ID.
8597    :vartype id: str
8598    :ivar name: Resource name.
8599    :vartype name: str
8600    :ivar type: Resource type.
8601    :vartype type: str
8602    :param query_text: Query text.
8603    :type query_text: str
8604    """
8605
8606    _validation = {
8607        'id': {'readonly': True},
8608        'name': {'readonly': True},
8609        'type': {'readonly': True},
8610    }
8611
8612    _attribute_map = {
8613        'id': {'key': 'id', 'type': 'str'},
8614        'name': {'key': 'name', 'type': 'str'},
8615        'type': {'key': 'type', 'type': 'str'},
8616        'query_text': {'key': 'properties.queryText', 'type': 'str'},
8617    }
8618
8619    def __init__(
8620        self,
8621        **kwargs
8622    ):
8623        super(ManagedInstanceQuery, self).__init__(**kwargs)
8624        self.query_text = kwargs.get('query_text', None)
8625
8626
8627class ManagedInstanceQueryStatistics(msrest.serialization.Model):
8628    """Execution statistics for one particular query.
8629
8630    Variables are only populated by the server, and will be ignored when sending a request.
8631
8632    :ivar value: Array of results.
8633    :vartype value: list[~azure.mgmt.sql.models.QueryStatistics]
8634    :ivar next_link: Link to retrieve next page of results.
8635    :vartype next_link: str
8636    """
8637
8638    _validation = {
8639        'value': {'readonly': True},
8640        'next_link': {'readonly': True},
8641    }
8642
8643    _attribute_map = {
8644        'value': {'key': 'value', 'type': '[QueryStatistics]'},
8645        'next_link': {'key': 'nextLink', 'type': 'str'},
8646    }
8647
8648    def __init__(
8649        self,
8650        **kwargs
8651    ):
8652        super(ManagedInstanceQueryStatistics, self).__init__(**kwargs)
8653        self.value = None
8654        self.next_link = None
8655
8656
8657class ManagedInstanceUpdate(msrest.serialization.Model):
8658    """An update request for an Azure SQL Database managed instance.
8659
8660    Variables are only populated by the server, and will be ignored when sending a request.
8661
8662    :param sku: Managed instance sku.
8663    :type sku: ~azure.mgmt.sql.models.Sku
8664    :param identity: Managed instance identity.
8665    :type identity: ~azure.mgmt.sql.models.ResourceIdentity
8666    :param tags: A set of tags. Resource tags.
8667    :type tags: dict[str, str]
8668    :ivar provisioning_state:  Possible values include: "Creating", "Deleting", "Updating",
8669     "Unknown", "Succeeded", "Failed".
8670    :vartype provisioning_state: str or
8671     ~azure.mgmt.sql.models.ManagedInstancePropertiesProvisioningState
8672    :param managed_instance_create_mode: Specifies the mode of database creation.
8673
8674     Default: Regular instance creation.
8675
8676     Restore: Creates an instance by restoring a set of backups to specific point in time.
8677     RestorePointInTime and SourceManagedInstanceId must be specified. Possible values include:
8678     "Default", "PointInTimeRestore".
8679    :type managed_instance_create_mode: str or ~azure.mgmt.sql.models.ManagedServerCreateMode
8680    :ivar fully_qualified_domain_name: The fully qualified domain name of the managed instance.
8681    :vartype fully_qualified_domain_name: str
8682    :param administrator_login: Administrator username for the managed instance. Can only be
8683     specified when the managed instance is being created (and is required for creation).
8684    :type administrator_login: str
8685    :param administrator_login_password: The administrator login password (required for managed
8686     instance creation).
8687    :type administrator_login_password: str
8688    :param subnet_id: Subnet resource ID for the managed instance.
8689    :type subnet_id: str
8690    :ivar state: The state of the managed instance.
8691    :vartype state: str
8692    :param license_type: The license type. Possible values are 'LicenseIncluded' (regular price
8693     inclusive of a new SQL license) and 'BasePrice' (discounted AHB price for bringing your own SQL
8694     licenses). Possible values include: "LicenseIncluded", "BasePrice".
8695    :type license_type: str or ~azure.mgmt.sql.models.ManagedInstanceLicenseType
8696    :param v_cores: The number of vCores. Allowed values: 8, 16, 24, 32, 40, 64, 80.
8697    :type v_cores: int
8698    :param storage_size_in_gb: Storage size in GB. Minimum value: 32. Maximum value: 8192.
8699     Increments of 32 GB allowed only.
8700    :type storage_size_in_gb: int
8701    :param collation: Collation of the managed instance.
8702    :type collation: str
8703    :ivar dns_zone: The Dns Zone that the managed instance is in.
8704    :vartype dns_zone: str
8705    :param dns_zone_partner: The resource id of another managed instance whose DNS zone this
8706     managed instance will share after creation.
8707    :type dns_zone_partner: str
8708    :param public_data_endpoint_enabled: Whether or not the public data endpoint is enabled.
8709    :type public_data_endpoint_enabled: bool
8710    :param source_managed_instance_id: The resource identifier of the source managed instance
8711     associated with create operation of this instance.
8712    :type source_managed_instance_id: str
8713    :param restore_point_in_time: Specifies the point in time (ISO8601 format) of the source
8714     database that will be restored to create the new database.
8715    :type restore_point_in_time: ~datetime.datetime
8716    :param proxy_override: Connection type used for connecting to the instance. Possible values
8717     include: "Proxy", "Redirect", "Default".
8718    :type proxy_override: str or ~azure.mgmt.sql.models.ManagedInstanceProxyOverride
8719    :param timezone_id: Id of the timezone. Allowed values are timezones supported by Windows.
8720     Windows keeps details on supported timezones, including the id, in registry under
8721     KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.
8722     You can get those registry values via SQL Server by querying SELECT name AS timezone_id FROM
8723     sys.time_zone_info.
8724     List of Ids can also be obtained by executing [System.TimeZoneInfo]::GetSystemTimeZones() in
8725     PowerShell.
8726     An example of valid timezone id is "Pacific Standard Time" or "W. Europe Standard Time".
8727    :type timezone_id: str
8728    :param instance_pool_id: The Id of the instance pool this managed server belongs to.
8729    :type instance_pool_id: str
8730    :param maintenance_configuration_id: Specifies maintenance configuration id to apply to this
8731     managed instance.
8732    :type maintenance_configuration_id: str
8733    :ivar private_endpoint_connections: List of private endpoint connections on a managed instance.
8734    :vartype private_endpoint_connections: list[~azure.mgmt.sql.models.ManagedInstancePecProperty]
8735    :param minimal_tls_version: Minimal TLS version. Allowed values: 'None', '1.0', '1.1', '1.2'.
8736    :type minimal_tls_version: str
8737    :param storage_account_type: The storage account type used to store backups for this instance.
8738     The options are LRS (LocallyRedundantStorage), ZRS (ZoneRedundantStorage) and GRS
8739     (GeoRedundantStorage). Possible values include: "GRS", "LRS", "ZRS".
8740    :type storage_account_type: str or ~azure.mgmt.sql.models.StorageAccountType
8741    :param zone_redundant: Whether or not the multi-az is enabled.
8742    :type zone_redundant: bool
8743    :param primary_user_assigned_identity_id: The resource id of a user assigned identity to be
8744     used by default.
8745    :type primary_user_assigned_identity_id: str
8746    :param key_id: A CMK URI of the key to use for encryption.
8747    :type key_id: str
8748    :param administrators: The Azure Active Directory administrator of the server.
8749    :type administrators: ~azure.mgmt.sql.models.ManagedInstanceExternalAdministrator
8750    """
8751
8752    _validation = {
8753        'provisioning_state': {'readonly': True},
8754        'fully_qualified_domain_name': {'readonly': True},
8755        'state': {'readonly': True},
8756        'dns_zone': {'readonly': True},
8757        'private_endpoint_connections': {'readonly': True},
8758    }
8759
8760    _attribute_map = {
8761        'sku': {'key': 'sku', 'type': 'Sku'},
8762        'identity': {'key': 'identity', 'type': 'ResourceIdentity'},
8763        'tags': {'key': 'tags', 'type': '{str}'},
8764        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8765        'managed_instance_create_mode': {'key': 'properties.managedInstanceCreateMode', 'type': 'str'},
8766        'fully_qualified_domain_name': {'key': 'properties.fullyQualifiedDomainName', 'type': 'str'},
8767        'administrator_login': {'key': 'properties.administratorLogin', 'type': 'str'},
8768        'administrator_login_password': {'key': 'properties.administratorLoginPassword', 'type': 'str'},
8769        'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
8770        'state': {'key': 'properties.state', 'type': 'str'},
8771        'license_type': {'key': 'properties.licenseType', 'type': 'str'},
8772        'v_cores': {'key': 'properties.vCores', 'type': 'int'},
8773        'storage_size_in_gb': {'key': 'properties.storageSizeInGB', 'type': 'int'},
8774        'collation': {'key': 'properties.collation', 'type': 'str'},
8775        'dns_zone': {'key': 'properties.dnsZone', 'type': 'str'},
8776        'dns_zone_partner': {'key': 'properties.dnsZonePartner', 'type': 'str'},
8777        'public_data_endpoint_enabled': {'key': 'properties.publicDataEndpointEnabled', 'type': 'bool'},
8778        'source_managed_instance_id': {'key': 'properties.sourceManagedInstanceId', 'type': 'str'},
8779        'restore_point_in_time': {'key': 'properties.restorePointInTime', 'type': 'iso-8601'},
8780        'proxy_override': {'key': 'properties.proxyOverride', 'type': 'str'},
8781        'timezone_id': {'key': 'properties.timezoneId', 'type': 'str'},
8782        'instance_pool_id': {'key': 'properties.instancePoolId', 'type': 'str'},
8783        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
8784        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[ManagedInstancePecProperty]'},
8785        'minimal_tls_version': {'key': 'properties.minimalTlsVersion', 'type': 'str'},
8786        'storage_account_type': {'key': 'properties.storageAccountType', 'type': 'str'},
8787        'zone_redundant': {'key': 'properties.zoneRedundant', 'type': 'bool'},
8788        'primary_user_assigned_identity_id': {'key': 'properties.primaryUserAssignedIdentityId', 'type': 'str'},
8789        'key_id': {'key': 'properties.keyId', 'type': 'str'},
8790        'administrators': {'key': 'properties.administrators', 'type': 'ManagedInstanceExternalAdministrator'},
8791    }
8792
8793    def __init__(
8794        self,
8795        **kwargs
8796    ):
8797        super(ManagedInstanceUpdate, self).__init__(**kwargs)
8798        self.sku = kwargs.get('sku', None)
8799        self.identity = kwargs.get('identity', None)
8800        self.tags = kwargs.get('tags', None)
8801        self.provisioning_state = None
8802        self.managed_instance_create_mode = kwargs.get('managed_instance_create_mode', None)
8803        self.fully_qualified_domain_name = None
8804        self.administrator_login = kwargs.get('administrator_login', None)
8805        self.administrator_login_password = kwargs.get('administrator_login_password', None)
8806        self.subnet_id = kwargs.get('subnet_id', None)
8807        self.state = None
8808        self.license_type = kwargs.get('license_type', None)
8809        self.v_cores = kwargs.get('v_cores', None)
8810        self.storage_size_in_gb = kwargs.get('storage_size_in_gb', None)
8811        self.collation = kwargs.get('collation', None)
8812        self.dns_zone = None
8813        self.dns_zone_partner = kwargs.get('dns_zone_partner', None)
8814        self.public_data_endpoint_enabled = kwargs.get('public_data_endpoint_enabled', None)
8815        self.source_managed_instance_id = kwargs.get('source_managed_instance_id', None)
8816        self.restore_point_in_time = kwargs.get('restore_point_in_time', None)
8817        self.proxy_override = kwargs.get('proxy_override', None)
8818        self.timezone_id = kwargs.get('timezone_id', None)
8819        self.instance_pool_id = kwargs.get('instance_pool_id', None)
8820        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
8821        self.private_endpoint_connections = None
8822        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
8823        self.storage_account_type = kwargs.get('storage_account_type', None)
8824        self.zone_redundant = kwargs.get('zone_redundant', None)
8825        self.primary_user_assigned_identity_id = kwargs.get('primary_user_assigned_identity_id', None)
8826        self.key_id = kwargs.get('key_id', None)
8827        self.administrators = kwargs.get('administrators', None)
8828
8829
8830class ManagedInstanceVcoresCapability(msrest.serialization.Model):
8831    """The managed instance virtual cores capability.
8832
8833    Variables are only populated by the server, and will be ignored when sending a request.
8834
8835    :ivar name: The virtual cores identifier.
8836    :vartype name: str
8837    :ivar value: The virtual cores value.
8838    :vartype value: int
8839    :ivar included_max_size: Included size.
8840    :vartype included_max_size: ~azure.mgmt.sql.models.MaxSizeCapability
8841    :ivar supported_storage_sizes: Storage size ranges.
8842    :vartype supported_storage_sizes: list[~azure.mgmt.sql.models.MaxSizeRangeCapability]
8843    :ivar instance_pool_supported: True if this service objective is supported for managed
8844     instances in an instance pool.
8845    :vartype instance_pool_supported: bool
8846    :ivar standalone_supported: True if this service objective is supported for standalone managed
8847     instances.
8848    :vartype standalone_supported: bool
8849    :ivar supported_maintenance_configurations: List of supported maintenance configurations.
8850    :vartype supported_maintenance_configurations:
8851     list[~azure.mgmt.sql.models.ManagedInstanceMaintenanceConfigurationCapability]
8852    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
8853     "Default", "Disabled".
8854    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
8855    :param reason: The reason for the capability not being available.
8856    :type reason: str
8857    """
8858
8859    _validation = {
8860        'name': {'readonly': True},
8861        'value': {'readonly': True},
8862        'included_max_size': {'readonly': True},
8863        'supported_storage_sizes': {'readonly': True},
8864        'instance_pool_supported': {'readonly': True},
8865        'standalone_supported': {'readonly': True},
8866        'supported_maintenance_configurations': {'readonly': True},
8867        'status': {'readonly': True},
8868    }
8869
8870    _attribute_map = {
8871        'name': {'key': 'name', 'type': 'str'},
8872        'value': {'key': 'value', 'type': 'int'},
8873        'included_max_size': {'key': 'includedMaxSize', 'type': 'MaxSizeCapability'},
8874        'supported_storage_sizes': {'key': 'supportedStorageSizes', 'type': '[MaxSizeRangeCapability]'},
8875        'instance_pool_supported': {'key': 'instancePoolSupported', 'type': 'bool'},
8876        'standalone_supported': {'key': 'standaloneSupported', 'type': 'bool'},
8877        'supported_maintenance_configurations': {'key': 'supportedMaintenanceConfigurations', 'type': '[ManagedInstanceMaintenanceConfigurationCapability]'},
8878        'status': {'key': 'status', 'type': 'str'},
8879        'reason': {'key': 'reason', 'type': 'str'},
8880    }
8881
8882    def __init__(
8883        self,
8884        **kwargs
8885    ):
8886        super(ManagedInstanceVcoresCapability, self).__init__(**kwargs)
8887        self.name = None
8888        self.value = None
8889        self.included_max_size = None
8890        self.supported_storage_sizes = None
8891        self.instance_pool_supported = None
8892        self.standalone_supported = None
8893        self.supported_maintenance_configurations = None
8894        self.status = None
8895        self.reason = kwargs.get('reason', None)
8896
8897
8898class ManagedInstanceVersionCapability(msrest.serialization.Model):
8899    """The managed instance capability.
8900
8901    Variables are only populated by the server, and will be ignored when sending a request.
8902
8903    :ivar name: The server version name.
8904    :vartype name: str
8905    :ivar supported_editions: The list of supported managed instance editions.
8906    :vartype supported_editions: list[~azure.mgmt.sql.models.ManagedInstanceEditionCapability]
8907    :ivar supported_instance_pool_editions: The list of supported instance pool editions.
8908    :vartype supported_instance_pool_editions:
8909     list[~azure.mgmt.sql.models.InstancePoolEditionCapability]
8910    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
8911     "Default", "Disabled".
8912    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
8913    :param reason: The reason for the capability not being available.
8914    :type reason: str
8915    """
8916
8917    _validation = {
8918        'name': {'readonly': True},
8919        'supported_editions': {'readonly': True},
8920        'supported_instance_pool_editions': {'readonly': True},
8921        'status': {'readonly': True},
8922    }
8923
8924    _attribute_map = {
8925        'name': {'key': 'name', 'type': 'str'},
8926        'supported_editions': {'key': 'supportedEditions', 'type': '[ManagedInstanceEditionCapability]'},
8927        'supported_instance_pool_editions': {'key': 'supportedInstancePoolEditions', 'type': '[InstancePoolEditionCapability]'},
8928        'status': {'key': 'status', 'type': 'str'},
8929        'reason': {'key': 'reason', 'type': 'str'},
8930    }
8931
8932    def __init__(
8933        self,
8934        **kwargs
8935    ):
8936        super(ManagedInstanceVersionCapability, self).__init__(**kwargs)
8937        self.name = None
8938        self.supported_editions = None
8939        self.supported_instance_pool_editions = None
8940        self.status = None
8941        self.reason = kwargs.get('reason', None)
8942
8943
8944class ManagedInstanceVulnerabilityAssessment(ProxyResource):
8945    """A managed instance vulnerability assessment.
8946
8947    Variables are only populated by the server, and will be ignored when sending a request.
8948
8949    :ivar id: Resource ID.
8950    :vartype id: str
8951    :ivar name: Resource name.
8952    :vartype name: str
8953    :ivar type: Resource type.
8954    :vartype type: str
8955    :param storage_container_path: A blob storage container path to hold the scan results (e.g.
8956     https://myStorage.blob.core.windows.net/VaScans/).
8957    :type storage_container_path: str
8958    :param storage_container_sas_key: A shared access signature (SAS Key) that has write access to
8959     the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey'
8960     isn't specified, StorageContainerSasKey is required. Applies only if the storage account is not
8961     behind a Vnet or a firewall.
8962    :type storage_container_sas_key: str
8963    :param storage_account_access_key: Specifies the identifier key of the storage account for
8964     vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified,
8965     storageAccountAccessKey is required. Applies only if the storage account is not behind a Vnet
8966     or a firewall.
8967    :type storage_account_access_key: str
8968    :param recurring_scans: The recurring scans settings.
8969    :type recurring_scans: ~azure.mgmt.sql.models.VulnerabilityAssessmentRecurringScansProperties
8970    """
8971
8972    _validation = {
8973        'id': {'readonly': True},
8974        'name': {'readonly': True},
8975        'type': {'readonly': True},
8976    }
8977
8978    _attribute_map = {
8979        'id': {'key': 'id', 'type': 'str'},
8980        'name': {'key': 'name', 'type': 'str'},
8981        'type': {'key': 'type', 'type': 'str'},
8982        'storage_container_path': {'key': 'properties.storageContainerPath', 'type': 'str'},
8983        'storage_container_sas_key': {'key': 'properties.storageContainerSasKey', 'type': 'str'},
8984        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
8985        'recurring_scans': {'key': 'properties.recurringScans', 'type': 'VulnerabilityAssessmentRecurringScansProperties'},
8986    }
8987
8988    def __init__(
8989        self,
8990        **kwargs
8991    ):
8992        super(ManagedInstanceVulnerabilityAssessment, self).__init__(**kwargs)
8993        self.storage_container_path = kwargs.get('storage_container_path', None)
8994        self.storage_container_sas_key = kwargs.get('storage_container_sas_key', None)
8995        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
8996        self.recurring_scans = kwargs.get('recurring_scans', None)
8997
8998
8999class ManagedInstanceVulnerabilityAssessmentListResult(msrest.serialization.Model):
9000    """A list of the ManagedInstance's vulnerability assessments.
9001
9002    Variables are only populated by the server, and will be ignored when sending a request.
9003
9004    :ivar value: Array of results.
9005    :vartype value: list[~azure.mgmt.sql.models.ManagedInstanceVulnerabilityAssessment]
9006    :ivar next_link: Link to retrieve next page of results.
9007    :vartype next_link: str
9008    """
9009
9010    _validation = {
9011        'value': {'readonly': True},
9012        'next_link': {'readonly': True},
9013    }
9014
9015    _attribute_map = {
9016        'value': {'key': 'value', 'type': '[ManagedInstanceVulnerabilityAssessment]'},
9017        'next_link': {'key': 'nextLink', 'type': 'str'},
9018    }
9019
9020    def __init__(
9021        self,
9022        **kwargs
9023    ):
9024        super(ManagedInstanceVulnerabilityAssessmentListResult, self).__init__(**kwargs)
9025        self.value = None
9026        self.next_link = None
9027
9028
9029class ManagedServerSecurityAlertPolicy(ProxyResource):
9030    """A managed server security alert policy.
9031
9032    Variables are only populated by the server, and will be ignored when sending a request.
9033
9034    :ivar id: Resource ID.
9035    :vartype id: str
9036    :ivar name: Resource name.
9037    :vartype name: str
9038    :ivar type: Resource type.
9039    :vartype type: str
9040    :ivar system_data: SystemData of SecurityAlertPolicyResource.
9041    :vartype system_data: ~azure.mgmt.sql.models.SystemData
9042    :param state: Specifies the state of the policy, whether it is enabled or disabled or a policy
9043     has not been applied yet on the specific database. Possible values include: "Enabled",
9044     "Disabled".
9045    :type state: str or ~azure.mgmt.sql.models.SecurityAlertsPolicyState
9046    :param disabled_alerts: Specifies an array of alerts that are disabled. Allowed values are:
9047     Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly, Data_Exfiltration, Unsafe_Action,
9048     Brute_Force.
9049    :type disabled_alerts: list[str]
9050    :param email_addresses: Specifies an array of e-mail addresses to which the alert is sent.
9051    :type email_addresses: list[str]
9052    :param email_account_admins: Specifies that the alert is sent to the account administrators.
9053    :type email_account_admins: bool
9054    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
9055     https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection
9056     audit logs.
9057    :type storage_endpoint: str
9058    :param storage_account_access_key: Specifies the identifier key of the Threat Detection audit
9059     storage account.
9060    :type storage_account_access_key: str
9061    :param retention_days: Specifies the number of days to keep in the Threat Detection audit logs.
9062    :type retention_days: int
9063    :ivar creation_time: Specifies the UTC creation time of the policy.
9064    :vartype creation_time: ~datetime.datetime
9065    """
9066
9067    _validation = {
9068        'id': {'readonly': True},
9069        'name': {'readonly': True},
9070        'type': {'readonly': True},
9071        'system_data': {'readonly': True},
9072        'creation_time': {'readonly': True},
9073    }
9074
9075    _attribute_map = {
9076        'id': {'key': 'id', 'type': 'str'},
9077        'name': {'key': 'name', 'type': 'str'},
9078        'type': {'key': 'type', 'type': 'str'},
9079        'system_data': {'key': 'systemData', 'type': 'SystemData'},
9080        'state': {'key': 'properties.state', 'type': 'str'},
9081        'disabled_alerts': {'key': 'properties.disabledAlerts', 'type': '[str]'},
9082        'email_addresses': {'key': 'properties.emailAddresses', 'type': '[str]'},
9083        'email_account_admins': {'key': 'properties.emailAccountAdmins', 'type': 'bool'},
9084        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
9085        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
9086        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
9087        'creation_time': {'key': 'properties.creationTime', 'type': 'iso-8601'},
9088    }
9089
9090    def __init__(
9091        self,
9092        **kwargs
9093    ):
9094        super(ManagedServerSecurityAlertPolicy, self).__init__(**kwargs)
9095        self.system_data = None
9096        self.state = kwargs.get('state', None)
9097        self.disabled_alerts = kwargs.get('disabled_alerts', None)
9098        self.email_addresses = kwargs.get('email_addresses', None)
9099        self.email_account_admins = kwargs.get('email_account_admins', None)
9100        self.storage_endpoint = kwargs.get('storage_endpoint', None)
9101        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
9102        self.retention_days = kwargs.get('retention_days', None)
9103        self.creation_time = None
9104
9105
9106class ManagedServerSecurityAlertPolicyListResult(msrest.serialization.Model):
9107    """A list of the managed Server's security alert policies.
9108
9109    Variables are only populated by the server, and will be ignored when sending a request.
9110
9111    :ivar value: Array of results.
9112    :vartype value: list[~azure.mgmt.sql.models.ManagedServerSecurityAlertPolicy]
9113    :ivar next_link: Link to retrieve next page of results.
9114    :vartype next_link: str
9115    """
9116
9117    _validation = {
9118        'value': {'readonly': True},
9119        'next_link': {'readonly': True},
9120    }
9121
9122    _attribute_map = {
9123        'value': {'key': 'value', 'type': '[ManagedServerSecurityAlertPolicy]'},
9124        'next_link': {'key': 'nextLink', 'type': 'str'},
9125    }
9126
9127    def __init__(
9128        self,
9129        **kwargs
9130    ):
9131        super(ManagedServerSecurityAlertPolicyListResult, self).__init__(**kwargs)
9132        self.value = None
9133        self.next_link = None
9134
9135
9136class ManagedTransparentDataEncryption(ProxyResource):
9137    """A managed database transparent data encryption state.
9138
9139    Variables are only populated by the server, and will be ignored when sending a request.
9140
9141    :ivar id: Resource ID.
9142    :vartype id: str
9143    :ivar name: Resource name.
9144    :vartype name: str
9145    :ivar type: Resource type.
9146    :vartype type: str
9147    :param state: Specifies the state of the transparent data encryption. Possible values include:
9148     "Enabled", "Disabled".
9149    :type state: str or ~azure.mgmt.sql.models.TransparentDataEncryptionState
9150    """
9151
9152    _validation = {
9153        'id': {'readonly': True},
9154        'name': {'readonly': True},
9155        'type': {'readonly': True},
9156    }
9157
9158    _attribute_map = {
9159        'id': {'key': 'id', 'type': 'str'},
9160        'name': {'key': 'name', 'type': 'str'},
9161        'type': {'key': 'type', 'type': 'str'},
9162        'state': {'key': 'properties.state', 'type': 'str'},
9163    }
9164
9165    def __init__(
9166        self,
9167        **kwargs
9168    ):
9169        super(ManagedTransparentDataEncryption, self).__init__(**kwargs)
9170        self.state = kwargs.get('state', None)
9171
9172
9173class ManagedTransparentDataEncryptionListResult(msrest.serialization.Model):
9174    """A list of managed transparent data encryptions.
9175
9176    Variables are only populated by the server, and will be ignored when sending a request.
9177
9178    :ivar value: Array of results.
9179    :vartype value: list[~azure.mgmt.sql.models.ManagedTransparentDataEncryption]
9180    :ivar next_link: Link to retrieve next page of results.
9181    :vartype next_link: str
9182    """
9183
9184    _validation = {
9185        'value': {'readonly': True},
9186        'next_link': {'readonly': True},
9187    }
9188
9189    _attribute_map = {
9190        'value': {'key': 'value', 'type': '[ManagedTransparentDataEncryption]'},
9191        'next_link': {'key': 'nextLink', 'type': 'str'},
9192    }
9193
9194    def __init__(
9195        self,
9196        **kwargs
9197    ):
9198        super(ManagedTransparentDataEncryptionListResult, self).__init__(**kwargs)
9199        self.value = None
9200        self.next_link = None
9201
9202
9203class MaxSizeCapability(msrest.serialization.Model):
9204    """The maximum size capability.
9205
9206    Variables are only populated by the server, and will be ignored when sending a request.
9207
9208    :ivar limit: The maximum size limit (see 'unit' for the units).
9209    :vartype limit: int
9210    :ivar unit: The units that the limit is expressed in. Possible values include: "Megabytes",
9211     "Gigabytes", "Terabytes", "Petabytes".
9212    :vartype unit: str or ~azure.mgmt.sql.models.MaxSizeUnit
9213    """
9214
9215    _validation = {
9216        'limit': {'readonly': True},
9217        'unit': {'readonly': True},
9218    }
9219
9220    _attribute_map = {
9221        'limit': {'key': 'limit', 'type': 'int'},
9222        'unit': {'key': 'unit', 'type': 'str'},
9223    }
9224
9225    def __init__(
9226        self,
9227        **kwargs
9228    ):
9229        super(MaxSizeCapability, self).__init__(**kwargs)
9230        self.limit = None
9231        self.unit = None
9232
9233
9234class MaxSizeRangeCapability(msrest.serialization.Model):
9235    """The maximum size range capability.
9236
9237    Variables are only populated by the server, and will be ignored when sending a request.
9238
9239    :ivar min_value: Minimum value.
9240    :vartype min_value: ~azure.mgmt.sql.models.MaxSizeCapability
9241    :ivar max_value: Maximum value.
9242    :vartype max_value: ~azure.mgmt.sql.models.MaxSizeCapability
9243    :ivar scale_size: Scale/step size for discrete values between the minimum value and the maximum
9244     value.
9245    :vartype scale_size: ~azure.mgmt.sql.models.MaxSizeCapability
9246    :ivar log_size: Size of transaction log.
9247    :vartype log_size: ~azure.mgmt.sql.models.LogSizeCapability
9248    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
9249     "Default", "Disabled".
9250    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
9251    :param reason: The reason for the capability not being available.
9252    :type reason: str
9253    """
9254
9255    _validation = {
9256        'min_value': {'readonly': True},
9257        'max_value': {'readonly': True},
9258        'scale_size': {'readonly': True},
9259        'log_size': {'readonly': True},
9260        'status': {'readonly': True},
9261    }
9262
9263    _attribute_map = {
9264        'min_value': {'key': 'minValue', 'type': 'MaxSizeCapability'},
9265        'max_value': {'key': 'maxValue', 'type': 'MaxSizeCapability'},
9266        'scale_size': {'key': 'scaleSize', 'type': 'MaxSizeCapability'},
9267        'log_size': {'key': 'logSize', 'type': 'LogSizeCapability'},
9268        'status': {'key': 'status', 'type': 'str'},
9269        'reason': {'key': 'reason', 'type': 'str'},
9270    }
9271
9272    def __init__(
9273        self,
9274        **kwargs
9275    ):
9276        super(MaxSizeRangeCapability, self).__init__(**kwargs)
9277        self.min_value = None
9278        self.max_value = None
9279        self.scale_size = None
9280        self.log_size = None
9281        self.status = None
9282        self.reason = kwargs.get('reason', None)
9283
9284
9285class Metric(msrest.serialization.Model):
9286    """Database metrics.
9287
9288    Variables are only populated by the server, and will be ignored when sending a request.
9289
9290    :ivar start_time: The start time for the metric (ISO-8601 format).
9291    :vartype start_time: ~datetime.datetime
9292    :ivar end_time: The end time for the metric (ISO-8601 format).
9293    :vartype end_time: ~datetime.datetime
9294    :ivar time_grain: The time step to be used to summarize the metric values.
9295    :vartype time_grain: str
9296    :ivar unit: The unit of the metric. Possible values include: "count", "bytes", "seconds",
9297     "percent", "countPerSecond", "bytesPerSecond".
9298    :vartype unit: str or ~azure.mgmt.sql.models.UnitType
9299    :ivar name: The name information for the metric.
9300    :vartype name: ~azure.mgmt.sql.models.MetricName
9301    :ivar metric_values: The metric values for the specified time window and timestep.
9302    :vartype metric_values: list[~azure.mgmt.sql.models.MetricValue]
9303    """
9304
9305    _validation = {
9306        'start_time': {'readonly': True},
9307        'end_time': {'readonly': True},
9308        'time_grain': {'readonly': True},
9309        'unit': {'readonly': True},
9310        'name': {'readonly': True},
9311        'metric_values': {'readonly': True},
9312    }
9313
9314    _attribute_map = {
9315        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
9316        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
9317        'time_grain': {'key': 'timeGrain', 'type': 'str'},
9318        'unit': {'key': 'unit', 'type': 'str'},
9319        'name': {'key': 'name', 'type': 'MetricName'},
9320        'metric_values': {'key': 'metricValues', 'type': '[MetricValue]'},
9321    }
9322
9323    def __init__(
9324        self,
9325        **kwargs
9326    ):
9327        super(Metric, self).__init__(**kwargs)
9328        self.start_time = None
9329        self.end_time = None
9330        self.time_grain = None
9331        self.unit = None
9332        self.name = None
9333        self.metric_values = None
9334
9335
9336class MetricAvailability(msrest.serialization.Model):
9337    """A metric availability value.
9338
9339    Variables are only populated by the server, and will be ignored when sending a request.
9340
9341    :ivar retention: The length of retention for the database metric.
9342    :vartype retention: str
9343    :ivar time_grain: The granularity of the database metric.
9344    :vartype time_grain: str
9345    """
9346
9347    _validation = {
9348        'retention': {'readonly': True},
9349        'time_grain': {'readonly': True},
9350    }
9351
9352    _attribute_map = {
9353        'retention': {'key': 'retention', 'type': 'str'},
9354        'time_grain': {'key': 'timeGrain', 'type': 'str'},
9355    }
9356
9357    def __init__(
9358        self,
9359        **kwargs
9360    ):
9361        super(MetricAvailability, self).__init__(**kwargs)
9362        self.retention = None
9363        self.time_grain = None
9364
9365
9366class MetricDefinition(msrest.serialization.Model):
9367    """A database metric definition.
9368
9369    Variables are only populated by the server, and will be ignored when sending a request.
9370
9371    :ivar name: The name information for the metric.
9372    :vartype name: ~azure.mgmt.sql.models.MetricName
9373    :ivar primary_aggregation_type: The primary aggregation type defining how metric values are
9374     displayed. Possible values include: "None", "Average", "Count", "Minimum", "Maximum", "Total".
9375    :vartype primary_aggregation_type: str or ~azure.mgmt.sql.models.PrimaryAggregationType
9376    :ivar resource_uri: The resource uri of the database.
9377    :vartype resource_uri: str
9378    :ivar unit: The unit of the metric. Possible values include: "Count", "Bytes", "Seconds",
9379     "Percent", "CountPerSecond", "BytesPerSecond".
9380    :vartype unit: str or ~azure.mgmt.sql.models.UnitDefinitionType
9381    :ivar metric_availabilities: The list of database metric availabilities for the metric.
9382    :vartype metric_availabilities: list[~azure.mgmt.sql.models.MetricAvailability]
9383    """
9384
9385    _validation = {
9386        'name': {'readonly': True},
9387        'primary_aggregation_type': {'readonly': True},
9388        'resource_uri': {'readonly': True},
9389        'unit': {'readonly': True},
9390        'metric_availabilities': {'readonly': True},
9391    }
9392
9393    _attribute_map = {
9394        'name': {'key': 'name', 'type': 'MetricName'},
9395        'primary_aggregation_type': {'key': 'primaryAggregationType', 'type': 'str'},
9396        'resource_uri': {'key': 'resourceUri', 'type': 'str'},
9397        'unit': {'key': 'unit', 'type': 'str'},
9398        'metric_availabilities': {'key': 'metricAvailabilities', 'type': '[MetricAvailability]'},
9399    }
9400
9401    def __init__(
9402        self,
9403        **kwargs
9404    ):
9405        super(MetricDefinition, self).__init__(**kwargs)
9406        self.name = None
9407        self.primary_aggregation_type = None
9408        self.resource_uri = None
9409        self.unit = None
9410        self.metric_availabilities = None
9411
9412
9413class MetricDefinitionListResult(msrest.serialization.Model):
9414    """The response to a list database metric definitions request.
9415
9416    All required parameters must be populated in order to send to Azure.
9417
9418    :param value: Required. The list of metric definitions for the database.
9419    :type value: list[~azure.mgmt.sql.models.MetricDefinition]
9420    """
9421
9422    _validation = {
9423        'value': {'required': True},
9424    }
9425
9426    _attribute_map = {
9427        'value': {'key': 'value', 'type': '[MetricDefinition]'},
9428    }
9429
9430    def __init__(
9431        self,
9432        **kwargs
9433    ):
9434        super(MetricDefinitionListResult, self).__init__(**kwargs)
9435        self.value = kwargs['value']
9436
9437
9438class MetricListResult(msrest.serialization.Model):
9439    """The response to a list database metrics request.
9440
9441    All required parameters must be populated in order to send to Azure.
9442
9443    :param value: Required. The list of metrics for the database.
9444    :type value: list[~azure.mgmt.sql.models.Metric]
9445    """
9446
9447    _validation = {
9448        'value': {'required': True},
9449    }
9450
9451    _attribute_map = {
9452        'value': {'key': 'value', 'type': '[Metric]'},
9453    }
9454
9455    def __init__(
9456        self,
9457        **kwargs
9458    ):
9459        super(MetricListResult, self).__init__(**kwargs)
9460        self.value = kwargs['value']
9461
9462
9463class MetricName(msrest.serialization.Model):
9464    """A database metric name.
9465
9466    Variables are only populated by the server, and will be ignored when sending a request.
9467
9468    :ivar value: The name of the database metric.
9469    :vartype value: str
9470    :ivar localized_value: The friendly name of the database metric.
9471    :vartype localized_value: str
9472    """
9473
9474    _validation = {
9475        'value': {'readonly': True},
9476        'localized_value': {'readonly': True},
9477    }
9478
9479    _attribute_map = {
9480        'value': {'key': 'value', 'type': 'str'},
9481        'localized_value': {'key': 'localizedValue', 'type': 'str'},
9482    }
9483
9484    def __init__(
9485        self,
9486        **kwargs
9487    ):
9488        super(MetricName, self).__init__(**kwargs)
9489        self.value = None
9490        self.localized_value = None
9491
9492
9493class MetricValue(msrest.serialization.Model):
9494    """Represents database metrics.
9495
9496    Variables are only populated by the server, and will be ignored when sending a request.
9497
9498    :ivar count: The number of values for the metric.
9499    :vartype count: int
9500    :ivar average: The average value of the metric.
9501    :vartype average: float
9502    :ivar maximum: The max value of the metric.
9503    :vartype maximum: float
9504    :ivar minimum: The min value of the metric.
9505    :vartype minimum: float
9506    :ivar timestamp: The metric timestamp (ISO-8601 format).
9507    :vartype timestamp: ~datetime.datetime
9508    :ivar total: The total value of the metric.
9509    :vartype total: float
9510    """
9511
9512    _validation = {
9513        'count': {'readonly': True},
9514        'average': {'readonly': True},
9515        'maximum': {'readonly': True},
9516        'minimum': {'readonly': True},
9517        'timestamp': {'readonly': True},
9518        'total': {'readonly': True},
9519    }
9520
9521    _attribute_map = {
9522        'count': {'key': 'count', 'type': 'int'},
9523        'average': {'key': 'average', 'type': 'float'},
9524        'maximum': {'key': 'maximum', 'type': 'float'},
9525        'minimum': {'key': 'minimum', 'type': 'float'},
9526        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
9527        'total': {'key': 'total', 'type': 'float'},
9528    }
9529
9530    def __init__(
9531        self,
9532        **kwargs
9533    ):
9534        super(MetricValue, self).__init__(**kwargs)
9535        self.count = None
9536        self.average = None
9537        self.maximum = None
9538        self.minimum = None
9539        self.timestamp = None
9540        self.total = None
9541
9542
9543class MinCapacityCapability(msrest.serialization.Model):
9544    """The min capacity capability.
9545
9546    Variables are only populated by the server, and will be ignored when sending a request.
9547
9548    :ivar value: Min capacity value.
9549    :vartype value: float
9550    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
9551     "Default", "Disabled".
9552    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
9553    :param reason: The reason for the capability not being available.
9554    :type reason: str
9555    """
9556
9557    _validation = {
9558        'value': {'readonly': True},
9559        'status': {'readonly': True},
9560    }
9561
9562    _attribute_map = {
9563        'value': {'key': 'value', 'type': 'float'},
9564        'status': {'key': 'status', 'type': 'str'},
9565        'reason': {'key': 'reason', 'type': 'str'},
9566    }
9567
9568    def __init__(
9569        self,
9570        **kwargs
9571    ):
9572        super(MinCapacityCapability, self).__init__(**kwargs)
9573        self.value = None
9574        self.status = None
9575        self.reason = kwargs.get('reason', None)
9576
9577
9578class Name(msrest.serialization.Model):
9579    """ARM Usage Name.
9580
9581    :param value: Usage name value.
9582    :type value: str
9583    :param localized_value: Usage name localized value.
9584    :type localized_value: str
9585    """
9586
9587    _attribute_map = {
9588        'value': {'key': 'value', 'type': 'str'},
9589        'localized_value': {'key': 'localizedValue', 'type': 'str'},
9590    }
9591
9592    def __init__(
9593        self,
9594        **kwargs
9595    ):
9596        super(Name, self).__init__(**kwargs)
9597        self.value = kwargs.get('value', None)
9598        self.localized_value = kwargs.get('localized_value', None)
9599
9600
9601class NetworkIsolationSettings(msrest.serialization.Model):
9602    """Contains the ARM resources for which to create private endpoint connection.
9603
9604    :param storage_account_resource_id: The resource id for the storage account used to store
9605     BACPAC file. If set, private endpoint connection will be created for the storage account. Must
9606     match storage account used for StorageUri parameter.
9607    :type storage_account_resource_id: str
9608    :param sql_server_resource_id: The resource id for the SQL server which is the target of this
9609     request. If set, private endpoint connection will be created for the SQL server. Must match
9610     server which is target of the operation.
9611    :type sql_server_resource_id: str
9612    """
9613
9614    _attribute_map = {
9615        'storage_account_resource_id': {'key': 'storageAccountResourceId', 'type': 'str'},
9616        'sql_server_resource_id': {'key': 'sqlServerResourceId', 'type': 'str'},
9617    }
9618
9619    def __init__(
9620        self,
9621        **kwargs
9622    ):
9623        super(NetworkIsolationSettings, self).__init__(**kwargs)
9624        self.storage_account_resource_id = kwargs.get('storage_account_resource_id', None)
9625        self.sql_server_resource_id = kwargs.get('sql_server_resource_id', None)
9626
9627
9628class Operation(msrest.serialization.Model):
9629    """SQL REST API operation definition.
9630
9631    Variables are only populated by the server, and will be ignored when sending a request.
9632
9633    :ivar name: The name of the operation being performed on this particular object.
9634    :vartype name: str
9635    :ivar display: The localized display information for this particular operation / action.
9636    :vartype display: ~azure.mgmt.sql.models.OperationDisplay
9637    :ivar origin: The intended executor of the operation. Possible values include: "user",
9638     "system".
9639    :vartype origin: str or ~azure.mgmt.sql.models.OperationOrigin
9640    :ivar properties: Additional descriptions for the operation.
9641    :vartype properties: dict[str, any]
9642    """
9643
9644    _validation = {
9645        'name': {'readonly': True},
9646        'display': {'readonly': True},
9647        'origin': {'readonly': True},
9648        'properties': {'readonly': True},
9649    }
9650
9651    _attribute_map = {
9652        'name': {'key': 'name', 'type': 'str'},
9653        'display': {'key': 'display', 'type': 'OperationDisplay'},
9654        'origin': {'key': 'origin', 'type': 'str'},
9655        'properties': {'key': 'properties', 'type': '{object}'},
9656    }
9657
9658    def __init__(
9659        self,
9660        **kwargs
9661    ):
9662        super(Operation, self).__init__(**kwargs)
9663        self.name = None
9664        self.display = None
9665        self.origin = None
9666        self.properties = None
9667
9668
9669class OperationDisplay(msrest.serialization.Model):
9670    """Display metadata associated with the operation.
9671
9672    Variables are only populated by the server, and will be ignored when sending a request.
9673
9674    :ivar provider: The localized friendly form of the resource provider name.
9675    :vartype provider: str
9676    :ivar resource: The localized friendly form of the resource type related to this
9677     action/operation.
9678    :vartype resource: str
9679    :ivar operation: The localized friendly name for the operation.
9680    :vartype operation: str
9681    :ivar description: The localized friendly description for the operation.
9682    :vartype description: str
9683    """
9684
9685    _validation = {
9686        'provider': {'readonly': True},
9687        'resource': {'readonly': True},
9688        'operation': {'readonly': True},
9689        'description': {'readonly': True},
9690    }
9691
9692    _attribute_map = {
9693        'provider': {'key': 'provider', 'type': 'str'},
9694        'resource': {'key': 'resource', 'type': 'str'},
9695        'operation': {'key': 'operation', 'type': 'str'},
9696        'description': {'key': 'description', 'type': 'str'},
9697    }
9698
9699    def __init__(
9700        self,
9701        **kwargs
9702    ):
9703        super(OperationDisplay, self).__init__(**kwargs)
9704        self.provider = None
9705        self.resource = None
9706        self.operation = None
9707        self.description = None
9708
9709
9710class OperationImpact(msrest.serialization.Model):
9711    """The impact of an operation, both in absolute and relative terms.
9712
9713    Variables are only populated by the server, and will be ignored when sending a request.
9714
9715    :ivar name: The name of the impact dimension.
9716    :vartype name: str
9717    :ivar unit: The unit in which estimated impact to dimension is measured.
9718    :vartype unit: str
9719    :ivar change_value_absolute: The absolute impact to dimension.
9720    :vartype change_value_absolute: float
9721    :ivar change_value_relative: The relative impact to dimension (null if not applicable).
9722    :vartype change_value_relative: float
9723    """
9724
9725    _validation = {
9726        'name': {'readonly': True},
9727        'unit': {'readonly': True},
9728        'change_value_absolute': {'readonly': True},
9729        'change_value_relative': {'readonly': True},
9730    }
9731
9732    _attribute_map = {
9733        'name': {'key': 'name', 'type': 'str'},
9734        'unit': {'key': 'unit', 'type': 'str'},
9735        'change_value_absolute': {'key': 'changeValueAbsolute', 'type': 'float'},
9736        'change_value_relative': {'key': 'changeValueRelative', 'type': 'float'},
9737    }
9738
9739    def __init__(
9740        self,
9741        **kwargs
9742    ):
9743        super(OperationImpact, self).__init__(**kwargs)
9744        self.name = None
9745        self.unit = None
9746        self.change_value_absolute = None
9747        self.change_value_relative = None
9748
9749
9750class OperationListResult(msrest.serialization.Model):
9751    """Result of the request to list SQL operations.
9752
9753    Variables are only populated by the server, and will be ignored when sending a request.
9754
9755    :ivar value: Array of results.
9756    :vartype value: list[~azure.mgmt.sql.models.Operation]
9757    :ivar next_link: Link to retrieve next page of results.
9758    :vartype next_link: str
9759    """
9760
9761    _validation = {
9762        'value': {'readonly': True},
9763        'next_link': {'readonly': True},
9764    }
9765
9766    _attribute_map = {
9767        'value': {'key': 'value', 'type': '[Operation]'},
9768        'next_link': {'key': 'nextLink', 'type': 'str'},
9769    }
9770
9771    def __init__(
9772        self,
9773        **kwargs
9774    ):
9775        super(OperationListResult, self).__init__(**kwargs)
9776        self.value = None
9777        self.next_link = None
9778
9779
9780class OperationsHealth(ProxyResource):
9781    """Operations health status in a location.
9782
9783    Variables are only populated by the server, and will be ignored when sending a request.
9784
9785    :ivar id: Resource ID.
9786    :vartype id: str
9787    :ivar name: Resource name.
9788    :vartype name: str
9789    :ivar type: Resource type.
9790    :vartype type: str
9791    :ivar name_properties_name: Operation name for the service.
9792    :vartype name_properties_name: str
9793    :ivar health: Operation health status of the service.
9794    :vartype health: str
9795    :ivar description: Health status description.
9796    :vartype description: str
9797    """
9798
9799    _validation = {
9800        'id': {'readonly': True},
9801        'name': {'readonly': True},
9802        'type': {'readonly': True},
9803        'name_properties_name': {'readonly': True},
9804        'health': {'readonly': True},
9805        'description': {'readonly': True},
9806    }
9807
9808    _attribute_map = {
9809        'id': {'key': 'id', 'type': 'str'},
9810        'name': {'key': 'name', 'type': 'str'},
9811        'type': {'key': 'type', 'type': 'str'},
9812        'name_properties_name': {'key': 'properties.name', 'type': 'str'},
9813        'health': {'key': 'properties.health', 'type': 'str'},
9814        'description': {'key': 'properties.description', 'type': 'str'},
9815    }
9816
9817    def __init__(
9818        self,
9819        **kwargs
9820    ):
9821        super(OperationsHealth, self).__init__(**kwargs)
9822        self.name_properties_name = None
9823        self.health = None
9824        self.description = None
9825
9826
9827class OperationsHealthListResult(msrest.serialization.Model):
9828    """A list of service health statuses in a location.
9829
9830    Variables are only populated by the server, and will be ignored when sending a request.
9831
9832    :ivar value: Array of results.
9833    :vartype value: list[~azure.mgmt.sql.models.OperationsHealth]
9834    :ivar next_link: Link to retrieve next page of results.
9835    :vartype next_link: str
9836    """
9837
9838    _validation = {
9839        'value': {'readonly': True},
9840        'next_link': {'readonly': True},
9841    }
9842
9843    _attribute_map = {
9844        'value': {'key': 'value', 'type': '[OperationsHealth]'},
9845        'next_link': {'key': 'nextLink', 'type': 'str'},
9846    }
9847
9848    def __init__(
9849        self,
9850        **kwargs
9851    ):
9852        super(OperationsHealthListResult, self).__init__(**kwargs)
9853        self.value = None
9854        self.next_link = None
9855
9856
9857class OutboundFirewallRule(ProxyResource):
9858    """An Azure SQL DB Server Outbound Firewall Rule.
9859
9860    Variables are only populated by the server, and will be ignored when sending a request.
9861
9862    :ivar id: Resource ID.
9863    :vartype id: str
9864    :ivar name: Resource name.
9865    :vartype name: str
9866    :ivar type: Resource type.
9867    :vartype type: str
9868    :ivar provisioning_state: The state of the outbound rule.
9869    :vartype provisioning_state: str
9870    """
9871
9872    _validation = {
9873        'id': {'readonly': True},
9874        'name': {'readonly': True},
9875        'type': {'readonly': True},
9876        'provisioning_state': {'readonly': True},
9877    }
9878
9879    _attribute_map = {
9880        'id': {'key': 'id', 'type': 'str'},
9881        'name': {'key': 'name', 'type': 'str'},
9882        'type': {'key': 'type', 'type': 'str'},
9883        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9884    }
9885
9886    def __init__(
9887        self,
9888        **kwargs
9889    ):
9890        super(OutboundFirewallRule, self).__init__(**kwargs)
9891        self.provisioning_state = None
9892
9893
9894class OutboundFirewallRuleListResult(msrest.serialization.Model):
9895    """A list of outbound rules.
9896
9897    Variables are only populated by the server, and will be ignored when sending a request.
9898
9899    :ivar value: Array of results.
9900    :vartype value: list[~azure.mgmt.sql.models.OutboundFirewallRule]
9901    :ivar next_link: Link to retrieve next page of results.
9902    :vartype next_link: str
9903    """
9904
9905    _validation = {
9906        'value': {'readonly': True},
9907        'next_link': {'readonly': True},
9908    }
9909
9910    _attribute_map = {
9911        'value': {'key': 'value', 'type': '[OutboundFirewallRule]'},
9912        'next_link': {'key': 'nextLink', 'type': 'str'},
9913    }
9914
9915    def __init__(
9916        self,
9917        **kwargs
9918    ):
9919        super(OutboundFirewallRuleListResult, self).__init__(**kwargs)
9920        self.value = None
9921        self.next_link = None
9922
9923
9924class PartnerInfo(msrest.serialization.Model):
9925    """Partner server information for the failover group.
9926
9927    Variables are only populated by the server, and will be ignored when sending a request.
9928
9929    All required parameters must be populated in order to send to Azure.
9930
9931    :param id: Required. Resource identifier of the partner server.
9932    :type id: str
9933    :ivar location: Geo location of the partner server.
9934    :vartype location: str
9935    :ivar replication_role: Replication role of the partner server. Possible values include:
9936     "Primary", "Secondary".
9937    :vartype replication_role: str or ~azure.mgmt.sql.models.FailoverGroupReplicationRole
9938    """
9939
9940    _validation = {
9941        'id': {'required': True},
9942        'location': {'readonly': True},
9943        'replication_role': {'readonly': True},
9944    }
9945
9946    _attribute_map = {
9947        'id': {'key': 'id', 'type': 'str'},
9948        'location': {'key': 'location', 'type': 'str'},
9949        'replication_role': {'key': 'replicationRole', 'type': 'str'},
9950    }
9951
9952    def __init__(
9953        self,
9954        **kwargs
9955    ):
9956        super(PartnerInfo, self).__init__(**kwargs)
9957        self.id = kwargs['id']
9958        self.location = None
9959        self.replication_role = None
9960
9961
9962class PartnerRegionInfo(msrest.serialization.Model):
9963    """Partner region information for the failover group.
9964
9965    Variables are only populated by the server, and will be ignored when sending a request.
9966
9967    :param location: Geo location of the partner managed instances.
9968    :type location: str
9969    :ivar replication_role: Replication role of the partner managed instances. Possible values
9970     include: "Primary", "Secondary".
9971    :vartype replication_role: str or ~azure.mgmt.sql.models.InstanceFailoverGroupReplicationRole
9972    """
9973
9974    _validation = {
9975        'replication_role': {'readonly': True},
9976    }
9977
9978    _attribute_map = {
9979        'location': {'key': 'location', 'type': 'str'},
9980        'replication_role': {'key': 'replicationRole', 'type': 'str'},
9981    }
9982
9983    def __init__(
9984        self,
9985        **kwargs
9986    ):
9987        super(PartnerRegionInfo, self).__init__(**kwargs)
9988        self.location = kwargs.get('location', None)
9989        self.replication_role = None
9990
9991
9992class PerformanceLevelCapability(msrest.serialization.Model):
9993    """The performance level capability.
9994
9995    Variables are only populated by the server, and will be ignored when sending a request.
9996
9997    :ivar value: Performance level value.
9998    :vartype value: float
9999    :ivar unit: Unit type used to measure performance level. Possible values include: "DTU",
10000     "VCores".
10001    :vartype unit: str or ~azure.mgmt.sql.models.PerformanceLevelUnit
10002    """
10003
10004    _validation = {
10005        'value': {'readonly': True},
10006        'unit': {'readonly': True},
10007    }
10008
10009    _attribute_map = {
10010        'value': {'key': 'value', 'type': 'float'},
10011        'unit': {'key': 'unit', 'type': 'str'},
10012    }
10013
10014    def __init__(
10015        self,
10016        **kwargs
10017    ):
10018        super(PerformanceLevelCapability, self).__init__(**kwargs)
10019        self.value = None
10020        self.unit = None
10021
10022
10023class PrivateEndpointConnection(ProxyResource):
10024    """A private endpoint connection.
10025
10026    Variables are only populated by the server, and will be ignored when sending a request.
10027
10028    :ivar id: Resource ID.
10029    :vartype id: str
10030    :ivar name: Resource name.
10031    :vartype name: str
10032    :ivar type: Resource type.
10033    :vartype type: str
10034    :param private_endpoint: Private endpoint which the connection belongs to.
10035    :type private_endpoint: ~azure.mgmt.sql.models.PrivateEndpointProperty
10036    :param private_link_service_connection_state: Connection state of the private endpoint
10037     connection.
10038    :type private_link_service_connection_state:
10039     ~azure.mgmt.sql.models.PrivateLinkServiceConnectionStateProperty
10040    :ivar provisioning_state: State of the private endpoint connection. Possible values include:
10041     "Approving", "Ready", "Dropping", "Failed", "Rejecting".
10042    :vartype provisioning_state: str or ~azure.mgmt.sql.models.PrivateEndpointProvisioningState
10043    """
10044
10045    _validation = {
10046        'id': {'readonly': True},
10047        'name': {'readonly': True},
10048        'type': {'readonly': True},
10049        'provisioning_state': {'readonly': True},
10050    }
10051
10052    _attribute_map = {
10053        'id': {'key': 'id', 'type': 'str'},
10054        'name': {'key': 'name', 'type': 'str'},
10055        'type': {'key': 'type', 'type': 'str'},
10056        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpointProperty'},
10057        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionStateProperty'},
10058        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10059    }
10060
10061    def __init__(
10062        self,
10063        **kwargs
10064    ):
10065        super(PrivateEndpointConnection, self).__init__(**kwargs)
10066        self.private_endpoint = kwargs.get('private_endpoint', None)
10067        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
10068        self.provisioning_state = None
10069
10070
10071class PrivateEndpointConnectionListResult(msrest.serialization.Model):
10072    """A list of private endpoint connections.
10073
10074    Variables are only populated by the server, and will be ignored when sending a request.
10075
10076    :ivar value: Array of results.
10077    :vartype value: list[~azure.mgmt.sql.models.PrivateEndpointConnection]
10078    :ivar next_link: Link to retrieve next page of results.
10079    :vartype next_link: str
10080    """
10081
10082    _validation = {
10083        'value': {'readonly': True},
10084        'next_link': {'readonly': True},
10085    }
10086
10087    _attribute_map = {
10088        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
10089        'next_link': {'key': 'nextLink', 'type': 'str'},
10090    }
10091
10092    def __init__(
10093        self,
10094        **kwargs
10095    ):
10096        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
10097        self.value = None
10098        self.next_link = None
10099
10100
10101class PrivateEndpointConnectionProperties(msrest.serialization.Model):
10102    """Properties of a private endpoint connection.
10103
10104    Variables are only populated by the server, and will be ignored when sending a request.
10105
10106    :param private_endpoint: Private endpoint which the connection belongs to.
10107    :type private_endpoint: ~azure.mgmt.sql.models.PrivateEndpointProperty
10108    :param private_link_service_connection_state: Connection state of the private endpoint
10109     connection.
10110    :type private_link_service_connection_state:
10111     ~azure.mgmt.sql.models.PrivateLinkServiceConnectionStateProperty
10112    :ivar provisioning_state: State of the private endpoint connection. Possible values include:
10113     "Approving", "Ready", "Dropping", "Failed", "Rejecting".
10114    :vartype provisioning_state: str or ~azure.mgmt.sql.models.PrivateEndpointProvisioningState
10115    """
10116
10117    _validation = {
10118        'provisioning_state': {'readonly': True},
10119    }
10120
10121    _attribute_map = {
10122        'private_endpoint': {'key': 'privateEndpoint', 'type': 'PrivateEndpointProperty'},
10123        'private_link_service_connection_state': {'key': 'privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionStateProperty'},
10124        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
10125    }
10126
10127    def __init__(
10128        self,
10129        **kwargs
10130    ):
10131        super(PrivateEndpointConnectionProperties, self).__init__(**kwargs)
10132        self.private_endpoint = kwargs.get('private_endpoint', None)
10133        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
10134        self.provisioning_state = None
10135
10136
10137class PrivateEndpointConnectionRequestStatus(msrest.serialization.Model):
10138    """Contains the private endpoint connection requests status.
10139
10140    Variables are only populated by the server, and will be ignored when sending a request.
10141
10142    :ivar private_link_service_id: Resource id for which the private endpoint is created.
10143    :vartype private_link_service_id: str
10144    :ivar private_endpoint_connection_name: The connection name for the private endpoint.
10145    :vartype private_endpoint_connection_name: str
10146    :ivar status: Status of this private endpoint connection.
10147    :vartype status: str
10148    """
10149
10150    _validation = {
10151        'private_link_service_id': {'readonly': True},
10152        'private_endpoint_connection_name': {'readonly': True},
10153        'status': {'readonly': True},
10154    }
10155
10156    _attribute_map = {
10157        'private_link_service_id': {'key': 'privateLinkServiceId', 'type': 'str'},
10158        'private_endpoint_connection_name': {'key': 'privateEndpointConnectionName', 'type': 'str'},
10159        'status': {'key': 'status', 'type': 'str'},
10160    }
10161
10162    def __init__(
10163        self,
10164        **kwargs
10165    ):
10166        super(PrivateEndpointConnectionRequestStatus, self).__init__(**kwargs)
10167        self.private_link_service_id = None
10168        self.private_endpoint_connection_name = None
10169        self.status = None
10170
10171
10172class PrivateEndpointProperty(msrest.serialization.Model):
10173    """PrivateEndpointProperty.
10174
10175    :param id: Resource id of the private endpoint.
10176    :type id: str
10177    """
10178
10179    _attribute_map = {
10180        'id': {'key': 'id', 'type': 'str'},
10181    }
10182
10183    def __init__(
10184        self,
10185        **kwargs
10186    ):
10187        super(PrivateEndpointProperty, self).__init__(**kwargs)
10188        self.id = kwargs.get('id', None)
10189
10190
10191class PrivateLinkResource(ProxyResource):
10192    """A private link resource.
10193
10194    Variables are only populated by the server, and will be ignored when sending a request.
10195
10196    :ivar id: Resource ID.
10197    :vartype id: str
10198    :ivar name: Resource name.
10199    :vartype name: str
10200    :ivar type: Resource type.
10201    :vartype type: str
10202    :ivar properties: The private link resource group id.
10203    :vartype properties: ~azure.mgmt.sql.models.PrivateLinkResourceProperties
10204    """
10205
10206    _validation = {
10207        'id': {'readonly': True},
10208        'name': {'readonly': True},
10209        'type': {'readonly': True},
10210        'properties': {'readonly': True},
10211    }
10212
10213    _attribute_map = {
10214        'id': {'key': 'id', 'type': 'str'},
10215        'name': {'key': 'name', 'type': 'str'},
10216        'type': {'key': 'type', 'type': 'str'},
10217        'properties': {'key': 'properties', 'type': 'PrivateLinkResourceProperties'},
10218    }
10219
10220    def __init__(
10221        self,
10222        **kwargs
10223    ):
10224        super(PrivateLinkResource, self).__init__(**kwargs)
10225        self.properties = None
10226
10227
10228class PrivateLinkResourceListResult(msrest.serialization.Model):
10229    """A list of private link resources.
10230
10231    Variables are only populated by the server, and will be ignored when sending a request.
10232
10233    :ivar value: Array of results.
10234    :vartype value: list[~azure.mgmt.sql.models.PrivateLinkResource]
10235    :ivar next_link: Link to retrieve next page of results.
10236    :vartype next_link: str
10237    """
10238
10239    _validation = {
10240        'value': {'readonly': True},
10241        'next_link': {'readonly': True},
10242    }
10243
10244    _attribute_map = {
10245        'value': {'key': 'value', 'type': '[PrivateLinkResource]'},
10246        'next_link': {'key': 'nextLink', 'type': 'str'},
10247    }
10248
10249    def __init__(
10250        self,
10251        **kwargs
10252    ):
10253        super(PrivateLinkResourceListResult, self).__init__(**kwargs)
10254        self.value = None
10255        self.next_link = None
10256
10257
10258class PrivateLinkResourceProperties(msrest.serialization.Model):
10259    """Properties of a private link resource.
10260
10261    Variables are only populated by the server, and will be ignored when sending a request.
10262
10263    :ivar group_id: The private link resource group id.
10264    :vartype group_id: str
10265    :ivar required_members: The private link resource required member names.
10266    :vartype required_members: list[str]
10267    :ivar required_zone_names: The private link resource required zone names.
10268    :vartype required_zone_names: list[str]
10269    """
10270
10271    _validation = {
10272        'group_id': {'readonly': True},
10273        'required_members': {'readonly': True},
10274        'required_zone_names': {'readonly': True},
10275    }
10276
10277    _attribute_map = {
10278        'group_id': {'key': 'groupId', 'type': 'str'},
10279        'required_members': {'key': 'requiredMembers', 'type': '[str]'},
10280        'required_zone_names': {'key': 'requiredZoneNames', 'type': '[str]'},
10281    }
10282
10283    def __init__(
10284        self,
10285        **kwargs
10286    ):
10287        super(PrivateLinkResourceProperties, self).__init__(**kwargs)
10288        self.group_id = None
10289        self.required_members = None
10290        self.required_zone_names = None
10291
10292
10293class PrivateLinkServiceConnectionStateProperty(msrest.serialization.Model):
10294    """PrivateLinkServiceConnectionStateProperty.
10295
10296    Variables are only populated by the server, and will be ignored when sending a request.
10297
10298    All required parameters must be populated in order to send to Azure.
10299
10300    :param status: Required. The private link service connection status. Possible values include:
10301     "Approved", "Pending", "Rejected", "Disconnected".
10302    :type status: str or ~azure.mgmt.sql.models.PrivateLinkServiceConnectionStateStatus
10303    :param description: Required. The private link service connection description.
10304    :type description: str
10305    :ivar actions_required: The actions required for private link service connection. Possible
10306     values include: "None".
10307    :vartype actions_required: str or
10308     ~azure.mgmt.sql.models.PrivateLinkServiceConnectionStateActionsRequire
10309    """
10310
10311    _validation = {
10312        'status': {'required': True},
10313        'description': {'required': True},
10314        'actions_required': {'readonly': True},
10315    }
10316
10317    _attribute_map = {
10318        'status': {'key': 'status', 'type': 'str'},
10319        'description': {'key': 'description', 'type': 'str'},
10320        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
10321    }
10322
10323    def __init__(
10324        self,
10325        **kwargs
10326    ):
10327        super(PrivateLinkServiceConnectionStateProperty, self).__init__(**kwargs)
10328        self.status = kwargs['status']
10329        self.description = kwargs['description']
10330        self.actions_required = None
10331
10332
10333class QueryMetricInterval(msrest.serialization.Model):
10334    """Properties of a query metrics interval.
10335
10336    Variables are only populated by the server, and will be ignored when sending a request.
10337
10338    :ivar interval_start_time: The start time for the metric interval (ISO-8601 format).
10339    :vartype interval_start_time: str
10340    :ivar interval_type: Interval type (length). Possible values include: "PT1H", "P1D".
10341    :vartype interval_type: str or ~azure.mgmt.sql.models.QueryTimeGrainType
10342    :ivar execution_count: Execution count of a query in this interval.
10343    :vartype execution_count: long
10344    :param metrics: List of metric objects for this interval.
10345    :type metrics: list[~azure.mgmt.sql.models.QueryMetricProperties]
10346    """
10347
10348    _validation = {
10349        'interval_start_time': {'readonly': True},
10350        'interval_type': {'readonly': True},
10351        'execution_count': {'readonly': True},
10352    }
10353
10354    _attribute_map = {
10355        'interval_start_time': {'key': 'intervalStartTime', 'type': 'str'},
10356        'interval_type': {'key': 'intervalType', 'type': 'str'},
10357        'execution_count': {'key': 'executionCount', 'type': 'long'},
10358        'metrics': {'key': 'metrics', 'type': '[QueryMetricProperties]'},
10359    }
10360
10361    def __init__(
10362        self,
10363        **kwargs
10364    ):
10365        super(QueryMetricInterval, self).__init__(**kwargs)
10366        self.interval_start_time = None
10367        self.interval_type = None
10368        self.execution_count = None
10369        self.metrics = kwargs.get('metrics', None)
10370
10371
10372class QueryMetricProperties(msrest.serialization.Model):
10373    """Properties of a topquery metric in one interval.
10374
10375    Variables are only populated by the server, and will be ignored when sending a request.
10376
10377    :ivar name: The name information for the metric.
10378    :vartype name: str
10379    :ivar display_name: The UI appropriate name for the metric.
10380    :vartype display_name: str
10381    :ivar unit: The unit of the metric. Possible values include: "percentage", "KB",
10382     "microseconds", "count".
10383    :vartype unit: str or ~azure.mgmt.sql.models.QueryMetricUnitType
10384    :ivar value: The value of the metric.
10385    :vartype value: float
10386    :ivar min: Metric value when min() aggregate function is used over the interval.
10387    :vartype min: float
10388    :ivar max: Metric value when max() aggregate function is used over the interval.
10389    :vartype max: float
10390    :ivar avg: Metric value when avg() aggregate function is used over the interval.
10391    :vartype avg: float
10392    :ivar sum: Metric value when sum() aggregate function is used over the interval.
10393    :vartype sum: float
10394    :ivar stdev: Metric value when stdev aggregate function is used over the interval.
10395    :vartype stdev: float
10396    """
10397
10398    _validation = {
10399        'name': {'readonly': True},
10400        'display_name': {'readonly': True},
10401        'unit': {'readonly': True},
10402        'value': {'readonly': True},
10403        'min': {'readonly': True},
10404        'max': {'readonly': True},
10405        'avg': {'readonly': True},
10406        'sum': {'readonly': True},
10407        'stdev': {'readonly': True},
10408    }
10409
10410    _attribute_map = {
10411        'name': {'key': 'name', 'type': 'str'},
10412        'display_name': {'key': 'displayName', 'type': 'str'},
10413        'unit': {'key': 'unit', 'type': 'str'},
10414        'value': {'key': 'value', 'type': 'float'},
10415        'min': {'key': 'min', 'type': 'float'},
10416        'max': {'key': 'max', 'type': 'float'},
10417        'avg': {'key': 'avg', 'type': 'float'},
10418        'sum': {'key': 'sum', 'type': 'float'},
10419        'stdev': {'key': 'stdev', 'type': 'float'},
10420    }
10421
10422    def __init__(
10423        self,
10424        **kwargs
10425    ):
10426        super(QueryMetricProperties, self).__init__(**kwargs)
10427        self.name = None
10428        self.display_name = None
10429        self.unit = None
10430        self.value = None
10431        self.min = None
10432        self.max = None
10433        self.avg = None
10434        self.sum = None
10435        self.stdev = None
10436
10437
10438class QueryStatistics(ProxyResource):
10439    """QueryStatistics.
10440
10441    Variables are only populated by the server, and will be ignored when sending a request.
10442
10443    :ivar id: Resource ID.
10444    :vartype id: str
10445    :ivar name: Resource name.
10446    :vartype name: str
10447    :ivar type: Resource type.
10448    :vartype type: str
10449    :ivar database_name: Database name of the database in which this query was executed.
10450    :vartype database_name: str
10451    :ivar query_id: Unique query id (unique within one database).
10452    :vartype query_id: str
10453    :ivar start_time: The start time for the metric (ISO-8601 format).
10454    :vartype start_time: str
10455    :ivar end_time: The end time for the metric (ISO-8601 format).
10456    :vartype end_time: str
10457    :param intervals: List of intervals with appropriate metric data.
10458    :type intervals: list[~azure.mgmt.sql.models.QueryMetricInterval]
10459    """
10460
10461    _validation = {
10462        'id': {'readonly': True},
10463        'name': {'readonly': True},
10464        'type': {'readonly': True},
10465        'database_name': {'readonly': True},
10466        'query_id': {'readonly': True},
10467        'start_time': {'readonly': True},
10468        'end_time': {'readonly': True},
10469    }
10470
10471    _attribute_map = {
10472        'id': {'key': 'id', 'type': 'str'},
10473        'name': {'key': 'name', 'type': 'str'},
10474        'type': {'key': 'type', 'type': 'str'},
10475        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
10476        'query_id': {'key': 'properties.queryId', 'type': 'str'},
10477        'start_time': {'key': 'properties.startTime', 'type': 'str'},
10478        'end_time': {'key': 'properties.endTime', 'type': 'str'},
10479        'intervals': {'key': 'properties.intervals', 'type': '[QueryMetricInterval]'},
10480    }
10481
10482    def __init__(
10483        self,
10484        **kwargs
10485    ):
10486        super(QueryStatistics, self).__init__(**kwargs)
10487        self.database_name = None
10488        self.query_id = None
10489        self.start_time = None
10490        self.end_time = None
10491        self.intervals = kwargs.get('intervals', None)
10492
10493
10494class QueryStatisticsProperties(msrest.serialization.Model):
10495    """Properties of a query execution statistics.
10496
10497    Variables are only populated by the server, and will be ignored when sending a request.
10498
10499    :ivar database_name: Database name of the database in which this query was executed.
10500    :vartype database_name: str
10501    :ivar query_id: Unique query id (unique within one database).
10502    :vartype query_id: str
10503    :ivar start_time: The start time for the metric (ISO-8601 format).
10504    :vartype start_time: str
10505    :ivar end_time: The end time for the metric (ISO-8601 format).
10506    :vartype end_time: str
10507    :param intervals: List of intervals with appropriate metric data.
10508    :type intervals: list[~azure.mgmt.sql.models.QueryMetricInterval]
10509    """
10510
10511    _validation = {
10512        'database_name': {'readonly': True},
10513        'query_id': {'readonly': True},
10514        'start_time': {'readonly': True},
10515        'end_time': {'readonly': True},
10516    }
10517
10518    _attribute_map = {
10519        'database_name': {'key': 'databaseName', 'type': 'str'},
10520        'query_id': {'key': 'queryId', 'type': 'str'},
10521        'start_time': {'key': 'startTime', 'type': 'str'},
10522        'end_time': {'key': 'endTime', 'type': 'str'},
10523        'intervals': {'key': 'intervals', 'type': '[QueryMetricInterval]'},
10524    }
10525
10526    def __init__(
10527        self,
10528        **kwargs
10529    ):
10530        super(QueryStatisticsProperties, self).__init__(**kwargs)
10531        self.database_name = None
10532        self.query_id = None
10533        self.start_time = None
10534        self.end_time = None
10535        self.intervals = kwargs.get('intervals', None)
10536
10537
10538class ReadScaleCapability(msrest.serialization.Model):
10539    """The read scale capability.
10540
10541    Variables are only populated by the server, and will be ignored when sending a request.
10542
10543    :ivar max_number_of_replicas: The maximum number of read scale replicas.
10544    :vartype max_number_of_replicas: int
10545    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
10546     "Default", "Disabled".
10547    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
10548    :param reason: The reason for the capability not being available.
10549    :type reason: str
10550    """
10551
10552    _validation = {
10553        'max_number_of_replicas': {'readonly': True},
10554        'status': {'readonly': True},
10555    }
10556
10557    _attribute_map = {
10558        'max_number_of_replicas': {'key': 'maxNumberOfReplicas', 'type': 'int'},
10559        'status': {'key': 'status', 'type': 'str'},
10560        'reason': {'key': 'reason', 'type': 'str'},
10561    }
10562
10563    def __init__(
10564        self,
10565        **kwargs
10566    ):
10567        super(ReadScaleCapability, self).__init__(**kwargs)
10568        self.max_number_of_replicas = None
10569        self.status = None
10570        self.reason = kwargs.get('reason', None)
10571
10572
10573class RecommendedAction(ProxyResource):
10574    """Database, Server or Elastic Pool Recommended Action.
10575
10576    Variables are only populated by the server, and will be ignored when sending a request.
10577
10578    :ivar id: Resource ID.
10579    :vartype id: str
10580    :ivar name: Resource name.
10581    :vartype name: str
10582    :ivar type: Resource type.
10583    :vartype type: str
10584    :ivar kind: Resource kind.
10585    :vartype kind: str
10586    :ivar location: Resource location.
10587    :vartype location: str
10588    :ivar recommendation_reason: Gets the reason for recommending this action. e.g.,
10589     DuplicateIndex.
10590    :vartype recommendation_reason: str
10591    :ivar valid_since: Gets the time since when this recommended action is valid.
10592    :vartype valid_since: ~datetime.datetime
10593    :ivar last_refresh: Gets time when this recommended action was last refreshed.
10594    :vartype last_refresh: ~datetime.datetime
10595    :param state: Gets the info of the current state the recommended action is in.
10596    :type state: ~azure.mgmt.sql.models.RecommendedActionStateInfo
10597    :ivar is_executable_action: Gets if this recommended action is actionable by user.
10598    :vartype is_executable_action: bool
10599    :ivar is_revertable_action: Gets if changes applied by this recommended action can be reverted
10600     by user.
10601    :vartype is_revertable_action: bool
10602    :ivar is_archived_action: Gets if this recommended action was suggested some time ago but user
10603     chose to ignore this and system added a new recommended action again.
10604    :vartype is_archived_action: bool
10605    :ivar execute_action_start_time: Gets the time when system started applying this recommended
10606     action on the user resource. e.g., index creation start time.
10607    :vartype execute_action_start_time: ~datetime.datetime
10608    :ivar execute_action_duration: Gets the time taken for applying this recommended action on user
10609     resource. e.g., time taken for index creation.
10610    :vartype execute_action_duration: str
10611    :ivar revert_action_start_time: Gets the time when system started reverting changes of this
10612     recommended action on user resource. e.g., time when index drop is executed.
10613    :vartype revert_action_start_time: ~datetime.datetime
10614    :ivar revert_action_duration: Gets the time taken for reverting changes of this recommended
10615     action on user resource. e.g., time taken for dropping the created index.
10616    :vartype revert_action_duration: str
10617    :ivar execute_action_initiated_by: Gets if approval for applying this recommended action was
10618     given by user/system. Possible values include: "User", "System".
10619    :vartype execute_action_initiated_by: str or
10620     ~azure.mgmt.sql.models.RecommendedActionInitiatedBy
10621    :ivar execute_action_initiated_time: Gets the time when this recommended action was approved
10622     for execution.
10623    :vartype execute_action_initiated_time: ~datetime.datetime
10624    :ivar revert_action_initiated_by: Gets if approval for reverting this recommended action was
10625     given by user/system. Possible values include: "User", "System".
10626    :vartype revert_action_initiated_by: str or ~azure.mgmt.sql.models.RecommendedActionInitiatedBy
10627    :ivar revert_action_initiated_time: Gets the time when this recommended action was approved for
10628     revert.
10629    :vartype revert_action_initiated_time: ~datetime.datetime
10630    :ivar score: Gets the impact of this recommended action. Possible values are 1 - Low impact, 2
10631     - Medium Impact and 3 - High Impact.
10632    :vartype score: int
10633    :ivar implementation_details: Gets the implementation details of this recommended action for
10634     user to apply it manually.
10635    :vartype implementation_details: ~azure.mgmt.sql.models.RecommendedActionImplementationInfo
10636    :ivar error_details: Gets the error details if and why this recommended action is put to error
10637     state.
10638    :vartype error_details: ~azure.mgmt.sql.models.RecommendedActionErrorInfo
10639    :ivar estimated_impact: Gets the estimated impact info for this recommended action e.g.,
10640     Estimated CPU gain, Estimated Disk Space change.
10641    :vartype estimated_impact: list[~azure.mgmt.sql.models.RecommendedActionImpactRecord]
10642    :ivar observed_impact: Gets the observed/actual impact info for this recommended action e.g.,
10643     Actual CPU gain, Actual Disk Space change.
10644    :vartype observed_impact: list[~azure.mgmt.sql.models.RecommendedActionImpactRecord]
10645    :ivar time_series: Gets the time series info of metrics for this recommended action e.g., CPU
10646     consumption time series.
10647    :vartype time_series: list[~azure.mgmt.sql.models.RecommendedActionMetricInfo]
10648    :ivar linked_objects: Gets the linked objects, if any.
10649    :vartype linked_objects: list[str]
10650    :ivar details: Gets additional details specific to this recommended action.
10651    :vartype details: dict[str, any]
10652    """
10653
10654    _validation = {
10655        'id': {'readonly': True},
10656        'name': {'readonly': True},
10657        'type': {'readonly': True},
10658        'kind': {'readonly': True},
10659        'location': {'readonly': True},
10660        'recommendation_reason': {'readonly': True},
10661        'valid_since': {'readonly': True},
10662        'last_refresh': {'readonly': True},
10663        'is_executable_action': {'readonly': True},
10664        'is_revertable_action': {'readonly': True},
10665        'is_archived_action': {'readonly': True},
10666        'execute_action_start_time': {'readonly': True},
10667        'execute_action_duration': {'readonly': True},
10668        'revert_action_start_time': {'readonly': True},
10669        'revert_action_duration': {'readonly': True},
10670        'execute_action_initiated_by': {'readonly': True},
10671        'execute_action_initiated_time': {'readonly': True},
10672        'revert_action_initiated_by': {'readonly': True},
10673        'revert_action_initiated_time': {'readonly': True},
10674        'score': {'readonly': True},
10675        'implementation_details': {'readonly': True},
10676        'error_details': {'readonly': True},
10677        'estimated_impact': {'readonly': True},
10678        'observed_impact': {'readonly': True},
10679        'time_series': {'readonly': True},
10680        'linked_objects': {'readonly': True},
10681        'details': {'readonly': True},
10682    }
10683
10684    _attribute_map = {
10685        'id': {'key': 'id', 'type': 'str'},
10686        'name': {'key': 'name', 'type': 'str'},
10687        'type': {'key': 'type', 'type': 'str'},
10688        'kind': {'key': 'kind', 'type': 'str'},
10689        'location': {'key': 'location', 'type': 'str'},
10690        'recommendation_reason': {'key': 'properties.recommendationReason', 'type': 'str'},
10691        'valid_since': {'key': 'properties.validSince', 'type': 'iso-8601'},
10692        'last_refresh': {'key': 'properties.lastRefresh', 'type': 'iso-8601'},
10693        'state': {'key': 'properties.state', 'type': 'RecommendedActionStateInfo'},
10694        'is_executable_action': {'key': 'properties.isExecutableAction', 'type': 'bool'},
10695        'is_revertable_action': {'key': 'properties.isRevertableAction', 'type': 'bool'},
10696        'is_archived_action': {'key': 'properties.isArchivedAction', 'type': 'bool'},
10697        'execute_action_start_time': {'key': 'properties.executeActionStartTime', 'type': 'iso-8601'},
10698        'execute_action_duration': {'key': 'properties.executeActionDuration', 'type': 'str'},
10699        'revert_action_start_time': {'key': 'properties.revertActionStartTime', 'type': 'iso-8601'},
10700        'revert_action_duration': {'key': 'properties.revertActionDuration', 'type': 'str'},
10701        'execute_action_initiated_by': {'key': 'properties.executeActionInitiatedBy', 'type': 'str'},
10702        'execute_action_initiated_time': {'key': 'properties.executeActionInitiatedTime', 'type': 'iso-8601'},
10703        'revert_action_initiated_by': {'key': 'properties.revertActionInitiatedBy', 'type': 'str'},
10704        'revert_action_initiated_time': {'key': 'properties.revertActionInitiatedTime', 'type': 'iso-8601'},
10705        'score': {'key': 'properties.score', 'type': 'int'},
10706        'implementation_details': {'key': 'properties.implementationDetails', 'type': 'RecommendedActionImplementationInfo'},
10707        'error_details': {'key': 'properties.errorDetails', 'type': 'RecommendedActionErrorInfo'},
10708        'estimated_impact': {'key': 'properties.estimatedImpact', 'type': '[RecommendedActionImpactRecord]'},
10709        'observed_impact': {'key': 'properties.observedImpact', 'type': '[RecommendedActionImpactRecord]'},
10710        'time_series': {'key': 'properties.timeSeries', 'type': '[RecommendedActionMetricInfo]'},
10711        'linked_objects': {'key': 'properties.linkedObjects', 'type': '[str]'},
10712        'details': {'key': 'properties.details', 'type': '{object}'},
10713    }
10714
10715    def __init__(
10716        self,
10717        **kwargs
10718    ):
10719        super(RecommendedAction, self).__init__(**kwargs)
10720        self.kind = None
10721        self.location = None
10722        self.recommendation_reason = None
10723        self.valid_since = None
10724        self.last_refresh = None
10725        self.state = kwargs.get('state', None)
10726        self.is_executable_action = None
10727        self.is_revertable_action = None
10728        self.is_archived_action = None
10729        self.execute_action_start_time = None
10730        self.execute_action_duration = None
10731        self.revert_action_start_time = None
10732        self.revert_action_duration = None
10733        self.execute_action_initiated_by = None
10734        self.execute_action_initiated_time = None
10735        self.revert_action_initiated_by = None
10736        self.revert_action_initiated_time = None
10737        self.score = None
10738        self.implementation_details = None
10739        self.error_details = None
10740        self.estimated_impact = None
10741        self.observed_impact = None
10742        self.time_series = None
10743        self.linked_objects = None
10744        self.details = None
10745
10746
10747class RecommendedActionErrorInfo(msrest.serialization.Model):
10748    """Contains error information for an Azure SQL Database, Server or Elastic Pool Recommended Action.
10749
10750    Variables are only populated by the server, and will be ignored when sending a request.
10751
10752    :ivar error_code: Gets the reason why the recommended action was put to error state. e.g.,
10753     DatabaseHasQdsOff, IndexAlreadyExists.
10754    :vartype error_code: str
10755    :ivar is_retryable: Gets whether the error could be ignored and recommended action could be
10756     retried. Possible values are: Yes/No. Possible values include: "Yes", "No".
10757    :vartype is_retryable: str or ~azure.mgmt.sql.models.IsRetryable
10758    """
10759
10760    _validation = {
10761        'error_code': {'readonly': True},
10762        'is_retryable': {'readonly': True},
10763    }
10764
10765    _attribute_map = {
10766        'error_code': {'key': 'errorCode', 'type': 'str'},
10767        'is_retryable': {'key': 'isRetryable', 'type': 'str'},
10768    }
10769
10770    def __init__(
10771        self,
10772        **kwargs
10773    ):
10774        super(RecommendedActionErrorInfo, self).__init__(**kwargs)
10775        self.error_code = None
10776        self.is_retryable = None
10777
10778
10779class RecommendedActionImpactRecord(msrest.serialization.Model):
10780    """Contains information of estimated or observed impact on various metrics for an Azure SQL Database, Server or Elastic Pool Recommended Action.
10781
10782    Variables are only populated by the server, and will be ignored when sending a request.
10783
10784    :ivar dimension_name: Gets the name of the impact dimension. e.g., CPUChange, DiskSpaceChange,
10785     NumberOfQueriesAffected.
10786    :vartype dimension_name: str
10787    :ivar unit: Gets the name of the impact dimension. e.g., CPUChange, DiskSpaceChange,
10788     NumberOfQueriesAffected.
10789    :vartype unit: str
10790    :ivar absolute_value: Gets the absolute value of this dimension if applicable. e.g., Number of
10791     Queries affected.
10792    :vartype absolute_value: float
10793    :ivar change_value_absolute: Gets the absolute change in the value of this dimension. e.g.,
10794     Absolute Disk space change in Megabytes.
10795    :vartype change_value_absolute: float
10796    :ivar change_value_relative: Gets the relative change in the value of this dimension. e.g.,
10797     Relative Disk space change in Percentage.
10798    :vartype change_value_relative: float
10799    """
10800
10801    _validation = {
10802        'dimension_name': {'readonly': True},
10803        'unit': {'readonly': True},
10804        'absolute_value': {'readonly': True},
10805        'change_value_absolute': {'readonly': True},
10806        'change_value_relative': {'readonly': True},
10807    }
10808
10809    _attribute_map = {
10810        'dimension_name': {'key': 'dimensionName', 'type': 'str'},
10811        'unit': {'key': 'unit', 'type': 'str'},
10812        'absolute_value': {'key': 'absoluteValue', 'type': 'float'},
10813        'change_value_absolute': {'key': 'changeValueAbsolute', 'type': 'float'},
10814        'change_value_relative': {'key': 'changeValueRelative', 'type': 'float'},
10815    }
10816
10817    def __init__(
10818        self,
10819        **kwargs
10820    ):
10821        super(RecommendedActionImpactRecord, self).__init__(**kwargs)
10822        self.dimension_name = None
10823        self.unit = None
10824        self.absolute_value = None
10825        self.change_value_absolute = None
10826        self.change_value_relative = None
10827
10828
10829class RecommendedActionImplementationInfo(msrest.serialization.Model):
10830    """Contains information for manual implementation for an Azure SQL Database, Server or Elastic Pool Recommended Action.
10831
10832    Variables are only populated by the server, and will be ignored when sending a request.
10833
10834    :ivar method: Gets the method in which this recommended action can be manually implemented.
10835     e.g., TSql, AzurePowerShell. Possible values include: "TSql", "AzurePowerShell".
10836    :vartype method: str or ~azure.mgmt.sql.models.ImplementationMethod
10837    :ivar script: Gets the manual implementation script. e.g., T-SQL script that could be executed
10838     on the database.
10839    :vartype script: str
10840    """
10841
10842    _validation = {
10843        'method': {'readonly': True},
10844        'script': {'readonly': True},
10845    }
10846
10847    _attribute_map = {
10848        'method': {'key': 'method', 'type': 'str'},
10849        'script': {'key': 'script', 'type': 'str'},
10850    }
10851
10852    def __init__(
10853        self,
10854        **kwargs
10855    ):
10856        super(RecommendedActionImplementationInfo, self).__init__(**kwargs)
10857        self.method = None
10858        self.script = None
10859
10860
10861class RecommendedActionMetricInfo(msrest.serialization.Model):
10862    """Contains time series of various impacted metrics for an Azure SQL Database, Server or Elastic Pool Recommended Action.
10863
10864    Variables are only populated by the server, and will be ignored when sending a request.
10865
10866    :ivar metric_name: Gets the name of the metric. e.g., CPU, Number of Queries.
10867    :vartype metric_name: str
10868    :ivar unit: Gets the unit in which metric is measured. e.g., DTU, Frequency.
10869    :vartype unit: str
10870    :ivar time_grain: Gets the duration of time interval for the value given by this MetricInfo.
10871     e.g., PT1H (1 hour).
10872    :vartype time_grain: str
10873    :ivar start_time: Gets the start time of time interval given by this MetricInfo.
10874    :vartype start_time: ~datetime.datetime
10875    :ivar value: Gets the value of the metric in the time interval given by this MetricInfo.
10876    :vartype value: float
10877    """
10878
10879    _validation = {
10880        'metric_name': {'readonly': True},
10881        'unit': {'readonly': True},
10882        'time_grain': {'readonly': True},
10883        'start_time': {'readonly': True},
10884        'value': {'readonly': True},
10885    }
10886
10887    _attribute_map = {
10888        'metric_name': {'key': 'metricName', 'type': 'str'},
10889        'unit': {'key': 'unit', 'type': 'str'},
10890        'time_grain': {'key': 'timeGrain', 'type': 'str'},
10891        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
10892        'value': {'key': 'value', 'type': 'float'},
10893    }
10894
10895    def __init__(
10896        self,
10897        **kwargs
10898    ):
10899        super(RecommendedActionMetricInfo, self).__init__(**kwargs)
10900        self.metric_name = None
10901        self.unit = None
10902        self.time_grain = None
10903        self.start_time = None
10904        self.value = None
10905
10906
10907class RecommendedActionStateInfo(msrest.serialization.Model):
10908    """Contains information of current state for an Azure SQL Database, Server or Elastic Pool Recommended Action.
10909
10910    Variables are only populated by the server, and will be ignored when sending a request.
10911
10912    All required parameters must be populated in order to send to Azure.
10913
10914    :param current_value: Required. Current state the recommended action is in. Some commonly used
10915     states are: Active      -> recommended action is active and no action has been taken yet.
10916     Pending     -> recommended action is approved for and is awaiting execution. Executing   ->
10917     recommended action is being applied on the user database. Verifying   -> recommended action was
10918     applied and is being verified of its usefulness by the system. Success     -> recommended
10919     action was applied and improvement found during verification. Pending Revert  -> verification
10920     found little or no improvement so recommended action is queued for revert or user has manually
10921     reverted. Reverting   -> changes made while applying recommended action are being reverted on
10922     the user database. Reverted    -> successfully reverted the changes made by recommended action
10923     on user database. Ignored     -> user explicitly ignored/discarded the recommended action.
10924     Possible values include: "Active", "Pending", "Executing", "Verifying", "PendingRevert",
10925     "RevertCancelled", "Reverting", "Reverted", "Ignored", "Expired", "Monitoring", "Resolved",
10926     "Success", "Error".
10927    :type current_value: str or ~azure.mgmt.sql.models.RecommendedActionCurrentState
10928    :ivar action_initiated_by: Gets who initiated the execution of this recommended action.
10929     Possible Value are: User    -> When user explicity notified system to apply the recommended
10930     action. System  -> When auto-execute status of this advisor was set to 'Enabled', in which case
10931     the system applied it. Possible values include: "User", "System".
10932    :vartype action_initiated_by: str or ~azure.mgmt.sql.models.RecommendedActionInitiatedBy
10933    :ivar last_modified: Gets the time when the state was last modified.
10934    :vartype last_modified: ~datetime.datetime
10935    """
10936
10937    _validation = {
10938        'current_value': {'required': True},
10939        'action_initiated_by': {'readonly': True},
10940        'last_modified': {'readonly': True},
10941    }
10942
10943    _attribute_map = {
10944        'current_value': {'key': 'currentValue', 'type': 'str'},
10945        'action_initiated_by': {'key': 'actionInitiatedBy', 'type': 'str'},
10946        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
10947    }
10948
10949    def __init__(
10950        self,
10951        **kwargs
10952    ):
10953        super(RecommendedActionStateInfo, self).__init__(**kwargs)
10954        self.current_value = kwargs['current_value']
10955        self.action_initiated_by = None
10956        self.last_modified = None
10957
10958
10959class RecommendedSensitivityLabelUpdate(ProxyResource):
10960    """A recommended sensitivity label update operation.
10961
10962    Variables are only populated by the server, and will be ignored when sending a request.
10963
10964    :ivar id: Resource ID.
10965    :vartype id: str
10966    :ivar name: Resource name.
10967    :vartype name: str
10968    :ivar type: Resource type.
10969    :vartype type: str
10970    :param op:  Possible values include: "enable", "disable".
10971    :type op: str or ~azure.mgmt.sql.models.RecommendedSensitivityLabelUpdateKind
10972    :param schema: Schema name of the column to update.
10973    :type schema: str
10974    :param table: Table name of the column to update.
10975    :type table: str
10976    :param column: Column name to update.
10977    :type column: str
10978    """
10979
10980    _validation = {
10981        'id': {'readonly': True},
10982        'name': {'readonly': True},
10983        'type': {'readonly': True},
10984    }
10985
10986    _attribute_map = {
10987        'id': {'key': 'id', 'type': 'str'},
10988        'name': {'key': 'name', 'type': 'str'},
10989        'type': {'key': 'type', 'type': 'str'},
10990        'op': {'key': 'properties.op', 'type': 'str'},
10991        'schema': {'key': 'properties.schema', 'type': 'str'},
10992        'table': {'key': 'properties.table', 'type': 'str'},
10993        'column': {'key': 'properties.column', 'type': 'str'},
10994    }
10995
10996    def __init__(
10997        self,
10998        **kwargs
10999    ):
11000        super(RecommendedSensitivityLabelUpdate, self).__init__(**kwargs)
11001        self.op = kwargs.get('op', None)
11002        self.schema = kwargs.get('schema', None)
11003        self.table = kwargs.get('table', None)
11004        self.column = kwargs.get('column', None)
11005
11006
11007class RecommendedSensitivityLabelUpdateList(msrest.serialization.Model):
11008    """A list of recommended sensitivity label update operations.
11009
11010    :param operations:
11011    :type operations: list[~azure.mgmt.sql.models.RecommendedSensitivityLabelUpdate]
11012    """
11013
11014    _attribute_map = {
11015        'operations': {'key': 'operations', 'type': '[RecommendedSensitivityLabelUpdate]'},
11016    }
11017
11018    def __init__(
11019        self,
11020        **kwargs
11021    ):
11022        super(RecommendedSensitivityLabelUpdateList, self).__init__(**kwargs)
11023        self.operations = kwargs.get('operations', None)
11024
11025
11026class RecoverableDatabase(ProxyResource):
11027    """A recoverable database.
11028
11029    Variables are only populated by the server, and will be ignored when sending a request.
11030
11031    :ivar id: Resource ID.
11032    :vartype id: str
11033    :ivar name: Resource name.
11034    :vartype name: str
11035    :ivar type: Resource type.
11036    :vartype type: str
11037    :ivar edition: The edition of the database.
11038    :vartype edition: str
11039    :ivar service_level_objective: The service level objective name of the database.
11040    :vartype service_level_objective: str
11041    :ivar elastic_pool_name: The elastic pool name of the database.
11042    :vartype elastic_pool_name: str
11043    :ivar last_available_backup_date: The last available backup date of the database (ISO8601
11044     format).
11045    :vartype last_available_backup_date: ~datetime.datetime
11046    """
11047
11048    _validation = {
11049        'id': {'readonly': True},
11050        'name': {'readonly': True},
11051        'type': {'readonly': True},
11052        'edition': {'readonly': True},
11053        'service_level_objective': {'readonly': True},
11054        'elastic_pool_name': {'readonly': True},
11055        'last_available_backup_date': {'readonly': True},
11056    }
11057
11058    _attribute_map = {
11059        'id': {'key': 'id', 'type': 'str'},
11060        'name': {'key': 'name', 'type': 'str'},
11061        'type': {'key': 'type', 'type': 'str'},
11062        'edition': {'key': 'properties.edition', 'type': 'str'},
11063        'service_level_objective': {'key': 'properties.serviceLevelObjective', 'type': 'str'},
11064        'elastic_pool_name': {'key': 'properties.elasticPoolName', 'type': 'str'},
11065        'last_available_backup_date': {'key': 'properties.lastAvailableBackupDate', 'type': 'iso-8601'},
11066    }
11067
11068    def __init__(
11069        self,
11070        **kwargs
11071    ):
11072        super(RecoverableDatabase, self).__init__(**kwargs)
11073        self.edition = None
11074        self.service_level_objective = None
11075        self.elastic_pool_name = None
11076        self.last_available_backup_date = None
11077
11078
11079class RecoverableDatabaseListResult(msrest.serialization.Model):
11080    """The response to a list recoverable databases request.
11081
11082    All required parameters must be populated in order to send to Azure.
11083
11084    :param value: Required. A list of recoverable databases.
11085    :type value: list[~azure.mgmt.sql.models.RecoverableDatabase]
11086    """
11087
11088    _validation = {
11089        'value': {'required': True},
11090    }
11091
11092    _attribute_map = {
11093        'value': {'key': 'value', 'type': '[RecoverableDatabase]'},
11094    }
11095
11096    def __init__(
11097        self,
11098        **kwargs
11099    ):
11100        super(RecoverableDatabaseListResult, self).__init__(**kwargs)
11101        self.value = kwargs['value']
11102
11103
11104class RecoverableManagedDatabase(ProxyResource):
11105    """A recoverable managed database resource.
11106
11107    Variables are only populated by the server, and will be ignored when sending a request.
11108
11109    :ivar id: Resource ID.
11110    :vartype id: str
11111    :ivar name: Resource name.
11112    :vartype name: str
11113    :ivar type: Resource type.
11114    :vartype type: str
11115    :ivar last_available_backup_date: The last available backup date.
11116    :vartype last_available_backup_date: str
11117    """
11118
11119    _validation = {
11120        'id': {'readonly': True},
11121        'name': {'readonly': True},
11122        'type': {'readonly': True},
11123        'last_available_backup_date': {'readonly': True},
11124    }
11125
11126    _attribute_map = {
11127        'id': {'key': 'id', 'type': 'str'},
11128        'name': {'key': 'name', 'type': 'str'},
11129        'type': {'key': 'type', 'type': 'str'},
11130        'last_available_backup_date': {'key': 'properties.lastAvailableBackupDate', 'type': 'str'},
11131    }
11132
11133    def __init__(
11134        self,
11135        **kwargs
11136    ):
11137        super(RecoverableManagedDatabase, self).__init__(**kwargs)
11138        self.last_available_backup_date = None
11139
11140
11141class RecoverableManagedDatabaseListResult(msrest.serialization.Model):
11142    """A list of recoverable managed databases.
11143
11144    Variables are only populated by the server, and will be ignored when sending a request.
11145
11146    :ivar value: Array of results.
11147    :vartype value: list[~azure.mgmt.sql.models.RecoverableManagedDatabase]
11148    :ivar next_link: Link to retrieve next page of results.
11149    :vartype next_link: str
11150    """
11151
11152    _validation = {
11153        'value': {'readonly': True},
11154        'next_link': {'readonly': True},
11155    }
11156
11157    _attribute_map = {
11158        'value': {'key': 'value', 'type': '[RecoverableManagedDatabase]'},
11159        'next_link': {'key': 'nextLink', 'type': 'str'},
11160    }
11161
11162    def __init__(
11163        self,
11164        **kwargs
11165    ):
11166        super(RecoverableManagedDatabaseListResult, self).__init__(**kwargs)
11167        self.value = None
11168        self.next_link = None
11169
11170
11171class ReplicationLink(ProxyResource):
11172    """A replication link.
11173
11174    Variables are only populated by the server, and will be ignored when sending a request.
11175
11176    :ivar id: Resource ID.
11177    :vartype id: str
11178    :ivar name: Resource name.
11179    :vartype name: str
11180    :ivar type: Resource type.
11181    :vartype type: str
11182    :ivar partner_server: Resource partner server.
11183    :vartype partner_server: str
11184    :ivar partner_database: Resource partner database.
11185    :vartype partner_database: str
11186    :ivar partner_location: Resource partner location.
11187    :vartype partner_location: str
11188    :ivar role: Local replication role. Possible values include: "Primary", "Secondary",
11189     "NonReadableSecondary", "Source", "Copy".
11190    :vartype role: str or ~azure.mgmt.sql.models.ReplicationRole
11191    :ivar partner_role: Partner replication role. Possible values include: "Primary", "Secondary",
11192     "NonReadableSecondary", "Source", "Copy".
11193    :vartype partner_role: str or ~azure.mgmt.sql.models.ReplicationRole
11194    :ivar replication_mode: Replication mode.
11195    :vartype replication_mode: str
11196    :ivar start_time: Time at which the link was created.
11197    :vartype start_time: ~datetime.datetime
11198    :ivar percent_complete: Seeding completion percentage for the link.
11199    :vartype percent_complete: int
11200    :ivar replication_state: Replication state (PENDING, SEEDING, CATCHUP, SUSPENDED). Possible
11201     values include: "PENDING", "SEEDING", "CATCH_UP", "SUSPENDED".
11202    :vartype replication_state: str or ~azure.mgmt.sql.models.ReplicationState
11203    :ivar is_termination_allowed: Whether the user is currently allowed to terminate the link.
11204    :vartype is_termination_allowed: bool
11205    :ivar link_type: Link type (GEO, NAMED). Possible values include: "GEO", "NAMED".
11206    :vartype link_type: str or ~azure.mgmt.sql.models.ReplicationLinkType
11207    """
11208
11209    _validation = {
11210        'id': {'readonly': True},
11211        'name': {'readonly': True},
11212        'type': {'readonly': True},
11213        'partner_server': {'readonly': True},
11214        'partner_database': {'readonly': True},
11215        'partner_location': {'readonly': True},
11216        'role': {'readonly': True},
11217        'partner_role': {'readonly': True},
11218        'replication_mode': {'readonly': True},
11219        'start_time': {'readonly': True},
11220        'percent_complete': {'readonly': True},
11221        'replication_state': {'readonly': True},
11222        'is_termination_allowed': {'readonly': True},
11223        'link_type': {'readonly': True},
11224    }
11225
11226    _attribute_map = {
11227        'id': {'key': 'id', 'type': 'str'},
11228        'name': {'key': 'name', 'type': 'str'},
11229        'type': {'key': 'type', 'type': 'str'},
11230        'partner_server': {'key': 'properties.partnerServer', 'type': 'str'},
11231        'partner_database': {'key': 'properties.partnerDatabase', 'type': 'str'},
11232        'partner_location': {'key': 'properties.partnerLocation', 'type': 'str'},
11233        'role': {'key': 'properties.role', 'type': 'str'},
11234        'partner_role': {'key': 'properties.partnerRole', 'type': 'str'},
11235        'replication_mode': {'key': 'properties.replicationMode', 'type': 'str'},
11236        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
11237        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
11238        'replication_state': {'key': 'properties.replicationState', 'type': 'str'},
11239        'is_termination_allowed': {'key': 'properties.isTerminationAllowed', 'type': 'bool'},
11240        'link_type': {'key': 'properties.linkType', 'type': 'str'},
11241    }
11242
11243    def __init__(
11244        self,
11245        **kwargs
11246    ):
11247        super(ReplicationLink, self).__init__(**kwargs)
11248        self.partner_server = None
11249        self.partner_database = None
11250        self.partner_location = None
11251        self.role = None
11252        self.partner_role = None
11253        self.replication_mode = None
11254        self.start_time = None
11255        self.percent_complete = None
11256        self.replication_state = None
11257        self.is_termination_allowed = None
11258        self.link_type = None
11259
11260
11261class ReplicationLinkListResult(msrest.serialization.Model):
11262    """A list of replication links.
11263
11264    Variables are only populated by the server, and will be ignored when sending a request.
11265
11266    :ivar value: Array of results.
11267    :vartype value: list[~azure.mgmt.sql.models.ReplicationLink]
11268    :ivar next_link: Link to retrieve next page of results.
11269    :vartype next_link: str
11270    """
11271
11272    _validation = {
11273        'value': {'readonly': True},
11274        'next_link': {'readonly': True},
11275    }
11276
11277    _attribute_map = {
11278        'value': {'key': 'value', 'type': '[ReplicationLink]'},
11279        'next_link': {'key': 'nextLink', 'type': 'str'},
11280    }
11281
11282    def __init__(
11283        self,
11284        **kwargs
11285    ):
11286        super(ReplicationLinkListResult, self).__init__(**kwargs)
11287        self.value = None
11288        self.next_link = None
11289
11290
11291class ResourceIdentity(msrest.serialization.Model):
11292    """Azure Active Directory identity configuration for a resource.
11293
11294    Variables are only populated by the server, and will be ignored when sending a request.
11295
11296    :param user_assigned_identities: The resource ids of the user assigned identities to use.
11297    :type user_assigned_identities: dict[str, ~azure.mgmt.sql.models.UserIdentity]
11298    :ivar principal_id: The Azure Active Directory principal id.
11299    :vartype principal_id: str
11300    :param type: The identity type. Set this to 'SystemAssigned' in order to automatically create
11301     and assign an Azure Active Directory principal for the resource. Possible values include:
11302     "None", "SystemAssigned", "UserAssigned", "SystemAssigned,UserAssigned".
11303    :type type: str or ~azure.mgmt.sql.models.IdentityType
11304    :ivar tenant_id: The Azure Active Directory tenant id.
11305    :vartype tenant_id: str
11306    """
11307
11308    _validation = {
11309        'principal_id': {'readonly': True},
11310        'tenant_id': {'readonly': True},
11311    }
11312
11313    _attribute_map = {
11314        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserIdentity}'},
11315        'principal_id': {'key': 'principalId', 'type': 'str'},
11316        'type': {'key': 'type', 'type': 'str'},
11317        'tenant_id': {'key': 'tenantId', 'type': 'str'},
11318    }
11319
11320    def __init__(
11321        self,
11322        **kwargs
11323    ):
11324        super(ResourceIdentity, self).__init__(**kwargs)
11325        self.user_assigned_identities = kwargs.get('user_assigned_identities', None)
11326        self.principal_id = None
11327        self.type = kwargs.get('type', None)
11328        self.tenant_id = None
11329
11330
11331class ResourceMoveDefinition(msrest.serialization.Model):
11332    """Contains the information necessary to perform a resource move (rename).
11333
11334    All required parameters must be populated in order to send to Azure.
11335
11336    :param id: Required. The target ID for the resource.
11337    :type id: str
11338    """
11339
11340    _validation = {
11341        'id': {'required': True},
11342    }
11343
11344    _attribute_map = {
11345        'id': {'key': 'id', 'type': 'str'},
11346    }
11347
11348    def __init__(
11349        self,
11350        **kwargs
11351    ):
11352        super(ResourceMoveDefinition, self).__init__(**kwargs)
11353        self.id = kwargs['id']
11354
11355
11356class RestorableDroppedDatabase(ProxyResource):
11357    """A restorable dropped database resource.
11358
11359    Variables are only populated by the server, and will be ignored when sending a request.
11360
11361    :ivar id: Resource ID.
11362    :vartype id: str
11363    :ivar name: Resource name.
11364    :vartype name: str
11365    :ivar type: Resource type.
11366    :vartype type: str
11367    :param sku: The name and tier of the SKU.
11368    :type sku: ~azure.mgmt.sql.models.Sku
11369    :param location: Resource location.
11370    :type location: str
11371    :param tags: A set of tags. Resource tags.
11372    :type tags: dict[str, str]
11373    :ivar database_name: The name of the database.
11374    :vartype database_name: str
11375    :ivar max_size_bytes: The max size of the database expressed in bytes.
11376    :vartype max_size_bytes: long
11377    :ivar elastic_pool_id: DEPRECATED: The resource name of the elastic pool containing this
11378     database. This property is deprecated and the value will always be null.
11379    :vartype elastic_pool_id: str
11380    :ivar creation_date: The creation date of the database (ISO8601 format).
11381    :vartype creation_date: ~datetime.datetime
11382    :ivar deletion_date: The deletion date of the database (ISO8601 format).
11383    :vartype deletion_date: ~datetime.datetime
11384    :ivar earliest_restore_date: The earliest restore date of the database (ISO8601 format).
11385    :vartype earliest_restore_date: ~datetime.datetime
11386    :ivar backup_storage_redundancy: The storage account type used to store backups for this
11387     database. Possible values include: "Geo", "Local", "Zone".
11388    :vartype backup_storage_redundancy: str or
11389     ~azure.mgmt.sql.models.RestorableDroppedDatabasePropertiesBackupStorageRedundancy
11390    """
11391
11392    _validation = {
11393        'id': {'readonly': True},
11394        'name': {'readonly': True},
11395        'type': {'readonly': True},
11396        'database_name': {'readonly': True},
11397        'max_size_bytes': {'readonly': True},
11398        'elastic_pool_id': {'readonly': True},
11399        'creation_date': {'readonly': True},
11400        'deletion_date': {'readonly': True},
11401        'earliest_restore_date': {'readonly': True},
11402        'backup_storage_redundancy': {'readonly': True},
11403    }
11404
11405    _attribute_map = {
11406        'id': {'key': 'id', 'type': 'str'},
11407        'name': {'key': 'name', 'type': 'str'},
11408        'type': {'key': 'type', 'type': 'str'},
11409        'sku': {'key': 'sku', 'type': 'Sku'},
11410        'location': {'key': 'location', 'type': 'str'},
11411        'tags': {'key': 'tags', 'type': '{str}'},
11412        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
11413        'max_size_bytes': {'key': 'properties.maxSizeBytes', 'type': 'long'},
11414        'elastic_pool_id': {'key': 'properties.elasticPoolId', 'type': 'str'},
11415        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
11416        'deletion_date': {'key': 'properties.deletionDate', 'type': 'iso-8601'},
11417        'earliest_restore_date': {'key': 'properties.earliestRestoreDate', 'type': 'iso-8601'},
11418        'backup_storage_redundancy': {'key': 'properties.backupStorageRedundancy', 'type': 'str'},
11419    }
11420
11421    def __init__(
11422        self,
11423        **kwargs
11424    ):
11425        super(RestorableDroppedDatabase, self).__init__(**kwargs)
11426        self.sku = kwargs.get('sku', None)
11427        self.location = kwargs.get('location', None)
11428        self.tags = kwargs.get('tags', None)
11429        self.database_name = None
11430        self.max_size_bytes = None
11431        self.elastic_pool_id = None
11432        self.creation_date = None
11433        self.deletion_date = None
11434        self.earliest_restore_date = None
11435        self.backup_storage_redundancy = None
11436
11437
11438class RestorableDroppedDatabaseListResult(msrest.serialization.Model):
11439    """A list of restorable dropped databases.
11440
11441    Variables are only populated by the server, and will be ignored when sending a request.
11442
11443    :ivar value: Array of results.
11444    :vartype value: list[~azure.mgmt.sql.models.RestorableDroppedDatabase]
11445    :ivar next_link: Link to retrieve next page of results.
11446    :vartype next_link: str
11447    """
11448
11449    _validation = {
11450        'value': {'readonly': True},
11451        'next_link': {'readonly': True},
11452    }
11453
11454    _attribute_map = {
11455        'value': {'key': 'value', 'type': '[RestorableDroppedDatabase]'},
11456        'next_link': {'key': 'nextLink', 'type': 'str'},
11457    }
11458
11459    def __init__(
11460        self,
11461        **kwargs
11462    ):
11463        super(RestorableDroppedDatabaseListResult, self).__init__(**kwargs)
11464        self.value = None
11465        self.next_link = None
11466
11467
11468class RestorableDroppedManagedDatabase(TrackedResource):
11469    """A restorable dropped managed database resource.
11470
11471    Variables are only populated by the server, and will be ignored when sending a request.
11472
11473    All required parameters must be populated in order to send to Azure.
11474
11475    :ivar id: Resource ID.
11476    :vartype id: str
11477    :ivar name: Resource name.
11478    :vartype name: str
11479    :ivar type: Resource type.
11480    :vartype type: str
11481    :param location: Required. Resource location.
11482    :type location: str
11483    :param tags: A set of tags. Resource tags.
11484    :type tags: dict[str, str]
11485    :ivar database_name: The name of the database.
11486    :vartype database_name: str
11487    :ivar creation_date: The creation date of the database (ISO8601 format).
11488    :vartype creation_date: ~datetime.datetime
11489    :ivar deletion_date: The deletion date of the database (ISO8601 format).
11490    :vartype deletion_date: ~datetime.datetime
11491    :ivar earliest_restore_date: The earliest restore date of the database (ISO8601 format).
11492    :vartype earliest_restore_date: ~datetime.datetime
11493    """
11494
11495    _validation = {
11496        'id': {'readonly': True},
11497        'name': {'readonly': True},
11498        'type': {'readonly': True},
11499        'location': {'required': True},
11500        'database_name': {'readonly': True},
11501        'creation_date': {'readonly': True},
11502        'deletion_date': {'readonly': True},
11503        'earliest_restore_date': {'readonly': True},
11504    }
11505
11506    _attribute_map = {
11507        'id': {'key': 'id', 'type': 'str'},
11508        'name': {'key': 'name', 'type': 'str'},
11509        'type': {'key': 'type', 'type': 'str'},
11510        'location': {'key': 'location', 'type': 'str'},
11511        'tags': {'key': 'tags', 'type': '{str}'},
11512        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
11513        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
11514        'deletion_date': {'key': 'properties.deletionDate', 'type': 'iso-8601'},
11515        'earliest_restore_date': {'key': 'properties.earliestRestoreDate', 'type': 'iso-8601'},
11516    }
11517
11518    def __init__(
11519        self,
11520        **kwargs
11521    ):
11522        super(RestorableDroppedManagedDatabase, self).__init__(**kwargs)
11523        self.database_name = None
11524        self.creation_date = None
11525        self.deletion_date = None
11526        self.earliest_restore_date = None
11527
11528
11529class RestorableDroppedManagedDatabaseListResult(msrest.serialization.Model):
11530    """A list of restorable dropped managed databases.
11531
11532    Variables are only populated by the server, and will be ignored when sending a request.
11533
11534    :ivar value: Array of results.
11535    :vartype value: list[~azure.mgmt.sql.models.RestorableDroppedManagedDatabase]
11536    :ivar next_link: Link to retrieve next page of results.
11537    :vartype next_link: str
11538    """
11539
11540    _validation = {
11541        'value': {'readonly': True},
11542        'next_link': {'readonly': True},
11543    }
11544
11545    _attribute_map = {
11546        'value': {'key': 'value', 'type': '[RestorableDroppedManagedDatabase]'},
11547        'next_link': {'key': 'nextLink', 'type': 'str'},
11548    }
11549
11550    def __init__(
11551        self,
11552        **kwargs
11553    ):
11554        super(RestorableDroppedManagedDatabaseListResult, self).__init__(**kwargs)
11555        self.value = None
11556        self.next_link = None
11557
11558
11559class RestorePoint(ProxyResource):
11560    """Database restore points.
11561
11562    Variables are only populated by the server, and will be ignored when sending a request.
11563
11564    :ivar id: Resource ID.
11565    :vartype id: str
11566    :ivar name: Resource name.
11567    :vartype name: str
11568    :ivar type: Resource type.
11569    :vartype type: str
11570    :ivar location: Resource location.
11571    :vartype location: str
11572    :ivar restore_point_type: The type of restore point. Possible values include: "CONTINUOUS",
11573     "DISCRETE".
11574    :vartype restore_point_type: str or ~azure.mgmt.sql.models.RestorePointType
11575    :ivar earliest_restore_date: The earliest time to which this database can be restored.
11576    :vartype earliest_restore_date: ~datetime.datetime
11577    :ivar restore_point_creation_date: The time the backup was taken.
11578    :vartype restore_point_creation_date: ~datetime.datetime
11579    :ivar restore_point_label: The label of restore point for backup request by user.
11580    :vartype restore_point_label: str
11581    """
11582
11583    _validation = {
11584        'id': {'readonly': True},
11585        'name': {'readonly': True},
11586        'type': {'readonly': True},
11587        'location': {'readonly': True},
11588        'restore_point_type': {'readonly': True},
11589        'earliest_restore_date': {'readonly': True},
11590        'restore_point_creation_date': {'readonly': True},
11591        'restore_point_label': {'readonly': True},
11592    }
11593
11594    _attribute_map = {
11595        'id': {'key': 'id', 'type': 'str'},
11596        'name': {'key': 'name', 'type': 'str'},
11597        'type': {'key': 'type', 'type': 'str'},
11598        'location': {'key': 'location', 'type': 'str'},
11599        'restore_point_type': {'key': 'properties.restorePointType', 'type': 'str'},
11600        'earliest_restore_date': {'key': 'properties.earliestRestoreDate', 'type': 'iso-8601'},
11601        'restore_point_creation_date': {'key': 'properties.restorePointCreationDate', 'type': 'iso-8601'},
11602        'restore_point_label': {'key': 'properties.restorePointLabel', 'type': 'str'},
11603    }
11604
11605    def __init__(
11606        self,
11607        **kwargs
11608    ):
11609        super(RestorePoint, self).__init__(**kwargs)
11610        self.location = None
11611        self.restore_point_type = None
11612        self.earliest_restore_date = None
11613        self.restore_point_creation_date = None
11614        self.restore_point_label = None
11615
11616
11617class RestorePointListResult(msrest.serialization.Model):
11618    """A list of long term retention backups.
11619
11620    Variables are only populated by the server, and will be ignored when sending a request.
11621
11622    :ivar value: Array of results.
11623    :vartype value: list[~azure.mgmt.sql.models.RestorePoint]
11624    :ivar next_link: Link to retrieve next page of results.
11625    :vartype next_link: str
11626    """
11627
11628    _validation = {
11629        'value': {'readonly': True},
11630        'next_link': {'readonly': True},
11631    }
11632
11633    _attribute_map = {
11634        'value': {'key': 'value', 'type': '[RestorePoint]'},
11635        'next_link': {'key': 'nextLink', 'type': 'str'},
11636    }
11637
11638    def __init__(
11639        self,
11640        **kwargs
11641    ):
11642        super(RestorePointListResult, self).__init__(**kwargs)
11643        self.value = None
11644        self.next_link = None
11645
11646
11647class SecurityEvent(ProxyResource):
11648    """A security event.
11649
11650    Variables are only populated by the server, and will be ignored when sending a request.
11651
11652    :ivar id: Resource ID.
11653    :vartype id: str
11654    :ivar name: Resource name.
11655    :vartype name: str
11656    :ivar type: Resource type.
11657    :vartype type: str
11658    :ivar event_time: The time when the security event occurred.
11659    :vartype event_time: ~datetime.datetime
11660    :ivar security_event_type: The type of the security event. Possible values include:
11661     "Undefined", "SqlInjectionVulnerability", "SqlInjectionExploit".
11662    :vartype security_event_type: str or ~azure.mgmt.sql.models.SecurityEventType
11663    :ivar subscription: The subscription name.
11664    :vartype subscription: str
11665    :ivar server: The server name.
11666    :vartype server: str
11667    :ivar database: The database name.
11668    :vartype database: str
11669    :ivar client_ip: The IP address of the client who executed the statement.
11670    :vartype client_ip: str
11671    :ivar application_name: The application used to execute the statement.
11672    :vartype application_name: str
11673    :ivar principal_name: The principal user who executed the statement.
11674    :vartype principal_name: str
11675    :ivar security_event_sql_injection_additional_properties: The sql injection additional
11676     properties, populated only if the type of the security event is sql injection.
11677    :vartype security_event_sql_injection_additional_properties:
11678     ~azure.mgmt.sql.models.SecurityEventSqlInjectionAdditionalProperties
11679    """
11680
11681    _validation = {
11682        'id': {'readonly': True},
11683        'name': {'readonly': True},
11684        'type': {'readonly': True},
11685        'event_time': {'readonly': True},
11686        'security_event_type': {'readonly': True},
11687        'subscription': {'readonly': True},
11688        'server': {'readonly': True},
11689        'database': {'readonly': True},
11690        'client_ip': {'readonly': True},
11691        'application_name': {'readonly': True},
11692        'principal_name': {'readonly': True},
11693        'security_event_sql_injection_additional_properties': {'readonly': True},
11694    }
11695
11696    _attribute_map = {
11697        'id': {'key': 'id', 'type': 'str'},
11698        'name': {'key': 'name', 'type': 'str'},
11699        'type': {'key': 'type', 'type': 'str'},
11700        'event_time': {'key': 'properties.eventTime', 'type': 'iso-8601'},
11701        'security_event_type': {'key': 'properties.securityEventType', 'type': 'str'},
11702        'subscription': {'key': 'properties.subscription', 'type': 'str'},
11703        'server': {'key': 'properties.server', 'type': 'str'},
11704        'database': {'key': 'properties.database', 'type': 'str'},
11705        'client_ip': {'key': 'properties.clientIp', 'type': 'str'},
11706        'application_name': {'key': 'properties.applicationName', 'type': 'str'},
11707        'principal_name': {'key': 'properties.principalName', 'type': 'str'},
11708        'security_event_sql_injection_additional_properties': {'key': 'properties.securityEventSqlInjectionAdditionalProperties', 'type': 'SecurityEventSqlInjectionAdditionalProperties'},
11709    }
11710
11711    def __init__(
11712        self,
11713        **kwargs
11714    ):
11715        super(SecurityEvent, self).__init__(**kwargs)
11716        self.event_time = None
11717        self.security_event_type = None
11718        self.subscription = None
11719        self.server = None
11720        self.database = None
11721        self.client_ip = None
11722        self.application_name = None
11723        self.principal_name = None
11724        self.security_event_sql_injection_additional_properties = None
11725
11726
11727class SecurityEventCollection(msrest.serialization.Model):
11728    """A list of security events.
11729
11730    Variables are only populated by the server, and will be ignored when sending a request.
11731
11732    :ivar value: Array of results.
11733    :vartype value: list[~azure.mgmt.sql.models.SecurityEvent]
11734    :ivar next_link: Link to retrieve next page of results.
11735    :vartype next_link: str
11736    """
11737
11738    _validation = {
11739        'value': {'readonly': True},
11740        'next_link': {'readonly': True},
11741    }
11742
11743    _attribute_map = {
11744        'value': {'key': 'value', 'type': '[SecurityEvent]'},
11745        'next_link': {'key': 'nextLink', 'type': 'str'},
11746    }
11747
11748    def __init__(
11749        self,
11750        **kwargs
11751    ):
11752        super(SecurityEventCollection, self).__init__(**kwargs)
11753        self.value = None
11754        self.next_link = None
11755
11756
11757class SecurityEventsFilterParameters(msrest.serialization.Model):
11758    """The properties that are supported in the $filter operation.
11759
11760    :param event_time: Filter on the event time.
11761    :type event_time: ~datetime.datetime
11762    :param show_server_records: Whether to show server records or not.
11763    :type show_server_records: bool
11764    """
11765
11766    _attribute_map = {
11767        'event_time': {'key': 'eventTime', 'type': 'iso-8601'},
11768        'show_server_records': {'key': 'showServerRecords', 'type': 'bool'},
11769    }
11770
11771    def __init__(
11772        self,
11773        **kwargs
11774    ):
11775        super(SecurityEventsFilterParameters, self).__init__(**kwargs)
11776        self.event_time = kwargs.get('event_time', None)
11777        self.show_server_records = kwargs.get('show_server_records', None)
11778
11779
11780class SecurityEventSqlInjectionAdditionalProperties(msrest.serialization.Model):
11781    """The properties of a security event sql injection additional properties.
11782
11783    Variables are only populated by the server, and will be ignored when sending a request.
11784
11785    :ivar threat_id: The threat ID.
11786    :vartype threat_id: str
11787    :ivar statement: The statement.
11788    :vartype statement: str
11789    :ivar statement_highlight_offset: The statement highlight offset.
11790    :vartype statement_highlight_offset: int
11791    :ivar statement_highlight_length: The statement highlight length.
11792    :vartype statement_highlight_length: int
11793    :ivar error_code: The sql error code.
11794    :vartype error_code: int
11795    :ivar error_severity: The sql error severity.
11796    :vartype error_severity: int
11797    :ivar error_message: The sql error message.
11798    :vartype error_message: str
11799    """
11800
11801    _validation = {
11802        'threat_id': {'readonly': True},
11803        'statement': {'readonly': True},
11804        'statement_highlight_offset': {'readonly': True},
11805        'statement_highlight_length': {'readonly': True},
11806        'error_code': {'readonly': True},
11807        'error_severity': {'readonly': True},
11808        'error_message': {'readonly': True},
11809    }
11810
11811    _attribute_map = {
11812        'threat_id': {'key': 'threatId', 'type': 'str'},
11813        'statement': {'key': 'statement', 'type': 'str'},
11814        'statement_highlight_offset': {'key': 'statementHighlightOffset', 'type': 'int'},
11815        'statement_highlight_length': {'key': 'statementHighlightLength', 'type': 'int'},
11816        'error_code': {'key': 'errorCode', 'type': 'int'},
11817        'error_severity': {'key': 'errorSeverity', 'type': 'int'},
11818        'error_message': {'key': 'errorMessage', 'type': 'str'},
11819    }
11820
11821    def __init__(
11822        self,
11823        **kwargs
11824    ):
11825        super(SecurityEventSqlInjectionAdditionalProperties, self).__init__(**kwargs)
11826        self.threat_id = None
11827        self.statement = None
11828        self.statement_highlight_offset = None
11829        self.statement_highlight_length = None
11830        self.error_code = None
11831        self.error_severity = None
11832        self.error_message = None
11833
11834
11835class SensitivityLabel(ProxyResource):
11836    """A sensitivity label.
11837
11838    Variables are only populated by the server, and will be ignored when sending a request.
11839
11840    :ivar id: Resource ID.
11841    :vartype id: str
11842    :ivar name: Resource name.
11843    :vartype name: str
11844    :ivar type: Resource type.
11845    :vartype type: str
11846    :ivar managed_by: Resource that manages the sensitivity label.
11847    :vartype managed_by: str
11848    :ivar schema_name: The schema name.
11849    :vartype schema_name: str
11850    :ivar table_name: The table name.
11851    :vartype table_name: str
11852    :ivar column_name: The column name.
11853    :vartype column_name: str
11854    :param label_name: The label name.
11855    :type label_name: str
11856    :param label_id: The label ID.
11857    :type label_id: str
11858    :param information_type: The information type.
11859    :type information_type: str
11860    :param information_type_id: The information type ID.
11861    :type information_type_id: str
11862    :ivar is_disabled: Is sensitivity recommendation disabled. Applicable for recommended
11863     sensitivity label only. Specifies whether the sensitivity recommendation on this column is
11864     disabled (dismissed) or not.
11865    :vartype is_disabled: bool
11866    :param rank:  Possible values include: "None", "Low", "Medium", "High", "Critical".
11867    :type rank: str or ~azure.mgmt.sql.models.SensitivityLabelRank
11868    """
11869
11870    _validation = {
11871        'id': {'readonly': True},
11872        'name': {'readonly': True},
11873        'type': {'readonly': True},
11874        'managed_by': {'readonly': True},
11875        'schema_name': {'readonly': True},
11876        'table_name': {'readonly': True},
11877        'column_name': {'readonly': True},
11878        'is_disabled': {'readonly': True},
11879    }
11880
11881    _attribute_map = {
11882        'id': {'key': 'id', 'type': 'str'},
11883        'name': {'key': 'name', 'type': 'str'},
11884        'type': {'key': 'type', 'type': 'str'},
11885        'managed_by': {'key': 'managedBy', 'type': 'str'},
11886        'schema_name': {'key': 'properties.schemaName', 'type': 'str'},
11887        'table_name': {'key': 'properties.tableName', 'type': 'str'},
11888        'column_name': {'key': 'properties.columnName', 'type': 'str'},
11889        'label_name': {'key': 'properties.labelName', 'type': 'str'},
11890        'label_id': {'key': 'properties.labelId', 'type': 'str'},
11891        'information_type': {'key': 'properties.informationType', 'type': 'str'},
11892        'information_type_id': {'key': 'properties.informationTypeId', 'type': 'str'},
11893        'is_disabled': {'key': 'properties.isDisabled', 'type': 'bool'},
11894        'rank': {'key': 'properties.rank', 'type': 'str'},
11895    }
11896
11897    def __init__(
11898        self,
11899        **kwargs
11900    ):
11901        super(SensitivityLabel, self).__init__(**kwargs)
11902        self.managed_by = None
11903        self.schema_name = None
11904        self.table_name = None
11905        self.column_name = None
11906        self.label_name = kwargs.get('label_name', None)
11907        self.label_id = kwargs.get('label_id', None)
11908        self.information_type = kwargs.get('information_type', None)
11909        self.information_type_id = kwargs.get('information_type_id', None)
11910        self.is_disabled = None
11911        self.rank = kwargs.get('rank', None)
11912
11913
11914class SensitivityLabelListResult(msrest.serialization.Model):
11915    """A list of sensitivity labels.
11916
11917    Variables are only populated by the server, and will be ignored when sending a request.
11918
11919    :ivar value: Array of results.
11920    :vartype value: list[~azure.mgmt.sql.models.SensitivityLabel]
11921    :ivar next_link: Link to retrieve next page of results.
11922    :vartype next_link: str
11923    """
11924
11925    _validation = {
11926        'value': {'readonly': True},
11927        'next_link': {'readonly': True},
11928    }
11929
11930    _attribute_map = {
11931        'value': {'key': 'value', 'type': '[SensitivityLabel]'},
11932        'next_link': {'key': 'nextLink', 'type': 'str'},
11933    }
11934
11935    def __init__(
11936        self,
11937        **kwargs
11938    ):
11939        super(SensitivityLabelListResult, self).__init__(**kwargs)
11940        self.value = None
11941        self.next_link = None
11942
11943
11944class SensitivityLabelUpdate(ProxyResource):
11945    """A sensitivity label update operation.
11946
11947    Variables are only populated by the server, and will be ignored when sending a request.
11948
11949    :ivar id: Resource ID.
11950    :vartype id: str
11951    :ivar name: Resource name.
11952    :vartype name: str
11953    :ivar type: Resource type.
11954    :vartype type: str
11955    :param op:  Possible values include: "set", "remove".
11956    :type op: str or ~azure.mgmt.sql.models.SensitivityLabelUpdateKind
11957    :param schema: Schema name of the column to update.
11958    :type schema: str
11959    :param table: Table name of the column to update.
11960    :type table: str
11961    :param column: Column name to update.
11962    :type column: str
11963    :param sensitivity_label: The sensitivity label information to apply on a column.
11964    :type sensitivity_label: ~azure.mgmt.sql.models.SensitivityLabel
11965    """
11966
11967    _validation = {
11968        'id': {'readonly': True},
11969        'name': {'readonly': True},
11970        'type': {'readonly': True},
11971    }
11972
11973    _attribute_map = {
11974        'id': {'key': 'id', 'type': 'str'},
11975        'name': {'key': 'name', 'type': 'str'},
11976        'type': {'key': 'type', 'type': 'str'},
11977        'op': {'key': 'properties.op', 'type': 'str'},
11978        'schema': {'key': 'properties.schema', 'type': 'str'},
11979        'table': {'key': 'properties.table', 'type': 'str'},
11980        'column': {'key': 'properties.column', 'type': 'str'},
11981        'sensitivity_label': {'key': 'properties.sensitivityLabel', 'type': 'SensitivityLabel'},
11982    }
11983
11984    def __init__(
11985        self,
11986        **kwargs
11987    ):
11988        super(SensitivityLabelUpdate, self).__init__(**kwargs)
11989        self.op = kwargs.get('op', None)
11990        self.schema = kwargs.get('schema', None)
11991        self.table = kwargs.get('table', None)
11992        self.column = kwargs.get('column', None)
11993        self.sensitivity_label = kwargs.get('sensitivity_label', None)
11994
11995
11996class SensitivityLabelUpdateList(msrest.serialization.Model):
11997    """A list of sensitivity label update operations.
11998
11999    :param operations:
12000    :type operations: list[~azure.mgmt.sql.models.SensitivityLabelUpdate]
12001    """
12002
12003    _attribute_map = {
12004        'operations': {'key': 'operations', 'type': '[SensitivityLabelUpdate]'},
12005    }
12006
12007    def __init__(
12008        self,
12009        **kwargs
12010    ):
12011        super(SensitivityLabelUpdateList, self).__init__(**kwargs)
12012        self.operations = kwargs.get('operations', None)
12013
12014
12015class Server(TrackedResource):
12016    """An Azure SQL Database server.
12017
12018    Variables are only populated by the server, and will be ignored when sending a request.
12019
12020    All required parameters must be populated in order to send to Azure.
12021
12022    :ivar id: Resource ID.
12023    :vartype id: str
12024    :ivar name: Resource name.
12025    :vartype name: str
12026    :ivar type: Resource type.
12027    :vartype type: str
12028    :param location: Required. Resource location.
12029    :type location: str
12030    :param tags: A set of tags. Resource tags.
12031    :type tags: dict[str, str]
12032    :param identity: The Azure Active Directory identity of the server.
12033    :type identity: ~azure.mgmt.sql.models.ResourceIdentity
12034    :ivar kind: Kind of sql server. This is metadata used for the Azure portal experience.
12035    :vartype kind: str
12036    :param administrator_login: Administrator username for the server. Once created it cannot be
12037     changed.
12038    :type administrator_login: str
12039    :param administrator_login_password: The administrator login password (required for server
12040     creation).
12041    :type administrator_login_password: str
12042    :param version: The version of the server.
12043    :type version: str
12044    :ivar state: The state of the server.
12045    :vartype state: str
12046    :ivar fully_qualified_domain_name: The fully qualified domain name of the server.
12047    :vartype fully_qualified_domain_name: str
12048    :ivar private_endpoint_connections: List of private endpoint connections on a server.
12049    :vartype private_endpoint_connections:
12050     list[~azure.mgmt.sql.models.ServerPrivateEndpointConnection]
12051    :param minimal_tls_version: Minimal TLS version. Allowed values: '1.0', '1.1', '1.2'.
12052    :type minimal_tls_version: str
12053    :param public_network_access: Whether or not public endpoint access is allowed for this server.
12054     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
12055     "Enabled", "Disabled".
12056    :type public_network_access: str or ~azure.mgmt.sql.models.ServerNetworkAccessFlag
12057    :ivar workspace_feature: Whether or not existing server has a workspace created and if it
12058     allows connection from workspace. Possible values include: "Connected", "Disconnected".
12059    :vartype workspace_feature: str or ~azure.mgmt.sql.models.ServerWorkspaceFeature
12060    :param primary_user_assigned_identity_id: The resource id of a user assigned identity to be
12061     used by default.
12062    :type primary_user_assigned_identity_id: str
12063    :param federated_client_id: The Client id used for cross tenant CMK scenario.
12064    :type federated_client_id: str
12065    :param key_id: A CMK URI of the key to use for encryption.
12066    :type key_id: str
12067    :param administrators: The Azure Active Directory identity of the server.
12068    :type administrators: ~azure.mgmt.sql.models.ServerExternalAdministrator
12069    :param restrict_outbound_network_access: Whether or not to restrict outbound network access for
12070     this server.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible
12071     values include: "Enabled", "Disabled".
12072    :type restrict_outbound_network_access: str or ~azure.mgmt.sql.models.ServerNetworkAccessFlag
12073    """
12074
12075    _validation = {
12076        'id': {'readonly': True},
12077        'name': {'readonly': True},
12078        'type': {'readonly': True},
12079        'location': {'required': True},
12080        'kind': {'readonly': True},
12081        'state': {'readonly': True},
12082        'fully_qualified_domain_name': {'readonly': True},
12083        'private_endpoint_connections': {'readonly': True},
12084        'workspace_feature': {'readonly': True},
12085    }
12086
12087    _attribute_map = {
12088        'id': {'key': 'id', 'type': 'str'},
12089        'name': {'key': 'name', 'type': 'str'},
12090        'type': {'key': 'type', 'type': 'str'},
12091        'location': {'key': 'location', 'type': 'str'},
12092        'tags': {'key': 'tags', 'type': '{str}'},
12093        'identity': {'key': 'identity', 'type': 'ResourceIdentity'},
12094        'kind': {'key': 'kind', 'type': 'str'},
12095        'administrator_login': {'key': 'properties.administratorLogin', 'type': 'str'},
12096        'administrator_login_password': {'key': 'properties.administratorLoginPassword', 'type': 'str'},
12097        'version': {'key': 'properties.version', 'type': 'str'},
12098        'state': {'key': 'properties.state', 'type': 'str'},
12099        'fully_qualified_domain_name': {'key': 'properties.fullyQualifiedDomainName', 'type': 'str'},
12100        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[ServerPrivateEndpointConnection]'},
12101        'minimal_tls_version': {'key': 'properties.minimalTlsVersion', 'type': 'str'},
12102        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
12103        'workspace_feature': {'key': 'properties.workspaceFeature', 'type': 'str'},
12104        'primary_user_assigned_identity_id': {'key': 'properties.primaryUserAssignedIdentityId', 'type': 'str'},
12105        'federated_client_id': {'key': 'properties.federatedClientId', 'type': 'str'},
12106        'key_id': {'key': 'properties.keyId', 'type': 'str'},
12107        'administrators': {'key': 'properties.administrators', 'type': 'ServerExternalAdministrator'},
12108        'restrict_outbound_network_access': {'key': 'properties.restrictOutboundNetworkAccess', 'type': 'str'},
12109    }
12110
12111    def __init__(
12112        self,
12113        **kwargs
12114    ):
12115        super(Server, self).__init__(**kwargs)
12116        self.identity = kwargs.get('identity', None)
12117        self.kind = None
12118        self.administrator_login = kwargs.get('administrator_login', None)
12119        self.administrator_login_password = kwargs.get('administrator_login_password', None)
12120        self.version = kwargs.get('version', None)
12121        self.state = None
12122        self.fully_qualified_domain_name = None
12123        self.private_endpoint_connections = None
12124        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
12125        self.public_network_access = kwargs.get('public_network_access', None)
12126        self.workspace_feature = None
12127        self.primary_user_assigned_identity_id = kwargs.get('primary_user_assigned_identity_id', None)
12128        self.federated_client_id = kwargs.get('federated_client_id', None)
12129        self.key_id = kwargs.get('key_id', None)
12130        self.administrators = kwargs.get('administrators', None)
12131        self.restrict_outbound_network_access = kwargs.get('restrict_outbound_network_access', None)
12132
12133
12134class ServerAutomaticTuning(ProxyResource):
12135    """Server-level Automatic Tuning.
12136
12137    Variables are only populated by the server, and will be ignored when sending a request.
12138
12139    :ivar id: Resource ID.
12140    :vartype id: str
12141    :ivar name: Resource name.
12142    :vartype name: str
12143    :ivar type: Resource type.
12144    :vartype type: str
12145    :param desired_state: Automatic tuning desired state. Possible values include: "Custom",
12146     "Auto", "Unspecified".
12147    :type desired_state: str or ~azure.mgmt.sql.models.AutomaticTuningServerMode
12148    :ivar actual_state: Automatic tuning actual state. Possible values include: "Custom", "Auto",
12149     "Unspecified".
12150    :vartype actual_state: str or ~azure.mgmt.sql.models.AutomaticTuningServerMode
12151    :param options: Automatic tuning options definition.
12152    :type options: dict[str, ~azure.mgmt.sql.models.AutomaticTuningServerOptions]
12153    """
12154
12155    _validation = {
12156        'id': {'readonly': True},
12157        'name': {'readonly': True},
12158        'type': {'readonly': True},
12159        'actual_state': {'readonly': True},
12160    }
12161
12162    _attribute_map = {
12163        'id': {'key': 'id', 'type': 'str'},
12164        'name': {'key': 'name', 'type': 'str'},
12165        'type': {'key': 'type', 'type': 'str'},
12166        'desired_state': {'key': 'properties.desiredState', 'type': 'str'},
12167        'actual_state': {'key': 'properties.actualState', 'type': 'str'},
12168        'options': {'key': 'properties.options', 'type': '{AutomaticTuningServerOptions}'},
12169    }
12170
12171    def __init__(
12172        self,
12173        **kwargs
12174    ):
12175        super(ServerAutomaticTuning, self).__init__(**kwargs)
12176        self.desired_state = kwargs.get('desired_state', None)
12177        self.actual_state = None
12178        self.options = kwargs.get('options', None)
12179
12180
12181class ServerAzureADAdministrator(ProxyResource):
12182    """Azure Active Directory administrator.
12183
12184    Variables are only populated by the server, and will be ignored when sending a request.
12185
12186    :ivar id: Resource ID.
12187    :vartype id: str
12188    :ivar name: Resource name.
12189    :vartype name: str
12190    :ivar type: Resource type.
12191    :vartype type: str
12192    :param administrator_type: Type of the sever administrator. Possible values include:
12193     "ActiveDirectory".
12194    :type administrator_type: str or ~azure.mgmt.sql.models.AdministratorType
12195    :param login: Login name of the server administrator.
12196    :type login: str
12197    :param sid: SID (object ID) of the server administrator.
12198    :type sid: str
12199    :param tenant_id: Tenant ID of the administrator.
12200    :type tenant_id: str
12201    :ivar azure_ad_only_authentication: Azure Active Directory only Authentication enabled.
12202    :vartype azure_ad_only_authentication: bool
12203    """
12204
12205    _validation = {
12206        'id': {'readonly': True},
12207        'name': {'readonly': True},
12208        'type': {'readonly': True},
12209        'azure_ad_only_authentication': {'readonly': True},
12210    }
12211
12212    _attribute_map = {
12213        'id': {'key': 'id', 'type': 'str'},
12214        'name': {'key': 'name', 'type': 'str'},
12215        'type': {'key': 'type', 'type': 'str'},
12216        'administrator_type': {'key': 'properties.administratorType', 'type': 'str'},
12217        'login': {'key': 'properties.login', 'type': 'str'},
12218        'sid': {'key': 'properties.sid', 'type': 'str'},
12219        'tenant_id': {'key': 'properties.tenantId', 'type': 'str'},
12220        'azure_ad_only_authentication': {'key': 'properties.azureADOnlyAuthentication', 'type': 'bool'},
12221    }
12222
12223    def __init__(
12224        self,
12225        **kwargs
12226    ):
12227        super(ServerAzureADAdministrator, self).__init__(**kwargs)
12228        self.administrator_type = kwargs.get('administrator_type', None)
12229        self.login = kwargs.get('login', None)
12230        self.sid = kwargs.get('sid', None)
12231        self.tenant_id = kwargs.get('tenant_id', None)
12232        self.azure_ad_only_authentication = None
12233
12234
12235class ServerAzureADOnlyAuthentication(ProxyResource):
12236    """Azure Active Directory only authentication.
12237
12238    Variables are only populated by the server, and will be ignored when sending a request.
12239
12240    :ivar id: Resource ID.
12241    :vartype id: str
12242    :ivar name: Resource name.
12243    :vartype name: str
12244    :ivar type: Resource type.
12245    :vartype type: str
12246    :param azure_ad_only_authentication: Azure Active Directory only Authentication enabled.
12247    :type azure_ad_only_authentication: bool
12248    """
12249
12250    _validation = {
12251        'id': {'readonly': True},
12252        'name': {'readonly': True},
12253        'type': {'readonly': True},
12254    }
12255
12256    _attribute_map = {
12257        'id': {'key': 'id', 'type': 'str'},
12258        'name': {'key': 'name', 'type': 'str'},
12259        'type': {'key': 'type', 'type': 'str'},
12260        'azure_ad_only_authentication': {'key': 'properties.azureADOnlyAuthentication', 'type': 'bool'},
12261    }
12262
12263    def __init__(
12264        self,
12265        **kwargs
12266    ):
12267        super(ServerAzureADOnlyAuthentication, self).__init__(**kwargs)
12268        self.azure_ad_only_authentication = kwargs.get('azure_ad_only_authentication', None)
12269
12270
12271class ServerBlobAuditingPolicy(ProxyResource):
12272    """A server blob auditing policy.
12273
12274    Variables are only populated by the server, and will be ignored when sending a request.
12275
12276    :ivar id: Resource ID.
12277    :vartype id: str
12278    :ivar name: Resource name.
12279    :vartype name: str
12280    :ivar type: Resource type.
12281    :vartype type: str
12282    :param is_devops_audit_enabled: Specifies the state of devops audit. If state is Enabled,
12283     devops logs will be sent to Azure Monitor.
12284     In order to send the events to Azure Monitor, specify 'State' as 'Enabled',
12285     'IsAzureMonitorTargetEnabled' as true and 'IsDevopsAuditEnabled' as true
12286
12287     When using REST API to configure auditing, Diagnostic Settings with 'DevOpsOperationsAudit'
12288     diagnostic logs category on the master database should also be created.
12289
12290     Diagnostic Settings URI format:
12291     PUT
12292     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/master/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
12293
12294     For more information, see `Diagnostic Settings REST API
12295     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
12296     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
12297    :type is_devops_audit_enabled: bool
12298    :param retention_days: Specifies the number of days to keep in the audit logs in the storage
12299     account.
12300    :type retention_days: int
12301    :param audit_actions_and_groups: Specifies the Actions-Groups and Actions to audit.
12302
12303     The recommended set of action groups to use is the following combination - this will audit all
12304     the queries and stored procedures executed against the database, as well as successful and
12305     failed logins:
12306
12307     BATCH_COMPLETED_GROUP,
12308     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
12309     FAILED_DATABASE_AUTHENTICATION_GROUP.
12310
12311     This above combination is also the set that is configured by default when enabling auditing
12312     from the Azure portal.
12313
12314     The supported action groups to audit are (note: choose only specific groups that cover your
12315     auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
12316
12317     APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
12318     BACKUP_RESTORE_GROUP
12319     DATABASE_LOGOUT_GROUP
12320     DATABASE_OBJECT_CHANGE_GROUP
12321     DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
12322     DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
12323     DATABASE_OPERATION_GROUP
12324     DATABASE_PERMISSION_CHANGE_GROUP
12325     DATABASE_PRINCIPAL_CHANGE_GROUP
12326     DATABASE_PRINCIPAL_IMPERSONATION_GROUP
12327     DATABASE_ROLE_MEMBER_CHANGE_GROUP
12328     FAILED_DATABASE_AUTHENTICATION_GROUP
12329     SCHEMA_OBJECT_ACCESS_GROUP
12330     SCHEMA_OBJECT_CHANGE_GROUP
12331     SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
12332     SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
12333     SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
12334     USER_CHANGE_PASSWORD_GROUP
12335     BATCH_STARTED_GROUP
12336     BATCH_COMPLETED_GROUP
12337
12338     These are groups that cover all sql statements and stored procedures executed against the
12339     database, and should not be used in combination with other groups as this will result in
12340     duplicate audit logs.
12341
12342     For more information, see `Database-Level Audit Action Groups
12343     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups>`_.
12344
12345     For Database auditing policy, specific Actions can also be specified (note that Actions cannot
12346     be specified for Server auditing policy). The supported actions to audit are:
12347     SELECT
12348     UPDATE
12349     INSERT
12350     DELETE
12351     EXECUTE
12352     RECEIVE
12353     REFERENCES
12354
12355     The general form for defining an action to be audited is:
12356     {action} ON {object} BY {principal}
12357
12358     Note that :code:`<object>` in the above format can refer to an object like a table, view, or
12359     stored procedure, or an entire database or schema. For the latter cases, the forms
12360     DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
12361
12362     For example:
12363     SELECT on dbo.myTable by public
12364     SELECT on DATABASE::myDatabase by public
12365     SELECT on SCHEMA::mySchema by public
12366
12367     For more information, see `Database-Level Audit Actions
12368     <https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions>`_.
12369    :type audit_actions_and_groups: list[str]
12370    :param is_storage_secondary_key_in_use: Specifies whether storageAccountAccessKey value is the
12371     storage's secondary key.
12372    :type is_storage_secondary_key_in_use: bool
12373    :param is_azure_monitor_target_enabled: Specifies whether audit events are sent to Azure
12374     Monitor.
12375     In order to send the events to Azure Monitor, specify 'State' as 'Enabled' and
12376     'IsAzureMonitorTargetEnabled' as true.
12377
12378     When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents'
12379     diagnostic logs category on the database should be also created.
12380     Note that for server level audit you should use the 'master' database as {databaseName}.
12381
12382     Diagnostic Settings URI format:
12383     PUT
12384     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
12385
12386     For more information, see `Diagnostic Settings REST API
12387     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
12388     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
12389    :type is_azure_monitor_target_enabled: bool
12390    :param queue_delay_ms: Specifies the amount of time in milliseconds that can elapse before
12391     audit actions are forced to be processed.
12392     The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
12393    :type queue_delay_ms: int
12394    :param state: Specifies the state of the audit. If state is Enabled, storageEndpoint or
12395     isAzureMonitorTargetEnabled are required. Possible values include: "Enabled", "Disabled".
12396    :type state: str or ~azure.mgmt.sql.models.BlobAuditingPolicyState
12397    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
12398     https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or
12399     isAzureMonitorTargetEnabled is required.
12400    :type storage_endpoint: str
12401    :param storage_account_access_key: Specifies the identifier key of the auditing storage
12402     account.
12403     If state is Enabled and storageEndpoint is specified, not specifying the
12404     storageAccountAccessKey will use SQL server system-assigned managed identity to access the
12405     storage.
12406     Prerequisites for using managed identity authentication:
12407
12408
12409     #. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
12410     #. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data
12411     Contributor' RBAC role to the server identity.
12412        For more information, see `Auditing to storage using Managed Identity authentication
12413     <https://go.microsoft.com/fwlink/?linkid=2114355>`_.
12414    :type storage_account_access_key: str
12415    :param storage_account_subscription_id: Specifies the blob storage subscription Id.
12416    :type storage_account_subscription_id: str
12417    """
12418
12419    _validation = {
12420        'id': {'readonly': True},
12421        'name': {'readonly': True},
12422        'type': {'readonly': True},
12423    }
12424
12425    _attribute_map = {
12426        'id': {'key': 'id', 'type': 'str'},
12427        'name': {'key': 'name', 'type': 'str'},
12428        'type': {'key': 'type', 'type': 'str'},
12429        'is_devops_audit_enabled': {'key': 'properties.isDevopsAuditEnabled', 'type': 'bool'},
12430        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
12431        'audit_actions_and_groups': {'key': 'properties.auditActionsAndGroups', 'type': '[str]'},
12432        'is_storage_secondary_key_in_use': {'key': 'properties.isStorageSecondaryKeyInUse', 'type': 'bool'},
12433        'is_azure_monitor_target_enabled': {'key': 'properties.isAzureMonitorTargetEnabled', 'type': 'bool'},
12434        'queue_delay_ms': {'key': 'properties.queueDelayMs', 'type': 'int'},
12435        'state': {'key': 'properties.state', 'type': 'str'},
12436        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
12437        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
12438        'storage_account_subscription_id': {'key': 'properties.storageAccountSubscriptionId', 'type': 'str'},
12439    }
12440
12441    def __init__(
12442        self,
12443        **kwargs
12444    ):
12445        super(ServerBlobAuditingPolicy, self).__init__(**kwargs)
12446        self.is_devops_audit_enabled = kwargs.get('is_devops_audit_enabled', None)
12447        self.retention_days = kwargs.get('retention_days', None)
12448        self.audit_actions_and_groups = kwargs.get('audit_actions_and_groups', None)
12449        self.is_storage_secondary_key_in_use = kwargs.get('is_storage_secondary_key_in_use', None)
12450        self.is_azure_monitor_target_enabled = kwargs.get('is_azure_monitor_target_enabled', None)
12451        self.queue_delay_ms = kwargs.get('queue_delay_ms', None)
12452        self.state = kwargs.get('state', None)
12453        self.storage_endpoint = kwargs.get('storage_endpoint', None)
12454        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
12455        self.storage_account_subscription_id = kwargs.get('storage_account_subscription_id', None)
12456
12457
12458class ServerBlobAuditingPolicyListResult(msrest.serialization.Model):
12459    """A list of server auditing settings.
12460
12461    Variables are only populated by the server, and will be ignored when sending a request.
12462
12463    :ivar value: Array of results.
12464    :vartype value: list[~azure.mgmt.sql.models.ServerBlobAuditingPolicy]
12465    :ivar next_link: Link to retrieve next page of results.
12466    :vartype next_link: str
12467    """
12468
12469    _validation = {
12470        'value': {'readonly': True},
12471        'next_link': {'readonly': True},
12472    }
12473
12474    _attribute_map = {
12475        'value': {'key': 'value', 'type': '[ServerBlobAuditingPolicy]'},
12476        'next_link': {'key': 'nextLink', 'type': 'str'},
12477    }
12478
12479    def __init__(
12480        self,
12481        **kwargs
12482    ):
12483        super(ServerBlobAuditingPolicyListResult, self).__init__(**kwargs)
12484        self.value = None
12485        self.next_link = None
12486
12487
12488class ServerCommunicationLink(ProxyResource):
12489    """Server communication link.
12490
12491    Variables are only populated by the server, and will be ignored when sending a request.
12492
12493    :ivar id: Resource ID.
12494    :vartype id: str
12495    :ivar name: Resource name.
12496    :vartype name: str
12497    :ivar type: Resource type.
12498    :vartype type: str
12499    :ivar location: Communication link location.
12500    :vartype location: str
12501    :ivar kind: Communication link kind.  This property is used for Azure Portal metadata.
12502    :vartype kind: str
12503    :ivar state: The state.
12504    :vartype state: str
12505    :param partner_server: The name of the partner server.
12506    :type partner_server: str
12507    """
12508
12509    _validation = {
12510        'id': {'readonly': True},
12511        'name': {'readonly': True},
12512        'type': {'readonly': True},
12513        'location': {'readonly': True},
12514        'kind': {'readonly': True},
12515        'state': {'readonly': True},
12516    }
12517
12518    _attribute_map = {
12519        'id': {'key': 'id', 'type': 'str'},
12520        'name': {'key': 'name', 'type': 'str'},
12521        'type': {'key': 'type', 'type': 'str'},
12522        'location': {'key': 'location', 'type': 'str'},
12523        'kind': {'key': 'kind', 'type': 'str'},
12524        'state': {'key': 'properties.state', 'type': 'str'},
12525        'partner_server': {'key': 'properties.partnerServer', 'type': 'str'},
12526    }
12527
12528    def __init__(
12529        self,
12530        **kwargs
12531    ):
12532        super(ServerCommunicationLink, self).__init__(**kwargs)
12533        self.location = None
12534        self.kind = None
12535        self.state = None
12536        self.partner_server = kwargs.get('partner_server', None)
12537
12538
12539class ServerCommunicationLinkListResult(msrest.serialization.Model):
12540    """A list of server communication links.
12541
12542    :param value: The list of server communication links.
12543    :type value: list[~azure.mgmt.sql.models.ServerCommunicationLink]
12544    """
12545
12546    _attribute_map = {
12547        'value': {'key': 'value', 'type': '[ServerCommunicationLink]'},
12548    }
12549
12550    def __init__(
12551        self,
12552        **kwargs
12553    ):
12554        super(ServerCommunicationLinkListResult, self).__init__(**kwargs)
12555        self.value = kwargs.get('value', None)
12556
12557
12558class ServerConnectionPolicy(ProxyResource):
12559    """A server secure connection policy.
12560
12561    Variables are only populated by the server, and will be ignored when sending a request.
12562
12563    :ivar id: Resource ID.
12564    :vartype id: str
12565    :ivar name: Resource name.
12566    :vartype name: str
12567    :ivar type: Resource type.
12568    :vartype type: str
12569    :ivar kind: Metadata used for the Azure portal experience.
12570    :vartype kind: str
12571    :ivar location: Resource location.
12572    :vartype location: str
12573    :param connection_type: The server connection type. Possible values include: "Default",
12574     "Proxy", "Redirect".
12575    :type connection_type: str or ~azure.mgmt.sql.models.ServerConnectionType
12576    """
12577
12578    _validation = {
12579        'id': {'readonly': True},
12580        'name': {'readonly': True},
12581        'type': {'readonly': True},
12582        'kind': {'readonly': True},
12583        'location': {'readonly': True},
12584    }
12585
12586    _attribute_map = {
12587        'id': {'key': 'id', 'type': 'str'},
12588        'name': {'key': 'name', 'type': 'str'},
12589        'type': {'key': 'type', 'type': 'str'},
12590        'kind': {'key': 'kind', 'type': 'str'},
12591        'location': {'key': 'location', 'type': 'str'},
12592        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
12593    }
12594
12595    def __init__(
12596        self,
12597        **kwargs
12598    ):
12599        super(ServerConnectionPolicy, self).__init__(**kwargs)
12600        self.kind = None
12601        self.location = None
12602        self.connection_type = kwargs.get('connection_type', None)
12603
12604
12605class ServerDevOpsAuditingSettings(ProxyResource):
12606    """A server DevOps auditing settings.
12607
12608    Variables are only populated by the server, and will be ignored when sending a request.
12609
12610    :ivar id: Resource ID.
12611    :vartype id: str
12612    :ivar name: Resource name.
12613    :vartype name: str
12614    :ivar type: Resource type.
12615    :vartype type: str
12616    :ivar system_data: SystemData of ServerDevOpsAuditSettingsResource.
12617    :vartype system_data: ~azure.mgmt.sql.models.SystemData
12618    :param is_azure_monitor_target_enabled: Specifies whether DevOps audit events are sent to Azure
12619     Monitor.
12620     In order to send the events to Azure Monitor, specify 'State' as 'Enabled' and
12621     'IsAzureMonitorTargetEnabled' as true.
12622
12623     When using REST API to configure DevOps audit, Diagnostic Settings with
12624     'DevOpsOperationsAudit' diagnostic logs category on the master database should be also created.
12625
12626     Diagnostic Settings URI format:
12627     PUT
12628     https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/master/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
12629
12630     For more information, see `Diagnostic Settings REST API
12631     <https://go.microsoft.com/fwlink/?linkid=2033207>`_
12632     or `Diagnostic Settings PowerShell <https://go.microsoft.com/fwlink/?linkid=2033043>`_.
12633    :type is_azure_monitor_target_enabled: bool
12634    :param state: Specifies the state of the audit. If state is Enabled, storageEndpoint or
12635     isAzureMonitorTargetEnabled are required. Possible values include: "Enabled", "Disabled".
12636    :type state: str or ~azure.mgmt.sql.models.BlobAuditingPolicyState
12637    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
12638     https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or
12639     isAzureMonitorTargetEnabled is required.
12640    :type storage_endpoint: str
12641    :param storage_account_access_key: Specifies the identifier key of the auditing storage
12642     account.
12643     If state is Enabled and storageEndpoint is specified, not specifying the
12644     storageAccountAccessKey will use SQL server system-assigned managed identity to access the
12645     storage.
12646     Prerequisites for using managed identity authentication:
12647
12648
12649     #. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
12650     #. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data
12651     Contributor' RBAC role to the server identity.
12652        For more information, see `Auditing to storage using Managed Identity authentication
12653     <https://go.microsoft.com/fwlink/?linkid=2114355>`_.
12654    :type storage_account_access_key: str
12655    :param storage_account_subscription_id: Specifies the blob storage subscription Id.
12656    :type storage_account_subscription_id: str
12657    """
12658
12659    _validation = {
12660        'id': {'readonly': True},
12661        'name': {'readonly': True},
12662        'type': {'readonly': True},
12663        'system_data': {'readonly': True},
12664    }
12665
12666    _attribute_map = {
12667        'id': {'key': 'id', 'type': 'str'},
12668        'name': {'key': 'name', 'type': 'str'},
12669        'type': {'key': 'type', 'type': 'str'},
12670        'system_data': {'key': 'systemData', 'type': 'SystemData'},
12671        'is_azure_monitor_target_enabled': {'key': 'properties.isAzureMonitorTargetEnabled', 'type': 'bool'},
12672        'state': {'key': 'properties.state', 'type': 'str'},
12673        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
12674        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
12675        'storage_account_subscription_id': {'key': 'properties.storageAccountSubscriptionId', 'type': 'str'},
12676    }
12677
12678    def __init__(
12679        self,
12680        **kwargs
12681    ):
12682        super(ServerDevOpsAuditingSettings, self).__init__(**kwargs)
12683        self.system_data = None
12684        self.is_azure_monitor_target_enabled = kwargs.get('is_azure_monitor_target_enabled', None)
12685        self.state = kwargs.get('state', None)
12686        self.storage_endpoint = kwargs.get('storage_endpoint', None)
12687        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
12688        self.storage_account_subscription_id = kwargs.get('storage_account_subscription_id', None)
12689
12690
12691class ServerDevOpsAuditSettingsListResult(msrest.serialization.Model):
12692    """A list of server DevOps audit settings.
12693
12694    Variables are only populated by the server, and will be ignored when sending a request.
12695
12696    :ivar value: Array of results.
12697    :vartype value: list[~azure.mgmt.sql.models.ServerDevOpsAuditingSettings]
12698    :ivar next_link: Link to retrieve next page of results.
12699    :vartype next_link: str
12700    """
12701
12702    _validation = {
12703        'value': {'readonly': True},
12704        'next_link': {'readonly': True},
12705    }
12706
12707    _attribute_map = {
12708        'value': {'key': 'value', 'type': '[ServerDevOpsAuditingSettings]'},
12709        'next_link': {'key': 'nextLink', 'type': 'str'},
12710    }
12711
12712    def __init__(
12713        self,
12714        **kwargs
12715    ):
12716        super(ServerDevOpsAuditSettingsListResult, self).__init__(**kwargs)
12717        self.value = None
12718        self.next_link = None
12719
12720
12721class ServerDnsAlias(ProxyResource):
12722    """A server DNS alias.
12723
12724    Variables are only populated by the server, and will be ignored when sending a request.
12725
12726    :ivar id: Resource ID.
12727    :vartype id: str
12728    :ivar name: Resource name.
12729    :vartype name: str
12730    :ivar type: Resource type.
12731    :vartype type: str
12732    :ivar azure_dns_record: The fully qualified DNS record for alias.
12733    :vartype azure_dns_record: str
12734    """
12735
12736    _validation = {
12737        'id': {'readonly': True},
12738        'name': {'readonly': True},
12739        'type': {'readonly': True},
12740        'azure_dns_record': {'readonly': True},
12741    }
12742
12743    _attribute_map = {
12744        'id': {'key': 'id', 'type': 'str'},
12745        'name': {'key': 'name', 'type': 'str'},
12746        'type': {'key': 'type', 'type': 'str'},
12747        'azure_dns_record': {'key': 'properties.azureDnsRecord', 'type': 'str'},
12748    }
12749
12750    def __init__(
12751        self,
12752        **kwargs
12753    ):
12754        super(ServerDnsAlias, self).__init__(**kwargs)
12755        self.azure_dns_record = None
12756
12757
12758class ServerDnsAliasAcquisition(msrest.serialization.Model):
12759    """A server dns alias acquisition request.
12760
12761    All required parameters must be populated in order to send to Azure.
12762
12763    :param old_server_dns_alias_id: Required. The id of the server alias that will be acquired to
12764     point to this server instead.
12765    :type old_server_dns_alias_id: str
12766    """
12767
12768    _validation = {
12769        'old_server_dns_alias_id': {'required': True},
12770    }
12771
12772    _attribute_map = {
12773        'old_server_dns_alias_id': {'key': 'oldServerDnsAliasId', 'type': 'str'},
12774    }
12775
12776    def __init__(
12777        self,
12778        **kwargs
12779    ):
12780        super(ServerDnsAliasAcquisition, self).__init__(**kwargs)
12781        self.old_server_dns_alias_id = kwargs['old_server_dns_alias_id']
12782
12783
12784class ServerDnsAliasListResult(msrest.serialization.Model):
12785    """A list of server DNS aliases.
12786
12787    Variables are only populated by the server, and will be ignored when sending a request.
12788
12789    :ivar value: Array of results.
12790    :vartype value: list[~azure.mgmt.sql.models.ServerDnsAlias]
12791    :ivar next_link: Link to retrieve next page of results.
12792    :vartype next_link: str
12793    """
12794
12795    _validation = {
12796        'value': {'readonly': True},
12797        'next_link': {'readonly': True},
12798    }
12799
12800    _attribute_map = {
12801        'value': {'key': 'value', 'type': '[ServerDnsAlias]'},
12802        'next_link': {'key': 'nextLink', 'type': 'str'},
12803    }
12804
12805    def __init__(
12806        self,
12807        **kwargs
12808    ):
12809        super(ServerDnsAliasListResult, self).__init__(**kwargs)
12810        self.value = None
12811        self.next_link = None
12812
12813
12814class ServerExternalAdministrator(msrest.serialization.Model):
12815    """Properties of a active directory administrator.
12816
12817    :param administrator_type: Type of the sever administrator. Possible values include:
12818     "ActiveDirectory".
12819    :type administrator_type: str or ~azure.mgmt.sql.models.AdministratorType
12820    :param principal_type: Principal Type of the sever administrator. Possible values include:
12821     "User", "Group", "Application".
12822    :type principal_type: str or ~azure.mgmt.sql.models.PrincipalType
12823    :param login: Login name of the server administrator.
12824    :type login: str
12825    :param sid: SID (object ID) of the server administrator.
12826    :type sid: str
12827    :param tenant_id: Tenant ID of the administrator.
12828    :type tenant_id: str
12829    :param azure_ad_only_authentication: Azure Active Directory only Authentication enabled.
12830    :type azure_ad_only_authentication: bool
12831    """
12832
12833    _attribute_map = {
12834        'administrator_type': {'key': 'administratorType', 'type': 'str'},
12835        'principal_type': {'key': 'principalType', 'type': 'str'},
12836        'login': {'key': 'login', 'type': 'str'},
12837        'sid': {'key': 'sid', 'type': 'str'},
12838        'tenant_id': {'key': 'tenantId', 'type': 'str'},
12839        'azure_ad_only_authentication': {'key': 'azureADOnlyAuthentication', 'type': 'bool'},
12840    }
12841
12842    def __init__(
12843        self,
12844        **kwargs
12845    ):
12846        super(ServerExternalAdministrator, self).__init__(**kwargs)
12847        self.administrator_type = kwargs.get('administrator_type', None)
12848        self.principal_type = kwargs.get('principal_type', None)
12849        self.login = kwargs.get('login', None)
12850        self.sid = kwargs.get('sid', None)
12851        self.tenant_id = kwargs.get('tenant_id', None)
12852        self.azure_ad_only_authentication = kwargs.get('azure_ad_only_authentication', None)
12853
12854
12855class ServerInfo(msrest.serialization.Model):
12856    """Server info for the server trust group.
12857
12858    All required parameters must be populated in order to send to Azure.
12859
12860    :param server_id: Required. Server Id.
12861    :type server_id: str
12862    """
12863
12864    _validation = {
12865        'server_id': {'required': True},
12866    }
12867
12868    _attribute_map = {
12869        'server_id': {'key': 'serverId', 'type': 'str'},
12870    }
12871
12872    def __init__(
12873        self,
12874        **kwargs
12875    ):
12876        super(ServerInfo, self).__init__(**kwargs)
12877        self.server_id = kwargs['server_id']
12878
12879
12880class ServerKey(ProxyResource):
12881    """A server key.
12882
12883    Variables are only populated by the server, and will be ignored when sending a request.
12884
12885    :ivar id: Resource ID.
12886    :vartype id: str
12887    :ivar name: Resource name.
12888    :vartype name: str
12889    :ivar type: Resource type.
12890    :vartype type: str
12891    :ivar kind: Kind of encryption protector. This is metadata used for the Azure portal
12892     experience.
12893    :vartype kind: str
12894    :ivar location: Resource location.
12895    :vartype location: str
12896    :ivar subregion: Subregion of the server key.
12897    :vartype subregion: str
12898    :param server_key_type: The server key type like 'ServiceManaged', 'AzureKeyVault'. Possible
12899     values include: "ServiceManaged", "AzureKeyVault".
12900    :type server_key_type: str or ~azure.mgmt.sql.models.ServerKeyType
12901    :param uri: The URI of the server key. If the ServerKeyType is AzureKeyVault, then the URI is
12902     required.
12903    :type uri: str
12904    :ivar thumbprint: Thumbprint of the server key.
12905    :vartype thumbprint: str
12906    :ivar creation_date: The server key creation date.
12907    :vartype creation_date: ~datetime.datetime
12908    :ivar auto_rotation_enabled: Key auto rotation opt-in flag. Either true or false.
12909    :vartype auto_rotation_enabled: bool
12910    """
12911
12912    _validation = {
12913        'id': {'readonly': True},
12914        'name': {'readonly': True},
12915        'type': {'readonly': True},
12916        'kind': {'readonly': True},
12917        'location': {'readonly': True},
12918        'subregion': {'readonly': True},
12919        'thumbprint': {'readonly': True},
12920        'creation_date': {'readonly': True},
12921        'auto_rotation_enabled': {'readonly': True},
12922    }
12923
12924    _attribute_map = {
12925        'id': {'key': 'id', 'type': 'str'},
12926        'name': {'key': 'name', 'type': 'str'},
12927        'type': {'key': 'type', 'type': 'str'},
12928        'kind': {'key': 'kind', 'type': 'str'},
12929        'location': {'key': 'location', 'type': 'str'},
12930        'subregion': {'key': 'properties.subregion', 'type': 'str'},
12931        'server_key_type': {'key': 'properties.serverKeyType', 'type': 'str'},
12932        'uri': {'key': 'properties.uri', 'type': 'str'},
12933        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
12934        'creation_date': {'key': 'properties.creationDate', 'type': 'iso-8601'},
12935        'auto_rotation_enabled': {'key': 'properties.autoRotationEnabled', 'type': 'bool'},
12936    }
12937
12938    def __init__(
12939        self,
12940        **kwargs
12941    ):
12942        super(ServerKey, self).__init__(**kwargs)
12943        self.kind = None
12944        self.location = None
12945        self.subregion = None
12946        self.server_key_type = kwargs.get('server_key_type', None)
12947        self.uri = kwargs.get('uri', None)
12948        self.thumbprint = None
12949        self.creation_date = None
12950        self.auto_rotation_enabled = None
12951
12952
12953class ServerKeyListResult(msrest.serialization.Model):
12954    """A list of server keys.
12955
12956    Variables are only populated by the server, and will be ignored when sending a request.
12957
12958    :ivar value: Array of results.
12959    :vartype value: list[~azure.mgmt.sql.models.ServerKey]
12960    :ivar next_link: Link to retrieve next page of results.
12961    :vartype next_link: str
12962    """
12963
12964    _validation = {
12965        'value': {'readonly': True},
12966        'next_link': {'readonly': True},
12967    }
12968
12969    _attribute_map = {
12970        'value': {'key': 'value', 'type': '[ServerKey]'},
12971        'next_link': {'key': 'nextLink', 'type': 'str'},
12972    }
12973
12974    def __init__(
12975        self,
12976        **kwargs
12977    ):
12978        super(ServerKeyListResult, self).__init__(**kwargs)
12979        self.value = None
12980        self.next_link = None
12981
12982
12983class ServerListResult(msrest.serialization.Model):
12984    """A list of servers.
12985
12986    Variables are only populated by the server, and will be ignored when sending a request.
12987
12988    :ivar value: Array of results.
12989    :vartype value: list[~azure.mgmt.sql.models.Server]
12990    :ivar next_link: Link to retrieve next page of results.
12991    :vartype next_link: str
12992    """
12993
12994    _validation = {
12995        'value': {'readonly': True},
12996        'next_link': {'readonly': True},
12997    }
12998
12999    _attribute_map = {
13000        'value': {'key': 'value', 'type': '[Server]'},
13001        'next_link': {'key': 'nextLink', 'type': 'str'},
13002    }
13003
13004    def __init__(
13005        self,
13006        **kwargs
13007    ):
13008        super(ServerListResult, self).__init__(**kwargs)
13009        self.value = None
13010        self.next_link = None
13011
13012
13013class ServerOperation(ProxyResource):
13014    """A server operation.
13015
13016    Variables are only populated by the server, and will be ignored when sending a request.
13017
13018    :ivar id: Resource ID.
13019    :vartype id: str
13020    :ivar name: Resource name.
13021    :vartype name: str
13022    :ivar type: Resource type.
13023    :vartype type: str
13024    :ivar operation: The name of operation.
13025    :vartype operation: str
13026    :ivar operation_friendly_name: The friendly name of operation.
13027    :vartype operation_friendly_name: str
13028    :ivar percent_complete: The percentage of the operation completed.
13029    :vartype percent_complete: int
13030    :ivar server_name: The name of the server.
13031    :vartype server_name: str
13032    :ivar start_time: The operation start time.
13033    :vartype start_time: ~datetime.datetime
13034    :ivar state: The operation state. Possible values include: "Pending", "InProgress",
13035     "Succeeded", "Failed", "CancelInProgress", "Cancelled".
13036    :vartype state: str or ~azure.mgmt.sql.models.ManagementOperationState
13037    :ivar error_code: The operation error code.
13038    :vartype error_code: int
13039    :ivar error_description: The operation error description.
13040    :vartype error_description: str
13041    :ivar error_severity: The operation error severity.
13042    :vartype error_severity: int
13043    :ivar is_user_error: Whether or not the error is a user error.
13044    :vartype is_user_error: bool
13045    :ivar estimated_completion_time: The estimated completion time of the operation.
13046    :vartype estimated_completion_time: ~datetime.datetime
13047    :ivar description: The operation description.
13048    :vartype description: str
13049    :ivar is_cancellable: Whether the operation can be cancelled.
13050    :vartype is_cancellable: bool
13051    """
13052
13053    _validation = {
13054        'id': {'readonly': True},
13055        'name': {'readonly': True},
13056        'type': {'readonly': True},
13057        'operation': {'readonly': True},
13058        'operation_friendly_name': {'readonly': True},
13059        'percent_complete': {'readonly': True},
13060        'server_name': {'readonly': True},
13061        'start_time': {'readonly': True},
13062        'state': {'readonly': True},
13063        'error_code': {'readonly': True},
13064        'error_description': {'readonly': True},
13065        'error_severity': {'readonly': True},
13066        'is_user_error': {'readonly': True},
13067        'estimated_completion_time': {'readonly': True},
13068        'description': {'readonly': True},
13069        'is_cancellable': {'readonly': True},
13070    }
13071
13072    _attribute_map = {
13073        'id': {'key': 'id', 'type': 'str'},
13074        'name': {'key': 'name', 'type': 'str'},
13075        'type': {'key': 'type', 'type': 'str'},
13076        'operation': {'key': 'properties.operation', 'type': 'str'},
13077        'operation_friendly_name': {'key': 'properties.operationFriendlyName', 'type': 'str'},
13078        'percent_complete': {'key': 'properties.percentComplete', 'type': 'int'},
13079        'server_name': {'key': 'properties.serverName', 'type': 'str'},
13080        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
13081        'state': {'key': 'properties.state', 'type': 'str'},
13082        'error_code': {'key': 'properties.errorCode', 'type': 'int'},
13083        'error_description': {'key': 'properties.errorDescription', 'type': 'str'},
13084        'error_severity': {'key': 'properties.errorSeverity', 'type': 'int'},
13085        'is_user_error': {'key': 'properties.isUserError', 'type': 'bool'},
13086        'estimated_completion_time': {'key': 'properties.estimatedCompletionTime', 'type': 'iso-8601'},
13087        'description': {'key': 'properties.description', 'type': 'str'},
13088        'is_cancellable': {'key': 'properties.isCancellable', 'type': 'bool'},
13089    }
13090
13091    def __init__(
13092        self,
13093        **kwargs
13094    ):
13095        super(ServerOperation, self).__init__(**kwargs)
13096        self.operation = None
13097        self.operation_friendly_name = None
13098        self.percent_complete = None
13099        self.server_name = None
13100        self.start_time = None
13101        self.state = None
13102        self.error_code = None
13103        self.error_description = None
13104        self.error_severity = None
13105        self.is_user_error = None
13106        self.estimated_completion_time = None
13107        self.description = None
13108        self.is_cancellable = None
13109
13110
13111class ServerOperationListResult(msrest.serialization.Model):
13112    """The response to a list server operations request.
13113
13114    Variables are only populated by the server, and will be ignored when sending a request.
13115
13116    :ivar value: Array of results.
13117    :vartype value: list[~azure.mgmt.sql.models.ServerOperation]
13118    :ivar next_link: Link to retrieve next page of results.
13119    :vartype next_link: str
13120    """
13121
13122    _validation = {
13123        'value': {'readonly': True},
13124        'next_link': {'readonly': True},
13125    }
13126
13127    _attribute_map = {
13128        'value': {'key': 'value', 'type': '[ServerOperation]'},
13129        'next_link': {'key': 'nextLink', 'type': 'str'},
13130    }
13131
13132    def __init__(
13133        self,
13134        **kwargs
13135    ):
13136        super(ServerOperationListResult, self).__init__(**kwargs)
13137        self.value = None
13138        self.next_link = None
13139
13140
13141class ServerPrivateEndpointConnection(msrest.serialization.Model):
13142    """A private endpoint connection under a server.
13143
13144    Variables are only populated by the server, and will be ignored when sending a request.
13145
13146    :ivar id: Resource ID.
13147    :vartype id: str
13148    :ivar properties: Private endpoint connection properties.
13149    :vartype properties: ~azure.mgmt.sql.models.PrivateEndpointConnectionProperties
13150    """
13151
13152    _validation = {
13153        'id': {'readonly': True},
13154        'properties': {'readonly': True},
13155    }
13156
13157    _attribute_map = {
13158        'id': {'key': 'id', 'type': 'str'},
13159        'properties': {'key': 'properties', 'type': 'PrivateEndpointConnectionProperties'},
13160    }
13161
13162    def __init__(
13163        self,
13164        **kwargs
13165    ):
13166        super(ServerPrivateEndpointConnection, self).__init__(**kwargs)
13167        self.id = None
13168        self.properties = None
13169
13170
13171class ServerSecurityAlertPolicy(ProxyResource):
13172    """A server security alert policy.
13173
13174    Variables are only populated by the server, and will be ignored when sending a request.
13175
13176    :ivar id: Resource ID.
13177    :vartype id: str
13178    :ivar name: Resource name.
13179    :vartype name: str
13180    :ivar type: Resource type.
13181    :vartype type: str
13182    :ivar system_data: SystemData of SecurityAlertPolicyResource.
13183    :vartype system_data: ~azure.mgmt.sql.models.SystemData
13184    :param state: Specifies the state of the policy, whether it is enabled or disabled or a policy
13185     has not been applied yet on the specific database. Possible values include: "Enabled",
13186     "Disabled".
13187    :type state: str or ~azure.mgmt.sql.models.SecurityAlertsPolicyState
13188    :param disabled_alerts: Specifies an array of alerts that are disabled. Allowed values are:
13189     Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly, Data_Exfiltration, Unsafe_Action,
13190     Brute_Force.
13191    :type disabled_alerts: list[str]
13192    :param email_addresses: Specifies an array of e-mail addresses to which the alert is sent.
13193    :type email_addresses: list[str]
13194    :param email_account_admins: Specifies that the alert is sent to the account administrators.
13195    :type email_account_admins: bool
13196    :param storage_endpoint: Specifies the blob storage endpoint (e.g.
13197     https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection
13198     audit logs.
13199    :type storage_endpoint: str
13200    :param storage_account_access_key: Specifies the identifier key of the Threat Detection audit
13201     storage account.
13202    :type storage_account_access_key: str
13203    :param retention_days: Specifies the number of days to keep in the Threat Detection audit logs.
13204    :type retention_days: int
13205    :ivar creation_time: Specifies the UTC creation time of the policy.
13206    :vartype creation_time: ~datetime.datetime
13207    """
13208
13209    _validation = {
13210        'id': {'readonly': True},
13211        'name': {'readonly': True},
13212        'type': {'readonly': True},
13213        'system_data': {'readonly': True},
13214        'creation_time': {'readonly': True},
13215    }
13216
13217    _attribute_map = {
13218        'id': {'key': 'id', 'type': 'str'},
13219        'name': {'key': 'name', 'type': 'str'},
13220        'type': {'key': 'type', 'type': 'str'},
13221        'system_data': {'key': 'systemData', 'type': 'SystemData'},
13222        'state': {'key': 'properties.state', 'type': 'str'},
13223        'disabled_alerts': {'key': 'properties.disabledAlerts', 'type': '[str]'},
13224        'email_addresses': {'key': 'properties.emailAddresses', 'type': '[str]'},
13225        'email_account_admins': {'key': 'properties.emailAccountAdmins', 'type': 'bool'},
13226        'storage_endpoint': {'key': 'properties.storageEndpoint', 'type': 'str'},
13227        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
13228        'retention_days': {'key': 'properties.retentionDays', 'type': 'int'},
13229        'creation_time': {'key': 'properties.creationTime', 'type': 'iso-8601'},
13230    }
13231
13232    def __init__(
13233        self,
13234        **kwargs
13235    ):
13236        super(ServerSecurityAlertPolicy, self).__init__(**kwargs)
13237        self.system_data = None
13238        self.state = kwargs.get('state', None)
13239        self.disabled_alerts = kwargs.get('disabled_alerts', None)
13240        self.email_addresses = kwargs.get('email_addresses', None)
13241        self.email_account_admins = kwargs.get('email_account_admins', None)
13242        self.storage_endpoint = kwargs.get('storage_endpoint', None)
13243        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
13244        self.retention_days = kwargs.get('retention_days', None)
13245        self.creation_time = None
13246
13247
13248class ServerTrustGroup(ProxyResource):
13249    """A server trust group.
13250
13251    Variables are only populated by the server, and will be ignored when sending a request.
13252
13253    :ivar id: Resource ID.
13254    :vartype id: str
13255    :ivar name: Resource name.
13256    :vartype name: str
13257    :ivar type: Resource type.
13258    :vartype type: str
13259    :param group_members: Group members information for the server trust group.
13260    :type group_members: list[~azure.mgmt.sql.models.ServerInfo]
13261    :param trust_scopes: Trust scope of the server trust group.
13262    :type trust_scopes: list[str or
13263     ~azure.mgmt.sql.models.ServerTrustGroupPropertiesTrustScopesItem]
13264    """
13265
13266    _validation = {
13267        'id': {'readonly': True},
13268        'name': {'readonly': True},
13269        'type': {'readonly': True},
13270    }
13271
13272    _attribute_map = {
13273        'id': {'key': 'id', 'type': 'str'},
13274        'name': {'key': 'name', 'type': 'str'},
13275        'type': {'key': 'type', 'type': 'str'},
13276        'group_members': {'key': 'properties.groupMembers', 'type': '[ServerInfo]'},
13277        'trust_scopes': {'key': 'properties.trustScopes', 'type': '[str]'},
13278    }
13279
13280    def __init__(
13281        self,
13282        **kwargs
13283    ):
13284        super(ServerTrustGroup, self).__init__(**kwargs)
13285        self.group_members = kwargs.get('group_members', None)
13286        self.trust_scopes = kwargs.get('trust_scopes', None)
13287
13288
13289class ServerTrustGroupListResult(msrest.serialization.Model):
13290    """A list of server trust groups.
13291
13292    Variables are only populated by the server, and will be ignored when sending a request.
13293
13294    :ivar value: Array of results.
13295    :vartype value: list[~azure.mgmt.sql.models.ServerTrustGroup]
13296    :ivar next_link: Link to retrieve next page of results.
13297    :vartype next_link: str
13298    """
13299
13300    _validation = {
13301        'value': {'readonly': True},
13302        'next_link': {'readonly': True},
13303    }
13304
13305    _attribute_map = {
13306        'value': {'key': 'value', 'type': '[ServerTrustGroup]'},
13307        'next_link': {'key': 'nextLink', 'type': 'str'},
13308    }
13309
13310    def __init__(
13311        self,
13312        **kwargs
13313    ):
13314        super(ServerTrustGroupListResult, self).__init__(**kwargs)
13315        self.value = None
13316        self.next_link = None
13317
13318
13319class ServerUpdate(msrest.serialization.Model):
13320    """An update request for an Azure SQL Database server.
13321
13322    Variables are only populated by the server, and will be ignored when sending a request.
13323
13324    :param identity: Server identity.
13325    :type identity: ~azure.mgmt.sql.models.ResourceIdentity
13326    :param tags: A set of tags. Resource tags.
13327    :type tags: dict[str, str]
13328    :param administrator_login: Administrator username for the server. Once created it cannot be
13329     changed.
13330    :type administrator_login: str
13331    :param administrator_login_password: The administrator login password (required for server
13332     creation).
13333    :type administrator_login_password: str
13334    :param version: The version of the server.
13335    :type version: str
13336    :ivar state: The state of the server.
13337    :vartype state: str
13338    :ivar fully_qualified_domain_name: The fully qualified domain name of the server.
13339    :vartype fully_qualified_domain_name: str
13340    :ivar private_endpoint_connections: List of private endpoint connections on a server.
13341    :vartype private_endpoint_connections:
13342     list[~azure.mgmt.sql.models.ServerPrivateEndpointConnection]
13343    :param minimal_tls_version: Minimal TLS version. Allowed values: '1.0', '1.1', '1.2'.
13344    :type minimal_tls_version: str
13345    :param public_network_access: Whether or not public endpoint access is allowed for this server.
13346     Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible values include:
13347     "Enabled", "Disabled".
13348    :type public_network_access: str or ~azure.mgmt.sql.models.ServerNetworkAccessFlag
13349    :ivar workspace_feature: Whether or not existing server has a workspace created and if it
13350     allows connection from workspace. Possible values include: "Connected", "Disconnected".
13351    :vartype workspace_feature: str or ~azure.mgmt.sql.models.ServerWorkspaceFeature
13352    :param primary_user_assigned_identity_id: The resource id of a user assigned identity to be
13353     used by default.
13354    :type primary_user_assigned_identity_id: str
13355    :param federated_client_id: The Client id used for cross tenant CMK scenario.
13356    :type federated_client_id: str
13357    :param key_id: A CMK URI of the key to use for encryption.
13358    :type key_id: str
13359    :param administrators: The Azure Active Directory identity of the server.
13360    :type administrators: ~azure.mgmt.sql.models.ServerExternalAdministrator
13361    :param restrict_outbound_network_access: Whether or not to restrict outbound network access for
13362     this server.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. Possible
13363     values include: "Enabled", "Disabled".
13364    :type restrict_outbound_network_access: str or ~azure.mgmt.sql.models.ServerNetworkAccessFlag
13365    """
13366
13367    _validation = {
13368        'state': {'readonly': True},
13369        'fully_qualified_domain_name': {'readonly': True},
13370        'private_endpoint_connections': {'readonly': True},
13371        'workspace_feature': {'readonly': True},
13372    }
13373
13374    _attribute_map = {
13375        'identity': {'key': 'identity', 'type': 'ResourceIdentity'},
13376        'tags': {'key': 'tags', 'type': '{str}'},
13377        'administrator_login': {'key': 'properties.administratorLogin', 'type': 'str'},
13378        'administrator_login_password': {'key': 'properties.administratorLoginPassword', 'type': 'str'},
13379        'version': {'key': 'properties.version', 'type': 'str'},
13380        'state': {'key': 'properties.state', 'type': 'str'},
13381        'fully_qualified_domain_name': {'key': 'properties.fullyQualifiedDomainName', 'type': 'str'},
13382        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[ServerPrivateEndpointConnection]'},
13383        'minimal_tls_version': {'key': 'properties.minimalTlsVersion', 'type': 'str'},
13384        'public_network_access': {'key': 'properties.publicNetworkAccess', 'type': 'str'},
13385        'workspace_feature': {'key': 'properties.workspaceFeature', 'type': 'str'},
13386        'primary_user_assigned_identity_id': {'key': 'properties.primaryUserAssignedIdentityId', 'type': 'str'},
13387        'federated_client_id': {'key': 'properties.federatedClientId', 'type': 'str'},
13388        'key_id': {'key': 'properties.keyId', 'type': 'str'},
13389        'administrators': {'key': 'properties.administrators', 'type': 'ServerExternalAdministrator'},
13390        'restrict_outbound_network_access': {'key': 'properties.restrictOutboundNetworkAccess', 'type': 'str'},
13391    }
13392
13393    def __init__(
13394        self,
13395        **kwargs
13396    ):
13397        super(ServerUpdate, self).__init__(**kwargs)
13398        self.identity = kwargs.get('identity', None)
13399        self.tags = kwargs.get('tags', None)
13400        self.administrator_login = kwargs.get('administrator_login', None)
13401        self.administrator_login_password = kwargs.get('administrator_login_password', None)
13402        self.version = kwargs.get('version', None)
13403        self.state = None
13404        self.fully_qualified_domain_name = None
13405        self.private_endpoint_connections = None
13406        self.minimal_tls_version = kwargs.get('minimal_tls_version', None)
13407        self.public_network_access = kwargs.get('public_network_access', None)
13408        self.workspace_feature = None
13409        self.primary_user_assigned_identity_id = kwargs.get('primary_user_assigned_identity_id', None)
13410        self.federated_client_id = kwargs.get('federated_client_id', None)
13411        self.key_id = kwargs.get('key_id', None)
13412        self.administrators = kwargs.get('administrators', None)
13413        self.restrict_outbound_network_access = kwargs.get('restrict_outbound_network_access', None)
13414
13415
13416class ServerUsage(msrest.serialization.Model):
13417    """Represents server metrics.
13418
13419    Variables are only populated by the server, and will be ignored when sending a request.
13420
13421    :ivar name: Name of the server usage metric.
13422    :vartype name: str
13423    :ivar resource_name: The name of the resource.
13424    :vartype resource_name: str
13425    :ivar display_name: The metric display name.
13426    :vartype display_name: str
13427    :ivar current_value: The current value of the metric.
13428    :vartype current_value: float
13429    :ivar limit: The current limit of the metric.
13430    :vartype limit: float
13431    :ivar unit: The units of the metric.
13432    :vartype unit: str
13433    :ivar next_reset_time: The next reset time for the metric (ISO8601 format).
13434    :vartype next_reset_time: ~datetime.datetime
13435    """
13436
13437    _validation = {
13438        'name': {'readonly': True},
13439        'resource_name': {'readonly': True},
13440        'display_name': {'readonly': True},
13441        'current_value': {'readonly': True},
13442        'limit': {'readonly': True},
13443        'unit': {'readonly': True},
13444        'next_reset_time': {'readonly': True},
13445    }
13446
13447    _attribute_map = {
13448        'name': {'key': 'name', 'type': 'str'},
13449        'resource_name': {'key': 'resourceName', 'type': 'str'},
13450        'display_name': {'key': 'displayName', 'type': 'str'},
13451        'current_value': {'key': 'currentValue', 'type': 'float'},
13452        'limit': {'key': 'limit', 'type': 'float'},
13453        'unit': {'key': 'unit', 'type': 'str'},
13454        'next_reset_time': {'key': 'nextResetTime', 'type': 'iso-8601'},
13455    }
13456
13457    def __init__(
13458        self,
13459        **kwargs
13460    ):
13461        super(ServerUsage, self).__init__(**kwargs)
13462        self.name = None
13463        self.resource_name = None
13464        self.display_name = None
13465        self.current_value = None
13466        self.limit = None
13467        self.unit = None
13468        self.next_reset_time = None
13469
13470
13471class ServerUsageListResult(msrest.serialization.Model):
13472    """Represents the response to a list server metrics request.
13473
13474    All required parameters must be populated in order to send to Azure.
13475
13476    :param value: Required. The list of server metrics for the server.
13477    :type value: list[~azure.mgmt.sql.models.ServerUsage]
13478    """
13479
13480    _validation = {
13481        'value': {'required': True},
13482    }
13483
13484    _attribute_map = {
13485        'value': {'key': 'value', 'type': '[ServerUsage]'},
13486    }
13487
13488    def __init__(
13489        self,
13490        **kwargs
13491    ):
13492        super(ServerUsageListResult, self).__init__(**kwargs)
13493        self.value = kwargs['value']
13494
13495
13496class ServerVersionCapability(msrest.serialization.Model):
13497    """The server capability.
13498
13499    Variables are only populated by the server, and will be ignored when sending a request.
13500
13501    :ivar name: The server version name.
13502    :vartype name: str
13503    :ivar supported_editions: The list of supported database editions.
13504    :vartype supported_editions: list[~azure.mgmt.sql.models.EditionCapability]
13505    :ivar supported_elastic_pool_editions: The list of supported elastic pool editions.
13506    :vartype supported_elastic_pool_editions:
13507     list[~azure.mgmt.sql.models.ElasticPoolEditionCapability]
13508    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
13509     "Default", "Disabled".
13510    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
13511    :param reason: The reason for the capability not being available.
13512    :type reason: str
13513    """
13514
13515    _validation = {
13516        'name': {'readonly': True},
13517        'supported_editions': {'readonly': True},
13518        'supported_elastic_pool_editions': {'readonly': True},
13519        'status': {'readonly': True},
13520    }
13521
13522    _attribute_map = {
13523        'name': {'key': 'name', 'type': 'str'},
13524        'supported_editions': {'key': 'supportedEditions', 'type': '[EditionCapability]'},
13525        'supported_elastic_pool_editions': {'key': 'supportedElasticPoolEditions', 'type': '[ElasticPoolEditionCapability]'},
13526        'status': {'key': 'status', 'type': 'str'},
13527        'reason': {'key': 'reason', 'type': 'str'},
13528    }
13529
13530    def __init__(
13531        self,
13532        **kwargs
13533    ):
13534        super(ServerVersionCapability, self).__init__(**kwargs)
13535        self.name = None
13536        self.supported_editions = None
13537        self.supported_elastic_pool_editions = None
13538        self.status = None
13539        self.reason = kwargs.get('reason', None)
13540
13541
13542class ServerVulnerabilityAssessment(ProxyResource):
13543    """A server vulnerability assessment.
13544
13545    Variables are only populated by the server, and will be ignored when sending a request.
13546
13547    :ivar id: Resource ID.
13548    :vartype id: str
13549    :ivar name: Resource name.
13550    :vartype name: str
13551    :ivar type: Resource type.
13552    :vartype type: str
13553    :param storage_container_path: A blob storage container path to hold the scan results (e.g.
13554     https://myStorage.blob.core.windows.net/VaScans/).
13555    :type storage_container_path: str
13556    :param storage_container_sas_key: A shared access signature (SAS Key) that has write access to
13557     the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey'
13558     isn't specified, StorageContainerSasKey is required. Applies only if the storage account is not
13559     behind a Vnet or a firewall.
13560    :type storage_container_sas_key: str
13561    :param storage_account_access_key: Specifies the identifier key of the storage account for
13562     vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified,
13563     storageAccountAccessKey is required. Applies only if the storage account is not behind a Vnet
13564     or a firewall.
13565    :type storage_account_access_key: str
13566    :param recurring_scans: The recurring scans settings.
13567    :type recurring_scans: ~azure.mgmt.sql.models.VulnerabilityAssessmentRecurringScansProperties
13568    """
13569
13570    _validation = {
13571        'id': {'readonly': True},
13572        'name': {'readonly': True},
13573        'type': {'readonly': True},
13574    }
13575
13576    _attribute_map = {
13577        'id': {'key': 'id', 'type': 'str'},
13578        'name': {'key': 'name', 'type': 'str'},
13579        'type': {'key': 'type', 'type': 'str'},
13580        'storage_container_path': {'key': 'properties.storageContainerPath', 'type': 'str'},
13581        'storage_container_sas_key': {'key': 'properties.storageContainerSasKey', 'type': 'str'},
13582        'storage_account_access_key': {'key': 'properties.storageAccountAccessKey', 'type': 'str'},
13583        'recurring_scans': {'key': 'properties.recurringScans', 'type': 'VulnerabilityAssessmentRecurringScansProperties'},
13584    }
13585
13586    def __init__(
13587        self,
13588        **kwargs
13589    ):
13590        super(ServerVulnerabilityAssessment, self).__init__(**kwargs)
13591        self.storage_container_path = kwargs.get('storage_container_path', None)
13592        self.storage_container_sas_key = kwargs.get('storage_container_sas_key', None)
13593        self.storage_account_access_key = kwargs.get('storage_account_access_key', None)
13594        self.recurring_scans = kwargs.get('recurring_scans', None)
13595
13596
13597class ServerVulnerabilityAssessmentListResult(msrest.serialization.Model):
13598    """A list of the server's vulnerability assessments.
13599
13600    Variables are only populated by the server, and will be ignored when sending a request.
13601
13602    :ivar value: Array of results.
13603    :vartype value: list[~azure.mgmt.sql.models.ServerVulnerabilityAssessment]
13604    :ivar next_link: Link to retrieve next page of results.
13605    :vartype next_link: str
13606    """
13607
13608    _validation = {
13609        'value': {'readonly': True},
13610        'next_link': {'readonly': True},
13611    }
13612
13613    _attribute_map = {
13614        'value': {'key': 'value', 'type': '[ServerVulnerabilityAssessment]'},
13615        'next_link': {'key': 'nextLink', 'type': 'str'},
13616    }
13617
13618    def __init__(
13619        self,
13620        **kwargs
13621    ):
13622        super(ServerVulnerabilityAssessmentListResult, self).__init__(**kwargs)
13623        self.value = None
13624        self.next_link = None
13625
13626
13627class ServiceObjective(ProxyResource):
13628    """Represents a database service objective.
13629
13630    Variables are only populated by the server, and will be ignored when sending a request.
13631
13632    :ivar id: Resource ID.
13633    :vartype id: str
13634    :ivar name: Resource name.
13635    :vartype name: str
13636    :ivar type: Resource type.
13637    :vartype type: str
13638    :ivar service_objective_name: The name for the service objective.
13639    :vartype service_objective_name: str
13640    :ivar is_default: Gets whether the service level objective is the default service objective.
13641    :vartype is_default: bool
13642    :ivar is_system: Gets whether the service level objective is a system service objective.
13643    :vartype is_system: bool
13644    :ivar description: The description for the service level objective.
13645    :vartype description: str
13646    :ivar enabled: Gets whether the service level objective is enabled.
13647    :vartype enabled: bool
13648    """
13649
13650    _validation = {
13651        'id': {'readonly': True},
13652        'name': {'readonly': True},
13653        'type': {'readonly': True},
13654        'service_objective_name': {'readonly': True},
13655        'is_default': {'readonly': True},
13656        'is_system': {'readonly': True},
13657        'description': {'readonly': True},
13658        'enabled': {'readonly': True},
13659    }
13660
13661    _attribute_map = {
13662        'id': {'key': 'id', 'type': 'str'},
13663        'name': {'key': 'name', 'type': 'str'},
13664        'type': {'key': 'type', 'type': 'str'},
13665        'service_objective_name': {'key': 'properties.serviceObjectiveName', 'type': 'str'},
13666        'is_default': {'key': 'properties.isDefault', 'type': 'bool'},
13667        'is_system': {'key': 'properties.isSystem', 'type': 'bool'},
13668        'description': {'key': 'properties.description', 'type': 'str'},
13669        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
13670    }
13671
13672    def __init__(
13673        self,
13674        **kwargs
13675    ):
13676        super(ServiceObjective, self).__init__(**kwargs)
13677        self.service_objective_name = None
13678        self.is_default = None
13679        self.is_system = None
13680        self.description = None
13681        self.enabled = None
13682
13683
13684class ServiceObjectiveCapability(msrest.serialization.Model):
13685    """The service objectives capability.
13686
13687    Variables are only populated by the server, and will be ignored when sending a request.
13688
13689    :ivar id: The unique ID of the service objective.
13690    :vartype id: str
13691    :ivar name: The service objective name.
13692    :vartype name: str
13693    :ivar supported_max_sizes: The list of supported maximum database sizes.
13694    :vartype supported_max_sizes: list[~azure.mgmt.sql.models.MaxSizeRangeCapability]
13695    :ivar performance_level: The performance level.
13696    :vartype performance_level: ~azure.mgmt.sql.models.PerformanceLevelCapability
13697    :ivar sku: The sku.
13698    :vartype sku: ~azure.mgmt.sql.models.Sku
13699    :ivar supported_license_types: List of supported license types.
13700    :vartype supported_license_types: list[~azure.mgmt.sql.models.LicenseTypeCapability]
13701    :ivar included_max_size: The included (free) max size.
13702    :vartype included_max_size: ~azure.mgmt.sql.models.MaxSizeCapability
13703    :ivar zone_redundant: Whether or not zone redundancy is supported for the service objective.
13704    :vartype zone_redundant: bool
13705    :ivar supported_auto_pause_delay: Supported time range for auto pause delay.
13706    :vartype supported_auto_pause_delay: ~azure.mgmt.sql.models.AutoPauseDelayTimeRange
13707    :ivar supported_min_capacities: List of supported min capacities.
13708    :vartype supported_min_capacities: list[~azure.mgmt.sql.models.MinCapacityCapability]
13709    :ivar compute_model: The compute model.
13710    :vartype compute_model: str
13711    :ivar supported_maintenance_configurations: List of supported maintenance configurations.
13712    :vartype supported_maintenance_configurations:
13713     list[~azure.mgmt.sql.models.MaintenanceConfigurationCapability]
13714    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
13715     "Default", "Disabled".
13716    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
13717    :param reason: The reason for the capability not being available.
13718    :type reason: str
13719    """
13720
13721    _validation = {
13722        'id': {'readonly': True},
13723        'name': {'readonly': True},
13724        'supported_max_sizes': {'readonly': True},
13725        'performance_level': {'readonly': True},
13726        'sku': {'readonly': True},
13727        'supported_license_types': {'readonly': True},
13728        'included_max_size': {'readonly': True},
13729        'zone_redundant': {'readonly': True},
13730        'supported_auto_pause_delay': {'readonly': True},
13731        'supported_min_capacities': {'readonly': True},
13732        'compute_model': {'readonly': True},
13733        'supported_maintenance_configurations': {'readonly': True},
13734        'status': {'readonly': True},
13735    }
13736
13737    _attribute_map = {
13738        'id': {'key': 'id', 'type': 'str'},
13739        'name': {'key': 'name', 'type': 'str'},
13740        'supported_max_sizes': {'key': 'supportedMaxSizes', 'type': '[MaxSizeRangeCapability]'},
13741        'performance_level': {'key': 'performanceLevel', 'type': 'PerformanceLevelCapability'},
13742        'sku': {'key': 'sku', 'type': 'Sku'},
13743        'supported_license_types': {'key': 'supportedLicenseTypes', 'type': '[LicenseTypeCapability]'},
13744        'included_max_size': {'key': 'includedMaxSize', 'type': 'MaxSizeCapability'},
13745        'zone_redundant': {'key': 'zoneRedundant', 'type': 'bool'},
13746        'supported_auto_pause_delay': {'key': 'supportedAutoPauseDelay', 'type': 'AutoPauseDelayTimeRange'},
13747        'supported_min_capacities': {'key': 'supportedMinCapacities', 'type': '[MinCapacityCapability]'},
13748        'compute_model': {'key': 'computeModel', 'type': 'str'},
13749        'supported_maintenance_configurations': {'key': 'supportedMaintenanceConfigurations', 'type': '[MaintenanceConfigurationCapability]'},
13750        'status': {'key': 'status', 'type': 'str'},
13751        'reason': {'key': 'reason', 'type': 'str'},
13752    }
13753
13754    def __init__(
13755        self,
13756        **kwargs
13757    ):
13758        super(ServiceObjectiveCapability, self).__init__(**kwargs)
13759        self.id = None
13760        self.name = None
13761        self.supported_max_sizes = None
13762        self.performance_level = None
13763        self.sku = None
13764        self.supported_license_types = None
13765        self.included_max_size = None
13766        self.zone_redundant = None
13767        self.supported_auto_pause_delay = None
13768        self.supported_min_capacities = None
13769        self.compute_model = None
13770        self.supported_maintenance_configurations = None
13771        self.status = None
13772        self.reason = kwargs.get('reason', None)
13773
13774
13775class ServiceObjectiveListResult(msrest.serialization.Model):
13776    """Represents the response to a get database service objectives request.
13777
13778    All required parameters must be populated in order to send to Azure.
13779
13780    :param value: Required. The list of database service objectives.
13781    :type value: list[~azure.mgmt.sql.models.ServiceObjective]
13782    """
13783
13784    _validation = {
13785        'value': {'required': True},
13786    }
13787
13788    _attribute_map = {
13789        'value': {'key': 'value', 'type': '[ServiceObjective]'},
13790    }
13791
13792    def __init__(
13793        self,
13794        **kwargs
13795    ):
13796        super(ServiceObjectiveListResult, self).__init__(**kwargs)
13797        self.value = kwargs['value']
13798
13799
13800class Sku(msrest.serialization.Model):
13801    """An ARM Resource SKU.
13802
13803    All required parameters must be populated in order to send to Azure.
13804
13805    :param name: Required. The name of the SKU, typically, a letter + Number code, e.g. P3.
13806    :type name: str
13807    :param tier: The tier or edition of the particular SKU, e.g. Basic, Premium.
13808    :type tier: str
13809    :param size: Size of the particular SKU.
13810    :type size: str
13811    :param family: If the service has different generations of hardware, for the same SKU, then
13812     that can be captured here.
13813    :type family: str
13814    :param capacity: Capacity of the particular SKU.
13815    :type capacity: int
13816    """
13817
13818    _validation = {
13819        'name': {'required': True},
13820    }
13821
13822    _attribute_map = {
13823        'name': {'key': 'name', 'type': 'str'},
13824        'tier': {'key': 'tier', 'type': 'str'},
13825        'size': {'key': 'size', 'type': 'str'},
13826        'family': {'key': 'family', 'type': 'str'},
13827        'capacity': {'key': 'capacity', 'type': 'int'},
13828    }
13829
13830    def __init__(
13831        self,
13832        **kwargs
13833    ):
13834        super(Sku, self).__init__(**kwargs)
13835        self.name = kwargs['name']
13836        self.tier = kwargs.get('tier', None)
13837        self.size = kwargs.get('size', None)
13838        self.family = kwargs.get('family', None)
13839        self.capacity = kwargs.get('capacity', None)
13840
13841
13842class SloUsageMetric(msrest.serialization.Model):
13843    """A Slo Usage Metric.
13844
13845    Variables are only populated by the server, and will be ignored when sending a request.
13846
13847    :ivar service_level_objective: The serviceLevelObjective for SLO usage metric. Possible values
13848     include: "System", "System0", "System1", "System2", "System3", "System4", "System2L",
13849     "System3L", "System4L", "Free", "Basic", "S0", "S1", "S2", "S3", "S4", "S6", "S7", "S9", "S12",
13850     "P1", "P2", "P3", "P4", "P6", "P11", "P15", "PRS1", "PRS2", "PRS4", "PRS6", "DW100", "DW200",
13851     "DW300", "DW400", "DW500", "DW600", "DW1000", "DW1200", "DW1000c", "DW1500", "DW1500c",
13852     "DW2000", "DW2000c", "DW3000", "DW2500c", "DW3000c", "DW6000", "DW5000c", "DW6000c", "DW7500c",
13853     "DW10000c", "DW15000c", "DW30000c", "DS100", "DS200", "DS300", "DS400", "DS500", "DS600",
13854     "DS1000", "DS1200", "DS1500", "DS2000", "ElasticPool".
13855    :vartype service_level_objective: str or ~azure.mgmt.sql.models.ServiceObjectiveName
13856    :ivar service_level_objective_id: The serviceLevelObjectiveId for SLO usage metric.
13857    :vartype service_level_objective_id: str
13858    :ivar in_range_time_ratio: Gets or sets inRangeTimeRatio for SLO usage metric.
13859    :vartype in_range_time_ratio: float
13860    """
13861
13862    _validation = {
13863        'service_level_objective': {'readonly': True},
13864        'service_level_objective_id': {'readonly': True},
13865        'in_range_time_ratio': {'readonly': True},
13866    }
13867
13868    _attribute_map = {
13869        'service_level_objective': {'key': 'serviceLevelObjective', 'type': 'str'},
13870        'service_level_objective_id': {'key': 'serviceLevelObjectiveId', 'type': 'str'},
13871        'in_range_time_ratio': {'key': 'inRangeTimeRatio', 'type': 'float'},
13872    }
13873
13874    def __init__(
13875        self,
13876        **kwargs
13877    ):
13878        super(SloUsageMetric, self).__init__(**kwargs)
13879        self.service_level_objective = None
13880        self.service_level_objective_id = None
13881        self.in_range_time_ratio = None
13882
13883
13884class SqlAgentConfiguration(ProxyResource):
13885    """A recoverable managed database resource.
13886
13887    Variables are only populated by the server, and will be ignored when sending a request.
13888
13889    :ivar id: Resource ID.
13890    :vartype id: str
13891    :ivar name: Resource name.
13892    :vartype name: str
13893    :ivar type: Resource type.
13894    :vartype type: str
13895    :param state: The state of Sql Agent. Possible values include: "Enabled", "Disabled".
13896    :type state: str or ~azure.mgmt.sql.models.SqlAgentConfigurationPropertiesState
13897    """
13898
13899    _validation = {
13900        'id': {'readonly': True},
13901        'name': {'readonly': True},
13902        'type': {'readonly': True},
13903    }
13904
13905    _attribute_map = {
13906        'id': {'key': 'id', 'type': 'str'},
13907        'name': {'key': 'name', 'type': 'str'},
13908        'type': {'key': 'type', 'type': 'str'},
13909        'state': {'key': 'properties.state', 'type': 'str'},
13910    }
13911
13912    def __init__(
13913        self,
13914        **kwargs
13915    ):
13916        super(SqlAgentConfiguration, self).__init__(**kwargs)
13917        self.state = kwargs.get('state', None)
13918
13919
13920class StorageCapability(msrest.serialization.Model):
13921    """The storage account type capability.
13922
13923    Variables are only populated by the server, and will be ignored when sending a request.
13924
13925    :ivar storage_account_type: The storage account type for the database's backups. Possible
13926     values include: "GRS", "LRS", "ZRS".
13927    :vartype storage_account_type: str or
13928     ~azure.mgmt.sql.models.StorageCapabilityStorageAccountType
13929    :ivar status: The status of the capability. Possible values include: "Visible", "Available",
13930     "Default", "Disabled".
13931    :vartype status: str or ~azure.mgmt.sql.models.CapabilityStatus
13932    :param reason: The reason for the capability not being available.
13933    :type reason: str
13934    """
13935
13936    _validation = {
13937        'storage_account_type': {'readonly': True},
13938        'status': {'readonly': True},
13939    }
13940
13941    _attribute_map = {
13942        'storage_account_type': {'key': 'storageAccountType', 'type': 'str'},
13943        'status': {'key': 'status', 'type': 'str'},
13944        'reason': {'key': 'reason', 'type': 'str'},
13945    }
13946
13947    def __init__(
13948        self,
13949        **kwargs
13950    ):
13951        super(StorageCapability, self).__init__(**kwargs)
13952        self.storage_account_type = None
13953        self.status = None
13954        self.reason = kwargs.get('reason', None)
13955
13956
13957class SubscriptionUsage(ProxyResource):
13958    """Usage Metric of a Subscription in a Location.
13959
13960    Variables are only populated by the server, and will be ignored when sending a request.
13961
13962    :ivar id: Resource ID.
13963    :vartype id: str
13964    :ivar name: Resource name.
13965    :vartype name: str
13966    :ivar type: Resource type.
13967    :vartype type: str
13968    :ivar display_name: User-readable name of the metric.
13969    :vartype display_name: str
13970    :ivar current_value: Current value of the metric.
13971    :vartype current_value: float
13972    :ivar limit: Boundary value of the metric.
13973    :vartype limit: float
13974    :ivar unit: Unit of the metric.
13975    :vartype unit: str
13976    """
13977
13978    _validation = {
13979        'id': {'readonly': True},
13980        'name': {'readonly': True},
13981        'type': {'readonly': True},
13982        'display_name': {'readonly': True},
13983        'current_value': {'readonly': True},
13984        'limit': {'readonly': True},
13985        'unit': {'readonly': True},
13986    }
13987
13988    _attribute_map = {
13989        'id': {'key': 'id', 'type': 'str'},
13990        'name': {'key': 'name', 'type': 'str'},
13991        'type': {'key': 'type', 'type': 'str'},
13992        'display_name': {'key': 'properties.displayName', 'type': 'str'},
13993        'current_value': {'key': 'properties.currentValue', 'type': 'float'},
13994        'limit': {'key': 'properties.limit', 'type': 'float'},
13995        'unit': {'key': 'properties.unit', 'type': 'str'},
13996    }
13997
13998    def __init__(
13999        self,
14000        **kwargs
14001    ):
14002        super(SubscriptionUsage, self).__init__(**kwargs)
14003        self.display_name = None
14004        self.current_value = None
14005        self.limit = None
14006        self.unit = None
14007
14008
14009class SubscriptionUsageListResult(msrest.serialization.Model):
14010    """A list of subscription usage metrics in a location.
14011
14012    Variables are only populated by the server, and will be ignored when sending a request.
14013
14014    :ivar value: Array of results.
14015    :vartype value: list[~azure.mgmt.sql.models.SubscriptionUsage]
14016    :ivar next_link: Link to retrieve next page of results.
14017    :vartype next_link: str
14018    """
14019
14020    _validation = {
14021        'value': {'readonly': True},
14022        'next_link': {'readonly': True},
14023    }
14024
14025    _attribute_map = {
14026        'value': {'key': 'value', 'type': '[SubscriptionUsage]'},
14027        'next_link': {'key': 'nextLink', 'type': 'str'},
14028    }
14029
14030    def __init__(
14031        self,
14032        **kwargs
14033    ):
14034        super(SubscriptionUsageListResult, self).__init__(**kwargs)
14035        self.value = None
14036        self.next_link = None
14037
14038
14039class SyncAgent(ProxyResource):
14040    """An Azure SQL Database sync agent.
14041
14042    Variables are only populated by the server, and will be ignored when sending a request.
14043
14044    :ivar id: Resource ID.
14045    :vartype id: str
14046    :ivar name: Resource name.
14047    :vartype name: str
14048    :ivar type: Resource type.
14049    :vartype type: str
14050    :ivar name_properties_name: Name of the sync agent.
14051    :vartype name_properties_name: str
14052    :param sync_database_id: ARM resource id of the sync database in the sync agent.
14053    :type sync_database_id: str
14054    :ivar last_alive_time: Last alive time of the sync agent.
14055    :vartype last_alive_time: ~datetime.datetime
14056    :ivar state: State of the sync agent. Possible values include: "Online", "Offline",
14057     "NeverConnected".
14058    :vartype state: str or ~azure.mgmt.sql.models.SyncAgentState
14059    :ivar is_up_to_date: If the sync agent version is up to date.
14060    :vartype is_up_to_date: bool
14061    :ivar expiry_time: Expiration time of the sync agent version.
14062    :vartype expiry_time: ~datetime.datetime
14063    :ivar version: Version of the sync agent.
14064    :vartype version: str
14065    """
14066
14067    _validation = {
14068        'id': {'readonly': True},
14069        'name': {'readonly': True},
14070        'type': {'readonly': True},
14071        'name_properties_name': {'readonly': True},
14072        'last_alive_time': {'readonly': True},
14073        'state': {'readonly': True},
14074        'is_up_to_date': {'readonly': True},
14075        'expiry_time': {'readonly': True},
14076        'version': {'readonly': True},
14077    }
14078
14079    _attribute_map = {
14080        'id': {'key': 'id', 'type': 'str'},
14081        'name': {'key': 'name', 'type': 'str'},
14082        'type': {'key': 'type', 'type': 'str'},
14083        'name_properties_name': {'key': 'properties.name', 'type': 'str'},
14084        'sync_database_id': {'key': 'properties.syncDatabaseId', 'type': 'str'},
14085        'last_alive_time': {'key': 'properties.lastAliveTime', 'type': 'iso-8601'},
14086        'state': {'key': 'properties.state', 'type': 'str'},
14087        'is_up_to_date': {'key': 'properties.isUpToDate', 'type': 'bool'},
14088        'expiry_time': {'key': 'properties.expiryTime', 'type': 'iso-8601'},
14089        'version': {'key': 'properties.version', 'type': 'str'},
14090    }
14091
14092    def __init__(
14093        self,
14094        **kwargs
14095    ):
14096        super(SyncAgent, self).__init__(**kwargs)
14097        self.name_properties_name = None
14098        self.sync_database_id = kwargs.get('sync_database_id', None)
14099        self.last_alive_time = None
14100        self.state = None
14101        self.is_up_to_date = None
14102        self.expiry_time = None
14103        self.version = None
14104
14105
14106class SyncAgentKeyProperties(msrest.serialization.Model):
14107    """Properties of an Azure SQL Database sync agent key.
14108
14109    Variables are only populated by the server, and will be ignored when sending a request.
14110
14111    :ivar sync_agent_key: Key of sync agent.
14112    :vartype sync_agent_key: str
14113    """
14114
14115    _validation = {
14116        'sync_agent_key': {'readonly': True},
14117    }
14118
14119    _attribute_map = {
14120        'sync_agent_key': {'key': 'syncAgentKey', 'type': 'str'},
14121    }
14122
14123    def __init__(
14124        self,
14125        **kwargs
14126    ):
14127        super(SyncAgentKeyProperties, self).__init__(**kwargs)
14128        self.sync_agent_key = None
14129
14130
14131class SyncAgentLinkedDatabase(ProxyResource):
14132    """An Azure SQL Database sync agent linked database.
14133
14134    Variables are only populated by the server, and will be ignored when sending a request.
14135
14136    :ivar id: Resource ID.
14137    :vartype id: str
14138    :ivar name: Resource name.
14139    :vartype name: str
14140    :ivar type: Resource type.
14141    :vartype type: str
14142    :ivar database_type: Type of the sync agent linked database. Possible values include:
14143     "AzureSqlDatabase", "SqlServerDatabase".
14144    :vartype database_type: str or ~azure.mgmt.sql.models.SyncMemberDbType
14145    :ivar database_id: Id of the sync agent linked database.
14146    :vartype database_id: str
14147    :ivar description: Description of the sync agent linked database.
14148    :vartype description: str
14149    :ivar server_name: Server name of the sync agent linked database.
14150    :vartype server_name: str
14151    :ivar database_name: Database name of the sync agent linked database.
14152    :vartype database_name: str
14153    :ivar user_name: User name of the sync agent linked database.
14154    :vartype user_name: str
14155    """
14156
14157    _validation = {
14158        'id': {'readonly': True},
14159        'name': {'readonly': True},
14160        'type': {'readonly': True},
14161        'database_type': {'readonly': True},
14162        'database_id': {'readonly': True},
14163        'description': {'readonly': True},
14164        'server_name': {'readonly': True},
14165        'database_name': {'readonly': True},
14166        'user_name': {'readonly': True},
14167    }
14168
14169    _attribute_map = {
14170        'id': {'key': 'id', 'type': 'str'},
14171        'name': {'key': 'name', 'type': 'str'},
14172        'type': {'key': 'type', 'type': 'str'},
14173        'database_type': {'key': 'properties.databaseType', 'type': 'str'},
14174        'database_id': {'key': 'properties.databaseId', 'type': 'str'},
14175        'description': {'key': 'properties.description', 'type': 'str'},
14176        'server_name': {'key': 'properties.serverName', 'type': 'str'},
14177        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
14178        'user_name': {'key': 'properties.userName', 'type': 'str'},
14179    }
14180
14181    def __init__(
14182        self,
14183        **kwargs
14184    ):
14185        super(SyncAgentLinkedDatabase, self).__init__(**kwargs)
14186        self.database_type = None
14187        self.database_id = None
14188        self.description = None
14189        self.server_name = None
14190        self.database_name = None
14191        self.user_name = None
14192
14193
14194class SyncAgentLinkedDatabaseListResult(msrest.serialization.Model):
14195    """A list of sync agent linked databases.
14196
14197    Variables are only populated by the server, and will be ignored when sending a request.
14198
14199    :ivar value: Array of results.
14200    :vartype value: list[~azure.mgmt.sql.models.SyncAgentLinkedDatabase]
14201    :ivar next_link: Link to retrieve next page of results.
14202    :vartype next_link: str
14203    """
14204
14205    _validation = {
14206        'value': {'readonly': True},
14207        'next_link': {'readonly': True},
14208    }
14209
14210    _attribute_map = {
14211        'value': {'key': 'value', 'type': '[SyncAgentLinkedDatabase]'},
14212        'next_link': {'key': 'nextLink', 'type': 'str'},
14213    }
14214
14215    def __init__(
14216        self,
14217        **kwargs
14218    ):
14219        super(SyncAgentLinkedDatabaseListResult, self).__init__(**kwargs)
14220        self.value = None
14221        self.next_link = None
14222
14223
14224class SyncAgentListResult(msrest.serialization.Model):
14225    """A list of sync agents.
14226
14227    Variables are only populated by the server, and will be ignored when sending a request.
14228
14229    :ivar value: Array of results.
14230    :vartype value: list[~azure.mgmt.sql.models.SyncAgent]
14231    :ivar next_link: Link to retrieve next page of results.
14232    :vartype next_link: str
14233    """
14234
14235    _validation = {
14236        'value': {'readonly': True},
14237        'next_link': {'readonly': True},
14238    }
14239
14240    _attribute_map = {
14241        'value': {'key': 'value', 'type': '[SyncAgent]'},
14242        'next_link': {'key': 'nextLink', 'type': 'str'},
14243    }
14244
14245    def __init__(
14246        self,
14247        **kwargs
14248    ):
14249        super(SyncAgentListResult, self).__init__(**kwargs)
14250        self.value = None
14251        self.next_link = None
14252
14253
14254class SyncDatabaseIdListResult(msrest.serialization.Model):
14255    """A list of sync database ID properties.
14256
14257    Variables are only populated by the server, and will be ignored when sending a request.
14258
14259    :ivar value: Array of results.
14260    :vartype value: list[~azure.mgmt.sql.models.SyncDatabaseIdProperties]
14261    :ivar next_link: Link to retrieve next page of results.
14262    :vartype next_link: str
14263    """
14264
14265    _validation = {
14266        'value': {'readonly': True},
14267        'next_link': {'readonly': True},
14268    }
14269
14270    _attribute_map = {
14271        'value': {'key': 'value', 'type': '[SyncDatabaseIdProperties]'},
14272        'next_link': {'key': 'nextLink', 'type': 'str'},
14273    }
14274
14275    def __init__(
14276        self,
14277        **kwargs
14278    ):
14279        super(SyncDatabaseIdListResult, self).__init__(**kwargs)
14280        self.value = None
14281        self.next_link = None
14282
14283
14284class SyncDatabaseIdProperties(msrest.serialization.Model):
14285    """Properties of the sync database id.
14286
14287    Variables are only populated by the server, and will be ignored when sending a request.
14288
14289    :ivar id: ARM resource id of sync database.
14290    :vartype id: str
14291    """
14292
14293    _validation = {
14294        'id': {'readonly': True},
14295    }
14296
14297    _attribute_map = {
14298        'id': {'key': 'id', 'type': 'str'},
14299    }
14300
14301    def __init__(
14302        self,
14303        **kwargs
14304    ):
14305        super(SyncDatabaseIdProperties, self).__init__(**kwargs)
14306        self.id = None
14307
14308
14309class SyncFullSchemaProperties(msrest.serialization.Model):
14310    """Properties of the database full schema.
14311
14312    Variables are only populated by the server, and will be ignored when sending a request.
14313
14314    :ivar tables: List of tables in the database full schema.
14315    :vartype tables: list[~azure.mgmt.sql.models.SyncFullSchemaTable]
14316    :ivar last_update_time: Last update time of the database schema.
14317    :vartype last_update_time: ~datetime.datetime
14318    """
14319
14320    _validation = {
14321        'tables': {'readonly': True},
14322        'last_update_time': {'readonly': True},
14323    }
14324
14325    _attribute_map = {
14326        'tables': {'key': 'tables', 'type': '[SyncFullSchemaTable]'},
14327        'last_update_time': {'key': 'lastUpdateTime', 'type': 'iso-8601'},
14328    }
14329
14330    def __init__(
14331        self,
14332        **kwargs
14333    ):
14334        super(SyncFullSchemaProperties, self).__init__(**kwargs)
14335        self.tables = None
14336        self.last_update_time = None
14337
14338
14339class SyncFullSchemaPropertiesListResult(msrest.serialization.Model):
14340    """A list of sync schema properties.
14341
14342    Variables are only populated by the server, and will be ignored when sending a request.
14343
14344    :ivar value: Array of results.
14345    :vartype value: list[~azure.mgmt.sql.models.SyncFullSchemaProperties]
14346    :ivar next_link: Link to retrieve next page of results.
14347    :vartype next_link: str
14348    """
14349
14350    _validation = {
14351        'value': {'readonly': True},
14352        'next_link': {'readonly': True},
14353    }
14354
14355    _attribute_map = {
14356        'value': {'key': 'value', 'type': '[SyncFullSchemaProperties]'},
14357        'next_link': {'key': 'nextLink', 'type': 'str'},
14358    }
14359
14360    def __init__(
14361        self,
14362        **kwargs
14363    ):
14364        super(SyncFullSchemaPropertiesListResult, self).__init__(**kwargs)
14365        self.value = None
14366        self.next_link = None
14367
14368
14369class SyncFullSchemaTable(msrest.serialization.Model):
14370    """Properties of the table in the database full schema.
14371
14372    Variables are only populated by the server, and will be ignored when sending a request.
14373
14374    :ivar columns: List of columns in the table of database full schema.
14375    :vartype columns: list[~azure.mgmt.sql.models.SyncFullSchemaTableColumn]
14376    :ivar error_id: Error id of the table.
14377    :vartype error_id: str
14378    :ivar has_error: If there is error in the table.
14379    :vartype has_error: bool
14380    :ivar name: Name of the table.
14381    :vartype name: str
14382    :ivar quoted_name: Quoted name of the table.
14383    :vartype quoted_name: str
14384    """
14385
14386    _validation = {
14387        'columns': {'readonly': True},
14388        'error_id': {'readonly': True},
14389        'has_error': {'readonly': True},
14390        'name': {'readonly': True},
14391        'quoted_name': {'readonly': True},
14392    }
14393
14394    _attribute_map = {
14395        'columns': {'key': 'columns', 'type': '[SyncFullSchemaTableColumn]'},
14396        'error_id': {'key': 'errorId', 'type': 'str'},
14397        'has_error': {'key': 'hasError', 'type': 'bool'},
14398        'name': {'key': 'name', 'type': 'str'},
14399        'quoted_name': {'key': 'quotedName', 'type': 'str'},
14400    }
14401
14402    def __init__(
14403        self,
14404        **kwargs
14405    ):
14406        super(SyncFullSchemaTable, self).__init__(**kwargs)
14407        self.columns = None
14408        self.error_id = None
14409        self.has_error = None
14410        self.name = None
14411        self.quoted_name = None
14412
14413
14414class SyncFullSchemaTableColumn(msrest.serialization.Model):
14415    """Properties of the column in the table of database full schema.
14416
14417    Variables are only populated by the server, and will be ignored when sending a request.
14418
14419    :ivar data_size: Data size of the column.
14420    :vartype data_size: str
14421    :ivar data_type: Data type of the column.
14422    :vartype data_type: str
14423    :ivar error_id: Error id of the column.
14424    :vartype error_id: str
14425    :ivar has_error: If there is error in the table.
14426    :vartype has_error: bool
14427    :ivar is_primary_key: If it is the primary key of the table.
14428    :vartype is_primary_key: bool
14429    :ivar name: Name of the column.
14430    :vartype name: str
14431    :ivar quoted_name: Quoted name of the column.
14432    :vartype quoted_name: str
14433    """
14434
14435    _validation = {
14436        'data_size': {'readonly': True},
14437        'data_type': {'readonly': True},
14438        'error_id': {'readonly': True},
14439        'has_error': {'readonly': True},
14440        'is_primary_key': {'readonly': True},
14441        'name': {'readonly': True},
14442        'quoted_name': {'readonly': True},
14443    }
14444
14445    _attribute_map = {
14446        'data_size': {'key': 'dataSize', 'type': 'str'},
14447        'data_type': {'key': 'dataType', 'type': 'str'},
14448        'error_id': {'key': 'errorId', 'type': 'str'},
14449        'has_error': {'key': 'hasError', 'type': 'bool'},
14450        'is_primary_key': {'key': 'isPrimaryKey', 'type': 'bool'},
14451        'name': {'key': 'name', 'type': 'str'},
14452        'quoted_name': {'key': 'quotedName', 'type': 'str'},
14453    }
14454
14455    def __init__(
14456        self,
14457        **kwargs
14458    ):
14459        super(SyncFullSchemaTableColumn, self).__init__(**kwargs)
14460        self.data_size = None
14461        self.data_type = None
14462        self.error_id = None
14463        self.has_error = None
14464        self.is_primary_key = None
14465        self.name = None
14466        self.quoted_name = None
14467
14468
14469class SyncGroup(ProxyResource):
14470    """An Azure SQL Database sync group.
14471
14472    Variables are only populated by the server, and will be ignored when sending a request.
14473
14474    :ivar id: Resource ID.
14475    :vartype id: str
14476    :ivar name: Resource name.
14477    :vartype name: str
14478    :ivar type: Resource type.
14479    :vartype type: str
14480    :param sku: The name and capacity of the SKU.
14481    :type sku: ~azure.mgmt.sql.models.Sku
14482    :param interval: Sync interval of the sync group.
14483    :type interval: int
14484    :ivar last_sync_time: Last sync time of the sync group.
14485    :vartype last_sync_time: ~datetime.datetime
14486    :param conflict_resolution_policy: Conflict resolution policy of the sync group. Possible
14487     values include: "HubWin", "MemberWin".
14488    :type conflict_resolution_policy: str or ~azure.mgmt.sql.models.SyncConflictResolutionPolicy
14489    :param sync_database_id: ARM resource id of the sync database in the sync group.
14490    :type sync_database_id: str
14491    :param hub_database_user_name: User name for the sync group hub database credential.
14492    :type hub_database_user_name: str
14493    :param hub_database_password: Password for the sync group hub database credential.
14494    :type hub_database_password: str
14495    :ivar sync_state: Sync state of the sync group. Possible values include: "NotReady", "Error",
14496     "Warning", "Progressing", "Good".
14497    :vartype sync_state: str or ~azure.mgmt.sql.models.SyncGroupState
14498    :param schema: Sync schema of the sync group.
14499    :type schema: ~azure.mgmt.sql.models.SyncGroupSchema
14500    :param enable_conflict_logging: If conflict logging is enabled.
14501    :type enable_conflict_logging: bool
14502    :param conflict_logging_retention_in_days: Conflict logging retention period.
14503    :type conflict_logging_retention_in_days: int
14504    :param use_private_link_connection: If use private link connection is enabled.
14505    :type use_private_link_connection: bool
14506    :ivar private_endpoint_name: Private endpoint name of the sync group if use private link
14507     connection is enabled.
14508    :vartype private_endpoint_name: str
14509    """
14510
14511    _validation = {
14512        'id': {'readonly': True},
14513        'name': {'readonly': True},
14514        'type': {'readonly': True},
14515        'last_sync_time': {'readonly': True},
14516        'sync_state': {'readonly': True},
14517        'private_endpoint_name': {'readonly': True},
14518    }
14519
14520    _attribute_map = {
14521        'id': {'key': 'id', 'type': 'str'},
14522        'name': {'key': 'name', 'type': 'str'},
14523        'type': {'key': 'type', 'type': 'str'},
14524        'sku': {'key': 'sku', 'type': 'Sku'},
14525        'interval': {'key': 'properties.interval', 'type': 'int'},
14526        'last_sync_time': {'key': 'properties.lastSyncTime', 'type': 'iso-8601'},
14527        'conflict_resolution_policy': {'key': 'properties.conflictResolutionPolicy', 'type': 'str'},
14528        'sync_database_id': {'key': 'properties.syncDatabaseId', 'type': 'str'},
14529        'hub_database_user_name': {'key': 'properties.hubDatabaseUserName', 'type': 'str'},
14530        'hub_database_password': {'key': 'properties.hubDatabasePassword', 'type': 'str'},
14531        'sync_state': {'key': 'properties.syncState', 'type': 'str'},
14532        'schema': {'key': 'properties.schema', 'type': 'SyncGroupSchema'},
14533        'enable_conflict_logging': {'key': 'properties.enableConflictLogging', 'type': 'bool'},
14534        'conflict_logging_retention_in_days': {'key': 'properties.conflictLoggingRetentionInDays', 'type': 'int'},
14535        'use_private_link_connection': {'key': 'properties.usePrivateLinkConnection', 'type': 'bool'},
14536        'private_endpoint_name': {'key': 'properties.privateEndpointName', 'type': 'str'},
14537    }
14538
14539    def __init__(
14540        self,
14541        **kwargs
14542    ):
14543        super(SyncGroup, self).__init__(**kwargs)
14544        self.sku = kwargs.get('sku', None)
14545        self.interval = kwargs.get('interval', None)
14546        self.last_sync_time = None
14547        self.conflict_resolution_policy = kwargs.get('conflict_resolution_policy', None)
14548        self.sync_database_id = kwargs.get('sync_database_id', None)
14549        self.hub_database_user_name = kwargs.get('hub_database_user_name', None)
14550        self.hub_database_password = kwargs.get('hub_database_password', None)
14551        self.sync_state = None
14552        self.schema = kwargs.get('schema', None)
14553        self.enable_conflict_logging = kwargs.get('enable_conflict_logging', None)
14554        self.conflict_logging_retention_in_days = kwargs.get('conflict_logging_retention_in_days', None)
14555        self.use_private_link_connection = kwargs.get('use_private_link_connection', None)
14556        self.private_endpoint_name = None
14557
14558
14559class SyncGroupListResult(msrest.serialization.Model):
14560    """A list of sync groups.
14561
14562    Variables are only populated by the server, and will be ignored when sending a request.
14563
14564    :ivar value: Array of results.
14565    :vartype value: list[~azure.mgmt.sql.models.SyncGroup]
14566    :ivar next_link: Link to retrieve next page of results.
14567    :vartype next_link: str
14568    """
14569
14570    _validation = {
14571        'value': {'readonly': True},
14572        'next_link': {'readonly': True},
14573    }
14574
14575    _attribute_map = {
14576        'value': {'key': 'value', 'type': '[SyncGroup]'},
14577        'next_link': {'key': 'nextLink', 'type': 'str'},
14578    }
14579
14580    def __init__(
14581        self,
14582        **kwargs
14583    ):
14584        super(SyncGroupListResult, self).__init__(**kwargs)
14585        self.value = None
14586        self.next_link = None
14587
14588
14589class SyncGroupLogListResult(msrest.serialization.Model):
14590    """A list of sync group log properties.
14591
14592    Variables are only populated by the server, and will be ignored when sending a request.
14593
14594    :ivar value: Array of results.
14595    :vartype value: list[~azure.mgmt.sql.models.SyncGroupLogProperties]
14596    :ivar next_link: Link to retrieve next page of results.
14597    :vartype next_link: str
14598    """
14599
14600    _validation = {
14601        'value': {'readonly': True},
14602        'next_link': {'readonly': True},
14603    }
14604
14605    _attribute_map = {
14606        'value': {'key': 'value', 'type': '[SyncGroupLogProperties]'},
14607        'next_link': {'key': 'nextLink', 'type': 'str'},
14608    }
14609
14610    def __init__(
14611        self,
14612        **kwargs
14613    ):
14614        super(SyncGroupLogListResult, self).__init__(**kwargs)
14615        self.value = None
14616        self.next_link = None
14617
14618
14619class SyncGroupLogProperties(msrest.serialization.Model):
14620    """Properties of an Azure SQL Database sync group log.
14621
14622    Variables are only populated by the server, and will be ignored when sending a request.
14623
14624    :ivar timestamp: Timestamp of the sync group log.
14625    :vartype timestamp: ~datetime.datetime
14626    :ivar type: Type of the sync group log. Possible values include: "All", "Error", "Warning",
14627     "Success".
14628    :vartype type: str or ~azure.mgmt.sql.models.SyncGroupLogType
14629    :ivar source: Source of the sync group log.
14630    :vartype source: str
14631    :ivar details: Details of the sync group log.
14632    :vartype details: str
14633    :ivar tracing_id: TracingId of the sync group log.
14634    :vartype tracing_id: str
14635    :ivar operation_status: OperationStatus of the sync group log.
14636    :vartype operation_status: str
14637    """
14638
14639    _validation = {
14640        'timestamp': {'readonly': True},
14641        'type': {'readonly': True},
14642        'source': {'readonly': True},
14643        'details': {'readonly': True},
14644        'tracing_id': {'readonly': True},
14645        'operation_status': {'readonly': True},
14646    }
14647
14648    _attribute_map = {
14649        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
14650        'type': {'key': 'type', 'type': 'str'},
14651        'source': {'key': 'source', 'type': 'str'},
14652        'details': {'key': 'details', 'type': 'str'},
14653        'tracing_id': {'key': 'tracingId', 'type': 'str'},
14654        'operation_status': {'key': 'operationStatus', 'type': 'str'},
14655    }
14656
14657    def __init__(
14658        self,
14659        **kwargs
14660    ):
14661        super(SyncGroupLogProperties, self).__init__(**kwargs)
14662        self.timestamp = None
14663        self.type = None
14664        self.source = None
14665        self.details = None
14666        self.tracing_id = None
14667        self.operation_status = None
14668
14669
14670class SyncGroupSchema(msrest.serialization.Model):
14671    """Properties of sync group schema.
14672
14673    :param tables: List of tables in sync group schema.
14674    :type tables: list[~azure.mgmt.sql.models.SyncGroupSchemaTable]
14675    :param master_sync_member_name: Name of master sync member where the schema is from.
14676    :type master_sync_member_name: str
14677    """
14678
14679    _attribute_map = {
14680        'tables': {'key': 'tables', 'type': '[SyncGroupSchemaTable]'},
14681        'master_sync_member_name': {'key': 'masterSyncMemberName', 'type': 'str'},
14682    }
14683
14684    def __init__(
14685        self,
14686        **kwargs
14687    ):
14688        super(SyncGroupSchema, self).__init__(**kwargs)
14689        self.tables = kwargs.get('tables', None)
14690        self.master_sync_member_name = kwargs.get('master_sync_member_name', None)
14691
14692
14693class SyncGroupSchemaTable(msrest.serialization.Model):
14694    """Properties of table in sync group schema.
14695
14696    :param columns: List of columns in sync group schema.
14697    :type columns: list[~azure.mgmt.sql.models.SyncGroupSchemaTableColumn]
14698    :param quoted_name: Quoted name of sync group schema table.
14699    :type quoted_name: str
14700    """
14701
14702    _attribute_map = {
14703        'columns': {'key': 'columns', 'type': '[SyncGroupSchemaTableColumn]'},
14704        'quoted_name': {'key': 'quotedName', 'type': 'str'},
14705    }
14706
14707    def __init__(
14708        self,
14709        **kwargs
14710    ):
14711        super(SyncGroupSchemaTable, self).__init__(**kwargs)
14712        self.columns = kwargs.get('columns', None)
14713        self.quoted_name = kwargs.get('quoted_name', None)
14714
14715
14716class SyncGroupSchemaTableColumn(msrest.serialization.Model):
14717    """Properties of column in sync group table.
14718
14719    :param quoted_name: Quoted name of sync group table column.
14720    :type quoted_name: str
14721    :param data_size: Data size of the column.
14722    :type data_size: str
14723    :param data_type: Data type of the column.
14724    :type data_type: str
14725    """
14726
14727    _attribute_map = {
14728        'quoted_name': {'key': 'quotedName', 'type': 'str'},
14729        'data_size': {'key': 'dataSize', 'type': 'str'},
14730        'data_type': {'key': 'dataType', 'type': 'str'},
14731    }
14732
14733    def __init__(
14734        self,
14735        **kwargs
14736    ):
14737        super(SyncGroupSchemaTableColumn, self).__init__(**kwargs)
14738        self.quoted_name = kwargs.get('quoted_name', None)
14739        self.data_size = kwargs.get('data_size', None)
14740        self.data_type = kwargs.get('data_type', None)
14741
14742
14743class SyncMember(ProxyResource):
14744    """An Azure SQL Database sync member.
14745
14746    Variables are only populated by the server, and will be ignored when sending a request.
14747
14748    :ivar id: Resource ID.
14749    :vartype id: str
14750    :ivar name: Resource name.
14751    :vartype name: str
14752    :ivar type: Resource type.
14753    :vartype type: str
14754    :param database_type: Database type of the sync member. Possible values include:
14755     "AzureSqlDatabase", "SqlServerDatabase".
14756    :type database_type: str or ~azure.mgmt.sql.models.SyncMemberDbType
14757    :param sync_agent_id: ARM resource id of the sync agent in the sync member.
14758    :type sync_agent_id: str
14759    :param sql_server_database_id: SQL Server database id of the sync member.
14760    :type sql_server_database_id: str
14761    :param sync_member_azure_database_resource_id: ARM resource id of the sync member logical
14762     database, for sync members in Azure.
14763    :type sync_member_azure_database_resource_id: str
14764    :param use_private_link_connection: Whether to use private link connection.
14765    :type use_private_link_connection: bool
14766    :ivar private_endpoint_name: Private endpoint name of the sync member if use private link
14767     connection is enabled, for sync members in Azure.
14768    :vartype private_endpoint_name: str
14769    :param server_name: Server name of the member database in the sync member.
14770    :type server_name: str
14771    :param database_name: Database name of the member database in the sync member.
14772    :type database_name: str
14773    :param user_name: User name of the member database in the sync member.
14774    :type user_name: str
14775    :param password: Password of the member database in the sync member.
14776    :type password: str
14777    :param sync_direction: Sync direction of the sync member. Possible values include:
14778     "Bidirectional", "OneWayMemberToHub", "OneWayHubToMember".
14779    :type sync_direction: str or ~azure.mgmt.sql.models.SyncDirection
14780    :ivar sync_state: Sync state of the sync member. Possible values include: "SyncInProgress",
14781     "SyncSucceeded", "SyncFailed", "DisabledTombstoneCleanup", "DisabledBackupRestore",
14782     "SyncSucceededWithWarnings", "SyncCancelling", "SyncCancelled", "UnProvisioned",
14783     "Provisioning", "Provisioned", "ProvisionFailed", "DeProvisioning", "DeProvisioned",
14784     "DeProvisionFailed", "Reprovisioning", "ReprovisionFailed", "UnReprovisioned".
14785    :vartype sync_state: str or ~azure.mgmt.sql.models.SyncMemberState
14786    """
14787
14788    _validation = {
14789        'id': {'readonly': True},
14790        'name': {'readonly': True},
14791        'type': {'readonly': True},
14792        'private_endpoint_name': {'readonly': True},
14793        'sync_state': {'readonly': True},
14794    }
14795
14796    _attribute_map = {
14797        'id': {'key': 'id', 'type': 'str'},
14798        'name': {'key': 'name', 'type': 'str'},
14799        'type': {'key': 'type', 'type': 'str'},
14800        'database_type': {'key': 'properties.databaseType', 'type': 'str'},
14801        'sync_agent_id': {'key': 'properties.syncAgentId', 'type': 'str'},
14802        'sql_server_database_id': {'key': 'properties.sqlServerDatabaseId', 'type': 'str'},
14803        'sync_member_azure_database_resource_id': {'key': 'properties.syncMemberAzureDatabaseResourceId', 'type': 'str'},
14804        'use_private_link_connection': {'key': 'properties.usePrivateLinkConnection', 'type': 'bool'},
14805        'private_endpoint_name': {'key': 'properties.privateEndpointName', 'type': 'str'},
14806        'server_name': {'key': 'properties.serverName', 'type': 'str'},
14807        'database_name': {'key': 'properties.databaseName', 'type': 'str'},
14808        'user_name': {'key': 'properties.userName', 'type': 'str'},
14809        'password': {'key': 'properties.password', 'type': 'str'},
14810        'sync_direction': {'key': 'properties.syncDirection', 'type': 'str'},
14811        'sync_state': {'key': 'properties.syncState', 'type': 'str'},
14812    }
14813
14814    def __init__(
14815        self,
14816        **kwargs
14817    ):
14818        super(SyncMember, self).__init__(**kwargs)
14819        self.database_type = kwargs.get('database_type', None)
14820        self.sync_agent_id = kwargs.get('sync_agent_id', None)
14821        self.sql_server_database_id = kwargs.get('sql_server_database_id', None)
14822        self.sync_member_azure_database_resource_id = kwargs.get('sync_member_azure_database_resource_id', None)
14823        self.use_private_link_connection = kwargs.get('use_private_link_connection', None)
14824        self.private_endpoint_name = None
14825        self.server_name = kwargs.get('server_name', None)
14826        self.database_name = kwargs.get('database_name', None)
14827        self.user_name = kwargs.get('user_name', None)
14828        self.password = kwargs.get('password', None)
14829        self.sync_direction = kwargs.get('sync_direction', None)
14830        self.sync_state = None
14831
14832
14833class SyncMemberListResult(msrest.serialization.Model):
14834    """A list of Azure SQL Database sync members.
14835
14836    Variables are only populated by the server, and will be ignored when sending a request.
14837
14838    :ivar value: Array of results.
14839    :vartype value: list[~azure.mgmt.sql.models.SyncMember]
14840    :ivar next_link: Link to retrieve next page of results.
14841    :vartype next_link: str
14842    """
14843
14844    _validation = {
14845        'value': {'readonly': True},
14846        'next_link': {'readonly': True},
14847    }
14848
14849    _attribute_map = {
14850        'value': {'key': 'value', 'type': '[SyncMember]'},
14851        'next_link': {'key': 'nextLink', 'type': 'str'},
14852    }
14853
14854    def __init__(
14855        self,
14856        **kwargs
14857    ):
14858        super(SyncMemberListResult, self).__init__(**kwargs)
14859        self.value = None
14860        self.next_link = None
14861
14862
14863class SystemData(msrest.serialization.Model):
14864    """Metadata pertaining to creation and last modification of the resource.
14865
14866    :param created_by: The identity that created the resource.
14867    :type created_by: str
14868    :param created_by_type: The type of identity that created the resource. Possible values
14869     include: "User", "Application", "ManagedIdentity", "Key".
14870    :type created_by_type: str or ~azure.mgmt.sql.models.CreatedByType
14871    :param created_at: The timestamp of resource creation (UTC).
14872    :type created_at: ~datetime.datetime
14873    :param last_modified_by: The identity that last modified the resource.
14874    :type last_modified_by: str
14875    :param last_modified_by_type: The type of identity that last modified the resource. Possible
14876     values include: "User", "Application", "ManagedIdentity", "Key".
14877    :type last_modified_by_type: str or ~azure.mgmt.sql.models.CreatedByType
14878    :param last_modified_at: The timestamp of resource last modification (UTC).
14879    :type last_modified_at: ~datetime.datetime
14880    """
14881
14882    _attribute_map = {
14883        'created_by': {'key': 'createdBy', 'type': 'str'},
14884        'created_by_type': {'key': 'createdByType', 'type': 'str'},
14885        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
14886        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
14887        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
14888        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
14889    }
14890
14891    def __init__(
14892        self,
14893        **kwargs
14894    ):
14895        super(SystemData, self).__init__(**kwargs)
14896        self.created_by = kwargs.get('created_by', None)
14897        self.created_by_type = kwargs.get('created_by_type', None)
14898        self.created_at = kwargs.get('created_at', None)
14899        self.last_modified_by = kwargs.get('last_modified_by', None)
14900        self.last_modified_by_type = kwargs.get('last_modified_by_type', None)
14901        self.last_modified_at = kwargs.get('last_modified_at', None)
14902
14903
14904class TdeCertificate(ProxyResource):
14905    """A TDE certificate that can be uploaded into a server.
14906
14907    Variables are only populated by the server, and will be ignored when sending a request.
14908
14909    :ivar id: Resource ID.
14910    :vartype id: str
14911    :ivar name: Resource name.
14912    :vartype name: str
14913    :ivar type: Resource type.
14914    :vartype type: str
14915    :param private_blob: The base64 encoded certificate private blob.
14916    :type private_blob: str
14917    :param cert_password: The certificate password.
14918    :type cert_password: str
14919    """
14920
14921    _validation = {
14922        'id': {'readonly': True},
14923        'name': {'readonly': True},
14924        'type': {'readonly': True},
14925    }
14926
14927    _attribute_map = {
14928        'id': {'key': 'id', 'type': 'str'},
14929        'name': {'key': 'name', 'type': 'str'},
14930        'type': {'key': 'type', 'type': 'str'},
14931        'private_blob': {'key': 'properties.privateBlob', 'type': 'str'},
14932        'cert_password': {'key': 'properties.certPassword', 'type': 'str'},
14933    }
14934
14935    def __init__(
14936        self,
14937        **kwargs
14938    ):
14939        super(TdeCertificate, self).__init__(**kwargs)
14940        self.private_blob = kwargs.get('private_blob', None)
14941        self.cert_password = kwargs.get('cert_password', None)
14942
14943
14944class TimeZone(ProxyResource):
14945    """Time Zone.
14946
14947    Variables are only populated by the server, and will be ignored when sending a request.
14948
14949    :ivar id: Resource ID.
14950    :vartype id: str
14951    :ivar name: Resource name.
14952    :vartype name: str
14953    :ivar type: Resource type.
14954    :vartype type: str
14955    :ivar time_zone_id: The time zone id.
14956    :vartype time_zone_id: str
14957    :ivar display_name: The time zone display name.
14958    :vartype display_name: str
14959    """
14960
14961    _validation = {
14962        'id': {'readonly': True},
14963        'name': {'readonly': True},
14964        'type': {'readonly': True},
14965        'time_zone_id': {'readonly': True},
14966        'display_name': {'readonly': True},
14967    }
14968
14969    _attribute_map = {
14970        'id': {'key': 'id', 'type': 'str'},
14971        'name': {'key': 'name', 'type': 'str'},
14972        'type': {'key': 'type', 'type': 'str'},
14973        'time_zone_id': {'key': 'properties.timeZoneId', 'type': 'str'},
14974        'display_name': {'key': 'properties.displayName', 'type': 'str'},
14975    }
14976
14977    def __init__(
14978        self,
14979        **kwargs
14980    ):
14981        super(TimeZone, self).__init__(**kwargs)
14982        self.time_zone_id = None
14983        self.display_name = None
14984
14985
14986class TimeZoneListResult(msrest.serialization.Model):
14987    """A list of time zones.
14988
14989    Variables are only populated by the server, and will be ignored when sending a request.
14990
14991    :ivar value: Array of results.
14992    :vartype value: list[~azure.mgmt.sql.models.TimeZone]
14993    :ivar next_link: Link to retrieve next page of results.
14994    :vartype next_link: str
14995    """
14996
14997    _validation = {
14998        'value': {'readonly': True},
14999        'next_link': {'readonly': True},
15000    }
15001
15002    _attribute_map = {
15003        'value': {'key': 'value', 'type': '[TimeZone]'},
15004        'next_link': {'key': 'nextLink', 'type': 'str'},
15005    }
15006
15007    def __init__(
15008        self,
15009        **kwargs
15010    ):
15011        super(TimeZoneListResult, self).__init__(**kwargs)
15012        self.value = None
15013        self.next_link = None
15014
15015
15016class TopQueries(msrest.serialization.Model):
15017    """TopQueries.
15018
15019    Variables are only populated by the server, and will be ignored when sending a request.
15020
15021    :ivar number_of_queries: Requested number of top queries.
15022    :vartype number_of_queries: int
15023    :ivar aggregation_function: Aggregation function used to calculate query metrics.
15024    :vartype aggregation_function: str
15025    :ivar observation_metric: Metric used to rank queries.
15026    :vartype observation_metric: str
15027    :ivar interval_type: Interval type (length). Possible values include: "PT1H", "P1D".
15028    :vartype interval_type: str or ~azure.mgmt.sql.models.QueryTimeGrainType
15029    :ivar start_time: The start time for the metric (ISO-8601 format).
15030    :vartype start_time: str
15031    :ivar end_time: The end time for the metric (ISO-8601 format).
15032    :vartype end_time: str
15033    :param queries: List of top resource consuming queries with appropriate metric data.
15034    :type queries: list[~azure.mgmt.sql.models.QueryStatisticsProperties]
15035    """
15036
15037    _validation = {
15038        'number_of_queries': {'readonly': True},
15039        'aggregation_function': {'readonly': True},
15040        'observation_metric': {'readonly': True},
15041        'interval_type': {'readonly': True},
15042        'start_time': {'readonly': True},
15043        'end_time': {'readonly': True},
15044    }
15045
15046    _attribute_map = {
15047        'number_of_queries': {'key': 'numberOfQueries', 'type': 'int'},
15048        'aggregation_function': {'key': 'aggregationFunction', 'type': 'str'},
15049        'observation_metric': {'key': 'observationMetric', 'type': 'str'},
15050        'interval_type': {'key': 'intervalType', 'type': 'str'},
15051        'start_time': {'key': 'startTime', 'type': 'str'},
15052        'end_time': {'key': 'endTime', 'type': 'str'},
15053        'queries': {'key': 'queries', 'type': '[QueryStatisticsProperties]'},
15054    }
15055
15056    def __init__(
15057        self,
15058        **kwargs
15059    ):
15060        super(TopQueries, self).__init__(**kwargs)
15061        self.number_of_queries = None
15062        self.aggregation_function = None
15063        self.observation_metric = None
15064        self.interval_type = None
15065        self.start_time = None
15066        self.end_time = None
15067        self.queries = kwargs.get('queries', None)
15068
15069
15070class TopQueriesListResult(msrest.serialization.Model):
15071    """A list of top resource consuming queries on managed instance.
15072
15073    Variables are only populated by the server, and will be ignored when sending a request.
15074
15075    :ivar value: Array of results.
15076    :vartype value: list[~azure.mgmt.sql.models.TopQueries]
15077    :ivar next_link: Link to retrieve next page of results.
15078    :vartype next_link: str
15079    """
15080
15081    _validation = {
15082        'value': {'readonly': True},
15083        'next_link': {'readonly': True},
15084    }
15085
15086    _attribute_map = {
15087        'value': {'key': 'value', 'type': '[TopQueries]'},
15088        'next_link': {'key': 'nextLink', 'type': 'str'},
15089    }
15090
15091    def __init__(
15092        self,
15093        **kwargs
15094    ):
15095        super(TopQueriesListResult, self).__init__(**kwargs)
15096        self.value = None
15097        self.next_link = None
15098
15099
15100class TransparentDataEncryption(ProxyResource):
15101    """Represents a database transparent data encryption configuration.
15102
15103    Variables are only populated by the server, and will be ignored when sending a request.
15104
15105    :ivar id: Resource ID.
15106    :vartype id: str
15107    :ivar name: Resource name.
15108    :vartype name: str
15109    :ivar type: Resource type.
15110    :vartype type: str
15111    :ivar location: Resource location.
15112    :vartype location: str
15113    :param status: The status of the database transparent data encryption. Possible values include:
15114     "Enabled", "Disabled".
15115    :type status: str or ~azure.mgmt.sql.models.TransparentDataEncryptionStatus
15116    """
15117
15118    _validation = {
15119        'id': {'readonly': True},
15120        'name': {'readonly': True},
15121        'type': {'readonly': True},
15122        'location': {'readonly': True},
15123    }
15124
15125    _attribute_map = {
15126        'id': {'key': 'id', 'type': 'str'},
15127        'name': {'key': 'name', 'type': 'str'},
15128        'type': {'key': 'type', 'type': 'str'},
15129        'location': {'key': 'location', 'type': 'str'},
15130        'status': {'key': 'properties.status', 'type': 'str'},
15131    }
15132
15133    def __init__(
15134        self,
15135        **kwargs
15136    ):
15137        super(TransparentDataEncryption, self).__init__(**kwargs)
15138        self.location = None
15139        self.status = kwargs.get('status', None)
15140
15141
15142class TransparentDataEncryptionActivity(ProxyResource):
15143    """Represents a database transparent data encryption Scan.
15144
15145    Variables are only populated by the server, and will be ignored when sending a request.
15146
15147    :ivar id: Resource ID.
15148    :vartype id: str
15149    :ivar name: Resource name.
15150    :vartype name: str
15151    :ivar type: Resource type.
15152    :vartype type: str
15153    :ivar location: Resource location.
15154    :vartype location: str
15155    :ivar status: The status of the database. Possible values include: "Encrypting", "Decrypting".
15156    :vartype status: str or ~azure.mgmt.sql.models.TransparentDataEncryptionActivityStatus
15157    :ivar percent_complete: The percent complete of the transparent data encryption scan for a
15158     database.
15159    :vartype percent_complete: float
15160    """
15161
15162    _validation = {
15163        'id': {'readonly': True},
15164        'name': {'readonly': True},
15165        'type': {'readonly': True},
15166        'location': {'readonly': True},
15167        'status': {'readonly': True},
15168        'percent_complete': {'readonly': True},
15169    }
15170
15171    _attribute_map = {
15172        'id': {'key': 'id', 'type': 'str'},
15173        'name': {'key': 'name', 'type': 'str'},
15174        'type': {'key': 'type', 'type': 'str'},
15175        'location': {'key': 'location', 'type': 'str'},
15176        'status': {'key': 'properties.status', 'type': 'str'},
15177        'percent_complete': {'key': 'properties.percentComplete', 'type': 'float'},
15178    }
15179
15180    def __init__(
15181        self,
15182        **kwargs
15183    ):
15184        super(TransparentDataEncryptionActivity, self).__init__(**kwargs)
15185        self.location = None
15186        self.status = None
15187        self.percent_complete = None
15188
15189
15190class TransparentDataEncryptionActivityListResult(msrest.serialization.Model):
15191    """Represents the response to a list database transparent data encryption activity request.
15192
15193    All required parameters must be populated in order to send to Azure.
15194
15195    :param value: Required. The list of database transparent data encryption activities.
15196    :type value: list[~azure.mgmt.sql.models.TransparentDataEncryptionActivity]
15197    """
15198
15199    _validation = {
15200        'value': {'required': True},
15201    }
15202
15203    _attribute_map = {
15204        'value': {'key': 'value', 'type': '[TransparentDataEncryptionActivity]'},
15205    }
15206
15207    def __init__(
15208        self,
15209        **kwargs
15210    ):
15211        super(TransparentDataEncryptionActivityListResult, self).__init__(**kwargs)
15212        self.value = kwargs['value']
15213
15214
15215class UnlinkParameters(msrest.serialization.Model):
15216    """Represents the parameters for Unlink Replication Link request.
15217
15218    :param forced_termination: Determines whether link will be terminated in a forced or a friendly
15219     way.
15220    :type forced_termination: bool
15221    """
15222
15223    _attribute_map = {
15224        'forced_termination': {'key': 'forcedTermination', 'type': 'bool'},
15225    }
15226
15227    def __init__(
15228        self,
15229        **kwargs
15230    ):
15231        super(UnlinkParameters, self).__init__(**kwargs)
15232        self.forced_termination = kwargs.get('forced_termination', None)
15233
15234
15235class UpdateLongTermRetentionBackupParameters(msrest.serialization.Model):
15236    """Contains the information necessary to perform long term retention backup update operation.
15237
15238    :param requested_backup_storage_redundancy: The storage redundancy type of the copied backup.
15239     Possible values include: "Geo", "Local", "Zone".
15240    :type requested_backup_storage_redundancy: str or
15241     ~azure.mgmt.sql.models.RequestedBackupStorageRedundancy
15242    """
15243
15244    _attribute_map = {
15245        'requested_backup_storage_redundancy': {'key': 'properties.requestedBackupStorageRedundancy', 'type': 'str'},
15246    }
15247
15248    def __init__(
15249        self,
15250        **kwargs
15251    ):
15252        super(UpdateLongTermRetentionBackupParameters, self).__init__(**kwargs)
15253        self.requested_backup_storage_redundancy = kwargs.get('requested_backup_storage_redundancy', None)
15254
15255
15256class UpdateManagedInstanceDnsServersOperation(ProxyResource):
15257    """A recoverable managed database resource.
15258
15259    Variables are only populated by the server, and will be ignored when sending a request.
15260
15261    :ivar id: Resource ID.
15262    :vartype id: str
15263    :ivar name: Resource name.
15264    :vartype name: str
15265    :ivar type: Resource type.
15266    :vartype type: str
15267    :ivar status: The status of the DNS refresh operation. Possible values include: "Succeeded",
15268     "Failed".
15269    :vartype status: str or ~azure.mgmt.sql.models.DnsRefreshConfigurationPropertiesStatus
15270    """
15271
15272    _validation = {
15273        'id': {'readonly': True},
15274        'name': {'readonly': True},
15275        'type': {'readonly': True},
15276        'status': {'readonly': True},
15277    }
15278
15279    _attribute_map = {
15280        'id': {'key': 'id', 'type': 'str'},
15281        'name': {'key': 'name', 'type': 'str'},
15282        'type': {'key': 'type', 'type': 'str'},
15283        'status': {'key': 'properties.status', 'type': 'str'},
15284    }
15285
15286    def __init__(
15287        self,
15288        **kwargs
15289    ):
15290        super(UpdateManagedInstanceDnsServersOperation, self).__init__(**kwargs)
15291        self.status = None
15292
15293
15294class UpsertManagedServerOperationParameters(msrest.serialization.Model):
15295    """UpsertManagedServerOperationParameters.
15296
15297    :param family:
15298    :type family: str
15299    :param tier:
15300    :type tier: str
15301    :param v_cores:
15302    :type v_cores: int
15303    :param storage_size_in_gb:
15304    :type storage_size_in_gb: int
15305    """
15306
15307    _attribute_map = {
15308        'family': {'key': 'family', 'type': 'str'},
15309        'tier': {'key': 'tier', 'type': 'str'},
15310        'v_cores': {'key': 'vCores', 'type': 'int'},
15311        'storage_size_in_gb': {'key': 'storageSizeInGB', 'type': 'int'},
15312    }
15313
15314    def __init__(
15315        self,
15316        **kwargs
15317    ):
15318        super(UpsertManagedServerOperationParameters, self).__init__(**kwargs)
15319        self.family = kwargs.get('family', None)
15320        self.tier = kwargs.get('tier', None)
15321        self.v_cores = kwargs.get('v_cores', None)
15322        self.storage_size_in_gb = kwargs.get('storage_size_in_gb', None)
15323
15324
15325class UpsertManagedServerOperationStep(msrest.serialization.Model):
15326    """UpsertManagedServerOperationStep.
15327
15328    :param order:
15329    :type order: int
15330    :param name:
15331    :type name: str
15332    :param status:  Possible values include: "NotStarted", "InProgress", "SlowedDown", "Completed",
15333     "Failed", "Canceled".
15334    :type status: str or ~azure.mgmt.sql.models.UpsertManagedServerOperationStepStatus
15335    """
15336
15337    _attribute_map = {
15338        'order': {'key': 'order', 'type': 'int'},
15339        'name': {'key': 'name', 'type': 'str'},
15340        'status': {'key': 'status', 'type': 'str'},
15341    }
15342
15343    def __init__(
15344        self,
15345        **kwargs
15346    ):
15347        super(UpsertManagedServerOperationStep, self).__init__(**kwargs)
15348        self.order = kwargs.get('order', None)
15349        self.name = kwargs.get('name', None)
15350        self.status = kwargs.get('status', None)
15351
15352
15353class Usage(msrest.serialization.Model):
15354    """ARM usage.
15355
15356    Variables are only populated by the server, and will be ignored when sending a request.
15357
15358    :ivar id: Resource ID.
15359    :vartype id: str
15360    :ivar name: Resource name.
15361    :vartype name: ~azure.mgmt.sql.models.Name
15362    :ivar type: Resource type.
15363    :vartype type: str
15364    :ivar unit: Usage unit.
15365    :vartype unit: str
15366    :ivar current_value: Usage current value.
15367    :vartype current_value: int
15368    :ivar limit: Usage limit.
15369    :vartype limit: int
15370    :ivar requested_limit: Usage requested limit.
15371    :vartype requested_limit: int
15372    """
15373
15374    _validation = {
15375        'id': {'readonly': True},
15376        'name': {'readonly': True},
15377        'type': {'readonly': True},
15378        'unit': {'readonly': True},
15379        'current_value': {'readonly': True},
15380        'limit': {'readonly': True},
15381        'requested_limit': {'readonly': True},
15382    }
15383
15384    _attribute_map = {
15385        'id': {'key': 'id', 'type': 'str'},
15386        'name': {'key': 'name', 'type': 'Name'},
15387        'type': {'key': 'type', 'type': 'str'},
15388        'unit': {'key': 'unit', 'type': 'str'},
15389        'current_value': {'key': 'currentValue', 'type': 'int'},
15390        'limit': {'key': 'limit', 'type': 'int'},
15391        'requested_limit': {'key': 'requestedLimit', 'type': 'int'},
15392    }
15393
15394    def __init__(
15395        self,
15396        **kwargs
15397    ):
15398        super(Usage, self).__init__(**kwargs)
15399        self.id = None
15400        self.name = None
15401        self.type = None
15402        self.unit = None
15403        self.current_value = None
15404        self.limit = None
15405        self.requested_limit = None
15406
15407
15408class UsageListResult(msrest.serialization.Model):
15409    """A list of usages.
15410
15411    Variables are only populated by the server, and will be ignored when sending a request.
15412
15413    :ivar value: Array of results.
15414    :vartype value: list[~azure.mgmt.sql.models.Usage]
15415    :ivar next_link: Link to retrieve next page of results.
15416    :vartype next_link: str
15417    """
15418
15419    _validation = {
15420        'value': {'readonly': True},
15421        'next_link': {'readonly': True},
15422    }
15423
15424    _attribute_map = {
15425        'value': {'key': 'value', 'type': '[Usage]'},
15426        'next_link': {'key': 'nextLink', 'type': 'str'},
15427    }
15428
15429    def __init__(
15430        self,
15431        **kwargs
15432    ):
15433        super(UsageListResult, self).__init__(**kwargs)
15434        self.value = None
15435        self.next_link = None
15436
15437
15438class UserIdentity(msrest.serialization.Model):
15439    """Azure Active Directory identity configuration for a resource.
15440
15441    Variables are only populated by the server, and will be ignored when sending a request.
15442
15443    :ivar principal_id: The Azure Active Directory principal id.
15444    :vartype principal_id: str
15445    :ivar client_id: The Azure Active Directory client id.
15446    :vartype client_id: str
15447    """
15448
15449    _validation = {
15450        'principal_id': {'readonly': True},
15451        'client_id': {'readonly': True},
15452    }
15453
15454    _attribute_map = {
15455        'principal_id': {'key': 'principalId', 'type': 'str'},
15456        'client_id': {'key': 'clientId', 'type': 'str'},
15457    }
15458
15459    def __init__(
15460        self,
15461        **kwargs
15462    ):
15463        super(UserIdentity, self).__init__(**kwargs)
15464        self.principal_id = None
15465        self.client_id = None
15466
15467
15468class VirtualCluster(TrackedResource):
15469    """An Azure SQL virtual cluster.
15470
15471    Variables are only populated by the server, and will be ignored when sending a request.
15472
15473    All required parameters must be populated in order to send to Azure.
15474
15475    :ivar id: Resource ID.
15476    :vartype id: str
15477    :ivar name: Resource name.
15478    :vartype name: str
15479    :ivar type: Resource type.
15480    :vartype type: str
15481    :param location: Required. Resource location.
15482    :type location: str
15483    :param tags: A set of tags. Resource tags.
15484    :type tags: dict[str, str]
15485    :ivar subnet_id: Subnet resource ID for the virtual cluster.
15486    :vartype subnet_id: str
15487    :param family: If the service has different generations of hardware, for the same SKU, then
15488     that can be captured here.
15489    :type family: str
15490    :ivar child_resources: List of resources in this virtual cluster.
15491    :vartype child_resources: list[str]
15492    :param maintenance_configuration_id: Specifies maintenance configuration id to apply to this
15493     virtual cluster.
15494    :type maintenance_configuration_id: str
15495    """
15496
15497    _validation = {
15498        'id': {'readonly': True},
15499        'name': {'readonly': True},
15500        'type': {'readonly': True},
15501        'location': {'required': True},
15502        'subnet_id': {'readonly': True},
15503        'child_resources': {'readonly': True},
15504    }
15505
15506    _attribute_map = {
15507        'id': {'key': 'id', 'type': 'str'},
15508        'name': {'key': 'name', 'type': 'str'},
15509        'type': {'key': 'type', 'type': 'str'},
15510        'location': {'key': 'location', 'type': 'str'},
15511        'tags': {'key': 'tags', 'type': '{str}'},
15512        'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
15513        'family': {'key': 'properties.family', 'type': 'str'},
15514        'child_resources': {'key': 'properties.childResources', 'type': '[str]'},
15515        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
15516    }
15517
15518    def __init__(
15519        self,
15520        **kwargs
15521    ):
15522        super(VirtualCluster, self).__init__(**kwargs)
15523        self.subnet_id = None
15524        self.family = kwargs.get('family', None)
15525        self.child_resources = None
15526        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
15527
15528
15529class VirtualClusterListResult(msrest.serialization.Model):
15530    """A list of virtual clusters.
15531
15532    Variables are only populated by the server, and will be ignored when sending a request.
15533
15534    :ivar value: Array of results.
15535    :vartype value: list[~azure.mgmt.sql.models.VirtualCluster]
15536    :ivar next_link: Link to retrieve next page of results.
15537    :vartype next_link: str
15538    """
15539
15540    _validation = {
15541        'value': {'readonly': True},
15542        'next_link': {'readonly': True},
15543    }
15544
15545    _attribute_map = {
15546        'value': {'key': 'value', 'type': '[VirtualCluster]'},
15547        'next_link': {'key': 'nextLink', 'type': 'str'},
15548    }
15549
15550    def __init__(
15551        self,
15552        **kwargs
15553    ):
15554        super(VirtualClusterListResult, self).__init__(**kwargs)
15555        self.value = None
15556        self.next_link = None
15557
15558
15559class VirtualClusterUpdate(msrest.serialization.Model):
15560    """An update request for an Azure SQL Database virtual cluster.
15561
15562    Variables are only populated by the server, and will be ignored when sending a request.
15563
15564    :param tags: A set of tags. Resource tags.
15565    :type tags: dict[str, str]
15566    :ivar subnet_id: Subnet resource ID for the virtual cluster.
15567    :vartype subnet_id: str
15568    :param family: If the service has different generations of hardware, for the same SKU, then
15569     that can be captured here.
15570    :type family: str
15571    :ivar child_resources: List of resources in this virtual cluster.
15572    :vartype child_resources: list[str]
15573    :param maintenance_configuration_id: Specifies maintenance configuration id to apply to this
15574     virtual cluster.
15575    :type maintenance_configuration_id: str
15576    """
15577
15578    _validation = {
15579        'subnet_id': {'readonly': True},
15580        'child_resources': {'readonly': True},
15581    }
15582
15583    _attribute_map = {
15584        'tags': {'key': 'tags', 'type': '{str}'},
15585        'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
15586        'family': {'key': 'properties.family', 'type': 'str'},
15587        'child_resources': {'key': 'properties.childResources', 'type': '[str]'},
15588        'maintenance_configuration_id': {'key': 'properties.maintenanceConfigurationId', 'type': 'str'},
15589    }
15590
15591    def __init__(
15592        self,
15593        **kwargs
15594    ):
15595        super(VirtualClusterUpdate, self).__init__(**kwargs)
15596        self.tags = kwargs.get('tags', None)
15597        self.subnet_id = None
15598        self.family = kwargs.get('family', None)
15599        self.child_resources = None
15600        self.maintenance_configuration_id = kwargs.get('maintenance_configuration_id', None)
15601
15602
15603class VirtualNetworkRule(ProxyResource):
15604    """A virtual network rule.
15605
15606    Variables are only populated by the server, and will be ignored when sending a request.
15607
15608    :ivar id: Resource ID.
15609    :vartype id: str
15610    :ivar name: Resource name.
15611    :vartype name: str
15612    :ivar type: Resource type.
15613    :vartype type: str
15614    :param virtual_network_subnet_id: The ARM resource id of the virtual network subnet.
15615    :type virtual_network_subnet_id: str
15616    :param ignore_missing_vnet_service_endpoint: Create firewall rule before the virtual network
15617     has vnet service endpoint enabled.
15618    :type ignore_missing_vnet_service_endpoint: bool
15619    :ivar state: Virtual Network Rule State. Possible values include: "Initializing", "InProgress",
15620     "Ready", "Failed", "Deleting", "Unknown".
15621    :vartype state: str or ~azure.mgmt.sql.models.VirtualNetworkRuleState
15622    """
15623
15624    _validation = {
15625        'id': {'readonly': True},
15626        'name': {'readonly': True},
15627        'type': {'readonly': True},
15628        'state': {'readonly': True},
15629    }
15630
15631    _attribute_map = {
15632        'id': {'key': 'id', 'type': 'str'},
15633        'name': {'key': 'name', 'type': 'str'},
15634        'type': {'key': 'type', 'type': 'str'},
15635        'virtual_network_subnet_id': {'key': 'properties.virtualNetworkSubnetId', 'type': 'str'},
15636        'ignore_missing_vnet_service_endpoint': {'key': 'properties.ignoreMissingVnetServiceEndpoint', 'type': 'bool'},
15637        'state': {'key': 'properties.state', 'type': 'str'},
15638    }
15639
15640    def __init__(
15641        self,
15642        **kwargs
15643    ):
15644        super(VirtualNetworkRule, self).__init__(**kwargs)
15645        self.virtual_network_subnet_id = kwargs.get('virtual_network_subnet_id', None)
15646        self.ignore_missing_vnet_service_endpoint = kwargs.get('ignore_missing_vnet_service_endpoint', None)
15647        self.state = None
15648
15649
15650class VirtualNetworkRuleListResult(msrest.serialization.Model):
15651    """A list of virtual network rules.
15652
15653    Variables are only populated by the server, and will be ignored when sending a request.
15654
15655    :ivar value: Array of results.
15656    :vartype value: list[~azure.mgmt.sql.models.VirtualNetworkRule]
15657    :ivar next_link: Link to retrieve next page of results.
15658    :vartype next_link: str
15659    """
15660
15661    _validation = {
15662        'value': {'readonly': True},
15663        'next_link': {'readonly': True},
15664    }
15665
15666    _attribute_map = {
15667        'value': {'key': 'value', 'type': '[VirtualNetworkRule]'},
15668        'next_link': {'key': 'nextLink', 'type': 'str'},
15669    }
15670
15671    def __init__(
15672        self,
15673        **kwargs
15674    ):
15675        super(VirtualNetworkRuleListResult, self).__init__(**kwargs)
15676        self.value = None
15677        self.next_link = None
15678
15679
15680class VulnerabilityAssessmentRecurringScansProperties(msrest.serialization.Model):
15681    """Properties of a Vulnerability Assessment recurring scans.
15682
15683    :param is_enabled: Recurring scans state.
15684    :type is_enabled: bool
15685    :param email_subscription_admins: Specifies that the schedule scan notification will be is sent
15686     to the subscription administrators.
15687    :type email_subscription_admins: bool
15688    :param emails: Specifies an array of e-mail addresses to which the scan notification is sent.
15689    :type emails: list[str]
15690    """
15691
15692    _attribute_map = {
15693        'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
15694        'email_subscription_admins': {'key': 'emailSubscriptionAdmins', 'type': 'bool'},
15695        'emails': {'key': 'emails', 'type': '[str]'},
15696    }
15697
15698    def __init__(
15699        self,
15700        **kwargs
15701    ):
15702        super(VulnerabilityAssessmentRecurringScansProperties, self).__init__(**kwargs)
15703        self.is_enabled = kwargs.get('is_enabled', None)
15704        self.email_subscription_admins = kwargs.get('email_subscription_admins', True)
15705        self.emails = kwargs.get('emails', None)
15706
15707
15708class VulnerabilityAssessmentScanError(msrest.serialization.Model):
15709    """Properties of a vulnerability assessment scan error.
15710
15711    Variables are only populated by the server, and will be ignored when sending a request.
15712
15713    :ivar code: The error code.
15714    :vartype code: str
15715    :ivar message: The error message.
15716    :vartype message: str
15717    """
15718
15719    _validation = {
15720        'code': {'readonly': True},
15721        'message': {'readonly': True},
15722    }
15723
15724    _attribute_map = {
15725        'code': {'key': 'code', 'type': 'str'},
15726        'message': {'key': 'message', 'type': 'str'},
15727    }
15728
15729    def __init__(
15730        self,
15731        **kwargs
15732    ):
15733        super(VulnerabilityAssessmentScanError, self).__init__(**kwargs)
15734        self.code = None
15735        self.message = None
15736
15737
15738class VulnerabilityAssessmentScanRecord(ProxyResource):
15739    """A vulnerability assessment scan record.
15740
15741    Variables are only populated by the server, and will be ignored when sending a request.
15742
15743    :ivar id: Resource ID.
15744    :vartype id: str
15745    :ivar name: Resource name.
15746    :vartype name: str
15747    :ivar type: Resource type.
15748    :vartype type: str
15749    :ivar scan_id: The scan ID.
15750    :vartype scan_id: str
15751    :ivar trigger_type: The scan trigger type. Possible values include: "OnDemand", "Recurring".
15752    :vartype trigger_type: str or ~azure.mgmt.sql.models.VulnerabilityAssessmentScanTriggerType
15753    :ivar state: The scan status. Possible values include: "Passed", "Failed", "FailedToRun",
15754     "InProgress".
15755    :vartype state: str or ~azure.mgmt.sql.models.VulnerabilityAssessmentScanState
15756    :ivar start_time: The scan start time (UTC).
15757    :vartype start_time: ~datetime.datetime
15758    :ivar end_time: The scan end time (UTC).
15759    :vartype end_time: ~datetime.datetime
15760    :ivar errors: The scan errors.
15761    :vartype errors: list[~azure.mgmt.sql.models.VulnerabilityAssessmentScanError]
15762    :ivar storage_container_path: The scan results storage container path.
15763    :vartype storage_container_path: str
15764    :ivar number_of_failed_security_checks: The number of failed security checks.
15765    :vartype number_of_failed_security_checks: int
15766    """
15767
15768    _validation = {
15769        'id': {'readonly': True},
15770        'name': {'readonly': True},
15771        'type': {'readonly': True},
15772        'scan_id': {'readonly': True},
15773        'trigger_type': {'readonly': True},
15774        'state': {'readonly': True},
15775        'start_time': {'readonly': True},
15776        'end_time': {'readonly': True},
15777        'errors': {'readonly': True},
15778        'storage_container_path': {'readonly': True},
15779        'number_of_failed_security_checks': {'readonly': True},
15780    }
15781
15782    _attribute_map = {
15783        'id': {'key': 'id', 'type': 'str'},
15784        'name': {'key': 'name', 'type': 'str'},
15785        'type': {'key': 'type', 'type': 'str'},
15786        'scan_id': {'key': 'properties.scanId', 'type': 'str'},
15787        'trigger_type': {'key': 'properties.triggerType', 'type': 'str'},
15788        'state': {'key': 'properties.state', 'type': 'str'},
15789        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
15790        'end_time': {'key': 'properties.endTime', 'type': 'iso-8601'},
15791        'errors': {'key': 'properties.errors', 'type': '[VulnerabilityAssessmentScanError]'},
15792        'storage_container_path': {'key': 'properties.storageContainerPath', 'type': 'str'},
15793        'number_of_failed_security_checks': {'key': 'properties.numberOfFailedSecurityChecks', 'type': 'int'},
15794    }
15795
15796    def __init__(
15797        self,
15798        **kwargs
15799    ):
15800        super(VulnerabilityAssessmentScanRecord, self).__init__(**kwargs)
15801        self.scan_id = None
15802        self.trigger_type = None
15803        self.state = None
15804        self.start_time = None
15805        self.end_time = None
15806        self.errors = None
15807        self.storage_container_path = None
15808        self.number_of_failed_security_checks = None
15809
15810
15811class VulnerabilityAssessmentScanRecordListResult(msrest.serialization.Model):
15812    """A list of vulnerability assessment scan records.
15813
15814    Variables are only populated by the server, and will be ignored when sending a request.
15815
15816    :ivar value: Array of results.
15817    :vartype value: list[~azure.mgmt.sql.models.VulnerabilityAssessmentScanRecord]
15818    :ivar next_link: Link to retrieve next page of results.
15819    :vartype next_link: str
15820    """
15821
15822    _validation = {
15823        'value': {'readonly': True},
15824        'next_link': {'readonly': True},
15825    }
15826
15827    _attribute_map = {
15828        'value': {'key': 'value', 'type': '[VulnerabilityAssessmentScanRecord]'},
15829        'next_link': {'key': 'nextLink', 'type': 'str'},
15830    }
15831
15832    def __init__(
15833        self,
15834        **kwargs
15835    ):
15836        super(VulnerabilityAssessmentScanRecordListResult, self).__init__(**kwargs)
15837        self.value = None
15838        self.next_link = None
15839
15840
15841class WorkloadClassifier(ProxyResource):
15842    """Workload classifier operations for a data warehouse.
15843
15844    Variables are only populated by the server, and will be ignored when sending a request.
15845
15846    :ivar id: Resource ID.
15847    :vartype id: str
15848    :ivar name: Resource name.
15849    :vartype name: str
15850    :ivar type: Resource type.
15851    :vartype type: str
15852    :param member_name: The workload classifier member name.
15853    :type member_name: str
15854    :param label: The workload classifier label.
15855    :type label: str
15856    :param context: The workload classifier context.
15857    :type context: str
15858    :param start_time: The workload classifier start time for classification.
15859    :type start_time: str
15860    :param end_time: The workload classifier end time for classification.
15861    :type end_time: str
15862    :param importance: The workload classifier importance.
15863    :type importance: str
15864    """
15865
15866    _validation = {
15867        'id': {'readonly': True},
15868        'name': {'readonly': True},
15869        'type': {'readonly': True},
15870    }
15871
15872    _attribute_map = {
15873        'id': {'key': 'id', 'type': 'str'},
15874        'name': {'key': 'name', 'type': 'str'},
15875        'type': {'key': 'type', 'type': 'str'},
15876        'member_name': {'key': 'properties.memberName', 'type': 'str'},
15877        'label': {'key': 'properties.label', 'type': 'str'},
15878        'context': {'key': 'properties.context', 'type': 'str'},
15879        'start_time': {'key': 'properties.startTime', 'type': 'str'},
15880        'end_time': {'key': 'properties.endTime', 'type': 'str'},
15881        'importance': {'key': 'properties.importance', 'type': 'str'},
15882    }
15883
15884    def __init__(
15885        self,
15886        **kwargs
15887    ):
15888        super(WorkloadClassifier, self).__init__(**kwargs)
15889        self.member_name = kwargs.get('member_name', None)
15890        self.label = kwargs.get('label', None)
15891        self.context = kwargs.get('context', None)
15892        self.start_time = kwargs.get('start_time', None)
15893        self.end_time = kwargs.get('end_time', None)
15894        self.importance = kwargs.get('importance', None)
15895
15896
15897class WorkloadClassifierListResult(msrest.serialization.Model):
15898    """A list of workload classifiers for a workload group.
15899
15900    Variables are only populated by the server, and will be ignored when sending a request.
15901
15902    :ivar value: Array of results.
15903    :vartype value: list[~azure.mgmt.sql.models.WorkloadClassifier]
15904    :ivar next_link: Link to retrieve next page of results.
15905    :vartype next_link: str
15906    """
15907
15908    _validation = {
15909        'value': {'readonly': True},
15910        'next_link': {'readonly': True},
15911    }
15912
15913    _attribute_map = {
15914        'value': {'key': 'value', 'type': '[WorkloadClassifier]'},
15915        'next_link': {'key': 'nextLink', 'type': 'str'},
15916    }
15917
15918    def __init__(
15919        self,
15920        **kwargs
15921    ):
15922        super(WorkloadClassifierListResult, self).__init__(**kwargs)
15923        self.value = None
15924        self.next_link = None
15925
15926
15927class WorkloadGroup(ProxyResource):
15928    """Workload group operations for a data warehouse.
15929
15930    Variables are only populated by the server, and will be ignored when sending a request.
15931
15932    :ivar id: Resource ID.
15933    :vartype id: str
15934    :ivar name: Resource name.
15935    :vartype name: str
15936    :ivar type: Resource type.
15937    :vartype type: str
15938    :param min_resource_percent: The workload group minimum percentage resource.
15939    :type min_resource_percent: int
15940    :param max_resource_percent: The workload group cap percentage resource.
15941    :type max_resource_percent: int
15942    :param min_resource_percent_per_request: The workload group request minimum grant percentage.
15943    :type min_resource_percent_per_request: float
15944    :param max_resource_percent_per_request: The workload group request maximum grant percentage.
15945    :type max_resource_percent_per_request: float
15946    :param importance: The workload group importance level.
15947    :type importance: str
15948    :param query_execution_timeout: The workload group query execution timeout.
15949    :type query_execution_timeout: int
15950    """
15951
15952    _validation = {
15953        'id': {'readonly': True},
15954        'name': {'readonly': True},
15955        'type': {'readonly': True},
15956    }
15957
15958    _attribute_map = {
15959        'id': {'key': 'id', 'type': 'str'},
15960        'name': {'key': 'name', 'type': 'str'},
15961        'type': {'key': 'type', 'type': 'str'},
15962        'min_resource_percent': {'key': 'properties.minResourcePercent', 'type': 'int'},
15963        'max_resource_percent': {'key': 'properties.maxResourcePercent', 'type': 'int'},
15964        'min_resource_percent_per_request': {'key': 'properties.minResourcePercentPerRequest', 'type': 'float'},
15965        'max_resource_percent_per_request': {'key': 'properties.maxResourcePercentPerRequest', 'type': 'float'},
15966        'importance': {'key': 'properties.importance', 'type': 'str'},
15967        'query_execution_timeout': {'key': 'properties.queryExecutionTimeout', 'type': 'int'},
15968    }
15969
15970    def __init__(
15971        self,
15972        **kwargs
15973    ):
15974        super(WorkloadGroup, self).__init__(**kwargs)
15975        self.min_resource_percent = kwargs.get('min_resource_percent', None)
15976        self.max_resource_percent = kwargs.get('max_resource_percent', None)
15977        self.min_resource_percent_per_request = kwargs.get('min_resource_percent_per_request', None)
15978        self.max_resource_percent_per_request = kwargs.get('max_resource_percent_per_request', None)
15979        self.importance = kwargs.get('importance', None)
15980        self.query_execution_timeout = kwargs.get('query_execution_timeout', None)
15981
15982
15983class WorkloadGroupListResult(msrest.serialization.Model):
15984    """A list of workload groups.
15985
15986    Variables are only populated by the server, and will be ignored when sending a request.
15987
15988    :ivar value: Array of results.
15989    :vartype value: list[~azure.mgmt.sql.models.WorkloadGroup]
15990    :ivar next_link: Link to retrieve next page of results.
15991    :vartype next_link: str
15992    """
15993
15994    _validation = {
15995        'value': {'readonly': True},
15996        'next_link': {'readonly': True},
15997    }
15998
15999    _attribute_map = {
16000        'value': {'key': 'value', 'type': '[WorkloadGroup]'},
16001        'next_link': {'key': 'nextLink', 'type': 'str'},
16002    }
16003
16004    def __init__(
16005        self,
16006        **kwargs
16007    ):
16008        super(WorkloadGroupListResult, self).__init__(**kwargs)
16009        self.value = None
16010        self.next_link = None
16011