looker-sdk 25.16.0__py3-none-any.whl → 25.20.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
- # 374 API models: 287 Spec, 0 Request, 63 Write, 24 Enum
24
+ # 380 API models: 290 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
  """
@@ -1607,6 +1606,7 @@ class ContentSummary(model.Model):
1607
1606
  group_weighted_score:
1608
1607
  suggestion_score:
1609
1608
  preferred_viewer: The preferred route for viewing this content (ie: dashboards or dashboards-next)
1609
+ certification_metadata:
1610
1610
  """
1611
1611
 
1612
1612
  can: Optional[MutableMapping[str, bool]] = None
@@ -1628,6 +1628,7 @@ class ContentSummary(model.Model):
1628
1628
  group_weighted_score: Optional[float] = None
1629
1629
  suggestion_score: Optional[float] = None
1630
1630
  preferred_viewer: Optional[str] = None
1631
+ certification_metadata: Optional["Certification"] = None
1631
1632
 
1632
1633
  def __init__(
1633
1634
  self,
@@ -1650,7 +1651,8 @@ class ContentSummary(model.Model):
1650
1651
  weighted_score: Optional[float] = None,
1651
1652
  group_weighted_score: Optional[float] = None,
1652
1653
  suggestion_score: Optional[float] = None,
1653
- preferred_viewer: Optional[str] = None
1654
+ preferred_viewer: Optional[str] = None,
1655
+ certification_metadata: Optional["Certification"] = None
1654
1656
  ):
1655
1657
  self.can = can
1656
1658
  self.id = id
@@ -1671,6 +1673,7 @@ class ContentSummary(model.Model):
1671
1673
  self.group_weighted_score = group_weighted_score
1672
1674
  self.suggestion_score = suggestion_score
1673
1675
  self.preferred_viewer = preferred_viewer
1676
+ self.certification_metadata = certification_metadata
1674
1677
 
1675
1678
 
1676
1679
  @attr.s(auto_attribs=True, init=False)
@@ -1816,6 +1819,7 @@ class ContentValidationDashboardElement(model.Model):
1816
1819
  type: Type
1817
1820
  rich_content_json: JSON with all the properties required for rich editor and buttons elements
1818
1821
  extension_id: Extension ID
1822
+ aria_description: Custom ARIA description text
1819
1823
  """
1820
1824
 
1821
1825
  body_text: Optional[str] = None
@@ -1834,6 +1838,7 @@ class ContentValidationDashboardElement(model.Model):
1834
1838
  type: Optional[str] = None
1835
1839
  rich_content_json: Optional[str] = None
1836
1840
  extension_id: Optional[str] = None
1841
+ aria_description: Optional[str] = None
1837
1842
 
1838
1843
  def __init__(
1839
1844
  self,
@@ -1853,7 +1858,8 @@ class ContentValidationDashboardElement(model.Model):
1853
1858
  title_text: Optional[str] = None,
1854
1859
  type: Optional[str] = None,
1855
1860
  rich_content_json: Optional[str] = None,
1856
- extension_id: Optional[str] = None
1861
+ extension_id: Optional[str] = None,
1862
+ aria_description: Optional[str] = None
1857
1863
  ):
1858
1864
  self.body_text = body_text
1859
1865
  self.dashboard_id = dashboard_id
@@ -1871,6 +1877,7 @@ class ContentValidationDashboardElement(model.Model):
1871
1877
  self.type = type
1872
1878
  self.rich_content_json = rich_content_json
1873
1879
  self.extension_id = extension_id
1880
+ self.aria_description = aria_description
1874
1881
 
1875
1882
 
1876
1883
  @attr.s(auto_attribs=True, init=False)
@@ -3270,6 +3277,7 @@ class Dashboard(model.Model):
3270
3277
  user_id: Id of User
3271
3278
  slug: Content Metadata Slug
3272
3279
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
3280
+ certification_metadata:
3273
3281
  alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes
3274
3282
  background_color: Background color
3275
3283
  created_at: Time that the Dashboard was created.
@@ -3321,6 +3329,7 @@ class Dashboard(model.Model):
3321
3329
  user_id: Optional[str] = None
3322
3330
  slug: Optional[str] = None
3323
3331
  preferred_viewer: Optional[str] = None
3332
+ certification_metadata: Optional["Certification"] = None
3324
3333
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None
3325
3334
  background_color: Optional[str] = None
3326
3335
  created_at: Optional[datetime.datetime] = None
@@ -3374,6 +3383,7 @@ class Dashboard(model.Model):
3374
3383
  user_id: Optional[str] = None,
3375
3384
  slug: Optional[str] = None,
3376
3385
  preferred_viewer: Optional[str] = None,
3386
+ certification_metadata: Optional["Certification"] = None,
3377
3387
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None,
3378
3388
  background_color: Optional[str] = None,
3379
3389
  created_at: Optional[datetime.datetime] = None,
@@ -3424,6 +3434,7 @@ class Dashboard(model.Model):
3424
3434
  self.user_id = user_id
3425
3435
  self.slug = slug
3426
3436
  self.preferred_viewer = preferred_viewer
3437
+ self.certification_metadata = certification_metadata
3427
3438
  self.alert_sync_with_dashboard_filter_enabled = (
3428
3439
  alert_sync_with_dashboard_filter_enabled
3429
3440
  )
@@ -3543,6 +3554,7 @@ class DashboardBase(model.Model):
3543
3554
  user_id: Id of User
3544
3555
  slug: Content Metadata Slug
3545
3556
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
3557
+ certification_metadata:
3546
3558
  """
3547
3559
 
3548
3560
  can: Optional[MutableMapping[str, bool]] = None
@@ -3561,6 +3573,7 @@ class DashboardBase(model.Model):
3561
3573
  user_id: Optional[str] = None
3562
3574
  slug: Optional[str] = None
3563
3575
  preferred_viewer: Optional[str] = None
3576
+ certification_metadata: Optional["Certification"] = None
3564
3577
 
3565
3578
  def __init__(
3566
3579
  self,
@@ -3580,7 +3593,8 @@ class DashboardBase(model.Model):
3580
3593
  title: Optional[str] = None,
3581
3594
  user_id: Optional[str] = None,
3582
3595
  slug: Optional[str] = None,
3583
- preferred_viewer: Optional[str] = None
3596
+ preferred_viewer: Optional[str] = None,
3597
+ certification_metadata: Optional["Certification"] = None
3584
3598
  ):
3585
3599
  self.can = can
