looker-sdk 25.18.0__py3-none-any.whl → 26.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
  #
23
23
 
24
- # 377 API models: 289 Spec, 0 Request, 64 Write, 24 Enum
24
+ # 381 API models: 291 Spec, 0 Request, 65 Write, 25 Enum
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -367,6 +367,7 @@ class AlertNotifications(model.Model):
367
367
  threshold_value: The value of the threshold which triggers the alert notification
368
368
  ran_at: The time at which the alert query ran
369
369
  alert:
370
+ notification_type: The type of notification, 'email' or 'slack'
370
371
  """
371
372
 
372
373
  notification_id: Optional[str] = None
@@ -377,6 +378,7 @@ class AlertNotifications(model.Model):
377
378
  threshold_value: Optional[float] = None
378
379
  ran_at: Optional[str] = None
379
380
  alert: Optional["MobilePayload"] = None
381
+ notification_type: Optional[str] = None
380
382
 
381
383
  def __init__(
382
384
  self,
@@ -388,7 +390,8 @@ class AlertNotifications(model.Model):
388
390
  field_value: Optional[float] = None,
389
391
  threshold_value: Optional[float] = None,
390
392
  ran_at: Optional[str] = None,
391
- alert: Optional["MobilePayload"] = None
393
+ alert: Optional["MobilePayload"] = None,
394
+ notification_type: Optional[str] = None
392
395
  ):
393
396
  self.notification_id = notification_id
394
397
  self.alert_condition_id = alert_condition_id
@@ -398,6 +401,7 @@ class AlertNotifications(model.Model):
398
401
  self.threshold_value = threshold_value
399
402
  self.ran_at = ran_at
400
403
  self.alert = alert
404
+ self.notification_type = notification_type
401
405
 
402
406
 
403
407
  @attr.s(auto_attribs=True, init=False)
@@ -1062,6 +1066,50 @@ class Category(enum.Enum):
1062
1066
  Category.__new__ = model.safe_enum__new__ # type: ignore
1063
1067
 
1064
1068
 
1069
+ @attr.s(auto_attribs=True, init=False)
1070
+ class Certification(model.Model):
1071
+ """
1072
+ Attributes:
1073
+ certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked".
1074
+ user_name: Display name of user who certified the content, derived from user_id
1075
+ notes: Certification notes
1076
+ updated_at: Timestamp of certification
1077
+ """
1078
+
1079
+ certification_status: Optional["CertificationStatus"] = None
1080
+ user_name: Optional[str] = None
1081
+ notes: Optional[str] = None
1082
+ updated_at: Optional[datetime.datetime] = None
1083
+
1084
+ def __init__(
1085
+ self,
1086
+ *,
1087
+ certification_status: Optional["CertificationStatus"] = None,
1088
+ user_name: Optional[str] = None,
1089
+ notes: Optional[str] = None,
1090
+ updated_at: Optional[datetime.datetime] = None
1091
+ ):
1092
+ self.certification_status = certification_status
1093
+ self.user_name = user_name
1094
+ self.notes = notes
1095
+ self.updated_at = updated_at
1096
+
1097
+
1098
+ class CertificationStatus(enum.Enum):
1099
+ """
1100
+ Certification status: "certified" or "revoked" Valid values are: "certified", "revoked". (Enum defined in Certification)
1101
+
1102
+ """
1103
+
1104
+ certified = "certified"
1105
+ revoked = "revoked"
1106
+ invalid_api_enum_value = "invalid_api_enum_value"
1107
+
1108
+
1109
+ # https://github.com/python/mypy/issues/2427
1110
+ CertificationStatus.__new__ = model.safe_enum__new__ # type: ignore
1111
+
1112
+
1065
1113
  @attr.s(auto_attribs=True, init=False)
1066
1114
  class CIChangeRequest(model.Model):
1067
1115
  """
@@ -1120,55 +1168,6 @@ class CIGitState(model.Model):
1120
1168
  self.target = target
1121
1169
 
1122
1170
 
1123
- @attr.s(auto_attribs=True, init=False)
1124
- class CIRunResult(model.Model):
1125
- """
1126
- Attributes:
1127
- sql_result:
1128
- sql_error:
1129
- assert_result:
1130
- assert_error:
1131
- content_result:
1132
- content_error:
1133
- lookml_result:
1134
- lookml_error:
1135
- generic_error:
1136
- """
1137
-
1138
- sql_result: Optional["SqlValidatorResult"] = None
1139
- sql_error: Optional["GenericError"] = None
1140
- assert_result: Optional["AssertValidatorResult"] = None
1141
- assert_error: Optional["GenericError"] = None
1142
- content_result: Optional["ContentValidatorResult"] = None
1143
- content_error: Optional["GenericError"] = None
1144
- lookml_result: Optional["LookMLValidatorResult"] = None
1145
- lookml_error: Optional["GenericError"] = None
1146
- generic_error: Optional["GenericError"] = None
1147
-
1148
- def __init__(
1149
- self,
1150
- *,
1151
- sql_result: Optional["SqlValidatorResult"] = None,
1152
- sql_error: Optional["GenericError"] = None,
1153
- assert_result: Optional["AssertValidatorResult"] = None,
1154
- assert_error: Optional["GenericError"] = None,
1155
- content_result: Optional["ContentValidatorResult"] = None,
1156
- content_error: Optional["GenericError"] = None,
1157
- lookml_result: Optional["LookMLValidatorResult"] = None,
1158
- lookml_error: Optional["GenericError"] = None,
1159
- generic_error: Optional["GenericError"] = None
1160
- ):
1161
- self.sql_result = sql_result
1162
- self.sql_error = sql_error
1163
- self.assert_result = assert_result
1164
- self.assert_error = assert_error
1165
- self.content_result = content_result
1166
- self.content_error = content_error
1167
- self.lookml_result = lookml_result
1168
- self.lookml_error = lookml_error
1169
- self.generic_error = generic_error
1170
-
1171
-
1172
1171
  @attr.s(auto_attribs=True, init=False)
1173
1172
  class CIScheduleTrigger(model.Model):
1174
1173
  """
@@ -1545,6 +1544,8 @@ class ContentSearch(model.Model):
1545
1544
  view_count: Number of times the content has been viewed
1546
1545
  preferred_viewer: Preferred way of viewing the content (only applies to dashboards)
1547
1546
  model: Name of the model the explore belongs to
1547
+ created_by_id: Creator Id of the content
1548
+ certification_status: Certification status of the content
1548
1549
  """
1549
1550
 
1550
1551
  can: Optional[MutableMapping[str, bool]] = None
@@ -1557,6 +1558,8 @@ class ContentSearch(model.Model):
1557
1558
  view_count: Optional[int] = None
1558
1559
  preferred_viewer: Optional[str] = None
1559
1560
  model: Optional[str] = None
1561
+ created_by_id: Optional[int] = None
1562
+ certification_status: Optional[str] = None
1560
1563
 
1561
1564
  def __init__(
1562
1565
  self,
@@ -1570,7 +1573,9 @@ class ContentSearch(model.Model):
1570
1573
  folder_name: Optional[str] = None,
1571
1574
  view_count: Optional[int] = None,
1572
1575
  preferred_viewer: Optional[str] = None,
1573
- model: Optional[str] = None
1576
+ model: Optional[str] = None,
1577
+ created_by_id: Optional[int] = None,
1578
+ certification_status: Optional[str] = None
1574
1579
  ):
1575
1580
  self.can = can
1576
1581
  self.content_id = content_id
@@ -1582,6 +1587,8 @@ class ContentSearch(model.Model):
1582
1587
  self.view_count = view_count
1583
1588
  self.preferred_viewer = preferred_viewer
1584
1589
  self.model = model
1590
+ self.created_by_id = created_by_id
1591
+ self.certification_status = certification_status
1585
1592
 
1586
1593
 
1587
1594
  @attr.s(auto_attribs=True, init=False)
@@ -1607,6 +1614,7 @@ class ContentSummary(model.Model):
1607
1614
  group_weighted_score:
1608
1615
  suggestion_score:
1609
1616
  preferred_viewer: The preferred route for viewing this content (ie: dashboards or dashboards-next)
