looker-sdk 25.10.0__py3-none-any.whl → 25.18.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
- # 373 API models: 287 Spec, 0 Request, 62 Write, 24 Enum
24
+ # 377 API models: 289 Spec, 0 Request, 64 Write, 24 Enum
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -1120,83 +1120,6 @@ class CIGitState(model.Model):
1120
1120
  self.target = target
1121
1121
 
1122
1122
 
1123
- @attr.s(auto_attribs=True, init=False)
1124
- class CIRun(model.Model):
1125
- """
1126
- Attributes:
1127
- run_id: ID of the CI run
1128
- created_at: Time and date that the CI run was initiated
1129
- started_at: Time and date that the CI run began executing
1130
- finished_at: Time and date that the CI run completed
1131
- status_url: Git provider URL where you can view the commit status. This is the status URL that you specify when you create a CI suite
1132
- status: Status of the CI run (unknown, failed, passed, skipped, errored, cancelled, queued, running)
1133
- git_service: Git service for CI run (e.g. GitHub)
1134
- git_state:
1135
- result:
1136
- schedule:
1137
- target_branch: Git branch that the CI run compares against during validation, used for incremental runs
1138
- title: Name of the CI suite
1139
- trigger: Trigger for CI run (unknown, manual, schedule, change_request)
1140
- change_request:
1141
- suite_id: ID of the CI suite
1142
- username: Username of the user who triggered the CI run, if the CI run was manually triggered
1143
- """
1144
-
1145
- run_id: Optional[str] = None
1146
- created_at: Optional[datetime.datetime] = None
1147
- started_at: Optional[datetime.datetime] = None
1148
- finished_at: Optional[datetime.datetime] = None
1149
- status_url: Optional[str] = None
1150
- status: Optional[str] = None
1151
- git_service: Optional[str] = None
1152
- git_state: Optional["CIGitState"] = None
1153
- result: Optional["CIRunResult"] = None
1154
- schedule: Optional["CIScheduleTrigger"] = None
1155
- target_branch: Optional[str] = None
1156
- title: Optional[str] = None
1157
- trigger: Optional[str] = None
1158
- change_request: Optional["CIChangeRequest"] = None
1159
- suite_id: Optional[str] = None
1160
- username: Optional[str] = None
1161
-
1162
- def __init__(
1163
- self,
1164
- *,
1165
- run_id: Optional[str] = None,
1166
- created_at: Optional[datetime.datetime] = None,
1167
- started_at: Optional[datetime.datetime] = None,
1168
- finished_at: Optional[datetime.datetime] = None,
1169
- status_url: Optional[str] = None,
1170
- status: Optional[str] = None,
1171
- git_service: Optional[str] = None,
1172
- git_state: Optional["CIGitState"] = None,
1173
- result: Optional["CIRunResult"] = None,
1174
- schedule: Optional["CIScheduleTrigger"] = None,
1175
- target_branch: Optional[str] = None,
1176
- title: Optional[str] = None,
1177
- trigger: Optional[str] = None,
1178
- change_request: Optional["CIChangeRequest"] = None,
1179
- suite_id: Optional[str] = None,
1180
- username: Optional[str] = None
1181
- ):
1182
- self.run_id = run_id
1183
- self.created_at = created_at
1184
- self.started_at = started_at
1185
- self.finished_at = finished_at
1186
- self.status_url = status_url
1187
- self.status = status
1188
- self.git_service = git_service
1189
- self.git_state = git_state
1190
- self.result = result
1191
- self.schedule = schedule
1192
- self.target_branch = target_branch
1193
- self.title = title
1194
- self.trigger = trigger
1195
- self.change_request = change_request
1196
- self.suite_id = suite_id
1197
- self.username = username
1198
-
1199
-
1200
1123
  @attr.s(auto_attribs=True, init=False)
1201
1124
  class CIRunResult(model.Model):
1202
1125
  """
@@ -1463,6 +1386,8 @@ class ContentFavorite(model.Model):
1463
1386
  look:
1464
1387
  dashboard:
1465
1388
  board_id: Id of a board
1389
+ lookml_dashboard_id: Id of a lookml dashboard
1390
+ lookml_dashboard:
1466
1391
  """
1467
1392
 
1468
1393
  id: Optional[str] = None
@@ -1473,6 +1398,8 @@ class ContentFavorite(model.Model):
1473
1398
  look: Optional["LookBasic"] = None
1474
1399
  dashboard: Optional["DashboardBase"] = None
1475
1400
  board_id: Optional[str] = None
1401
+ lookml_dashboard_id: Optional[str] = None
1402
+ lookml_dashboard: Optional["DashboardBase"] = None
1476
1403
 
1477
1404
  def __init__(
1478
1405
  self,
@@ -1484,7 +1411,9 @@ class ContentFavorite(model.Model):
1484
1411
  dashboard_id: Optional[str] = None,
1485
1412
  look: Optional["LookBasic"] = None,
1486
1413
  dashboard: Optional["DashboardBase"] = None,
1487
- board_id: Optional[str] = None
1414
+ board_id: Optional[str] = None,
1415
+ lookml_dashboard_id: Optional[str] = None,
1416
+ lookml_dashboard: Optional["DashboardBase"] = None
1488
1417
  ):
1489
1418
  self.id = id
1490
1419
  self.user_id = user_id
@@ -1494,6 +1423,8 @@ class ContentFavorite(model.Model):
1494
1423
  self.look = look
1495
1424
  self.dashboard = dashboard
1496
1425
  self.board_id = board_id
1426
+ self.lookml_dashboard_id = lookml_dashboard_id
1427
+ self.lookml_dashboard = lookml_dashboard
1497
1428
 
1498
1429
 
1499
1430
  @attr.s(auto_attribs=True, init=False)
@@ -1507,6 +1438,8 @@ class ContentMeta(model.Model):
1507
1438
  dashboard_id: Id of associated dashboard when content_type is "dashboard"