3586
3600
  self.content_favorite_id = content_favorite_id
@@ -3598,6 +3612,7 @@ class DashboardBase(model.Model):
3598
3612
  self.user_id = user_id
3599
3613
  self.slug = slug
3600
3614
  self.preferred_viewer = preferred_viewer
3615
+ self.certification_metadata = certification_metadata
3601
3616
 
3602
3617
 
3603
3618
  @attr.s(auto_attribs=True, init=False)
@@ -3608,6 +3623,7 @@ class DashboardElement(model.Model):
3608
3623
  body_text: Text tile body text
3609
3624
  body_text_as_html: Text tile body text as Html
3610
3625
  dashboard_id: Id of Dashboard
3626
+ dashboard_layout_id: Id of Dashboard Layout
3611
3627
  edit_uri: Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only).
3612
3628
  id: Unique Id
3613
3629
  look:
@@ -3634,12 +3650,14 @@ class DashboardElement(model.Model):
3634
3650
  title_text_as_html: Text tile title text as Html
3635
3651
  subtitle_text_as_html: Text tile subtitle text as Html
3636
3652
  extension_id: Extension ID
3653
+ aria_description: Custom ARIA description text
3637
3654
  """
3638
3655
 
3639
3656
  can: Optional[MutableMapping[str, bool]] = None
3640
3657
  body_text: Optional[str] = None
3641
3658
  body_text_as_html: Optional[str] = None
3642
3659
  dashboard_id: Optional[str] = None
3660
+ dashboard_layout_id: Optional[str] = None
3643
3661
  edit_uri: Optional[str] = None
3644
3662
  id: Optional[str] = None
3645
3663
  look: Optional["LookWithQuery"] = None
@@ -3666,6 +3684,7 @@ class DashboardElement(model.Model):
3666
3684
  title_text_as_html: Optional[str] = None
3667
3685
  subtitle_text_as_html: Optional[str] = None
3668
3686
  extension_id: Optional[str] = None
3687
+ aria_description: Optional[str] = None
3669
3688
 
3670
3689
  def __init__(
3671
3690
  self,
@@ -3674,6 +3693,7 @@ class DashboardElement(model.Model):
3674
3693
  body_text: Optional[str] = None,
3675
3694
  body_text_as_html: Optional[str] = None,
3676
3695
  dashboard_id: Optional[str] = None,
3696
+ dashboard_layout_id: Optional[str] = None,
3677
3697
  edit_uri: Optional[str] = None,
3678
3698
  id: Optional[str] = None,
3679
3699
  look: Optional["LookWithQuery"] = None,
@@ -3699,12 +3719,14 @@ class DashboardElement(model.Model):
3699
3719
  rich_content_json: Optional[str] = None,
3700
3720
  title_text_as_html: Optional[str] = None,
3701
3721
  subtitle_text_as_html: Optional[str] = None,
3702
- extension_id: Optional[str] = None
3722
+ extension_id: Optional[str] = None,
3723
+ aria_description: Optional[str] = None
3703
3724
  ):
3704
3725
  self.can = can
3705
3726
  self.body_text = body_text
3706
3727
  self.body_text_as_html = body_text_as_html
3707
3728
  self.dashboard_id = dashboard_id
3729
+ self.dashboard_layout_id = dashboard_layout_id
3708
3730
  self.edit_uri = edit_uri
3709
3731
  self.id = id
3710
3732
  self.look = look
@@ -3731,6 +3753,7 @@ class DashboardElement(model.Model):
3731
3753
  self.title_text_as_html = title_text_as_html
3732
3754
  self.subtitle_text_as_html = subtitle_text_as_html
3733
3755
  self.extension_id = extension_id
3756
+ self.aria_description = aria_description
3734
3757
 
3735
3758
 
3736
3759
  @attr.s(auto_attribs=True, init=False)
@@ -3824,6 +3847,9 @@ class DashboardLayout(model.Model):
3824
3847
  deleted: Whether or not the dashboard layout is deleted.
3825
3848
  dashboard_title: Title extracted from the dashboard this layout represents.
3826
3849
  dashboard_layout_components: Components
3850
+ label: Label
3851
+ description: Description
3852
+ order: Order
3827
3853
  """
3828
3854
 
3829
3855
  can: Optional[MutableMapping[str, bool]] = None
@@ -3836,6 +3862,9 @@ class DashboardLayout(model.Model):
3836
3862
  deleted: Optional[bool] = None
3837
3863
  dashboard_title: Optional[str] = None
3838
3864
  dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = None
3865
+ label: Optional[str] = None
3866
+ description: Optional[str] = None
3867
+ order: Optional[int] = None
3839
3868
 
3840
3869
  def __init__(
3841
3870
  self,
@@ -3851,7 +3880,10 @@ class DashboardLayout(model.Model):
3851
3880
  dashboard_title: Optional[str] = None,
3852
3881
  dashboard_layout_components: Optional[
3853
3882
  Sequence["DashboardLayoutComponent"]
3854
- ] = None
3883
+ ] = None,
3884
+ label: Optional[str] = None,
3885
+ description: Optional[str] = None,
3886
+ order: Optional[int] = None
3855
3887
  ):
3856
3888
  self.can = can
3857
3889
  self.id = id
@@ -3863,6 +3895,9 @@ class DashboardLayout(model.Model):
3863
3895
  self.deleted = deleted
3864
3896
  self.dashboard_title = dashboard_title
3865
3897
  self.dashboard_layout_components = dashboard_layout_components
3898
+ self.label = label
3899
+ self.description = description
3900
+ self.order = order
3866
3901
 
3867
3902
 
3868
3903
  @attr.s(auto_attribs=True, init=False)
@@ -5416,6 +5451,7 @@ class ExternalOauthApplication(model.Model):
5416
5451
  client_secret: (Write-Only) The OAuth Client Secret for this application
5417
5452
  tenant_id: The OAuth Tenant ID for this application
5418
5453
  dialect_name: The database dialect for this application.
5454
+ bi_directional_data_access: Whether this application supports bi-directional data access.
5419
5455
  created_at: Creation time for this application