1617
+ certification_metadata:
1610
1618
  """
1611
1619
 
1612
1620
  can: Optional[MutableMapping[str, bool]] = None
@@ -1628,6 +1636,7 @@ class ContentSummary(model.Model):
1628
1636
  group_weighted_score: Optional[float] = None
1629
1637
  suggestion_score: Optional[float] = None
1630
1638
  preferred_viewer: Optional[str] = None
1639
+ certification_metadata: Optional["Certification"] = None
1631
1640
 
1632
1641
  def __init__(
1633
1642
  self,
@@ -1650,7 +1659,8 @@ class ContentSummary(model.Model):
1650
1659
  weighted_score: Optional[float] = None,
1651
1660
  group_weighted_score: Optional[float] = None,
1652
1661
  suggestion_score: Optional[float] = None,
1653
- preferred_viewer: Optional[str] = None
1662
+ preferred_viewer: Optional[str] = None,
1663
+ certification_metadata: Optional["Certification"] = None
1654
1664
  ):
1655
1665
  self.can = can
1656
1666
  self.id = id
@@ -1671,6 +1681,7 @@ class ContentSummary(model.Model):
1671
1681
  self.group_weighted_score = group_weighted_score
1672
1682
  self.suggestion_score = suggestion_score
1673
1683
  self.preferred_viewer = preferred_viewer
1684
+ self.certification_metadata = certification_metadata
1674
1685
 
1675
1686
 
1676
1687
  @attr.s(auto_attribs=True, init=False)
@@ -3274,6 +3285,7 @@ class Dashboard(model.Model):
3274
3285
  user_id: Id of User
3275
3286
  slug: Content Metadata Slug
3276
3287
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
3288
+ certification_metadata:
3277
3289
  alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes
3278
3290
  background_color: Background color
3279
3291
  created_at: Time that the Dashboard was created.
@@ -3307,6 +3319,7 @@ class Dashboard(model.Model):
3307
3319
  view_count: Number of times viewed in the Looker web UI
3308
3320
  appearance:
3309
3321
  url: Relative URL of the dashboard
3322
+ layout_granularity: The layout granularity to apply to this dashboard (ie: default or granular)
3310
3323
  """
3311
3324
 
3312
3325
  can: Optional[MutableMapping[str, bool]] = None
@@ -3325,6 +3338,7 @@ class Dashboard(model.Model):
3325
3338
  user_id: Optional[str] = None
3326
3339
  slug: Optional[str] = None
3327
3340
  preferred_viewer: Optional[str] = None
3341
+ certification_metadata: Optional["Certification"] = None
3328
3342
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None
3329
3343
  background_color: Optional[str] = None
3330
3344
  created_at: Optional[datetime.datetime] = None
@@ -3358,6 +3372,7 @@ class Dashboard(model.Model):
3358
3372
  view_count: Optional[int] = None
3359
3373
  appearance: Optional["DashboardAppearance"] = None
3360
3374
  url: Optional[str] = None
3375
+ layout_granularity: Optional[str] = None
3361
3376
 
3362
3377
  def __init__(
3363
3378
  self,
@@ -3378,6 +3393,7 @@ class Dashboard(model.Model):
3378
3393
  user_id: Optional[str] = None,
3379
3394
  slug: Optional[str] = None,
3380
3395
  preferred_viewer: Optional[str] = None,
3396
+ certification_metadata: Optional["Certification"] = None,
3381
3397
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None,
3382
3398
  background_color: Optional[str] = None,
3383
3399
  created_at: Optional[datetime.datetime] = None,
@@ -3410,7 +3426,8 @@ class Dashboard(model.Model):
3410
3426
  title_color: Optional[str] = None,
3411
3427
  view_count: Optional[int] = None,
3412
3428
  appearance: Optional["DashboardAppearance"] = None,
3413
- url: Optional[str] = None
3429
+ url: Optional[str] = None,
3430
+ layout_granularity: Optional[str] = None
3414
3431
  ):
3415
3432
  self.can = can
3416
3433
  self.content_favorite_id = content_favorite_id
@@ -3428,6 +3445,7 @@ class Dashboard(model.Model):
3428
3445
  self.user_id = user_id
3429
3446
  self.slug = slug
3430
3447
  self.preferred_viewer = preferred_viewer
3448
+ self.certification_metadata = certification_metadata
3431
3449
  self.alert_sync_with_dashboard_filter_enabled = (
3432
3450
  alert_sync_with_dashboard_filter_enabled
3433
3451
  )
@@ -3463,6 +3481,7 @@ class Dashboard(model.Model):
3463
3481
  self.view_count = view_count
3464
3482
  self.appearance = appearance
3465
3483
  self.url = url
3484
+ self.layout_granularity = layout_granularity
3466
3485
 
3467
3486
 
3468
3487
  @attr.s(auto_attribs=True, init=False)
@@ -3547,6 +3566,7 @@ class DashboardBase(model.Model):
3547
3566
  user_id: Id of User
3548
3567
  slug: Content Metadata Slug
3549
3568
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
3569
+ certification_metadata:
3550
3570
  """
3551
3571
 
3552
3572
  can: Optional[MutableMapping[str, bool]] = None
@@ -3565,6 +3585,7 @@ class DashboardBase(model.Model):
3565
3585
  user_id: Optional[str] = None
3566
3586
  slug: Optional[str] = None
3567
3587
  preferred_viewer: Optional[str] = None
3588
+ certification_metadata: Optional["Certification"] = None
3568
3589
 
3569
3590
  def __init__(
3570
3591
  self,
@@ -3584,7 +3605,8 @@ class DashboardBase(model.Model):
3584
3605
  title: Optional[str] = None,
3585
3606
  user_id: Optional[str] = None,
3586
3607
  slug: Optional[str] = None,
3587
- preferred_viewer: Optional[str] = None
3608
+ preferred_viewer: Optional[str] = None,
3609
+ certification_metadata: Optional["Certification"] = None
3588
3610
  ):
3589
3611
  self.can = can
3590
3612
  self.content_favorite_id = content_favorite_id
@@ -3602,6 +3624,7 @@ class DashboardBase(model.Model):
3602
3624
  self.user_id = user_id
3603
3625
  self.slug = slug
3604
3626
  self.preferred_viewer = preferred_viewer
3627
+ self.certification_metadata = certification_metadata
3605
3628
 
3606
3629
 
3607
3630
  @attr.s(auto_attribs=True, init=False)
@@ -3612,6 +3635,7 @@ class DashboardElement(model.Model):
3612
3635
  body_text: Text tile body text
3613
3636
  body_text_as_html: Text tile body text as Html
3614
3637
  dashboard_id: Id of Dashboard
3638
+ dashboard_layout_id: Id of Dashboard Layout
3615
3639
  edit_uri: Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only).
3616
3640
  id: Unique Id
3617
3641
  look:
@@ -3645,6 +3669,7 @@ class DashboardElement(model.Model):
3645
3669
  body_text: Optional[str] = None
3646
3670
  body_text_as_html: Optional[str] = None
3647
3671
  dashboard_id: Optional[str] = None
3672
+ dashboard_layout_id: Optional[str] = None
3648
3673
  edit_uri: Optional[str] = None
3649
3674
  id: Optional[str] = None
3650
3675
  look: Optional["LookWithQuery"] = None
@@ -3680,6 +3705,7 @@ class DashboardElement(model.Model):
3680
3705
  body_text: Optional[str] = None,
3681
3706
  body_text_as_html: Optional[str] = None,
3682
3707
  dashboard_id: Optional[str] = None,
3708
+ dashboard_layout_id: Optional[str] = None,
3683
3709
  edit_uri: Optional[str] = None,
3684
3710
  id: Optional[str] = None,
3685
3711
  look: Optional["LookWithQuery"] = None,
@@ -3712,6 +3738,7 @@ class DashboardElement(model.Model):
3712
3738
  self.body_text = body_text
3713
3739
  self.body_text_as_html = body_text_as_html
3714
3740
  self.dashboard_id = dashboard_id
3741
+ self.dashboard_layout_id = dashboard_layout_id
3715
3742
  self.edit_uri = edit_uri
3716
3743
  self.id = id
3717
3744
  self.look = look
@@ -3901,6 +3928,10 @@ class DashboardLayoutComponent(model.Model):
3901
3928
  element_title: Dashboard element title, extracted from the Dashboard Element.
3902
3929
  element_title_hidden: Whether or not the dashboard element title is displayed.
3903
3930
  vis_type: Visualization type, extracted from a query's vis_config
3931
+ granular_row: Row (granular layout)
3932
+ granular_column: Column (granular layout)
3933
+ granular_width: Width (granular layout)
3934
+ granular_height: Height (granular layout)
3904
3935
  """
3905
3936
 
3906
3937
  can: Optional[MutableMapping[str, bool]] = None
@@ -3915,6 +3946,10 @@ class DashboardLayoutComponent(model.Model):
3915
3946
  element_title: Optional[str] = None
3916
3947
  element_title_hidden: Optional[bool] = None
3917
3948
  vis_type: Optional[str] = None
3949
+ granular_row: Optional[int] = None
3950
+ granular_column: Optional[int] = None
3951
+ granular_width: Optional[int] = None
3952
+ granular_height: Optional[int] = None
3918
3953
 
3919
3954
  def __init__(
3920
3955
  self,
@@ -3930,7 +3965,11 @@ class DashboardLayoutComponent(model.Model):
3930
3965
  deleted: Optional[bool] = None,
3931
3966
  element_title: Optional[str] = None,
3932
3967
  element_title_hidden: Optional[bool] = None,
3933
- vis_type: Optional[str] = None
3968
+ vis_type: Optional[str] = None,
3969
+ granular_row: Optional[int] = None,
3970
+ granular_column: Optional[int] = None,
3971
+ granular_width: Optional[int] = None,
3972
+ granular_height: Optional[int] = None
3934
3973
  ):
3935
3974
  self.can = can
3936
3975
  self.id = id
@@ -3944,6 +3983,10 @@ class DashboardLayoutComponent(model.Model):
3944
3983
  self.element_title = element_title
3945
3984
  self.element_title_hidden = element_title_hidden