1508
1439
  look_id: Id of associated look when content_type is "look"
1509
1440
  folder_id: Id of associated folder when content_type is "space"
1441
+ homepage_id: Id of associated board when content_type is "board"
1442
+ agent_id: Id of associated agent when content_type is "agent"
1510
1443
  content_type: Content Type ("dashboard", "look", or "folder")
1511
1444
  inherits: Whether content inherits its access levels from parent
1512
1445
  inheriting_id: Id of Inherited Content
@@ -1520,6 +1453,8 @@ class ContentMeta(model.Model):
1520
1453
  dashboard_id: Optional[str] = None
1521
1454
  look_id: Optional[str] = None
1522
1455
  folder_id: Optional[str] = None
1456
+ homepage_id: Optional[str] = None
1457
+ agent_id: Optional[str] = None
1523
1458
  content_type: Optional[str] = None
1524
1459
  inherits: Optional[bool] = None
1525
1460
  inheriting_id: Optional[str] = None
@@ -1535,6 +1470,8 @@ class ContentMeta(model.Model):
1535
1470
  dashboard_id: Optional[str] = None,
1536
1471
  look_id: Optional[str] = None,
1537
1472
  folder_id: Optional[str] = None,
1473
+ homepage_id: Optional[str] = None,
1474
+ agent_id: Optional[str] = None,
1538
1475
  content_type: Optional[str] = None,
1539
1476
  inherits: Optional[bool] = None,
1540
1477
  inheriting_id: Optional[str] = None,
@@ -1547,6 +1484,8 @@ class ContentMeta(model.Model):
1547
1484
  self.dashboard_id = dashboard_id
1548
1485
  self.look_id = look_id
1549
1486
  self.folder_id = folder_id
1487
+ self.homepage_id = homepage_id
1488
+ self.agent_id = agent_id
1550
1489
  self.content_type = content_type
1551
1490
  self.inherits = inherits
1552
1491
  self.inheriting_id = inheriting_id
@@ -1877,6 +1816,7 @@ class ContentValidationDashboardElement(model.Model):
1877
1816
  type: Type
1878
1817
  rich_content_json: JSON with all the properties required for rich editor and buttons elements
1879
1818
  extension_id: Extension ID
1819
+ aria_description: Custom ARIA description text
1880
1820
  """
1881
1821
 
1882
1822
  body_text: Optional[str] = None
@@ -1895,6 +1835,7 @@ class ContentValidationDashboardElement(model.Model):
1895
1835
  type: Optional[str] = None
1896
1836
  rich_content_json: Optional[str] = None
1897
1837
  extension_id: Optional[str] = None
1838
+ aria_description: Optional[str] = None
1898
1839
 
1899
1840
  def __init__(
1900
1841
  self,
@@ -1914,7 +1855,8 @@ class ContentValidationDashboardElement(model.Model):
1914
1855
  title_text: Optional[str] = None,
1915
1856
  type: Optional[str] = None,
1916
1857
  rich_content_json: Optional[str] = None,
1917
- extension_id: Optional[str] = None
1858
+ extension_id: Optional[str] = None,
1859
+ aria_description: Optional[str] = None
1918
1860
  ):
1919
1861
  self.body_text = body_text
1920
1862
  self.dashboard_id = dashboard_id
@@ -1932,6 +1874,7 @@ class ContentValidationDashboardElement(model.Model):
1932
1874
  self.type = type
1933
1875
  self.rich_content_json = rich_content_json
1934
1876
  self.extension_id = extension_id
1877
+ self.aria_description = aria_description
1935
1878
 
1936
1879
 
1937
1880
  @attr.s(auto_attribs=True, init=False)
@@ -2509,6 +2452,7 @@ class CreateCredentialsApi3(model.Model):
2509
2452
  created_at: Timestamp for the creation of this credential
2510
2453
  is_disabled: Has this credential been disabled?
2511
2454
  type: Short name for the type of this kind of credential
2455
+ purpose: User defined purpose for this credential.
2512
2456
  client_secret: API key client_secret
2513
2457
  url: Link to get this item
2514
2458
  """
@@ -2519,6 +2463,7 @@ class CreateCredentialsApi3(model.Model):
2519
2463
  created_at: Optional[str] = None
2520
2464
  is_disabled: Optional[bool] = None
2521
2465
  type: Optional[str] = None
2466
+ purpose: Optional[str] = None
2522
2467
  client_secret: Optional[str] = None
2523
2468
  url: Optional[str] = None
2524
2469
 
@@ -2531,6 +2476,7 @@ class CreateCredentialsApi3(model.Model):
2531
2476
  created_at: Optional[str] = None,
2532
2477
  is_disabled: Optional[bool] = None,
2533
2478
  type: Optional[str] = None,
2479
+ purpose: Optional[str] = None,
2534
2480
  client_secret: Optional[str] = None,
2535
2481
  url: Optional[str] = None
2536
2482
  ):
@@ -2540,6 +2486,7 @@ class CreateCredentialsApi3(model.Model):
2540
2486
  self.created_at = created_at
2541
2487
  self.is_disabled = is_disabled
2542
2488
  self.type = type
2489
+ self.purpose = purpose
2543
2490
  self.client_secret = client_secret
2544
2491
  self.url = url
2545
2492
 
@@ -2780,6 +2727,7 @@ class CredentialsApi3(model.Model):
2780
2727
  created_at: Timestamp for the creation of this credential
2781
2728
  is_disabled: Has this credential been disabled?
2782
2729
  type: Short name for the type of this kind of credential
2730
+ purpose: User defined purpose for this credential.
2783
2731
  url: Link to get this item