5420
5456
  """
5421
5457
 
@@ -5426,6 +5462,7 @@ class ExternalOauthApplication(model.Model):
5426
5462
  client_secret: Optional[str] = None
5427
5463
  tenant_id: Optional[str] = None
5428
5464
  dialect_name: Optional[str] = None
5465
+ bi_directional_data_access: Optional[bool] = None
5429
5466
  created_at: Optional[datetime.datetime] = None
5430
5467
 
5431
5468
  def __init__(
@@ -5438,6 +5475,7 @@ class ExternalOauthApplication(model.Model):
5438
5475
  client_secret: Optional[str] = None,
5439
5476
  tenant_id: Optional[str] = None,
5440
5477
  dialect_name: Optional[str] = None,
5478
+ bi_directional_data_access: Optional[bool] = None,
5441
5479
  created_at: Optional[datetime.datetime] = None
5442
5480
  ):
5443
5481
  self.can = can
@@ -5447,6 +5485,7 @@ class ExternalOauthApplication(model.Model):
5447
5485
  self.client_secret = client_secret
5448
5486
  self.tenant_id = tenant_id
5449
5487
  self.dialect_name = dialect_name
5488
+ self.bi_directional_data_access = bi_directional_data_access
5450
5489
  self.created_at = created_at
5451
5490
 
5452
5491
 
@@ -6416,6 +6455,24 @@ class IntegrationHub(model.Model):
6416
6455
  self.legal_agreement_text = legal_agreement_text
6417
6456
 
6418
6457
 
6458
+ @attr.s(auto_attribs=True, init=False)
6459
+ class IntegrationHubHealthResult(model.Model):
6460
+ """
6461
+ Attributes:
6462
+ success: Whether or not the health check was successful
6463
+ message: A message representing the results of the health check.
6464
+ """
6465
+
6466
+ success: Optional[bool] = None
6467
+ message: Optional[str] = None
6468
+
6469
+ def __init__(
6470
+ self, *, success: Optional[bool] = None, message: Optional[str] = None
6471
+ ):
6472
+ self.success = success
6473
+ self.message = message
6474
+
6475
+
6419
6476
  @attr.s(auto_attribs=True, init=False)
6420
6477
  class IntegrationParam(model.Model):
6421
6478
  """
@@ -7393,6 +7450,7 @@ class Look(model.Model):
7393
7450
  id: Unique Id
7394
7451
  title: Look Title
7395
7452
  user_id: User Id
7453
+ certification_metadata:
7396
7454
  content_favorite_id: Content Favorite Id
7397
7455
  created_at: Time that the Look was created.
7398
7456
  deleted: Whether or not a look is 'soft' deleted.
@@ -7426,6 +7484,7 @@ class Look(model.Model):
7426
7484
  id: Optional[str] = None
7427
7485
  title: Optional[str] = None
7428
7486
  user_id: Optional[str] = None
7487
+ certification_metadata: Optional["Certification"] = None
7429
7488
  content_favorite_id: Optional[str] = None
7430
7489
  created_at: Optional[datetime.datetime] = None
7431
7490
  deleted: Optional[bool] = None
@@ -7461,6 +7520,7 @@ class Look(model.Model):
7461
7520
  id: Optional[str] = None,
7462
7521
  title: Optional[str] = None,
7463
7522
  user_id: Optional[str] = None,
7523
+ certification_metadata: Optional["Certification"] = None,
7464
7524
  content_favorite_id: Optional[str] = None,
7465
7525
  created_at: Optional[datetime.datetime] = None,
7466
7526
  deleted: Optional[bool] = None,
@@ -7493,6 +7553,7 @@ class Look(model.Model):
7493
7553
  self.id = id
7494
7554
  self.title = title
7495
7555
  self.user_id = user_id
7556
+ self.certification_metadata = certification_metadata
7496
7557
  self.content_favorite_id = content_favorite_id
7497
7558
  self.created_at = created_at
7498
7559
  self.deleted = deleted
@@ -7530,6 +7591,7 @@ class LookBasic(model.Model):
7530
7591
  id: Unique Id
7531
7592
  title: Look Title
7532
7593
  user_id: User Id
7594
+ certification_metadata:
7533
7595
  """
7534
7596
 
7535
7597
  can: Optional[MutableMapping[str, bool]] = None
@@ -7537,6 +7599,7 @@ class LookBasic(model.Model):
7537
7599
  id: Optional[str] = None
7538
7600
  title: Optional[str] = None
7539
7601
  user_id: Optional[str] = None
7602
+ certification_metadata: Optional["Certification"] = None
7540
7603
 
7541
7604
  def __init__(
7542
7605
  self,
@@ -7545,13 +7608,15 @@ class LookBasic(model.Model):
7545
7608
  content_metadata_id: Optional[str] = None,
7546
7609
  id: Optional[str] = None,
7547
7610
  title: Optional[str] = None,
7548
- user_id: Optional[str] = None
7611
+ user_id: Optional[str] = None,
7612
+ certification_metadata: Optional["Certification"] = None
7549
7613
  ):
7550
7614
  self.can = can
7551
7615
  self.content_metadata_id = content_metadata_id
7552
7616
  self.id = id
7553
7617
  self.title = title
7554
7618
  self.user_id = user_id
7619
+ self.certification_metadata = certification_metadata
7555
7620
 
7556
7621
 
7557
7622
  @attr.s(auto_attribs=True, init=False)
@@ -7953,12 +8018,15 @@ class LookmlModelExploreField(model.Model):
7953
8018
  type: The LookML type of the field.
7954
8019
  user_attribute_filter_types: An array of user attribute types that are allowed to be used in filters on this field. Valid values are: "advanced_filter_string", "advanced_filter_number", "advanced_filter_datetime", "string", "number", "datetime", "relative_url", "yesno", "zipcode".
7955
8020
  value_format: If specified, the LookML value format string for formatting values of this field.
8021
+ value_format_name: If specified, the name of the value format, as defined in the LookML model.
7956
8022
  view: The name of the view this field belongs to.
7957
8023
  view_label: The human-readable label of the view the field belongs to.
7958
8024
  dynamic: Whether this field was specified in "dynamic_fields" and is not part of the model.
7959
8025
  week_start_day: The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday".
7960
8026
  times_used: The number of times this field has been used in queries
7961
8027
  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.
8028
+ datatype: The data_type for a date in lookml
8029
+ convert_tz: Whether time zones should be converted for datetime fields
7962
8030
  """
7963
8031
 
7964
8032
  align: Optional["Align"] = None
@@ -8016,12 +8084,15 @@ class LookmlModelExploreField(model.Model):
8016
8084
  type: Optional[str] = None
8017
8085
  user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None
8018
8086
  value_format: Optional[str] = None
8087
+ value_format_name: Optional[str] = None
8019
8088
  view: Optional[str] = None