3946
3985
  self.vis_type = vis_type
3986
+ self.granular_row = granular_row
3987
+ self.granular_column = granular_column
3988
+ self.granular_width = granular_width
3989
+ self.granular_height = granular_height
3947
3990
 
3948
3991
 
3949
3992
  @attr.s(auto_attribs=True, init=False)
@@ -4197,6 +4240,7 @@ class DBConnection(model.Model):
4197
4240
  port: Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel.
4198
4241
  username: Username for server authentication
4199
4242
  password: (Write-Only) Password for server authentication
4243
+ has_password: Whether or not the password is present
4200
4244
  uses_oauth: Whether the connection uses OAuth for authentication.
4201
4245
  uses_key_pair_auth: Whether the connection uses key-pair for authentication.
4202
4246
  uses_instance_oauth: Whether the integration uses the oauth instance account.
@@ -4262,6 +4306,7 @@ class DBConnection(model.Model):
4262
4306
  port: Optional[str] = None
4263
4307
  username: Optional[str] = None
4264
4308
  password: Optional[str] = None
4309
+ has_password: Optional[bool] = None
4265
4310
  uses_oauth: Optional[bool] = None
4266
4311
  uses_key_pair_auth: Optional[bool] = None
4267
4312
  uses_instance_oauth: Optional[bool] = None
@@ -4329,6 +4374,7 @@ class DBConnection(model.Model):
4329
4374
  port: Optional[str] = None,
4330
4375
  username: Optional[str] = None,
4331
4376
  password: Optional[str] = None,
4377
+ has_password: Optional[bool] = None,
4332
4378
  uses_oauth: Optional[bool] = None,
4333
4379
  uses_key_pair_auth: Optional[bool] = None,
4334
4380
  uses_instance_oauth: Optional[bool] = None,
@@ -4393,6 +4439,7 @@ class DBConnection(model.Model):
4393
4439
  self.port = port
4394
4440
  self.username = username
4395
4441
  self.password = password
4442
+ self.has_password = has_password
4396
4443
  self.uses_oauth = uses_oauth
4397
4444
  self.uses_key_pair_auth = uses_key_pair_auth
4398
4445
  self.uses_instance_oauth = uses_instance_oauth
@@ -4871,6 +4918,7 @@ class DialectInfoOptions(model.Model):
4871
4918
  disable_context_comment: Can disable query context comments
4872
4919
  host: Host is required
4873
4920
  instance_name: Instance name is required
4921
+ key_pair_authentication: Has support for key pair authentication
4874
4922
  max_billing_gigabytes: Has max billing gigabytes support
4875
4923
  oauth_credentials: Has support for a service account
4876
4924
  pdts_for_oauth: Has OAuth for PDT support
@@ -4895,6 +4943,7 @@ class DialectInfoOptions(model.Model):
4895
4943
  disable_context_comment: Optional[bool] = None
4896
4944
  host: Optional[bool] = None
4897
4945
  instance_name: Optional[bool] = None
4946
+ key_pair_authentication: Optional[bool] = None
4898
4947
  max_billing_gigabytes: Optional[bool] = None
4899
4948
  oauth_credentials: Optional[bool] = None
4900
4949
  pdts_for_oauth: Optional[bool] = None
@@ -4921,6 +4970,7 @@ class DialectInfoOptions(model.Model):
4921
4970
  disable_context_comment: Optional[bool] = None,
4922
4971
  host: Optional[bool] = None,
4923
4972
  instance_name: Optional[bool] = None,
4973
+ key_pair_authentication: Optional[bool] = None,
4924
4974
  max_billing_gigabytes: Optional[bool] = None,
4925
4975
  oauth_credentials: Optional[bool] = None,
4926
4976
  pdts_for_oauth: Optional[bool] = None,
@@ -4944,6 +4994,7 @@ class DialectInfoOptions(model.Model):
4944
4994
  self.disable_context_comment = disable_context_comment
4945
4995
  self.host = host
4946
4996
  self.instance_name = instance_name
4997
+ self.key_pair_authentication = key_pair_authentication
4947
4998
  self.max_billing_gigabytes = max_billing_gigabytes
4948
4999
  self.oauth_credentials = oauth_credentials
4949
5000
  self.pdts_for_oauth = pdts_for_oauth
@@ -5436,6 +5487,7 @@ class ExternalOauthApplication(model.Model):
5436
5487
  client_secret: (Write-Only) The OAuth Client Secret for this application
5437
5488
  tenant_id: The OAuth Tenant ID for this application
5438
5489
  dialect_name: The database dialect for this application.
5490
+ bi_directional_data_access: Whether this application supports bi-directional data access.
5439
5491
  created_at: Creation time for this application
5440
5492
  """
5441
5493
 
@@ -5446,6 +5498,7 @@ class ExternalOauthApplication(model.Model):
5446
5498
  client_secret: Optional[str] = None
5447
5499
  tenant_id: Optional[str] = None
5448
5500
  dialect_name: Optional[str] = None
5501
+ bi_directional_data_access: Optional[bool] = None
5449
5502
  created_at: Optional[datetime.datetime] = None
5450
5503
 
5451
5504
  def __init__(
@@ -5458,6 +5511,7 @@ class ExternalOauthApplication(model.Model):
5458
5511
  client_secret: Optional[str] = None,
5459
5512
  tenant_id: Optional[str] = None,
5460
5513
  dialect_name: Optional[str] = None,
5514
+ bi_directional_data_access: Optional[bool] = None,
5461
5515
  created_at: Optional[datetime.datetime] = None
5462
5516
  ):
5463
5517
  self.can = can
@@ -5467,6 +5521,7 @@ class ExternalOauthApplication(model.Model):
5467
5521
  self.client_secret = client_secret
5468
5522
  self.tenant_id = tenant_id
5469
5523
  self.dialect_name = dialect_name
5524
+ self.bi_directional_data_access = bi_directional_data_access
5470
5525
  self.created_at = created_at
5471
5526
 
5472
5527
 
@@ -7431,6 +7486,7 @@ class Look(model.Model):
7431
7486
  id: Unique Id
7432
7487
  title: Look Title
7433
7488
  user_id: User Id
7489
+ certification_metadata:
7434
7490
  content_favorite_id: Content Favorite Id
7435
7491
  created_at: Time that the Look was created.
7436
7492
  deleted: Whether or not a look is 'soft' deleted.
@@ -7464,6 +7520,7 @@ class Look(model.Model):
7464
7520
  id: Optional[str] = None
7465
7521
  title: Optional[str] = None
7466
7522
  user_id: Optional[str] = None
7523
+ certification_metadata: Optional["Certification"] = None
7467
7524
  content_favorite_id: Optional[str] = None
7468
7525
  created_at: Optional[datetime.datetime] = None
7469
7526
  deleted: Optional[bool] = None
@@ -7499,6 +7556,7 @@ class Look(model.Model):
7499
7556
  id: Optional[str] = None,
7500
7557
  title: Optional[str] = None,
7501
7558
  user_id: Optional[str] = None,
7559
+ certification_metadata: Optional["Certification"] = None,
7502
7560
  content_favorite_id: Optional[str] = None,
7503
7561
  created_at: Optional[datetime.datetime] = None,
7504
7562
  deleted: Optional[bool] = None,
@@ -7531,6 +7589,7 @@ class Look(model.Model):
7531
7589
  self.id = id
7532
7590
  self.title = title
7533
7591
  self.user_id = user_id
7592
+ self.certification_metadata = certification_metadata
7534
7593
  self.content_favorite_id = content_favorite_id
7535
7594
  self.created_at = created_at
7536
7595
  self.deleted = deleted
@@ -7568,6 +7627,7 @@ class LookBasic(model.Model):
7568
7627
  id: Unique Id
7569
7628
  title: Look Title
7570
7629
  user_id: User Id
7630
+ certification_metadata:
7571
7631
  """
7572
7632
 
7573
7633
  can: Optional[MutableMapping[str, bool]] = None
@@ -7575,6 +7635,7 @@ class LookBasic(model.Model):
7575
7635
  id: Optional[str] = None
7576
7636
  title: Optional[str] = None
7577
7637
  user_id: Optional[str] = None
7638
+ certification_metadata: Optional["Certification"] = None
7578
7639
 
7579
7640
  def __init__(
7580
7641
  self,
@@ -7583,13 +7644,15 @@ class LookBasic(model.Model):
7583
7644
  content_metadata_id: Optional[str] = None,
7584
7645
  id: Optional[str] = None,
7585
7646
  title: Optional[str] = None,
7586
- user_id: Optional[str] = None
7647
+ user_id: Optional[str] = None,
7648
+ certification_metadata: Optional["Certification"] = None
7587
7649
  ):
7588
7650
  self.can = can
7589
7651
  self.content_metadata_id = content_metadata_id
7590
7652
  self.id = id
7591
7653
  self.title = title
7592
7654
  self.user_id = user_id
7655
+ self.certification_metadata = certification_metadata
7593
7656
 
7594
7657
 
7595
7658
  @attr.s(auto_attribs=True, init=False)
@@ -7998,6 +8061,8 @@ class LookmlModelExploreField(model.Model):
7998
8061
  week_start_day: The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday".