2784
2732
  """
2785
2733
 
@@ -2789,6 +2737,7 @@ class CredentialsApi3(model.Model):
2789
2737
  created_at: Optional[str] = None
2790
2738
  is_disabled: Optional[bool] = None
2791
2739
  type: Optional[str] = None
2740
+ purpose: Optional[str] = None
2792
2741
  url: Optional[str] = None
2793
2742
 
2794
2743
  def __init__(
@@ -2800,6 +2749,7 @@ class CredentialsApi3(model.Model):
2800
2749
  created_at: Optional[str] = None,
2801
2750
  is_disabled: Optional[bool] = None,
2802
2751
  type: Optional[str] = None,
2752
+ purpose: Optional[str] = None,
2803
2753
  url: Optional[str] = None
2804
2754
  ):
2805
2755
  self.can = can
@@ -2808,6 +2758,7 @@ class CredentialsApi3(model.Model):
2808
2758
  self.created_at = created_at
2809
2759
  self.is_disabled = is_disabled
2810
2760
  self.type = type
2761
+ self.purpose = purpose
2811
2762
  self.url = url
2812
2763
 
2813
2764
 
@@ -3687,6 +3638,7 @@ class DashboardElement(model.Model):
3687
3638
  title_text_as_html: Text tile title text as Html
3688
3639
  subtitle_text_as_html: Text tile subtitle text as Html
3689
3640
  extension_id: Extension ID
3641
+ aria_description: Custom ARIA description text
3690
3642
  """
3691
3643
 
3692
3644
  can: Optional[MutableMapping[str, bool]] = None
@@ -3719,6 +3671,7 @@ class DashboardElement(model.Model):
3719
3671
  title_text_as_html: Optional[str] = None
3720
3672
  subtitle_text_as_html: Optional[str] = None
3721
3673
  extension_id: Optional[str] = None
3674
+ aria_description: Optional[str] = None
3722
3675
 
3723
3676
  def __init__(
3724
3677
  self,
@@ -3752,7 +3705,8 @@ class DashboardElement(model.Model):
3752
3705
  rich_content_json: Optional[str] = None,
3753
3706
  title_text_as_html: Optional[str] = None,
3754
3707
  subtitle_text_as_html: Optional[str] = None,
3755
- extension_id: Optional[str] = None
3708
+ extension_id: Optional[str] = None,
3709
+ aria_description: Optional[str] = None
3756
3710
  ):
3757
3711
  self.can = can
3758
3712
  self.body_text = body_text
@@ -3784,6 +3738,7 @@ class DashboardElement(model.Model):
3784
3738
  self.title_text_as_html = title_text_as_html
3785
3739
  self.subtitle_text_as_html = subtitle_text_as_html
3786
3740
  self.extension_id = extension_id
3741
+ self.aria_description = aria_description
3787
3742
 
3788
3743
 
3789
3744
  @attr.s(auto_attribs=True, init=False)
@@ -3877,6 +3832,9 @@ class DashboardLayout(model.Model):
3877
3832
  deleted: Whether or not the dashboard layout is deleted.
3878
3833
  dashboard_title: Title extracted from the dashboard this layout represents.
3879
3834
  dashboard_layout_components: Components
3835
+ label: Label
3836
+ description: Description
3837
+ order: Order
3880
3838
  """
3881
3839
 
3882
3840
  can: Optional[MutableMapping[str, bool]] = None
@@ -3889,6 +3847,9 @@ class DashboardLayout(model.Model):
3889
3847
  deleted: Optional[bool] = None
3890
3848
  dashboard_title: Optional[str] = None
3891
3849
  dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = None
3850
+ label: Optional[str] = None
3851
+ description: Optional[str] = None
3852
+ order: Optional[int] = None
3892
3853
 
3893
3854
  def __init__(
3894
3855
  self,
@@ -3904,7 +3865,10 @@ class DashboardLayout(model.Model):
3904
3865
  dashboard_title: Optional[str] = None,
3905
3866
  dashboard_layout_components: Optional[
3906
3867
  Sequence["DashboardLayoutComponent"]
3907
- ] = None
3868
+ ] = None,
3869
+ label: Optional[str] = None,
3870
+ description: Optional[str] = None,
3871
+ order: Optional[int] = None
3908
3872
  ):
3909
3873
  self.can = can
3910
3874
  self.id = id
@@ -3916,6 +3880,9 @@ class DashboardLayout(model.Model):
3916
3880
  self.deleted = deleted
3917
3881
  self.dashboard_title = dashboard_title
3918
3882
  self.dashboard_layout_components = dashboard_layout_components
3883
+ self.label = label
3884
+ self.description = description
3885
+ self.order = order
3919
3886
 
3920
3887
 
3921
3888
  @attr.s(auto_attribs=True, init=False)
@@ -4233,6 +4200,7 @@ class DBConnection(model.Model):
4233
4200
  uses_oauth: Whether the connection uses OAuth for authentication.
4234
4201
  uses_key_pair_auth: Whether the connection uses key-pair for authentication.
4235
4202
  uses_instance_oauth: Whether the integration uses the oauth instance account.
4203
+ uses_service_auth: Whether the connection uses service authentication certificate.
4236
4204
  certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect).
4237
4205
  file_type: (Write-Only) Certificate keyfile type - .json, .p8 or .p12
4238
4206
  database: Database name
@@ -4297,6 +4265,7 @@ class DBConnection(model.Model):
4297
4265
  uses_oauth: Optional[bool] = None
4298
4266
  uses_key_pair_auth: Optional[bool] = None
4299
4267
  uses_instance_oauth: Optional[bool] = None
4268
+ uses_service_auth: Optional[bool] = None
4300
4269
  certificate: Optional[str] = None
4301
4270
  file_type: Optional[str] = None
4302
4271
  database: Optional[str] = None
@@ -4363,6 +4332,7 @@ class DBConnection(model.Model):
4363
4332
  uses_oauth: Optional[bool] = None,
4364
4333
  uses_key_pair_auth: Optional[bool] = None,
4365
4334
  uses_instance_oauth: Optional[bool] = None,
4335
+ uses_service_auth: Optional[bool] = None,
4366
4336
  certificate: Optional[str] = None,
4367
4337
  file_type: Optional[str] = None,
4368
4338
  database: Optional[str] = None,
@@ -4426,6 +4396,7 @@ class DBConnection(model.Model):
4426
4396
  self.uses_oauth = uses_oauth
4427
4397
  self.uses_key_pair_auth = uses_key_pair_auth
4428
4398
  self.uses_instance_oauth = uses_instance_oauth
4399
+ self.uses_service_auth = uses_service_auth
4429
4400
  self.certificate = certificate
4430
4401
  self.file_type = file_type
4431
4402
  self.database = database
@@ -6465,6 +6436,24 @@ class IntegrationHub(model.Model):
6465
6436
  self.legal_agreement_text = legal_agreement_text
6466
6437
 
6467
6438
 
6439
+ @attr.s(auto_attribs=True, init=False)
6440
+ class IntegrationHubHealthResult(model.Model):
6441
+ """
6442
+ Attributes:
6443
+ success: Whether or not the health check was successful
6444
+ message: A message representing the results of the health check.
6445
+ """
6446
+
6447
+ success: Optional[bool] = None
6448
+ message: Optional[str] = None
6449
+
6450
+ def __init__(
6451
+ self, *, success: Optional[bool] = None, message: Optional[str] = None
6452
+ ):
6453
+ self.success = success
6454
+ self.message = message
6455
+
6456
+
6468
6457
  @attr.s(auto_attribs=True, init=False)
6469
6458
  class IntegrationParam(model.Model):
6470
6459
  """