8020
8089
  view_label: Optional[str] = None
8021
8090
  dynamic: Optional[bool] = None
8022
8091
  week_start_day: Optional["WeekStartDay"] = None
8023
8092
  times_used: Optional[int] = None
8024
8093
  original_view: Optional[str] = None
8094
+ datatype: Optional[str] = None
8095
+ convert_tz: Optional[bool] = None
8025
8096
 
8026
8097
  def __init__(
8027
8098
  self,
@@ -8083,12 +8154,15 @@ class LookmlModelExploreField(model.Model):
8083
8154
  Sequence["UserAttributeFilterTypes"]
8084
8155
  ] = None,
8085
8156
  value_format: Optional[str] = None,
8157
+ value_format_name: Optional[str] = None,
8086
8158
  view: Optional[str] = None,
8087
8159
  view_label: Optional[str] = None,
8088
8160
  dynamic: Optional[bool] = None,
8089
8161
  week_start_day: Optional["WeekStartDay"] = None,
8090
8162
  times_used: Optional[int] = None,
8091
- original_view: Optional[str] = None
8163
+ original_view: Optional[str] = None,
8164
+ datatype: Optional[str] = None,
8165
+ convert_tz: Optional[bool] = None
8092
8166
  ):
8093
8167
  self.align = align
8094
8168
  self.can_filter = can_filter
@@ -8143,12 +8217,15 @@ class LookmlModelExploreField(model.Model):
8143
8217
  self.type = type
8144
8218
  self.user_attribute_filter_types = user_attribute_filter_types
8145
8219
  self.value_format = value_format
8220
+ self.value_format_name = value_format_name
8146
8221
  self.view = view
8147
8222
  self.view_label = view_label
8148
8223
  self.dynamic = dynamic
8149
8224
  self.week_start_day = week_start_day
8150
8225
  self.times_used = times_used
8151
8226
  self.original_view = original_view
8227
+ self.datatype = datatype
8228
+ self.convert_tz = convert_tz
8152
8229
 
8153
8230
 
8154
8231
  @attr.s(auto_attribs=True, init=False)
@@ -8693,6 +8770,7 @@ class LookWithDashboards(model.Model):
8693
8770
  id: Unique Id
8694
8771
  title: Look Title
8695
8772
  user_id: User Id
8773
+ certification_metadata:
8696
8774
  content_favorite_id: Content Favorite Id
8697
8775
  created_at: Time that the Look was created.
8698
8776
  deleted: Whether or not a look is 'soft' deleted.
@@ -8727,6 +8805,7 @@ class LookWithDashboards(model.Model):
8727
8805
  id: Optional[str] = None
8728
8806
  title: Optional[str] = None
8729
8807
  user_id: Optional[str] = None
8808
+ certification_metadata: Optional["Certification"] = None
8730
8809
  content_favorite_id: Optional[str] = None
8731
8810
  created_at: Optional[datetime.datetime] = None
8732
8811
  deleted: Optional[bool] = None
@@ -8763,6 +8842,7 @@ class LookWithDashboards(model.Model):
8763
8842
  id: Optional[str] = None,
8764
8843
  title: Optional[str] = None,
8765
8844
  user_id: Optional[str] = None,
8845
+ certification_metadata: Optional["Certification"] = None,
8766
8846
  content_favorite_id: Optional[str] = None,
8767
8847
  created_at: Optional[datetime.datetime] = None,
8768
8848
  deleted: Optional[bool] = None,
@@ -8796,6 +8876,7 @@ class LookWithDashboards(model.Model):
8796
8876
  self.id = id
8797
8877
  self.title = title
8798
8878
  self.user_id = user_id
8879
+ self.certification_metadata = certification_metadata
8799
8880
  self.content_favorite_id = content_favorite_id
8800
8881
  self.created_at = created_at
8801
8882
  self.deleted = deleted
@@ -8834,6 +8915,7 @@ class LookWithQuery(model.Model):
8834
8915
  id: Unique Id
8835
8916
  title: Look Title
8836
8917
  user_id: User Id
8918
+ certification_metadata:
8837
8919
  content_favorite_id: Content Favorite Id
8838
8920
  created_at: Time that the Look was created.
8839
8921
  deleted: Whether or not a look is 'soft' deleted.
@@ -8869,6 +8951,7 @@ class LookWithQuery(model.Model):
8869
8951
  id: Optional[str] = None
8870
8952
  title: Optional[str] = None
8871
8953
  user_id: Optional[str] = None
8954
+ certification_metadata: Optional["Certification"] = None
8872
8955
  content_favorite_id: Optional[str] = None
8873
8956
  created_at: Optional[datetime.datetime] = None
8874
8957
  deleted: Optional[bool] = None
@@ -8906,6 +8989,7 @@ class LookWithQuery(model.Model):
8906
8989
  id: Optional[str] = None,
8907
8990
  title: Optional[str] = None,
8908
8991
  user_id: Optional[str] = None,
8992
+ certification_metadata: Optional["Certification"] = None,
8909
8993
  content_favorite_id: Optional[str] = None,
8910
8994
  created_at: Optional[datetime.datetime] = None,
8911
8995
  deleted: Optional[bool] = None,
@@ -8940,6 +9024,7 @@ class LookWithQuery(model.Model):
8940
9024
  self.id = id
8941
9025
  self.title = title
8942
9026
  self.user_id = user_id
9027
+ self.certification_metadata = certification_metadata
8943
9028
  self.content_favorite_id = content_favorite_id
8944
9029
  self.created_at = created_at
8945
9030
  self.deleted = deleted
@@ -10989,7 +11074,7 @@ class Run(model.Model):
10989
11074
  status: Optional[str] = None
10990
11075
  git_service: Optional[str] = None
10991
11076
  git_state: Optional["CIGitState"] = None
10992
- result: Optional["CIRunResult"] = None
11077
+ result: Optional["RunResult"] = None
10993
11078
  schedule: Optional["CIScheduleTrigger"] = None
10994
11079
  target_branch: Optional[str] = None
10995
11080
  title: Optional[str] = None
@@ -11009,7 +11094,7 @@ class Run(model.Model):
11009
11094
  status: Optional[str] = None,
11010
11095
  git_service: Optional[str] = None,
11011
11096
  git_state: Optional["CIGitState"] = None,
11012
- result: Optional["CIRunResult"] = None,
11097
+ result: Optional["RunResult"] = None,
11013
11098
  schedule: Optional["CIScheduleTrigger"] = None,