7999
8062
  times_used: The number of times this field has been used in queries
8000
8063
  original_view: The name of the view this field is defined in. This will be different than "view" when the view has been joined via a different name using the "from" parameter.
8064
+ datatype: The data_type for a date in lookml
8065
+ convert_tz: Whether time zones should be converted for datetime fields
8001
8066
  """
8002
8067
 
8003
8068
  align: Optional["Align"] = None
@@ -8062,6 +8127,8 @@ class LookmlModelExploreField(model.Model):
8062
8127
  week_start_day: Optional["WeekStartDay"] = None
8063
8128
  times_used: Optional[int] = None
8064
8129
  original_view: Optional[str] = None
8130
+ datatype: Optional[str] = None
8131
+ convert_tz: Optional[bool] = None
8065
8132
 
8066
8133
  def __init__(
8067
8134
  self,
@@ -8129,7 +8196,9 @@ class LookmlModelExploreField(model.Model):
8129
8196
  dynamic: Optional[bool] = None,
8130
8197
  week_start_day: Optional["WeekStartDay"] = None,
8131
8198
  times_used: Optional[int] = None,
8132
- original_view: Optional[str] = None
8199
+ original_view: Optional[str] = None,
8200
+ datatype: Optional[str] = None,
8201
+ convert_tz: Optional[bool] = None
8133
8202
  ):
8134
8203
  self.align = align
8135
8204
  self.can_filter = can_filter
@@ -8191,6 +8260,8 @@ class LookmlModelExploreField(model.Model):
8191
8260
  self.week_start_day = week_start_day
8192
8261
  self.times_used = times_used
8193
8262
  self.original_view = original_view
8263
+ self.datatype = datatype
8264
+ self.convert_tz = convert_tz
8194
8265
 
8195
8266
 
8196
8267
  @attr.s(auto_attribs=True, init=False)
@@ -8735,6 +8806,7 @@ class LookWithDashboards(model.Model):
8735
8806
  id: Unique Id
8736
8807
  title: Look Title
8737
8808
  user_id: User Id
8809
+ certification_metadata:
8738
8810
  content_favorite_id: Content Favorite Id
8739
8811
  created_at: Time that the Look was created.
8740
8812
  deleted: Whether or not a look is 'soft' deleted.
@@ -8769,6 +8841,7 @@ class LookWithDashboards(model.Model):
8769
8841
  id: Optional[str] = None
8770
8842
  title: Optional[str] = None
8771
8843
  user_id: Optional[str] = None
8844
+ certification_metadata: Optional["Certification"] = None
8772
8845
  content_favorite_id: Optional[str] = None
8773
8846
  created_at: Optional[datetime.datetime] = None
8774
8847
  deleted: Optional[bool] = None
@@ -8805,6 +8878,7 @@ class LookWithDashboards(model.Model):
8805
8878
  id: Optional[str] = None,
8806
8879
  title: Optional[str] = None,
8807
8880
  user_id: Optional[str] = None,
8881
+ certification_metadata: Optional["Certification"] = None,
8808
8882
  content_favorite_id: Optional[str] = None,
8809
8883
  created_at: Optional[datetime.datetime] = None,
8810
8884
  deleted: Optional[bool] = None,
@@ -8838,6 +8912,7 @@ class LookWithDashboards(model.Model):
8838
8912
  self.id = id
8839
8913
  self.title = title
8840
8914
  self.user_id = user_id
8915
+ self.certification_metadata = certification_metadata
8841
8916
  self.content_favorite_id = content_favorite_id
8842
8917
  self.created_at = created_at
8843
8918
  self.deleted = deleted
@@ -8876,6 +8951,7 @@ class LookWithQuery(model.Model):
8876
8951
  id: Unique Id
8877
8952
  title: Look Title
8878
8953
  user_id: User Id
8954
+ certification_metadata:
8879
8955
  content_favorite_id: Content Favorite Id
8880
8956
  created_at: Time that the Look was created.
8881
8957
  deleted: Whether or not a look is 'soft' deleted.
@@ -8911,6 +8987,7 @@ class LookWithQuery(model.Model):
8911
8987
  id: Optional[str] = None
8912
8988
  title: Optional[str] = None
8913
8989
  user_id: Optional[str] = None
8990
+ certification_metadata: Optional["Certification"] = None
8914
8991
  content_favorite_id: Optional[str] = None
8915
8992
  created_at: Optional[datetime.datetime] = None
8916
8993
  deleted: Optional[bool] = None
@@ -8948,6 +9025,7 @@ class LookWithQuery(model.Model):
8948
9025
  id: Optional[str] = None,
8949
9026
  title: Optional[str] = None,
8950
9027
  user_id: Optional[str] = None,
9028
+ certification_metadata: Optional["Certification"] = None,
8951
9029
  content_favorite_id: Optional[str] = None,
8952
9030
  created_at: Optional[datetime.datetime] = None,
8953
9031
  deleted: Optional[bool] = None,
@@ -8982,6 +9060,7 @@ class LookWithQuery(model.Model):
8982
9060
  self.id = id
8983
9061
  self.title = title
8984
9062
  self.user_id = user_id
9063
+ self.certification_metadata = certification_metadata
8985
9064
  self.content_favorite_id = content_favorite_id
8986
9065
  self.created_at = created_at
8987
9066
  self.deleted = deleted
@@ -9787,6 +9866,9 @@ class PasswordConfig(model.Model):
9787
9866
  require_numeric: Require at least one numeric character
9788
9867
  require_upperlower: Require at least one uppercase and one lowercase letter
9789
9868
  require_special: Require at least one special character
9869
+ expiration_enabled: Enable/Disable password expiration policy.
9870
+ expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365.
9871
+ policy_enabled_at: The timestamp of when the password expiration policy was last enabled.
9790
9872
  """
9791
9873
 
9792
9874
  can: Optional[MutableMapping[str, bool]] = None
@@ -9794,6 +9876,9 @@ class PasswordConfig(model.Model):
9794
9876
  require_numeric: Optional[bool] = None
9795
9877
  require_upperlower: Optional[bool] = None
9796
9878
  require_special: Optional[bool] = None
9879
+ expiration_enabled: Optional[bool] = None
9880
+ expiration_duration_days: Optional[int] = None
9881
+ policy_enabled_at: Optional[datetime.datetime] = None
9797
9882
 
9798
9883
  def __init__(
9799
9884
  self,
@@ -9802,13 +9887,19 @@ class PasswordConfig(model.Model):
9802
9887
  min_length: Optional[int] = None,
9803
9888
  require_numeric: Optional[bool] = None,
9804
9889
  require_upperlower: Optional[bool] = None,
9805
- require_special: Optional[bool] = None
9890
+ require_special: Optional[bool] = None,
9891
+ expiration_enabled: Optional[bool] = None,
9892
+ expiration_duration_days: Optional[int] = None,
9893
+ policy_enabled_at: Optional[datetime.datetime] = None
9806
9894
  ):
9807
9895
  self.can = can
9808
9896
  self.min_length = min_length
9809
9897
  self.require_numeric = require_numeric
9810
9898
  self.require_upperlower = require_upperlower
9811
9899
  self.require_special = require_special
9900
+ self.expiration_enabled = expiration_enabled
9901
+ self.expiration_duration_days = expiration_duration_days
9902
+ self.policy_enabled_at = policy_enabled_at
9812
9903
 
9813
9904
 
9814
9905
  class Period(enum.Enum):
@@ -10014,6 +10105,7 @@ class Project(model.Model):
10014
10105
  git_release_mgmt_enabled: If true, advanced git release management is enabled for this project
10015
10106
  allow_warnings: Validation policy: If true, the project can be committed with warnings when `validation_required` is true. (`allow_warnings` does nothing if `validation_required` is false).
10016
10107
  is_example: If true the project is an example project and cannot be modified
10108
+ has_production_counterpart: If true the project has been pushed to production.
10017
10109
  dependency_status: Status of dependencies in your manifest & lockfile
10018
10110
  """
10019
10111
 
@@ -10038,6 +10130,7 @@ class Project(model.Model):
10038
10130
  git_release_mgmt_enabled: Optional[bool] = None
10039
10131
  allow_warnings: Optional[bool] = None
10040
10132
  is_example: Optional[bool] = None
10133
+ has_production_counterpart: Optional[bool] = None
10041
10134
  dependency_status: Optional[str] = None
10042
10135
 
10043
10136
  def __init__(
@@ -10064,6 +10157,7 @@ class Project(model.Model):
10064
10157
  git_release_mgmt_enabled: Optional[bool] = None,
10065
10158
  allow_warnings: Optional[bool] = None,
10066
10159
  is_example: Optional[bool] = None,
10160
+ has_production_counterpart: Optional[bool] = None,
10067
10161
  dependency_status: Optional[str] = None
10068
10162
  ):
10069
10163
  self.can = can
@@ -10087,6 +10181,7 @@ class Project(model.Model):
10087
10181
  self.git_release_mgmt_enabled = git_release_mgmt_enabled
10088
10182
  self.allow_warnings = allow_warnings
10089
10183
  self.is_example = is_example
10184
+ self.has_production_counterpart = has_production_counterpart
10090
10185
  self.dependency_status = dependency_status
10091
10186
 
10092
10187
 
@@ -10910,6 +11005,7 @@ class Role(model.Model):
10910
11005
  permission_set_id: (Write-Only) Id of permission set
10911
11006
  model_set:
10912
11007
  model_set_id: (Write-Only) Id of model set
11008
+ internal: Is this a Looker internal role
10913
11009
  url: Link to get this item
10914
11010
  users_url: Link to get list of users with this role
10915
11011
  """