@@ -8002,6 +7991,7 @@ class LookmlModelExploreField(model.Model):
8002
7991
  type: The LookML type of the field.
8003
7992
  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".
8004
7993
  value_format: If specified, the LookML value format string for formatting values of this field.
7994
+ value_format_name: If specified, the name of the value format, as defined in the LookML model.
8005
7995
  view: The name of the view this field belongs to.
8006
7996
  view_label: The human-readable label of the view the field belongs to.
8007
7997
  dynamic: Whether this field was specified in "dynamic_fields" and is not part of the model.
@@ -8065,6 +8055,7 @@ class LookmlModelExploreField(model.Model):
8065
8055
  type: Optional[str] = None
8066
8056
  user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None
8067
8057
  value_format: Optional[str] = None
8058
+ value_format_name: Optional[str] = None
8068
8059
  view: Optional[str] = None
8069
8060
  view_label: Optional[str] = None
8070
8061
  dynamic: Optional[bool] = None
@@ -8132,6 +8123,7 @@ class LookmlModelExploreField(model.Model):
8132
8123
  Sequence["UserAttributeFilterTypes"]
8133
8124
  ] = None,
8134
8125
  value_format: Optional[str] = None,
8126
+ value_format_name: Optional[str] = None,
8135
8127
  view: Optional[str] = None,
8136
8128
  view_label: Optional[str] = None,
8137
8129
  dynamic: Optional[bool] = None,
@@ -8192,6 +8184,7 @@ class LookmlModelExploreField(model.Model):
8192
8184
  self.type = type
8193
8185
  self.user_attribute_filter_types = user_attribute_filter_types
8194
8186
  self.value_format = value_format
8187
+ self.value_format_name = value_format_name
8195
8188
  self.view = view
8196
8189
  self.view_label = view_label
8197
8190
  self.dynamic = dynamic
@@ -10097,19 +10090,6 @@ class Project(model.Model):
10097
10090
  self.dependency_status = dependency_status
10098
10091
 
10099
10092
 
10100
- @attr.s(auto_attribs=True, init=False)
10101
- class ProjectCIRun(model.Model):
10102
- """
10103
- Attributes:
10104
- run:
10105
- """
10106
-
10107
- run: Optional["CIRun"] = None
10108
-
10109
- def __init__(self, *, run: Optional["CIRun"] = None):
10110
- self.run = run
10111
-
10112
-
10113
10093
  @attr.s(auto_attribs=True, init=False)
10114
10094
  class ProjectError(model.Model):
10115
10095
  """
@@ -10220,6 +10200,19 @@ class ProjectFile(model.Model):
10220
10200
  self.git_status = git_status
10221
10201
 
10222
10202
 
10203
+ @attr.s(auto_attribs=True, init=False)
10204
+ class ProjectRun(model.Model):
10205
+ """
10206
+ Attributes:
10207
+ run:
10208
+ """
10209
+
10210
+ run: Optional["Run"] = None
10211
+
10212
+ def __init__(self, *, run: Optional["Run"] = None):
10213
+ self.run = run
10214
+
10215
+
10223
10216
  @attr.s(auto_attribs=True, init=False)
10224
10217
  class ProjectValidation(model.Model):
10225
10218
  """
@@ -11008,6 +11001,83 @@ class RoleSearch(model.Model):
11008
11001
  self.users_url = users_url
11009
11002
 
11010
11003
 