11014
11099
  target_branch: Optional[str] = None,
11015
11100
  title: Optional[str] = None,
@@ -11137,6 +11222,55 @@ class RunningQueries(model.Model):
11137
11222
  self.sql_interface_sql = sql_interface_sql
11138
11223
 
11139
11224
 
11225
+ @attr.s(auto_attribs=True, init=False)
11226
+ class RunResult(model.Model):
11227
+ """
11228
+ Attributes:
11229
+ sql_result:
11230
+ sql_error:
11231
+ assert_result:
11232
+ assert_error:
11233
+ content_result:
11234
+ content_error:
11235
+ lookml_result:
11236
+ lookml_error:
11237
+ generic_error:
11238
+ """
11239
+
11240
+ sql_result: Optional["SqlValidatorResult"] = None
11241
+ sql_error: Optional["GenericError"] = None
11242
+ assert_result: Optional["AssertValidatorResult"] = None
11243
+ assert_error: Optional["GenericError"] = None
11244
+ content_result: Optional["ContentValidatorResult"] = None
11245
+ content_error: Optional["GenericError"] = None
11246
+ lookml_result: Optional["LookMLValidatorResult"] = None
11247
+ lookml_error: Optional["GenericError"] = None
11248
+ generic_error: Optional["GenericError"] = None
11249
+
11250
+ def __init__(
11251
+ self,
11252
+ *,
11253
+ sql_result: Optional["SqlValidatorResult"] = None,
11254
+ sql_error: Optional["GenericError"] = None,
11255
+ assert_result: Optional["AssertValidatorResult"] = None,
11256
+ assert_error: Optional["GenericError"] = None,
11257
+ content_result: Optional["ContentValidatorResult"] = None,
11258
+ content_error: Optional["GenericError"] = None,
11259
+ lookml_result: Optional["LookMLValidatorResult"] = None,
11260
+ lookml_error: Optional["GenericError"] = None,
11261
+ generic_error: Optional["GenericError"] = None
11262
+ ):
11263
+ self.sql_result = sql_result
11264
+ self.sql_error = sql_error
11265
+ self.assert_result = assert_result
11266
+ self.assert_error = assert_error
11267
+ self.content_result = content_result
11268
+ self.content_error = content_error
11269
+ self.lookml_result = lookml_result
11270
+ self.lookml_error = lookml_error
11271
+ self.generic_error = generic_error
11272
+
11273
+
11140
11274
  @attr.s(auto_attribs=True, init=False)
11141
11275
  class SamlConfig(model.Model):
11142
11276
  """
@@ -11844,6 +11978,59 @@ class SecretType(enum.Enum):
11844
11978
  SecretType.__new__ = model.safe_enum__new__ # type: ignore
11845
11979
 
11846
11980
 
11981
+ @attr.s(auto_attribs=True, init=False)
11982
+ class ServiceAccount(model.Model):
11983
+ """
11984
+ Attributes:
11985
+ can: Operations the current user is able to perform on this object
11986
+ id: Unique Id of the service account
11987
+ service_account_name: Display name of the service account.
11988
+ is_service_account: Indicates whether this user is a service account
11989
+ is_disabled: Indicates if the service account is disabled
11990
+ group_ids: Array of ids of the groups associated with this service account
11991
+ role_ids: Array of ids of the roles associated with this service account
11992
+ credentials_api3: API3 credentials for the service account
11993
+ created_at: Service account creation timestamp
11994
+ url: Link to get this item
11995
+ """
11996
+
11997
+ can: Optional[MutableMapping[str, bool]] = None
11998
+ id: Optional[str] = None
11999
+ service_account_name: Optional[str] = None
12000
+ is_service_account: Optional[bool] = None
12001
+ is_disabled: Optional[bool] = None
12002
+ group_ids: Optional[Sequence[str]] = None
12003
+ role_ids: Optional[Sequence[str]] = None
12004
+ credentials_api3: Optional[Sequence["CredentialsApi3"]] = None
12005
+ created_at: Optional[datetime.datetime] = None
12006
+ url: Optional[str] = None
12007
+
12008
+ def __init__(
12009
+ self,
12010
+ *,
12011
+ can: Optional[MutableMapping[str, bool]] = None,
12012
+ id: Optional[str] = None,
12013
+ service_account_name: Optional[str] = None,
12014
+ is_service_account: Optional[bool] = None,
12015
+ is_disabled: Optional[bool] = None,
12016
+ group_ids: Optional[Sequence[str]] = None,
12017
+ role_ids: Optional[Sequence[str]] = None,
12018
+ credentials_api3: Optional[Sequence["CredentialsApi3"]] = None,
12019
+ created_at: Optional[datetime.datetime] = None,
12020
+ url: Optional[str] = None
12021
+ ):
12022
+ self.can = can
12023
+ self.id = id
12024
+ self.service_account_name = service_account_name
12025
+ self.is_service_account = is_service_account
12026
+ self.is_disabled = is_disabled
12027
+ self.group_ids = group_ids
12028
+ self.role_ids = role_ids
12029
+ self.credentials_api3 = credentials_api3
12030
+ self.created_at = created_at
12031
+ self.url = url
12032
+
12033
+
11847
12034
  @attr.s(auto_attribs=True, init=False)
11848
12035
  class Session(model.Model):
11849
12036
  """
@@ -12105,6 +12292,11 @@ class SmtpSettings(model.Model):
12105
12292
  port: SMTP Server's port
12106
12293
  enable_starttls_auto: Is TLS encryption enabled?
12107
12294
  ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2".
12295
+ auth_type: Auth Type
12296
+ client_id: The OAuth Client ID
12297
+ client_secret: The OAuth Client Secret
12298
+ token_endpoint: The OAuth Token Endpoint
12299
+ scopes: The OAuth Scopes
12108
12300
  default_smtp: Whether to enable built-in Looker SMTP