@@ -10921,6 +11017,7 @@ class Role(model.Model):
10921
11017
  permission_set_id: Optional[str] = None
10922
11018
  model_set: Optional["ModelSet"] = None
10923
11019
  model_set_id: Optional[str] = None
11020
+ internal: Optional[bool] = None
10924
11021
  url: Optional[str] = None
10925
11022
  users_url: Optional[str] = None
10926
11023
 
@@ -10934,6 +11031,7 @@ class Role(model.Model):
10934
11031
  permission_set_id: Optional[str] = None,
10935
11032
  model_set: Optional["ModelSet"] = None,
10936
11033
  model_set_id: Optional[str] = None,
11034
+ internal: Optional[bool] = None,
10937
11035
  url: Optional[str] = None,
10938
11036
  users_url: Optional[str] = None
10939
11037
  ):
@@ -10944,6 +11042,7 @@ class Role(model.Model):
10944
11042
  self.permission_set_id = permission_set_id
10945
11043
  self.model_set = model_set
10946
11044
  self.model_set_id = model_set_id
11045
+ self.internal = internal
10947
11046
  self.url = url
10948
11047
  self.users_url = users_url
10949
11048
 
@@ -10959,6 +11058,7 @@ class RoleSearch(model.Model):
10959
11058
  permission_set_id: (Write-Only) Id of permission set
10960
11059
  model_set:
10961
11060
  model_set_id: (Write-Only) Id of model set
11061
+ internal: Is this a Looker internal role
10962
11062
  user_count: Count of users with this role
10963
11063
  url: Link to get this item
10964
11064
  users_url: Link to get list of users with this role
@@ -10971,6 +11071,7 @@ class RoleSearch(model.Model):
10971
11071
  permission_set_id: Optional[str] = None
10972
11072
  model_set: Optional["ModelSet"] = None
10973
11073
  model_set_id: Optional[str] = None
11074
+ internal: Optional[bool] = None
10974
11075
  user_count: Optional[int] = None
10975
11076
  url: Optional[str] = None
10976
11077
  users_url: Optional[str] = None
@@ -10985,6 +11086,7 @@ class RoleSearch(model.Model):
10985
11086
  permission_set_id: Optional[str] = None,
10986
11087
  model_set: Optional["ModelSet"] = None,
10987
11088
  model_set_id: Optional[str] = None,
11089
+ internal: Optional[bool] = None,
10988
11090
  user_count: Optional[int] = None,
10989
11091
  url: Optional[str] = None,
10990
11092
  users_url: Optional[str] = None
@@ -10996,6 +11098,7 @@ class RoleSearch(model.Model):
10996
11098
  self.permission_set_id = permission_set_id
10997
11099
  self.model_set = model_set
10998
11100
  self.model_set_id = model_set_id
11101
+ self.internal = internal
10999
11102
  self.user_count = user_count
11000
11103
  self.url = url
11001
11104
  self.users_url = users_url
@@ -11031,7 +11134,7 @@ class Run(model.Model):
11031
11134
  status: Optional[str] = None
11032
11135
  git_service: Optional[str] = None
11033
11136
  git_state: Optional["CIGitState"] = None
11034
- result: Optional["CIRunResult"] = None
11137
+ result: Optional["RunResult"] = None
11035
11138
  schedule: Optional["CIScheduleTrigger"] = None
11036
11139
  target_branch: Optional[str] = None
11037
11140
  title: Optional[str] = None
@@ -11051,7 +11154,7 @@ class Run(model.Model):
11051
11154
  status: Optional[str] = None,
11052
11155
  git_service: Optional[str] = None,
11053
11156
  git_state: Optional["CIGitState"] = None,
11054
- result: Optional["CIRunResult"] = None,
11157
+ result: Optional["RunResult"] = None,
11055
11158
  schedule: Optional["CIScheduleTrigger"] = None,
11056
11159
  target_branch: Optional[str] = None,
11057
11160
  title: Optional[str] = None,
@@ -11179,6 +11282,55 @@ class RunningQueries(model.Model):
11179
11282
  self.sql_interface_sql = sql_interface_sql
11180
11283
 
11181
11284
 
11285
+ @attr.s(auto_attribs=True, init=False)
11286
+ class RunResult(model.Model):
11287
+ """
11288
+ Attributes:
11289
+ sql_result:
11290
+ sql_error:
11291
+ assert_result:
11292
+ assert_error:
11293
+ content_result:
11294
+ content_error:
11295
+ lookml_result:
11296
+ lookml_error:
11297
+ generic_error:
11298
+ """
11299
+
11300
+ sql_result: Optional["SqlValidatorResult"] = None
11301
+ sql_error: Optional["GenericError"] = None
11302
+ assert_result: Optional["AssertValidatorResult"] = None
11303
+ assert_error: Optional["GenericError"] = None
11304
+ content_result: Optional["ContentValidatorResult"] = None
11305
+ content_error: Optional["GenericError"] = None
11306
+ lookml_result: Optional["LookMLValidatorResult"] = None
11307
+ lookml_error: Optional["GenericError"] = None
11308
+ generic_error: Optional["GenericError"] = None
11309
+
11310
+ def __init__(
11311
+ self,
11312
+ *,
11313
+ sql_result: Optional["SqlValidatorResult"] = None,
11314
+ sql_error: Optional["GenericError"] = None,
11315
+ assert_result: Optional["AssertValidatorResult"] = None,
11316
+ assert_error: Optional["GenericError"] = None,
11317
+ content_result: Optional["ContentValidatorResult"] = None,
11318
+ content_error: Optional["GenericError"] = None,
11319
+ lookml_result: Optional["LookMLValidatorResult"] = None,
11320
+ lookml_error: Optional["GenericError"] = None,
11321
+ generic_error: Optional["GenericError"] = None
11322
+ ):
11323
+ self.sql_result = sql_result
11324
+ self.sql_error = sql_error
11325
+ self.assert_result = assert_result
11326
+ self.assert_error = assert_error
11327
+ self.content_result = content_result
11328
+ self.content_error = content_error
11329
+ self.lookml_result = lookml_result
11330
+ self.lookml_error = lookml_error
11331
+ self.generic_error = generic_error
11332
+
11333
+
11182
11334
  @attr.s(auto_attribs=True, init=False)
11183
11335
  class SamlConfig(model.Model):
11184
11336
  """
@@ -11186,6 +11338,8 @@ class SamlConfig(model.Model):
11186
11338
  can: Operations the current user is able to perform on this object
11187
11339
  enabled: Enable/Disable Saml authentication for the server
11188
11340
  idp_cert: Identity Provider Certificate (provided by IdP)
11341
+ idp_cert_multi:
11342
+ multi_certs_supported: Indicates whether this SAML configuration is set up to use multiple Identity Provider certificates (idp_cert_multi) or a single certificate (idp_cert). When true, idp_cert_multi is used; otherwise, idp_cert is used.
11189
11343
  idp_url: Identity Provider Url (provided by IdP)
11190
11344
  idp_issuer: Identity Provider Issuer (provided by IdP)
11191
11345
  idp_audience: Identity Provider Audience (set in IdP config). Optional in Looker. Set this only if you want Looker to validate the audience value returned by the IdP.
@@ -11221,6 +11375,8 @@ class SamlConfig(model.Model):
11221
11375
  can: Optional[MutableMapping[str, bool]] = None
11222
11376
  enabled: Optional[bool] = None
11223
11377
  idp_cert: Optional[str] = None
11378
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
11379
+ multi_certs_supported: Optional[bool] = None
11224
11380
  idp_url: Optional[str] = None
11225
11381
  idp_issuer: Optional[str] = None
11226
11382
  idp_audience: Optional[str] = None
@@ -11258,6 +11414,8 @@ class SamlConfig(model.Model):
11258
11414
  can: Optional[MutableMapping[str, bool]] = None,
11259
11415
  enabled: Optional[bool] = None,
11260
11416
  idp_cert: Optional[str] = None,
11417
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None,
11418
+ multi_certs_supported: Optional[bool] = None,
11261
11419
  idp_url: Optional[str] = None,
11262
11420
  idp_issuer: Optional[str] = None,
11263
11421
  idp_audience: Optional[str] = None,
@@ -11292,6 +11450,8 @@ class SamlConfig(model.Model):
11292
11450
  self.can = can
11293
11451
  self.enabled = enabled
11294
11452
  self.idp_cert = idp_cert
11453
+ self.idp_cert_multi = idp_cert_multi
11454
+ self.multi_certs_supported = multi_certs_supported
11295
11455
  self.idp_url = idp_url
11296
11456
  self.idp_issuer = idp_issuer
11297
11457
  self.idp_audience = idp_audience
@@ -11398,6 +11558,19 @@ class SamlGroupWrite(model.Model):
11398
11558
  self.url = url
11399
11559
 
11400
11560
 
11561
+ @attr.s(auto_attribs=True, init=False)
11562
+ class SamlIdpCertMulti(model.Model):
11563
+ """
11564
+ Attributes:
11565
+ signing: List of signing certificates. Values should be without pre-encapsulation and post-encapsulation boundaries
11566
+ """
11567
+
11568
+ signing: Optional[Sequence[str]] = None
11569
+
11570
+ def __init__(self, *, signing: Optional[Sequence[str]] = None):
11571
+ self.signing = signing
11572
+
11573
+
11401
11574
  @attr.s(auto_attribs=True, init=False)
11402
11575
  class SamlMetadataParseResult(model.Model):
11403
11576
  """