11004
+ @attr.s(auto_attribs=True, init=False)
11005
+ class Run(model.Model):
11006
+ """
11007
+ Attributes:
11008
+ run_id: ID of the CI run
11009
+ created_at: Time and date that the CI run was initiated
11010
+ started_at: Time and date that the CI run began executing
11011
+ finished_at: Time and date that the CI run completed
11012
+ status_url: Git provider URL where you can view the commit status. This is the status URL that you specify when you create a CI suite
11013
+ status: Status of the CI run (unknown, failed, passed, skipped, errored, cancelled, queued, running)
11014
+ git_service: Git service for CI run (e.g. GitHub)
11015
+ git_state:
11016
+ result:
11017
+ schedule:
11018
+ target_branch: Git branch that the CI run compares against during validation, used for incremental runs
11019
+ title: Name of the CI suite
11020
+ trigger: Trigger for CI run (unknown, manual, schedule, change_request)
11021
+ change_request:
11022
+ suite_id: ID of the CI suite
11023
+ username: Username of the user who triggered the CI run, if the CI run was manually triggered
11024
+ """
11025
+
11026
+ run_id: Optional[str] = None
11027
+ created_at: Optional[datetime.datetime] = None
11028
+ started_at: Optional[datetime.datetime] = None
11029
+ finished_at: Optional[datetime.datetime] = None
11030
+ status_url: Optional[str] = None
11031
+ status: Optional[str] = None
11032
+ git_service: Optional[str] = None
11033
+ git_state: Optional["CIGitState"] = None
11034
+ result: Optional["CIRunResult"] = None
11035
+ schedule: Optional["CIScheduleTrigger"] = None
11036
+ target_branch: Optional[str] = None
11037
+ title: Optional[str] = None
11038
+ trigger: Optional[str] = None
11039
+ change_request: Optional["CIChangeRequest"] = None
11040
+ suite_id: Optional[str] = None
11041
+ username: Optional[str] = None
11042
+
11043
+ def __init__(
11044
+ self,
11045
+ *,
11046
+ run_id: Optional[str] = None,
11047
+ created_at: Optional[datetime.datetime] = None,
11048
+ started_at: Optional[datetime.datetime] = None,
11049
+ finished_at: Optional[datetime.datetime] = None,
11050
+ status_url: Optional[str] = None,
11051
+ status: Optional[str] = None,
11052
+ git_service: Optional[str] = None,
11053
+ git_state: Optional["CIGitState"] = None,
11054
+ result: Optional["CIRunResult"] = None,
11055
+ schedule: Optional["CIScheduleTrigger"] = None,
11056
+ target_branch: Optional[str] = None,
11057
+ title: Optional[str] = None,
11058
+ trigger: Optional[str] = None,
11059
+ change_request: Optional["CIChangeRequest"] = None,
11060
+ suite_id: Optional[str] = None,
11061
+ username: Optional[str] = None
11062
+ ):
11063
+ self.run_id = run_id
11064
+ self.created_at = created_at
11065
+ self.started_at = started_at
11066
+ self.finished_at = finished_at
11067
+ self.status_url = status_url
11068
+ self.status = status
11069
+ self.git_service = git_service
11070
+ self.git_state = git_state
11071
+ self.result = result
11072
+ self.schedule = schedule
11073
+ self.target_branch = target_branch
11074
+ self.title = title
11075
+ self.trigger = trigger
11076
+ self.change_request = change_request
11077
+ self.suite_id = suite_id
11078
+ self.username = username
11079
+
11080
+
11011
11081
  @attr.s(auto_attribs=True, init=False)
11012
11082
  class RunningQueries(model.Model):
11013
11083
  """
@@ -11816,6 +11886,59 @@ class SecretType(enum.Enum):
11816
11886
  SecretType.__new__ = model.safe_enum__new__ # type: ignore
11817
11887
 
11818
11888
 
11889
+ @attr.s(auto_attribs=True, init=False)
11890
+ class ServiceAccount(model.Model):
11891
+ """
11892
+ Attributes:
11893
+ can: Operations the current user is able to perform on this object
11894
+ id: Unique Id of the service account
11895
+ service_account_name: Display name of the service account.
11896
+ is_service_account: Indicates whether this user is a service account
11897
+ is_disabled: Indicates if the service account is disabled
11898
+ group_ids: Array of ids of the groups associated with this service account
11899
+ role_ids: Array of ids of the roles associated with this service account
11900
+ credentials_api3: API3 credentials for the service account
11901
+ created_at: Service account creation timestamp
11902
+ url: Link to get this item
11903
+ """
11904
+
11905
+ can: Optional[MutableMapping[str, bool]] = None
11906
+ id: Optional[str] = None
11907
+ service_account_name: Optional[str] = None
11908
+ is_service_account: Optional[bool] = None
11909
+ is_disabled: Optional[bool] = None
11910
+ group_ids: Optional[Sequence[str]] = None
11911
+ role_ids: Optional[Sequence[str]] = None
11912
+ credentials_api3: Optional[Sequence["CredentialsApi3"]] = None
11913
+ created_at: Optional[datetime.datetime] = None
11914
+ url: Optional[str] = None
11915
+
11916
+ def __init__(
11917
+ self,
11918
+ *,
11919
+ can: Optional[MutableMapping[str, bool]] = None,
11920
+ id: Optional[str] = None,
11921
+ service_account_name: Optional[str] = None,
11922
+ is_service_account: Optional[bool] = None,
11923
+ is_disabled: Optional[bool] = None,
11924
+ group_ids: Optional[Sequence[str]] = None,
11925
+ role_ids: Optional[Sequence[str]] = None,
11926
+ credentials_api3: Optional[Sequence["CredentialsApi3"]] = None,
11927
+ created_at: Optional[datetime.datetime] = None,
11928
+ url: Optional[str] = None
11929
+ ):
11930
+ self.can = can
11931
+ self.id = id
11932
+ self.service_account_name = service_account_name
11933
+ self.is_service_account = is_service_account
11934
+ self.is_disabled = is_disabled
11935
+ self.group_ids = group_ids
11936
+ self.role_ids = role_ids
11937
+ self.credentials_api3 = credentials_api3
11938
+ self.created_at = created_at
11939
+ self.url = url
11940
+
11941
+
11819
11942
  @attr.s(auto_attribs=True, init=False)
11820
11943
  class Session(model.Model):
11821
11944
  """
@@ -12077,6 +12200,11 @@ class SmtpSettings(model.Model):
12077
12200
  port: SMTP Server's port
12078
12201
  enable_starttls_auto: Is TLS encryption enabled?
12079
12202
  ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2".
12203
+ auth_type: Auth Type
12204
+ client_id: The OAuth Client ID
12205
+ client_secret: The OAuth Client Secret
12206
+ token_endpoint: The OAuth Token Endpoint
12207
+ scopes: The OAuth Scopes
12080
12208
  default_smtp: Whether to enable built-in Looker SMTP