12109
12301
  """
12110
12302
 
@@ -12115,6 +12307,11 @@ class SmtpSettings(model.Model):
12115
12307
  port: Optional[int] = None
12116
12308
  enable_starttls_auto: Optional[bool] = None
12117
12309
  ssl_version: Optional["SslVersion"] = None
12310
+ auth_type: Optional[str] = None
12311
+ client_id: Optional[str] = None
12312
+ client_secret: Optional[str] = None
12313
+ token_endpoint: Optional[str] = None
12314
+ scopes: Optional[str] = None
12118
12315
  default_smtp: Optional[bool] = None
12119
12316
 
12120
12317
  def __init__(
@@ -12127,6 +12324,11 @@ class SmtpSettings(model.Model):
12127
12324
  port: Optional[int] = None,
12128
12325
  enable_starttls_auto: Optional[bool] = None,
12129
12326
  ssl_version: Optional["SslVersion"] = None,
12327
+ auth_type: Optional[str] = None,
12328
+ client_id: Optional[str] = None,
12329
+ client_secret: Optional[str] = None,
12330
+ token_endpoint: Optional[str] = None,
12331
+ scopes: Optional[str] = None,
12130
12332
  default_smtp: Optional[bool] = None
12131
12333
  ):
12132
12334
  self.address = address
@@ -12136,6 +12338,11 @@ class SmtpSettings(model.Model):
12136
12338
  self.port = port
12137
12339
  self.enable_starttls_auto = enable_starttls_auto
12138
12340
  self.ssl_version = ssl_version
12341
+ self.auth_type = auth_type
12342
+ self.client_id = client_id
12343
+ self.client_secret = client_secret
12344
+ self.token_endpoint = token_endpoint
12345
+ self.scopes = scopes
12139
12346
  self.default_smtp = default_smtp
12140
12347
 
12141
12348
 
@@ -13150,8 +13357,10 @@ class User(model.Model):
13150
13357
  allow_normal_group_membership: User can be a direct member of a normal Looker group.
13151
13358
  allow_roles_from_normal_groups: User can inherit roles from a normal Looker group.
13152
13359
  embed_group_folder_id: (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login
13153
- is_iam_admin: User is an IAM Admin - only available in Looker (Google Cloud core). 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.
13154
- can_manage_api3_creds: Indicates if the user can manage API3 credentials
13360
+ 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.
13361
+ 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.
13362
+ 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.
13363
+ 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.
13155
13364
  url: Link to get this item
13156
13365
  """
13157
13366
 
@@ -13192,6 +13401,8 @@ class User(model.Model):
13192
13401
  embed_group_folder_id: Optional[str] = None
13193
13402
  is_iam_admin: Optional[bool] = None
13194
13403
  can_manage_api3_creds: Optional[bool] = None
13404
+ is_service_account: Optional[bool] = None
13405
+ service_account_name: Optional[str] = None
13195
13406
  url: Optional[str] = None
13196
13407
 
13197
13408
  def __init__(
@@ -13234,6 +13445,8 @@ class User(model.Model):
13234
13445
  embed_group_folder_id: Optional[str] = None,
13235
13446
  is_iam_admin: Optional[bool] = None,
13236
13447
  can_manage_api3_creds: Optional[bool] = None,
13448
+ is_service_account: Optional[bool] = None,
13449
+ service_account_name: Optional[str] = None,
13237
13450
  url: Optional[str] = None
13238
13451
  ):
13239
13452
  self.can = can
@@ -13273,6 +13486,8 @@ class User(model.Model):
13273
13486
  self.embed_group_folder_id = embed_group_folder_id
13274
13487
  self.is_iam_admin = is_iam_admin
13275
13488
  self.can_manage_api3_creds = can_manage_api3_creds
13489
+ self.is_service_account = is_service_account
13490
+ self.service_account_name = service_account_name
13276
13491
  self.url = url
13277
13492
 
13278
13493
 
@@ -14085,6 +14300,30 @@ class WriteBoardSection(model.Model):
14085
14300
  self.title = title
14086
14301
 
14087
14302
 
14303
+ @attr.s(auto_attribs=True, init=False)
14304
+ class WriteCertification(model.Model):
14305
+ """
14306
+ Dynamic writeable type for Certification removes:
14307
+ user_name, updated_at
14308
+
14309
+ Attributes:
14310
+ certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked".
14311
+ notes: Certification notes
14312
+ """
14313
+
14314
+ certification_status: Optional["CertificationStatus"] = None
14315
+ notes: Optional[str] = None
14316
+
14317
+ def __init__(
14318
+ self,
14319
+ *,
14320
+ certification_status: Optional["CertificationStatus"] = None,
14321
+ notes: Optional[str] = None
14322
+ ):
14323
+ self.certification_status = certification_status
14324
+ self.notes = notes
14325
+
14326
+
14088
14327
  @attr.s(auto_attribs=True, init=False)
14089
14328
  class WriteColorCollection(model.Model):
14090
14329
  """
@@ -14344,6 +14583,8 @@ class WriteDashboard(model.Model):
14344
14583
  title: Dashboard Title
14345
14584
  slug: Content Metadata Slug
14346
14585
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
14586
+ certification_metadata: Dynamic writeable type for Certification removes:
14587
+ user_name, updated_at
14347
14588
  alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes
14348
14589
  background_color: Background color
14349
14590
  crossfilter_enabled: Enables crossfiltering in dashboards - only available in dashboards-next (beta)
@@ -14371,6 +14612,7 @@ class WriteDashboard(model.Model):
14371
14612
  title: Optional[str] = None
14372
14613
  slug: Optional[str] = None
14373
14614
  preferred_viewer: Optional[str] = None
14615
+ certification_metadata: Optional["WriteCertification"] = None
14374
14616
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None
14375
14617
  background_color: Optional[str] = None
14376
14618
  crossfilter_enabled: Optional[bool] = None
@@ -14400,6 +14642,7 @@ class WriteDashboard(model.Model):
14400
14642
  title: Optional[str] = None,
14401
14643
  slug: Optional[str] = None,
14402
14644
  preferred_viewer: Optional[str] = None,
14645
+ certification_metadata: Optional["WriteCertification"] = None,
14403
14646
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None,
14404
14647
  background_color: Optional[str] = None,
14405
14648
  crossfilter_enabled: Optional[bool] = None,
@@ -14426,6 +14669,7 @@ class WriteDashboard(model.Model):
14426
14669
  self.title = title
14427
14670
  self.slug = slug
14428
14671
  self.preferred_viewer = preferred_viewer
14672
+ self.certification_metadata = certification_metadata
14429
14673
  self.alert_sync_with_dashboard_filter_enabled = (
14430
14674
  alert_sync_with_dashboard_filter_enabled
14431
14675
  )
@@ -14456,12 +14700,21 @@ class WriteDashboardBase(model.Model):
14456
14700
  Attributes:
14457
14701
  folder: Dynamic writeable type for FolderBase removes:
14458
14702
  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
14703
+ certification_metadata: Dynamic writeable type for Certification removes:
14704
+ user_name, updated_at
14459
14705
  """