@@ -11406,12 +11579,14 @@ class SamlMetadataParseResult(model.Model):
11406
11579
  idp_issuer: Identify Provider Issuer
11407
11580
  idp_url: Identify Provider Url
11408
11581
  idp_cert: Identify Provider Certificate
11582
+ idp_cert_multi:
11409
11583
  """
11410
11584
 
11411
11585
  can: Optional[MutableMapping[str, bool]] = None
11412
11586
  idp_issuer: Optional[str] = None
11413
11587
  idp_url: Optional[str] = None
11414
11588
  idp_cert: Optional[str] = None
11589
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
11415
11590
 
11416
11591
  def __init__(
11417
11592
  self,
@@ -11419,12 +11594,14 @@ class SamlMetadataParseResult(model.Model):
11419
11594
  can: Optional[MutableMapping[str, bool]] = None,
11420
11595
  idp_issuer: Optional[str] = None,
11421
11596
  idp_url: Optional[str] = None,
11422
- idp_cert: Optional[str] = None
11597
+ idp_cert: Optional[str] = None,
11598
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
11423
11599
  ):
11424
11600
  self.can = can
11425
11601
  self.idp_issuer = idp_issuer
11426
11602
  self.idp_url = idp_url
11427
11603
  self.idp_cert = idp_cert
11604
+ self.idp_cert_multi = idp_cert_multi
11428
11605
 
11429
11606
 
11430
11607
  @attr.s(auto_attribs=True, init=False)
@@ -12078,6 +12255,7 @@ class Setting(model.Model):
12078
12255
  dashboard_auto_refresh_restriction: Toggle Dashboard Auto Refresh restriction
12079
12256
  dashboard_auto_refresh_minimum_interval: Minimum time interval for dashboard element automatic refresh. Examples: (30 seconds, 1 minute)
12080
12257
  managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager
12258
+ content_certification_documentation_link: Link to content certification documentation.
12081
12259
  """
12082
12260
 
12083
12261
  instance_config: Optional["InstanceConfig"] = None
@@ -12105,6 +12283,7 @@ class Setting(model.Model):
12105
12283
  dashboard_auto_refresh_restriction: Optional[bool] = None
12106
12284
  dashboard_auto_refresh_minimum_interval: Optional[str] = None
12107
12285
  managed_certificate_uri: Optional[Sequence[str]] = None
12286
+ content_certification_documentation_link: Optional[str] = None
12108
12287
 
12109
12288
  def __init__(
12110
12289
  self,
@@ -12133,7 +12312,8 @@ class Setting(model.Model):
12133
12312
  login_notification_text: Optional[str] = None,
12134
12313
  dashboard_auto_refresh_restriction: Optional[bool] = None,
12135
12314
  dashboard_auto_refresh_minimum_interval: Optional[str] = None,
12136
- managed_certificate_uri: Optional[Sequence[str]] = None
12315
+ managed_certificate_uri: Optional[Sequence[str]] = None,
12316
+ content_certification_documentation_link: Optional[str] = None
12137
12317
  ):
12138
12318
  self.instance_config = instance_config
12139
12319
  self.extension_framework_enabled = extension_framework_enabled
@@ -12162,6 +12342,9 @@ class Setting(model.Model):
12162
12342
  dashboard_auto_refresh_minimum_interval
12163
12343
  )
12164
12344
  self.managed_certificate_uri = managed_certificate_uri
12345
+ self.content_certification_documentation_link = (
12346
+ content_certification_documentation_link
12347
+ )
12165
12348
 
12166
12349
 
12167
12350
  @attr.s(auto_attribs=True, init=False)
@@ -13267,8 +13450,8 @@ class User(model.Model):
13267
13450
  embed_group_folder_id: (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login
13268
13451
  is_iam_admin: User is an IAM Admin. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). The is_iam_admin is not returned by default. Please explicitly request this attribute if needed via the fields query param. Note: Including the optional is_iam_admin attribute can increase API latency. For best performance, use this attribute only when filtering for users with the 'Admin via IAM' role. When using this filter, always paginate your results with the offset and limit fields to optimize response time.
13269
13452
  can_manage_api3_creds: Indicates if the user can manage API3 credentials. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
13270
- is_service_account: Indicates if this user is a service account. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
13271
- service_account_name: The display name of the service account. This field is omitted for non service account users. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
13453
+ is_service_account: Indicates if this user is a service account.
13454
+ service_account_name: The display name of the service account. This field is omitted for non service account users.
13272
13455
  url: Link to get this item
13273
13456
  """
13274
13457
 
@@ -14208,6 +14391,30 @@ class WriteBoardSection(model.Model):
14208
14391
  self.title = title
14209
14392
 
14210
14393
 
14394
+ @attr.s(auto_attribs=True, init=False)
14395
+ class WriteCertification(model.Model):
14396
+ """
14397
+ Dynamic writeable type for Certification removes:
14398
+ user_name, updated_at
14399
+
14400
+ Attributes:
14401
+ certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked".
14402
+ notes: Certification notes
14403
+ """
14404
+
14405
+ certification_status: Optional["CertificationStatus"] = None
14406
+ notes: Optional[str] = None
14407
+
14408
+ def __init__(
14409
+ self,
14410
+ *,
14411
+ certification_status: Optional["CertificationStatus"] = None,
14412
+ notes: Optional[str] = None
14413
+ ):
14414
+ self.certification_status = certification_status
14415
+ self.notes = notes
14416
+
14417
+
14211
14418
  @attr.s(auto_attribs=True, init=False)
14212
14419
  class WriteColorCollection(model.Model):
14213
14420
  """
@@ -14467,6 +14674,8 @@ class WriteDashboard(model.Model):
14467
14674
  title: Dashboard Title
14468
14675
  slug: Content Metadata Slug
14469
14676
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
14677
+ certification_metadata: Dynamic writeable type for Certification removes:
14678
+ user_name, updated_at
14470
14679
  alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes
14471
14680
  background_color: Background color
14472
14681
  crossfilter_enabled: Enables crossfiltering in dashboards - only available in dashboards-next (beta)
@@ -14484,6 +14693,7 @@ class WriteDashboard(model.Model):
14484
14693
  tile_text_color: Tile text color
14485
14694
  title_color: Title color
14486
14695
  appearance:
14696
+ layout_granularity: The layout granularity to apply to this dashboard (ie: default or granular)
14487
14697
  """
14488
14698
 
14489
14699
  description: Optional[str] = None
@@ -14494,6 +14704,7 @@ class WriteDashboard(model.Model):
14494
14704
  title: Optional[str] = None
14495
14705
  slug: Optional[str] = None
14496
14706
  preferred_viewer: Optional[str] = None
14707
+ certification_metadata: Optional["WriteCertification"] = None
14497
14708
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None
14498
14709
  background_color: Optional[str] = None
14499
14710
  crossfilter_enabled: Optional[bool] = None
@@ -14511,6 +14722,7 @@ class WriteDashboard(model.Model):
14511
14722
  tile_text_color: Optional[str] = None
14512
14723
  title_color: Optional[str] = None
14513
14724
  appearance: Optional["DashboardAppearance"] = None
14725
+ layout_granularity: Optional[str] = None
14514
14726
 
14515
14727
  def __init__(
14516
14728
  self,
@@ -14523,6 +14735,7 @@ class WriteDashboard(model.Model):
14523
14735
  title: Optional[str] = None,
14524
14736
  slug: Optional[str] = None,
14525
14737
  preferred_viewer: Optional[str] = None,
14738
+ certification_metadata: Optional["WriteCertification"] = None,
14526
14739
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None,
14527
14740
  background_color: Optional[str] = None,
14528
14741
  crossfilter_enabled: Optional[bool] = None,
@@ -14539,7 +14752,8 @@ class WriteDashboard(model.Model):
14539
14752
  tile_background_color: Optional[str] = None,
14540
14753
  tile_text_color: Optional[str] = None,
14541
14754
  title_color: Optional[str] = None,
14542
- appearance: Optional["DashboardAppearance"] = None
14755
+ appearance: Optional["DashboardAppearance"] = None,
14756
+ layout_granularity: Optional[str] = None
14543
14757
  ):
14544
14758
  self.description = description
14545
14759
  self.hidden = hidden
@@ -14549,6 +14763,7 @@ class WriteDashboard(model.Model):
14549
14763
  self.title = title
14550
14764
  self.slug = slug
14551
14765
  self.preferred_viewer = preferred_viewer
14766
+ self.certification_metadata = certification_metadata
14552
14767
  self.alert_sync_with_dashboard_filter_enabled = (
14553
14768
  alert_sync_with_dashboard_filter_enabled
14554
14769
  )
@@ -14568,6 +14783,7 @@ class WriteDashboard(model.Model):
14568
14783
  self.tile_text_color = tile_text_color
14569
14784
  self.title_color = title_color
14570
14785
  self.appearance = appearance
14786
+ self.layout_granularity = layout_granularity
14571
14787
 
14572
14788
 
14573
14789
  @attr.s(auto_attribs=True, init=False)
@@ -14579,12 +14795,21 @@ class WriteDashboardBase(model.Model):
14579
14795
  Attributes:
14580
14796
  folder: Dynamic writeable type for FolderBase removes:
14581
14797
  id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can
14798
+ certification_metadata: Dynamic writeable type for Certification removes:
14799
+ user_name, updated_at
14582
14800
  """