12081
12209
  """
12082
12210
 
@@ -12087,6 +12215,11 @@ class SmtpSettings(model.Model):
12087
12215
  port: Optional[int] = None
12088
12216
  enable_starttls_auto: Optional[bool] = None
12089
12217
  ssl_version: Optional["SslVersion"] = None
12218
+ auth_type: Optional[str] = None
12219
+ client_id: Optional[str] = None
12220
+ client_secret: Optional[str] = None
12221
+ token_endpoint: Optional[str] = None
12222
+ scopes: Optional[str] = None
12090
12223
  default_smtp: Optional[bool] = None
12091
12224
 
12092
12225
  def __init__(
@@ -12099,6 +12232,11 @@ class SmtpSettings(model.Model):
12099
12232
  port: Optional[int] = None,
12100
12233
  enable_starttls_auto: Optional[bool] = None,
12101
12234
  ssl_version: Optional["SslVersion"] = None,
12235
+ auth_type: Optional[str] = None,
12236
+ client_id: Optional[str] = None,
12237
+ client_secret: Optional[str] = None,
12238
+ token_endpoint: Optional[str] = None,
12239
+ scopes: Optional[str] = None,
12102
12240
  default_smtp: Optional[bool] = None
12103
12241
  ):
12104
12242
  self.address = address
@@ -12108,6 +12246,11 @@ class SmtpSettings(model.Model):
12108
12246
  self.port = port
12109
12247
  self.enable_starttls_auto = enable_starttls_auto
12110
12248
  self.ssl_version = ssl_version
12249
+ self.auth_type = auth_type
12250
+ self.client_id = client_id
12251
+ self.client_secret = client_secret
12252
+ self.token_endpoint = token_endpoint
12253
+ self.scopes = scopes
12111
12254
  self.default_smtp = default_smtp
12112
12255
 
12113
12256
 
@@ -13122,7 +13265,10 @@ class User(model.Model):
13122
13265
  allow_normal_group_membership: User can be a direct member of a normal Looker group.
13123
13266
  allow_roles_from_normal_groups: User can inherit roles from a normal Looker group.
13124
13267
  embed_group_folder_id: (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login
13125
- is_iam_admin: User is an IAM Admin - only available in Looker (Google Cloud core)
13268
+ 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
+ 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.
13126
13272
  url: Link to get this item
13127
13273
  """
13128
13274
 
@@ -13162,6 +13308,9 @@ class User(model.Model):
13162
13308
  allow_roles_from_normal_groups: Optional[bool] = None
13163
13309
  embed_group_folder_id: Optional[str] = None
13164
13310
  is_iam_admin: Optional[bool] = None
13311
+ can_manage_api3_creds: Optional[bool] = None
13312
+ is_service_account: Optional[bool] = None
13313
+ service_account_name: Optional[str] = None
13165
13314
  url: Optional[str] = None
13166
13315
 
13167
13316
  def __init__(
@@ -13203,6 +13352,9 @@ class User(model.Model):
13203
13352
  allow_roles_from_normal_groups: Optional[bool] = None,
13204
13353
  embed_group_folder_id: Optional[str] = None,
13205
13354
  is_iam_admin: Optional[bool] = None,
13355
+ can_manage_api3_creds: Optional[bool] = None,
13356
+ is_service_account: Optional[bool] = None,
13357
+ service_account_name: Optional[str] = None,
13206
13358
  url: Optional[str] = None
13207
13359
  ):
13208
13360
  self.can = can
@@ -13241,6 +13393,9 @@ class User(model.Model):
13241
13393
  self.allow_roles_from_normal_groups = allow_roles_from_normal_groups
13242
13394
  self.embed_group_folder_id = embed_group_folder_id
13243
13395
  self.is_iam_admin = is_iam_admin
13396
+ self.can_manage_api3_creds = can_manage_api3_creds
13397
+ self.is_service_account = is_service_account
13398
+ self.service_account_name = service_account_name
13244
13399
  self.url = url
13245
13400
 
13246
13401
 
@@ -14089,7 +14244,7 @@ class WriteColorCollection(model.Model):
14089
14244
  class WriteContentFavorite(model.Model):
14090
14245
  """
14091
14246
  Dynamic writeable type for ContentFavorite removes:
14092
- id, look_id, dashboard_id, board_id
14247
+ id, look_id, dashboard_id, board_id, lookml_dashboard_id
14093
14248
 
14094
14249
  Attributes:
14095
14250
  user_id: User Id which owns this ContentFavorite
@@ -14097,6 +14252,8 @@ class WriteContentFavorite(model.Model):
14097
14252
  look: Dynamic writeable type for LookBasic removes:
14098
14253
  can, content_metadata_id, id, title
14099
14254
  dashboard: Dynamic writeable type for DashboardBase removes:
14255
+ can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer
14256
+ lookml_dashboard: Dynamic writeable type for DashboardBase removes:
14100
14257
  can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer
14101
14258
  """
14102
14259
 
@@ -14104,6 +14261,7 @@ class WriteContentFavorite(model.Model):
14104
14261
  content_metadata_id: Optional[str] = None
14105
14262
  look: Optional["WriteLookBasic"] = None
14106
14263
  dashboard: Optional["WriteDashboardBase"] = None
14264
+ lookml_dashboard: Optional["WriteDashboardBase"] = None
14107
14265
 
14108
14266
  def __init__(
14109
14267
  self,
@@ -14111,19 +14269,21 @@ class WriteContentFavorite(model.Model):
14111
14269
  user_id: Optional[str] = None,
14112
14270
  content_metadata_id: Optional[str] = None,
14113
14271
  look: Optional["WriteLookBasic"] = None,
14114
- dashboard: Optional["WriteDashboardBase"] = None
14272
+ dashboard: Optional["WriteDashboardBase"] = None,
14273
+ lookml_dashboard: Optional["WriteDashboardBase"] = None
14115
14274
  ):
14116
14275
  self.user_id = user_id
14117
14276
  self.content_metadata_id = content_metadata_id