14460
14706
 
14461
14707
  folder: Optional["WriteFolderBase"] = None
14708
+ certification_metadata: Optional["WriteCertification"] = None
14462
14709
 
14463
- def __init__(self, *, folder: Optional["WriteFolderBase"] = None):
14710
+ def __init__(
14711
+ self,
14712
+ *,
14713
+ folder: Optional["WriteFolderBase"] = None,
14714
+ certification_metadata: Optional["WriteCertification"] = None
14715
+ ):
14464
14716
  self.folder = folder
14717
+ self.certification_metadata = certification_metadata
14465
14718
 
14466
14719
 
14467
14720
  @attr.s(auto_attribs=True, init=False)
@@ -14473,6 +14726,7 @@ class WriteDashboardElement(model.Model):
14473
14726
  Attributes:
14474
14727
  body_text: Text tile body text
14475
14728
  dashboard_id: Id of Dashboard
14729
+ dashboard_layout_id: Id of Dashboard Layout
14476
14730
  look: Dynamic writeable type for LookWithQuery removes:
14477
14731
  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
14478
14732
  look_id: Id Of Look
@@ -14494,10 +14748,12 @@ class WriteDashboardElement(model.Model):
14494
14748
  type: Type
14495
14749
  rich_content_json: JSON with all the properties required for rich editor and buttons elements
14496
14750
  extension_id: Extension ID
14751
+ aria_description: Custom ARIA description text
14497
14752
  """
14498
14753
 
14499
14754
  body_text: Optional[str] = None
14500
14755
  dashboard_id: Optional[str] = None
14756
+ dashboard_layout_id: Optional[str] = None
14501
14757
  look: Optional["WriteLookWithQuery"] = None
14502
14758
  look_id: Optional[str] = None
14503
14759
  merge_result_id: Optional[str] = None
@@ -14516,12 +14772,14 @@ class WriteDashboardElement(model.Model):
14516
14772
  type: Optional[str] = None
14517
14773
  rich_content_json: Optional[str] = None
14518
14774
  extension_id: Optional[str] = None
14775
+ aria_description: Optional[str] = None
14519
14776
 
14520
14777
  def __init__(
14521
14778
  self,
14522
14779
  *,
14523
14780
  body_text: Optional[str] = None,
14524
14781
  dashboard_id: Optional[str] = None,
14782
+ dashboard_layout_id: Optional[str] = None,
14525
14783
  look: Optional["WriteLookWithQuery"] = None,
14526
14784
  look_id: Optional[str] = None,
14527
14785
  merge_result_id: Optional[str] = None,
@@ -14541,10 +14799,12 @@ class WriteDashboardElement(model.Model):
14541
14799
  title_text: Optional[str] = None,
14542
14800
  type: Optional[str] = None,
14543
14801
  rich_content_json: Optional[str] = None,
14544
- extension_id: Optional[str] = None
14802
+ extension_id: Optional[str] = None,
14803
+ aria_description: Optional[str] = None
14545
14804
  ):
14546
14805
  self.body_text = body_text
14547
14806
  self.dashboard_id = dashboard_id
14807
+ self.dashboard_layout_id = dashboard_layout_id
14548
14808
  self.look = look
14549
14809
  self.look_id = look_id
14550
14810
  self.merge_result_id = merge_result_id
@@ -14563,6 +14823,7 @@ class WriteDashboardElement(model.Model):
14563
14823
  self.type = type
14564
14824
  self.rich_content_json = rich_content_json
14565
14825
  self.extension_id = extension_id
14826
+ self.aria_description = aria_description
14566
14827
 
14567
14828
 
14568
14829
  @attr.s(auto_attribs=True, init=False)
@@ -14641,6 +14902,9 @@ class WriteDashboardLayout(model.Model):
14641
14902
  active: Is Active
14642
14903
  column_width: Column Width
14643
14904
  width: Width
14905
+ label: Label
14906
+ description: Description
14907
+ order: Order
14644
14908
  """
14645
14909
 
14646
14910
  dashboard_id: Optional[str] = None
@@ -14648,6 +14912,9 @@ class WriteDashboardLayout(model.Model):
14648
14912
  active: Optional[bool] = None
14649
14913
  column_width: Optional[int] = None
14650
14914
  width: Optional[int] = None
14915
+ label: Optional[str] = None
14916
+ description: Optional[str] = None
14917
+ order: Optional[int] = None
14651
14918
 
14652
14919
  def __init__(
14653
14920
  self,
@@ -14656,13 +14923,19 @@ class WriteDashboardLayout(model.Model):
14656
14923
  type: Optional[str] = None,
14657
14924
  active: Optional[bool] = None,
14658
14925
  column_width: Optional[int] = None,
14659
- width: Optional[int] = None
14926
+ width: Optional[int] = None,
14927
+ label: Optional[str] = None,
14928
+ description: Optional[str] = None,
14929
+ order: Optional[int] = None
14660
14930
  ):
14661
14931
  self.dashboard_id = dashboard_id
14662
14932
  self.type = type
14663
14933
  self.active = active
14664
14934
  self.column_width = column_width
14665
14935
  self.width = width
14936
+ self.label = label
14937
+ self.description = description
14938
+ self.order = order
14666
14939
 
14667
14940
 
14668
14941
  @attr.s(auto_attribs=True, init=False)
@@ -15148,6 +15421,7 @@ class WriteExternalOauthApplication(model.Model):
15148
15421
  client_secret: (Write-Only) The OAuth Client Secret for this application
15149
15422
  tenant_id: The OAuth Tenant ID for this application
15150
15423
  dialect_name: The database dialect for this application.
15424
+ bi_directional_data_access: Whether this application supports bi-directional data access.
15151
15425
  """
15152
15426
 
15153
15427
  name: Optional[str] = None
@@ -15155,6 +15429,7 @@ class WriteExternalOauthApplication(model.Model):
15155
15429
  client_secret: Optional[str] = None
15156
15430
  tenant_id: Optional[str] = None
15157
15431
  dialect_name: Optional[str] = None
15432
+ bi_directional_data_access: Optional[bool] = None
15158
15433
 
15159
15434
  def __init__(
15160
15435
  self,
@@ -15163,13 +15438,15 @@ class WriteExternalOauthApplication(model.Model):
15163
15438
  client_id: Optional[str] = None,
15164
15439
  client_secret: Optional[str] = None,
15165
15440
  tenant_id: Optional[str] = None,
15166
- dialect_name: Optional[str] = None
15441
+ dialect_name: Optional[str] = None,
15442
+ bi_directional_data_access: Optional[bool] = None
15167
15443
  ):
15168
15444
  self.name = name
15169
15445
  self.client_id = client_id
15170
15446
  self.client_secret = client_secret
15171
15447
  self.tenant_id = tenant_id
15172
15448
  self.dialect_name = dialect_name
15449
+ self.bi_directional_data_access = bi_directional_data_access
15173
15450
 
15174
15451
 
15175
15452
  @attr.s(auto_attribs=True, init=False)
@@ -15499,12 +15776,21 @@ class WriteLookBasic(model.Model):
15499
15776
 
15500
15777
  Attributes:
15501
15778
  user_id: User Id
15779
+ certification_metadata: Dynamic writeable type for Certification removes:
15780
+ user_name, updated_at
15502
15781
  """