14583
14801
 
14584
14802
  folder: Optional["WriteFolderBase"] = None
14803
+ certification_metadata: Optional["WriteCertification"] = None
14585
14804
 
14586
- def __init__(self, *, folder: Optional["WriteFolderBase"] = None):
14805
+ def __init__(
14806
+ self,
14807
+ *,
14808
+ folder: Optional["WriteFolderBase"] = None,
14809
+ certification_metadata: Optional["WriteCertification"] = None
14810
+ ):
14587
14811
  self.folder = folder
14812
+ self.certification_metadata = certification_metadata
14588
14813
 
14589
14814
 
14590
14815
  @attr.s(auto_attribs=True, init=False)
@@ -14596,6 +14821,7 @@ class WriteDashboardElement(model.Model):
14596
14821
  Attributes:
14597
14822
  body_text: Text tile body text
14598
14823
  dashboard_id: Id of Dashboard
14824
+ dashboard_layout_id: Id of Dashboard Layout
14599
14825
  look: Dynamic writeable type for LookWithQuery removes:
14600
14826
  can, content_metadata_id, id, content_favorite_id, created_at, deleted_at, deleter_id, embed_url, excel_file_url, favorite_count, google_spreadsheet_formula, image_embed_url, last_accessed_at, last_updater_id, last_viewed_at, model, public_slug, public_url, short_url, updated_at, user_name, view_count, url
14601
14827
  look_id: Id Of Look
@@ -14622,6 +14848,7 @@ class WriteDashboardElement(model.Model):
14622
14848
 
14623
14849
  body_text: Optional[str] = None
14624
14850
  dashboard_id: Optional[str] = None
14851
+ dashboard_layout_id: Optional[str] = None
14625
14852
  look: Optional["WriteLookWithQuery"] = None
14626
14853
  look_id: Optional[str] = None
14627
14854
  merge_result_id: Optional[str] = None
@@ -14647,6 +14874,7 @@ class WriteDashboardElement(model.Model):
14647
14874
  *,
14648
14875
  body_text: Optional[str] = None,
14649
14876
  dashboard_id: Optional[str] = None,
14877
+ dashboard_layout_id: Optional[str] = None,
14650
14878
  look: Optional["WriteLookWithQuery"] = None,
14651
14879
  look_id: Optional[str] = None,
14652
14880
  merge_result_id: Optional[str] = None,
@@ -14671,6 +14899,7 @@ class WriteDashboardElement(model.Model):
14671
14899
  ):
14672
14900
  self.body_text = body_text
14673
14901
  self.dashboard_id = dashboard_id
14902
+ self.dashboard_layout_id = dashboard_layout_id
14674
14903
  self.look = look
14675
14904
  self.look_id = look_id
14676
14905
  self.merge_result_id = merge_result_id
@@ -14817,6 +15046,10 @@ class WriteDashboardLayoutComponent(model.Model):
14817
15046
  column: Column
14818
15047
  width: Width
14819
15048
  height: Height
15049
+ granular_row: Row (granular layout)
15050
+ granular_column: Column (granular layout)
15051
+ granular_width: Width (granular layout)
15052
+ granular_height: Height (granular layout)
14820
15053
  """
14821
15054
 
14822
15055
  dashboard_layout_id: Optional[str] = None
@@ -14825,6 +15058,10 @@ class WriteDashboardLayoutComponent(model.Model):
14825
15058
  column: Optional[int] = None
14826
15059
  width: Optional[int] = None
14827
15060
  height: Optional[int] = None
15061
+ granular_row: Optional[int] = None
15062
+ granular_column: Optional[int] = None
15063
+ granular_width: Optional[int] = None
15064
+ granular_height: Optional[int] = None
14828
15065
 
14829
15066
  def __init__(
14830
15067
  self,
@@ -14834,7 +15071,11 @@ class WriteDashboardLayoutComponent(model.Model):
14834
15071
  row: Optional[int] = None,
14835
15072
  column: Optional[int] = None,
14836
15073
  width: Optional[int] = None,
14837
- height: Optional[int] = None
15074
+ height: Optional[int] = None,
15075
+ granular_row: Optional[int] = None,
15076
+ granular_column: Optional[int] = None,
15077
+ granular_width: Optional[int] = None,
15078
+ granular_height: Optional[int] = None
14838
15079
  ):
14839
15080
  self.dashboard_layout_id = dashboard_layout_id
14840
15081
  self.dashboard_element_id = dashboard_element_id
@@ -14842,6 +15083,10 @@ class WriteDashboardLayoutComponent(model.Model):
14842
15083
  self.column = column
14843
15084
  self.width = width
14844
15085
  self.height = height
15086
+ self.granular_row = granular_row
15087
+ self.granular_column = granular_column
15088
+ self.granular_width = granular_width
15089
+ self.granular_height = granular_height
14845
15090
 
14846
15091
 
14847
15092
  @attr.s(auto_attribs=True, init=False)
@@ -14890,7 +15135,7 @@ class WriteDatagroup(model.Model):
14890
15135
  class WriteDBConnection(model.Model):
14891
15136
  """
14892
15137
  Dynamic writeable type for DBConnection removes:
14893
- can, dialect, snippets, pdts_enabled, named_driver_version_actual, uses_oauth, uses_instance_oauth, uses_service_auth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name
15138
+ can, dialect, snippets, pdts_enabled, named_driver_version_actual, has_password, uses_oauth, uses_instance_oauth, uses_service_auth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name
14894
15139
 
14895
15140
  Attributes:
14896
15141
  name: Name of the connection. Also used as the unique identifier
@@ -15287,6 +15532,7 @@ class WriteExternalOauthApplication(model.Model):
15287
15532
  client_secret: (Write-Only) The OAuth Client Secret for this application
15288
15533
  tenant_id: The OAuth Tenant ID for this application
15289
15534
  dialect_name: The database dialect for this application.
15535
+ bi_directional_data_access: Whether this application supports bi-directional data access.
15290
15536
  """
15291
15537
 
15292
15538
  name: Optional[str] = None
@@ -15294,6 +15540,7 @@ class WriteExternalOauthApplication(model.Model):
15294
15540
  client_secret: Optional[str] = None
15295
15541
  tenant_id: Optional[str] = None
15296
15542
  dialect_name: Optional[str] = None
15543
+ bi_directional_data_access: Optional[bool] = None
15297
15544
 
15298
15545
  def __init__(
15299
15546
  self,
@@ -15302,13 +15549,15 @@ class WriteExternalOauthApplication(model.Model):
15302
15549
  client_id: Optional[str] = None,
15303
15550
  client_secret: Optional[str] = None,
15304
15551
  tenant_id: Optional[str] = None,
15305
- dialect_name: Optional[str] = None
15552
+ dialect_name: Optional[str] = None,
15553
+ bi_directional_data_access: Optional[bool] = None
15306
15554
  ):
15307
15555
  self.name = name
15308
15556
  self.client_id = client_id
15309
15557
  self.client_secret = client_secret
15310
15558
  self.tenant_id = tenant_id
15311
15559
  self.dialect_name = dialect_name
15560
+ self.bi_directional_data_access = bi_directional_data_access
15312
15561
 
15313
15562
 
15314
15563
  @attr.s(auto_attribs=True, init=False)
@@ -15638,12 +15887,21 @@ class WriteLookBasic(model.Model):
15638
15887
 
15639
15888
  Attributes:
15640
15889
  user_id: User Id
15890
+ certification_metadata: Dynamic writeable type for Certification removes:
15891
+ user_name, updated_at
15641
15892
  """
15642
15893
 
15643
15894
  user_id: Optional[str] = None
15895
+ certification_metadata: Optional["WriteCertification"] = None
15644
15896
 
15645
- def __init__(self, *, user_id: Optional[str] = None):
15897
+ def __init__(
15898
+ self,
15899
+ *,
15900
+ user_id: Optional[str] = None,
15901
+ certification_metadata: Optional["WriteCertification"] = None
15902
+ ):
15646
15903
  self.user_id = user_id
15904
+ self.certification_metadata = certification_metadata
15647
15905
 