14118
14277
  self.look = look
14119
14278
  self.dashboard = dashboard
14279
+ self.lookml_dashboard = lookml_dashboard
14120
14280
 
14121
14281
 
14122
14282
  @attr.s(auto_attribs=True, init=False)
14123
14283
  class WriteContentMeta(model.Model):
14124
14284
  """
14125
14285
  Dynamic writeable type for ContentMeta removes:
14126
- can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug
14286
+ can, id, name, parent_id, dashboard_id, look_id, folder_id, homepage_id, agent_id, content_type, inheriting_id, slug
14127
14287
 
14128
14288
  Attributes:
14129
14289
  inherits: Whether content inherits its access levels from parent
@@ -14251,6 +14411,22 @@ class WriteCreateQueryTask(model.Model):
14251
14411
  self.dashboard_id = dashboard_id
14252
14412
 
14253
14413
 
14414
+ @attr.s(auto_attribs=True, init=False)
14415
+ class WriteCredentialsApi3(model.Model):
14416
+ """
14417
+ Dynamic writeable type for CredentialsApi3 removes:
14418
+ can, id, client_id, created_at, is_disabled, type, url
14419
+
14420
+ Attributes:
14421
+ purpose: User defined purpose for this credential.
14422
+ """
14423
+
14424
+ purpose: Optional[str] = None
14425
+
14426
+ def __init__(self, *, purpose: Optional[str] = None):
14427
+ self.purpose = purpose
14428
+
14429
+
14254
14430
  @attr.s(auto_attribs=True, init=False)
14255
14431
  class WriteCredentialsEmail(model.Model):
14256
14432
  """
@@ -14432,7 +14608,7 @@ class WriteDashboardElement(model.Model):
14432
14608
  query_id: Id Of Query
14433
14609
  refresh_interval: Refresh Interval
14434
14610
  result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes:
14435
- id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config
14611
+ id, query_id
14436
14612
  result_maker_id: ID of the ResultMakerLookup entry.
14437
14613
  subtitle_text: Text tile subtitle text
14438
14614
  title: Title of dashboard element
@@ -14441,6 +14617,7 @@ class WriteDashboardElement(model.Model):
14441
14617
  type: Type
14442
14618
  rich_content_json: JSON with all the properties required for rich editor and buttons elements
14443
14619
  extension_id: Extension ID
14620
+ aria_description: Custom ARIA description text
14444
14621
  """
14445
14622
 
14446
14623
  body_text: Optional[str] = None
@@ -14463,6 +14640,7 @@ class WriteDashboardElement(model.Model):
14463
14640
  type: Optional[str] = None
14464
14641
  rich_content_json: Optional[str] = None
14465
14642
  extension_id: Optional[str] = None
14643
+ aria_description: Optional[str] = None
14466
14644
 
14467
14645
  def __init__(
14468
14646
  self,
@@ -14488,7 +14666,8 @@ class WriteDashboardElement(model.Model):
14488
14666
  title_text: Optional[str] = None,
14489
14667
  type: Optional[str] = None,
14490
14668
  rich_content_json: Optional[str] = None,
14491
- extension_id: Optional[str] = None
14669
+ extension_id: Optional[str] = None,
14670
+ aria_description: Optional[str] = None
14492
14671
  ):
14493
14672
  self.body_text = body_text
14494
14673
  self.dashboard_id = dashboard_id
@@ -14510,6 +14689,7 @@ class WriteDashboardElement(model.Model):
14510
14689
  self.type = type
14511
14690
  self.rich_content_json = rich_content_json
14512
14691
  self.extension_id = extension_id
14692
+ self.aria_description = aria_description
14513
14693
 
14514
14694
 
14515
14695
  @attr.s(auto_attribs=True, init=False)
@@ -14588,6 +14768,9 @@ class WriteDashboardLayout(model.Model):
14588
14768
  active: Is Active
14589
14769
  column_width: Column Width
14590
14770
  width: Width
14771
+ label: Label
14772
+ description: Description
14773
+ order: Order
14591
14774
  """
14592
14775
 
14593
14776
  dashboard_id: Optional[str] = None
@@ -14595,6 +14778,9 @@ class WriteDashboardLayout(model.Model):
14595
14778
  active: Optional[bool] = None
14596
14779
  column_width: Optional[int] = None
14597
14780
  width: Optional[int] = None
14781
+ label: Optional[str] = None
14782
+ description: Optional[str] = None
14783
+ order: Optional[int] = None
14598
14784
 
14599
14785
  def __init__(
14600
14786
  self,
@@ -14603,13 +14789,19 @@ class WriteDashboardLayout(model.Model):
14603
14789
  type: Optional[str] = None,
14604
14790
  active: Optional[bool] = None,
14605
14791
  column_width: Optional[int] = None,
14606
- width: Optional[int] = None
14792
+ width: Optional[int] = None,
14793
+ label: Optional[str] = None,
14794
+ description: Optional[str] = None,
14795
+ order: Optional[int] = None
14607
14796
  ):
14608
14797
  self.dashboard_id = dashboard_id
14609
14798
  self.type = type
14610
14799
  self.active = active
14611
14800
  self.column_width = column_width
14612
14801
  self.width = width
14802
+ self.label = label
14803
+ self.description = description
14804
+ self.order = order
14613
14805
 
14614
14806
 
14615
14807
  @attr.s(auto_attribs=True, init=False)
@@ -14698,7 +14890,7 @@ class WriteDatagroup(model.Model):
14698
14890
  class WriteDBConnection(model.Model):
14699
14891
  """
14700
14892
  Dynamic writeable type for DBConnection removes:
14701
- can, dialect, snippets, pdts_enabled, named_driver_version_actual, uses_oauth, uses_instance_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name
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
14702
14894
 
14703
14895
  Attributes:
14704
14896
  name: Name of the connection. Also used as the unique identifier
@@ -16110,17 +16302,49 @@ class WriteRepositoryCredential(model.Model):
16110
16302
  class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model):
16111
16303
  """