15503
15782
 
15504
15783
  user_id: Optional[str] = None
15784
+ certification_metadata: Optional["WriteCertification"] = None
15505
15785
 
15506
- def __init__(self, *, user_id: Optional[str] = None):
15786
+ def __init__(
15787
+ self,
15788
+ *,
15789
+ user_id: Optional[str] = None,
15790
+ certification_metadata: Optional["WriteCertification"] = None
15791
+ ):
15507
15792
  self.user_id = user_id
15793
+ self.certification_metadata = certification_metadata
15508
15794
 
15509
15795
 
15510
15796
  @attr.s(auto_attribs=True, init=False)
@@ -15548,6 +15834,8 @@ class WriteLookWithQuery(model.Model):
15548
15834
  Attributes:
15549
15835
  title: Look Title
15550
15836
  user_id: User Id
15837
+ certification_metadata: Dynamic writeable type for Certification removes:
15838
+ user_name, updated_at
15551
15839
  deleted: Whether or not a look is 'soft' deleted.
15552
15840
  description: Description
15553
15841
  is_run_on_load: auto-run query when Look viewed
@@ -15562,6 +15850,7 @@ class WriteLookWithQuery(model.Model):
15562
15850
 
15563
15851
  title: Optional[str] = None
15564
15852
  user_id: Optional[str] = None
15853
+ certification_metadata: Optional["WriteCertification"] = None
15565
15854
  deleted: Optional[bool] = None
15566
15855
  description: Optional[str] = None
15567
15856
  is_run_on_load: Optional[bool] = None
@@ -15576,6 +15865,7 @@ class WriteLookWithQuery(model.Model):
15576
15865
  *,
15577
15866
  title: Optional[str] = None,
15578
15867
  user_id: Optional[str] = None,
15868
+ certification_metadata: Optional["WriteCertification"] = None,
15579
15869
  deleted: Optional[bool] = None,
15580
15870
  description: Optional[str] = None,
15581
15871
  is_run_on_load: Optional[bool] = None,
@@ -15587,6 +15877,7 @@ class WriteLookWithQuery(model.Model):
15587
15877
  ):
15588
15878
  self.title = title
15589
15879
  self.user_id = user_id
15880
+ self.certification_metadata = certification_metadata
15590
15881
  self.deleted = deleted
15591
15882
  self.description = description
15592
15883
  self.is_run_on_load = is_run_on_load
@@ -16496,6 +16787,30 @@ class WriteScheduledPlan(model.Model):
16496
16787
  self.query_id = query_id
16497
16788
 
16498
16789
 
16790
+ @attr.s(auto_attribs=True, init=False)
16791
+ class WriteServiceAccount(model.Model):
16792
+ """
16793
+ Dynamic writeable type for ServiceAccount removes:
16794
+ can, id, is_service_account, group_ids, role_ids, credentials_api3, created_at, url
16795
+
16796
+ Attributes:
16797
+ service_account_name: Display name of the service account.
16798
+ is_disabled: Indicates if the service account is disabled
16799
+ """
16800
+
16801
+ service_account_name: Optional[str] = None
16802
+ is_disabled: Optional[bool] = None
16803
+
16804
+ def __init__(
16805
+ self,
16806
+ *,
16807
+ service_account_name: Optional[str] = None,
16808
+ is_disabled: Optional[bool] = None
16809
+ ):
16810
+ self.service_account_name = service_account_name
16811
+ self.is_disabled = is_disabled
16812
+
16813
+
16499
16814
  @attr.s(auto_attribs=True, init=False)
16500
16815
  class WriteSessionConfig(model.Model):
16501
16816
  """
@@ -16751,7 +17066,7 @@ class WriteTheme(model.Model):
16751
17066
  class WriteUser(model.Model):
16752
17067
  """
16753
17068
  Dynamic writeable type for User removes:
16754
- can, avatar_url, avatar_url_without_sizing, credentials_api3, credentials_embed, credentials_google, credentials_ldap, credentials_looker_openid, credentials_oidc, credentials_saml, credentials_totp, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_folder_id, presumed_looker_employee, role_ids, sessions, verified_looker_employee, roles_externally_managed, allow_direct_roles, allow_normal_group_membership, allow_roles_from_normal_groups, embed_group_folder_id, is_iam_admin, url
17069
+ can, avatar_url, avatar_url_without_sizing, credentials_api3, credentials_embed, credentials_google, credentials_ldap, credentials_looker_openid, credentials_oidc, credentials_saml, credentials_totp, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_folder_id, presumed_looker_employee, role_ids, sessions, verified_looker_employee, roles_externally_managed, allow_direct_roles, allow_normal_group_membership, allow_roles_from_normal_groups, embed_group_folder_id, is_iam_admin, is_service_account, service_account_name, url
16755
17070
 
16756
17071
  Attributes:
16757
17072
  credentials_email: Dynamic writeable type for CredentialsEmail removes:
@@ -16763,7 +17078,7 @@ class WriteUser(model.Model):
16763
17078
  locale: User's preferred locale. User locale takes precedence over Looker's system-wide default locale. Locale determines language of display strings and date and numeric formatting in API responses. Locale string must be a 2 letter language code or a combination of language code and region code: 'en' or 'en-US', for example.
16764
17079
  models_dir_validated: User's dev workspace has been checked for presence of applicable production projects
16765
17080
  ui_state: Per user dictionary of undocumented state information owned by the Looker UI.
16766
- can_manage_api3_creds: Indicates if the user can manage API3 credentials
17081
+ 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.
16767
17082
  """
16768
17083
 
16769
17084
  credentials_email: Optional["WriteCredentialsEmail"] = None