15648
15906
 
15649
15907
  @attr.s(auto_attribs=True, init=False)
@@ -15687,6 +15945,8 @@ class WriteLookWithQuery(model.Model):
15687
15945
  Attributes:
15688
15946
  title: Look Title
15689
15947
  user_id: User Id
15948
+ certification_metadata: Dynamic writeable type for Certification removes:
15949
+ user_name, updated_at
15690
15950
  deleted: Whether or not a look is 'soft' deleted.
15691
15951
  description: Description
15692
15952
  is_run_on_load: auto-run query when Look viewed
@@ -15701,6 +15961,7 @@ class WriteLookWithQuery(model.Model):
15701
15961
 
15702
15962
  title: Optional[str] = None
15703
15963
  user_id: Optional[str] = None
15964
+ certification_metadata: Optional["WriteCertification"] = None
15704
15965
  deleted: Optional[bool] = None
15705
15966
  description: Optional[str] = None
15706
15967
  is_run_on_load: Optional[bool] = None
@@ -15715,6 +15976,7 @@ class WriteLookWithQuery(model.Model):
15715
15976
  *,
15716
15977
  title: Optional[str] = None,
15717
15978
  user_id: Optional[str] = None,
15979
+ certification_metadata: Optional["WriteCertification"] = None,
15718
15980
  deleted: Optional[bool] = None,
15719
15981
  description: Optional[str] = None,
15720
15982
  is_run_on_load: Optional[bool] = None,
@@ -15726,6 +15988,7 @@ class WriteLookWithQuery(model.Model):
15726
15988
  ):
15727
15989
  self.title = title
15728
15990
  self.user_id = user_id
15991
+ self.certification_metadata = certification_metadata
15729
15992
  self.deleted = deleted
15730
15993
  self.description = description
15731
15994
  self.is_run_on_load = is_run_on_load
@@ -15973,19 +16236,23 @@ class WriteOIDCConfig(model.Model):
15973
16236
  class WritePasswordConfig(model.Model):
15974
16237
  """
15975
16238
  Dynamic writeable type for PasswordConfig removes:
15976
- can
16239
+ can, policy_enabled_at
15977
16240
 
15978
16241
  Attributes:
15979
16242
  min_length: Minimum number of characters required for a new password. Must be between 7 and 100
15980
16243
  require_numeric: Require at least one numeric character
15981
16244
  require_upperlower: Require at least one uppercase and one lowercase letter
15982
16245
  require_special: Require at least one special character
16246
+ expiration_enabled: Enable/Disable password expiration policy.
16247
+ expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365.
15983
16248
  """
15984
16249
 
15985
16250
  min_length: Optional[int] = None
15986
16251
  require_numeric: Optional[bool] = None
15987
16252
  require_upperlower: Optional[bool] = None
15988
16253
  require_special: Optional[bool] = None
16254
+ expiration_enabled: Optional[bool] = None
16255
+ expiration_duration_days: Optional[int] = None
15989
16256
 
15990
16257
  def __init__(
15991
16258
  self,
@@ -15993,12 +16260,16 @@ class WritePasswordConfig(model.Model):
15993
16260
  min_length: Optional[int] = None,
15994
16261
  require_numeric: Optional[bool] = None,
15995
16262
  require_upperlower: Optional[bool] = None,
15996
- require_special: Optional[bool] = None
16263
+ require_special: Optional[bool] = None,
16264
+ expiration_enabled: Optional[bool] = None,
16265
+ expiration_duration_days: Optional[int] = None
15997
16266
  ):
15998
16267
  self.min_length = min_length
15999
16268
  self.require_numeric = require_numeric
16000
16269
  self.require_upperlower = require_upperlower
16001
16270
  self.require_special = require_special
16271
+ self.expiration_enabled = expiration_enabled
16272
+ self.expiration_duration_days = expiration_duration_days
16002
16273
 
16003
16274
 
16004
16275
  @attr.s(auto_attribs=True, init=False)
@@ -16094,7 +16365,7 @@ class WritePrivatelabelConfiguration(model.Model):
16094
16365
  class WriteProject(model.Model):
16095
16366
  """
16096
16367
  Dynamic writeable type for Project removes:
16097
- can, id, uses_git, is_example
16368
+ can, id, uses_git, is_example, has_production_counterpart
16098
16369
 
16099
16370
  Attributes:
16100
16371
  name: Project display name
@@ -16351,7 +16622,7 @@ class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model):
16351
16622
  class WriteRole(model.Model):
16352
16623
  """
16353
16624
  Dynamic writeable type for Role removes:
16354
- can, id, url, users_url
16625
+ can, id, internal, url, users_url
16355
16626
 
16356
16627
  Attributes:
16357
16628
  name: Name of Role
@@ -16394,6 +16665,8 @@ class WriteSamlConfig(model.Model):
16394
16665
  Attributes:
16395
16666
  enabled: Enable/Disable Saml authentication for the server
16396
16667
  idp_cert: Identity Provider Certificate (provided by IdP)
16668
+ idp_cert_multi:
16669
+ multi_certs_supported: Indicates whether this SAML configuration is set up to use multiple Identity Provider certificates (idp_cert_multi) or a single certificate (idp_cert). When true, idp_cert_multi is used; otherwise, idp_cert is used.
16397
16670
  idp_url: Identity Provider Url (provided by IdP)
16398
16671
  idp_issuer: Identity Provider Issuer (provided by IdP)
16399
16672
  idp_audience: Identity Provider Audience (set in IdP config). Optional in Looker. Set this only if you want Looker to validate the audience value returned by the IdP.
@@ -16420,6 +16693,8 @@ class WriteSamlConfig(model.Model):
16420
16693
 
16421
16694
  enabled: Optional[bool] = None
16422
16695
  idp_cert: Optional[str] = None
16696
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
16697
+ multi_certs_supported: Optional[bool] = None
16423
16698
  idp_url: Optional[str] = None
16424
16699
  idp_issuer: Optional[str] = None
16425
16700
  idp_audience: Optional[str] = None
@@ -16448,6 +16723,8 @@ class WriteSamlConfig(model.Model):
16448
16723
  *,
16449
16724
  enabled: Optional[bool] = None,
16450
16725
  idp_cert: Optional[str] = None,
16726
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None,
16727
+ multi_certs_supported: Optional[bool] = None,
16451
16728
  idp_url: Optional[str] = None,
16452
16729
  idp_issuer: Optional[str] = None,
16453
16730
  idp_audience: Optional[str] = None,
@@ -16473,6 +16750,8 @@ class WriteSamlConfig(model.Model):
16473
16750
  ):
16474
16751
  self.enabled = enabled
16475
16752
  self.idp_cert = idp_cert
16753
+ self.idp_cert_multi = idp_cert_multi
16754
+ self.multi_certs_supported = multi_certs_supported
16476
16755
  self.idp_url = idp_url
16477
16756
  self.idp_issuer = idp_issuer
16478
16757
  self.idp_audience = idp_audience
@@ -16724,6 +17003,7 @@ class WriteSetting(model.Model):
16724
17003
  dashboard_auto_refresh_restriction: Toggle Dashboard Auto Refresh restriction
16725
17004
  dashboard_auto_refresh_minimum_interval: Minimum time interval for dashboard element automatic refresh. Examples: (30 seconds, 1 minute)
16726
17005
  managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager
17006
+ content_certification_documentation_link: Link to content certification documentation.
16727
17007
  """
16728
17008
 
16729
17009
  extension_framework_enabled: Optional[bool] = None
@@ -16746,6 +17026,7 @@ class WriteSetting(model.Model):
16746
17026
  dashboard_auto_refresh_restriction: Optional[bool] = None
16747
17027
  dashboard_auto_refresh_minimum_interval: Optional[str] = None
16748
17028
  managed_certificate_uri: Optional[Sequence[str]] = None
17029
+ content_certification_documentation_link: Optional[str] = None
16749
17030
 
16750
17031
  def __init__(
16751
17032
  self,
@@ -16769,7 +17050,8 @@ class WriteSetting(model.Model):
16769
17050
  embed_config: Optional["WriteEmbedConfig"] = None,
16770
17051
  dashboard_auto_refresh_restriction: Optional[bool] = None,
16771
17052
  dashboard_auto_refresh_minimum_interval: Optional[str] = None,
16772
- managed_certificate_uri: Optional[Sequence[str]] = None
17053
+ managed_certificate_uri: Optional[Sequence[str]] = None,
17054
+ content_certification_documentation_link: Optional[str] = None
16773
17055
  ):
16774
17056
  self.extension_framework_enabled = extension_framework_enabled
16775
17057
  self.extension_load_url_enabled = extension_load_url_enabled
@@ -16793,6 +17075,9 @@ class WriteSetting(model.Model):
16793
17075
  dashboard_auto_refresh_minimum_interval
16794
17076
  )
16795
17077
  self.managed_certificate_uri = managed_certificate_uri
17078
+ self.content_certification_documentation_link = (
17079
+ content_certification_documentation_link
17080
+ )
16796
17081
 
16797
17082
 
16798
17083
  @attr.s(auto_attribs=True, init=False)