16112
16304
  Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes:
16113
- id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config
16305
+ id, query_id
16114
16306
 
16115
16307
  Attributes:
16308
+ dynamic_fields: JSON string of dynamic field information.
16309
+ filterables: array of items that can be filtered and information about them.
16310
+ sorts: Sorts of the constituent Look, Query, or Merge Query
16311
+ merge_result_id: ID of merge result if this is a merge_result.
16312
+ total: Total of the constituent Look, Query, or Merge Query
16313
+ sql_query_id: ID of SQL Query if this is a SQL Runner Query
16116
16314
  query: Dynamic writeable type for Query removes:
16117
16315
  can, id, slug, share_url, expanded_share_url, url, has_table_calculations
16316
+ vis_config: Vis config of the constituent Query, or Merge Query.
16118
16317
  """
16119
16318
 
16319
+ dynamic_fields: Optional[str] = None
16320
+ filterables: Optional[Sequence["ResultMakerFilterables"]] = None
16321
+ sorts: Optional[Sequence[str]] = None
16322
+ merge_result_id: Optional[str] = None
16323
+ total: Optional[bool] = None
16324
+ sql_query_id: Optional[str] = None
16120
16325
  query: Optional["WriteQuery"] = None
16326
+ vis_config: Optional[MutableMapping[str, Any]] = None
16121
16327
 
16122
- def __init__(self, *, query: Optional["WriteQuery"] = None):
16328
+ def __init__(
16329
+ self,
16330
+ *,
16331
+ dynamic_fields: Optional[str] = None,
16332
+ filterables: Optional[Sequence["ResultMakerFilterables"]] = None,
16333
+ sorts: Optional[Sequence[str]] = None,
16334
+ merge_result_id: Optional[str] = None,
16335
+ total: Optional[bool] = None,
16336
+ sql_query_id: Optional[str] = None,
16337
+ query: Optional["WriteQuery"] = None,
16338
+ vis_config: Optional[MutableMapping[str, Any]] = None
16339
+ ):
16340
+ self.dynamic_fields = dynamic_fields
16341
+ self.filterables = filterables
16342
+ self.sorts = sorts
16343
+ self.merge_result_id = merge_result_id
16344
+ self.total = total
16345
+ self.sql_query_id = sql_query_id
16123
16346
  self.query = query
16347
+ self.vis_config = vis_config
16124
16348
 
16125
16349
 
16126
16350
  @attr.s(auto_attribs=True, init=False)
@@ -16411,6 +16635,30 @@ class WriteScheduledPlan(model.Model):
16411
16635
  self.query_id = query_id
16412
16636
 
16413
16637
 
16638
+ @attr.s(auto_attribs=True, init=False)
16639
+ class WriteServiceAccount(model.Model):
16640
+ """
16641
+ Dynamic writeable type for ServiceAccount removes:
16642
+ can, id, is_service_account, group_ids, role_ids, credentials_api3, created_at, url
16643
+
16644
+ Attributes:
16645
+ service_account_name: Display name of the service account.
16646
+ is_disabled: Indicates if the service account is disabled
16647
+ """
16648
+
16649
+ service_account_name: Optional[str] = None
16650
+ is_disabled: Optional[bool] = None
16651
+
16652
+ def __init__(
16653
+ self,
16654
+ *,
16655
+ service_account_name: Optional[str] = None,
16656
+ is_disabled: Optional[bool] = None
16657
+ ):
16658
+ self.service_account_name = service_account_name
16659
+ self.is_disabled = is_disabled
16660
+
16661
+
16414
16662
  @attr.s(auto_attribs=True, init=False)
16415
16663
  class WriteSessionConfig(model.Model):
16416
16664
  """
@@ -16666,7 +16914,7 @@ class WriteTheme(model.Model):
16666
16914
  class WriteUser(model.Model):
16667
16915
  """
16668
16916
  Dynamic writeable type for User removes:
16669
- 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
16917
+ 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
16670
16918
 
16671
16919
  Attributes:
16672
16920
  credentials_email: Dynamic writeable type for CredentialsEmail removes:
@@ -16678,6 +16926,7 @@ class WriteUser(model.Model):
16678
16926
  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.
16679
16927
  models_dir_validated: User's dev workspace has been checked for presence of applicable production projects
16680
16928
  ui_state: Per user dictionary of undocumented state information owned by the Looker UI.
16929
+ 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.
16681
16930
  """
16682
16931
 
16683
16932
  credentials_email: Optional["WriteCredentialsEmail"] = None
@@ -16688,6 +16937,7 @@ class WriteUser(model.Model):
16688
16937
  locale: Optional[str] = None
16689
16938
  models_dir_validated: Optional[bool] = None
16690
16939
  ui_state: Optional[MutableMapping[str, Any]] = None
16940
+ can_manage_api3_creds: Optional[bool] = None
16691
16941
 
16692
16942
  def __init__(
16693
16943
  self,
@@ -16699,7 +16949,8 @@ class WriteUser(model.Model):
16699
16949
  last_name: Optional[str] = None,
16700
16950
  locale: Optional[str] = None,
16701
16951
  models_dir_validated: Optional[bool] = None,
16702
- ui_state: Optional[MutableMapping[str, Any]] = None
16952
+ ui_state: Optional[MutableMapping[str, Any]] = None,
16953
+ can_manage_api3_creds: Optional[bool] = None
16703
16954
  ):
16704
16955
  self.credentials_email = credentials_email
16705
16956
  self.first_name = first_name
@@ -16709,6 +16960,7 @@ class WriteUser(model.Model):
16709
16960
  self.locale = locale
16710
16961
  self.models_dir_validated = models_dir_validated
16711
16962
  self.ui_state = ui_state
16963
+ self.can_manage_api3_creds = can_manage_api3_creds
16712
16964
 
16713
16965
 
16714
16966
  @attr.s(auto_attribs=True, init=False)