diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index b12b56a7..b97bd58f 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,19 +1,19 @@
lockVersion: 2.0.0
id: 3e3290ca-0ee8-4981-b1bc-14536048fa63
management:
- docChecksum: 95495705a106bf02a21467a7d00ea312
+ docChecksum: 02c031b7248e8c1df275b524638100fe
docVersion: 0.9.0
- speakeasyVersion: 1.761.3
- generationVersion: 2.879.11
- releaseVersion: 0.12.21
- configChecksum: 20ebb8ffe32a0f4d771511e5395aafc8
+ speakeasyVersion: 1.761.5
+ generationVersion: 2.879.13
+ releaseVersion: 0.12.22
+ configChecksum: 22d1acb6e428a7cf1ec40fb7dc31fa4c
repoURL: https://github.com/gleanwork/api-client-python.git
installationURL: https://github.com/gleanwork/api-client-python.git
published: true
persistentEdits:
- generation_id: 45b8f216-e35e-4495-942f-08a4b1272ac9
- pristine_commit_hash: c42a88b536429df12f99b42c9a15526ad2791f77
- pristine_tree_hash: f72f9384f611751da7762964b3835ba7a93b43f8
+ generation_id: ce0da22b-770d-4707-98c5-4c071a90a337
+ pristine_commit_hash: 3e5c3d8fb69c4aed3ea2f002673acdf12c0b54dd
+ pristine_tree_hash: 2b19820632a8760fb58e976d205ba8dc4ffd7e22
features:
python:
additionalDependencies: 1.0.0
@@ -187,8 +187,8 @@ trackedFiles:
pristine_git_object: dba88e1e980221c133143d71febe10860c6d6a11
docs/models/agentstimesavedinsight.md:
id: c998db614c46
- last_write_checksum: sha1:3d385b1b58b2fc13b30f1b93a62ebfba57549f4a
- pristine_git_object: 3a84fa9ff9a66340187f4f85c0cf96113d68cedc
+ last_write_checksum: sha1:0653ac44dfc9ed51985aec9a129941b91501812a
+ pristine_git_object: 552714b4d8aeed7dba72e1b11880f3fb71884e53
docs/models/agentsusagebydepartmentinsight.md:
id: 8e00b4ec28db
last_write_checksum: sha1:ba6bc3369d70a9f8b0cd136e5ffa9318b54222d3
@@ -919,8 +919,12 @@ trackedFiles:
pristine_git_object: eec4bb2823477745162b6a604d6ed6547bdfcdbd
docs/models/dlpexportfindingsrequest.md:
id: 846a7d063614
- last_write_checksum: sha1:d02690a672d76a1cc09129f514205d2fdb4d2252
- pristine_git_object: 1ecf20234bdf5b3eef7acf6fd64a3cab21e8f426
+ last_write_checksum: sha1:9ca5aec938795a317d000ea1f234a9c64d85be47
+ pristine_git_object: 3b8f7ff6562ca538b5d24f5c0a2b3c8f403e78e1
+ docs/models/dlpexportfindingsrequestexporttype.md:
+ id: 7dd2a90d5769
+ last_write_checksum: sha1:5f8fdc9eed3f5729b296eb59c1fc38157b5dfc0a
+ pristine_git_object: 7e9aee477a448c831c541e857c45255b826159c5
docs/models/dlpfindingfilter.md:
id: 72eab9f49f83
last_write_checksum: sha1:266f51fd4af5f9a986ec5e5d417b971de887913f
@@ -929,6 +933,10 @@ trackedFiles:
id: f4604a8ff945
last_write_checksum: sha1:59cf084fba6095ff5151b96ca8dfd4269f728456
pristine_git_object: 17476f3f5a6693576fd0c699271fa1bad636427e
+ docs/models/dlpissuefilter.md:
+ id: 015c17ef6125
+ last_write_checksum: sha1:2554635c00b4906fe04b46dc616963faf58504fd
+ pristine_git_object: 9769c13471fcee3a3b04e39a063e0abf2d8bb939
docs/models/dlpissuestatus.md:
id: bd67979c68c1
last_write_checksum: sha1:1f9b9f3090255714b1ece78a71f0a4fa71d6b38f
@@ -1163,16 +1171,16 @@ trackedFiles:
pristine_git_object: 9fa8de74a849d5f7628c70defcd8e7f6d0f8121c
docs/models/exportinfo.md:
id: 08c8529beddd
- last_write_checksum: sha1:52c974d3e1a4740f5b41a2c96ef2674c4872a1d9
- pristine_git_object: fd1547a8a4890b6565e01918acdef4dc255e82b4
+ last_write_checksum: sha1:fd668b48fbff594629afdc2a988ffff580eb0b99
+ pristine_git_object: 606ef59e99f439c2cfe4f7a64b0e2953b5d3af6e
+ docs/models/exportinfoexporttype.md:
+ id: 122be1d02850
+ last_write_checksum: sha1:d3626d4bfae8e63435d8d874c360d6fa3512b3b1
+ pristine_git_object: fd269c2f34b80de158597191405d54914a41b319
docs/models/exportinfostatus.md:
id: 00e8b292b3fb
last_write_checksum: sha1:a0c9f47ee9e748357aace4b84079d18a321aa52c
pristine_git_object: f257dc5200e63afb4c756a25661244c101e2363b
- docs/models/exporttype.md:
- id: b7a0e6ea465b
- last_write_checksum: sha1:6adf430de3351b7007a5c6a7b6fd8c78a4553765
- pristine_git_object: 9db29a82aad3b1bc16476946ead94f4d47bc8455
docs/models/externalsharingoptions.md:
id: f1ff0bb532c4
last_write_checksum: sha1:4aa8737cc989465e7ae6d0aecb0dd18d31e1acf6
@@ -2703,8 +2711,8 @@ trackedFiles:
pristine_git_object: 0ac68e93afbd65e5cff4a3c8cd5a91527446a41c
docs/sdks/governance/README.md:
id: 87817eb7bf48
- last_write_checksum: sha1:a7fdbdffd43d79ba890418507c27e5d7a94254a0
- pristine_git_object: 8debef429b415a7e7ffd486ab69c81a9b84dd4ca
+ last_write_checksum: sha1:43e1f885a19db073f545980c51b23c82d3ec0389
+ pristine_git_object: 8708b51c2c40d9f2d5556b71b2d5af8ff6c3f463
docs/sdks/indexingauthentication/README.md:
id: 3d8b5fccff24
last_write_checksum: sha1:db7a93bc9a6bad6ef56063825b85e78a032df1f5
@@ -2779,8 +2787,8 @@ trackedFiles:
pristine_git_object: e2fda7fe263c2a111e53872e3ad5bc324b4dccfe
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:65e0f2d22f0fc121be7ef0c65018a5d97077de6e
- pristine_git_object: b482729a93c5c3738efa4e3b29751599f6aa54e0
+ last_write_checksum: sha1:dcebfbd2e1a84ba743e5f844ebb3a507b2e8bae8
+ pristine_git_object: cc9c33750aad0593d077fcbb178be828304b7232
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794
@@ -2807,8 +2815,8 @@ trackedFiles:
pristine_git_object: 58c4d70ac1797b86ff5c4237cafbc344c42d8f64
src/glean/api_client/_version.py:
id: 0ce22b26136b
- last_write_checksum: sha1:4cc8ce7a84ff2626e04510f8fe3be0bbe6476271
- pristine_git_object: 8e3c4c8b151a4190bad120974fe3ca6b523ef504
+ last_write_checksum: sha1:a09e73fcef58c4a8690e8004c017b62737144327
+ pristine_git_object: dac31135bdb889d15d2c86f7c959415e12cdc219
src/glean/api_client/agents.py:
id: b925701a9217
last_write_checksum: sha1:ee99ae3d58f7f77ac2eba99c104d04d53c16c09c
@@ -2911,8 +2919,8 @@ trackedFiles:
pristine_git_object: 3e029c12197bb87be06e01323afbc495968a6eaa
src/glean/api_client/governance.py:
id: e30db8f06e58
- last_write_checksum: sha1:d19e7fe4afc8e15ed67758d1553b14ff8c0bd4e7
- pristine_git_object: 7f8a45f29d0a2db4b33932bdd4794129a03ff6c0
+ last_write_checksum: sha1:aa85e617cbca4a57451a4d3aff33a3286687de85
+ pristine_git_object: 3321373ae4bcec4a97ebeec327d1d078e34bd744
src/glean/api_client/governance_documents.py:
id: e5ab033181fd
last_write_checksum: sha1:761beada29ea72f570c55e6377706671d3b8fcbd
@@ -2959,8 +2967,8 @@ trackedFiles:
pristine_git_object: 1c182cb0150642014463e1ceec8bc8b785e5b9f3
src/glean/api_client/models/__init__.py:
id: d5f6ea5efcbe
- last_write_checksum: sha1:5abe6d9d2cf653ea24d2fd2a703ecbd26034a6f8
- pristine_git_object: d494a4156b79ac66d7e746dcfc9af56209eabe56
+ last_write_checksum: sha1:1639cfb1dfa4c246c39ee46c77863c719496dbdd
+ pristine_git_object: 1a54febc4288800bfdbb82e1afdbe73a08a088a5
src/glean/api_client/models/actionsummary.py:
id: 34ccdf9f1526
last_write_checksum: sha1:cfefc6678a5612dc8d50f2b0074dc54bb88e00e0
@@ -3043,8 +3051,8 @@ trackedFiles:
pristine_git_object: cf04728a8f53f60e72d88d6c9cb7396ba3c04ecb
src/glean/api_client/models/agentstimesavedinsight.py:
id: a0f77b3b907e
- last_write_checksum: sha1:35ead2111d854eb693eca7afd85af70cb69e4b41
- pristine_git_object: f81071aa0f0fe1f453f7c084811d028dae28f05d
+ last_write_checksum: sha1:ade060149f91b527306789ab799f7aa5174416f5
+ pristine_git_object: 25a613c6e515b61c98f37ae345c340b725593aed
src/glean/api_client/models/agentsusagebydepartmentinsight.py:
id: 50317bf09cb6
last_write_checksum: sha1:6ee545d0cdd6246b7b743870984e71276ab7dfd6
@@ -3651,8 +3659,8 @@ trackedFiles:
pristine_git_object: f68bba2b791930a7eff5708502c833d255211f18
src/glean/api_client/models/dlpexportfindingsrequest.py:
id: 8776242985ea
- last_write_checksum: sha1:d2a71519821ae410a1120df3f5da7570ad7e3a01
- pristine_git_object: b4c54bb45ee19a6e674696ea3ad214a0317c8bd9
+ last_write_checksum: sha1:12a9bc4ffea8f15dbedc67be21158106a56d6ea1
+ pristine_git_object: 44fedb771abc99c4cebd9768d49051f9a9d5ce30
src/glean/api_client/models/dlpfindingfilter.py:
id: 6ef2e5304df7
last_write_checksum: sha1:504b384e6f9de3dbc8d4ba7622cf1bf543a1ec97
@@ -3661,6 +3669,10 @@ trackedFiles:
id: f6f484c2d7a4
last_write_checksum: sha1:487ce5e7651214ea7906d0d4e74371544cc436f8
pristine_git_object: 334f894fe2a36391f40ff6831cfdc5aeecddbf21
+ src/glean/api_client/models/dlpissuefilter.py:
+ id: a52d7e96ee6d
+ last_write_checksum: sha1:b754d99c89be127d516be7b3dde33a9badb27ef8
+ pristine_git_object: ac7f76b7a6a188349267d04952d4216494578af8
src/glean/api_client/models/dlpissuestatus.py:
id: ef4c7e63fafc
last_write_checksum: sha1:f09d760baab7e130d011d8e27adeffdf8f4ac6bf
@@ -3835,8 +3847,8 @@ trackedFiles:
pristine_git_object: 2fc0a34fb83cf361d4167e22685f67eaa1cd269c
src/glean/api_client/models/exportinfo.py:
id: 7039fdf82b53
- last_write_checksum: sha1:17551757c1ced91bbfbf1c5c1f98aa3f55d0a4c8
- pristine_git_object: 039b187ecc533dbd35fe6819fa438b554e6d9cc2
+ last_write_checksum: sha1:ac8f1a1b597ec1a6dd301410f4a8012d63d9c860
+ pristine_git_object: 859689a25f6322e75e7acaa50dbed2843bd885dc
src/glean/api_client/models/externalsharingoptions.py:
id: 0df611382e60
last_write_checksum: sha1:ff79f9f97203c88bc89c051e73e9082c3861b6c5
@@ -5266,7 +5278,7 @@ trackedFiles:
tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go:
last_write_checksum: sha1:80bc08894cebfd78f82d3d80f93fd85a11b55d45
tests/mockserver/internal/handler/pathpostrestapiv1getchat.go:
- last_write_checksum: sha1:b48e2313407814ee4f8ed181b8e5299a84960c44
+ last_write_checksum: sha1:2267292ba8173cf8df70ddbc6ac02ff3439cb879
tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go:
last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0
tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go:
@@ -5374,7 +5386,7 @@ trackedFiles:
tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go:
last_write_checksum: sha1:37dfa579c66588425502ca91ae07cb9529bebd65
tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go:
- last_write_checksum: sha1:4c8368b220ca2cc15463104f6abcfe89bda8d574
+ last_write_checksum: sha1:1c07a7a8e8de690de25bddba511878bc5d40a515
tests/mockserver/internal/sdk/models/components/agentsusagebydepartmentinsight.go:
last_write_checksum: sha1:21c46d3f5363b157c2e4ee70451c7d0b3e8d77df
tests/mockserver/internal/sdk/models/components/agentusersinsight.go:
@@ -5646,11 +5658,13 @@ trackedFiles:
tests/mockserver/internal/sdk/models/components/dlpconfig.go:
last_write_checksum: sha1:d7f7202ea98f70853dbe57afbbf046a63a59f8d0
tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go:
- last_write_checksum: sha1:3fe8136a1f411c8fc5a8afd6bd18fdd953e94d11
+ last_write_checksum: sha1:a6fa9927945d74ba513e8299c8102f5f4545c2ab
tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go:
last_write_checksum: sha1:3a7776befd51d54ad43802b3e808bed01f7ceb31
tests/mockserver/internal/sdk/models/components/dlpfrequency.go:
last_write_checksum: sha1:a43530a5536fc8d7e9e059f9256acb659e57f636
+ tests/mockserver/internal/sdk/models/components/dlpissuefilter.go:
+ last_write_checksum: sha1:f36da04b86943e0b5b381b30ad96a3169a5be43d
tests/mockserver/internal/sdk/models/components/dlpissuestatus.go:
last_write_checksum: sha1:f1df49753a10f9d160ba746f973a2b37f0c32dc6
tests/mockserver/internal/sdk/models/components/dlpperson.go:
@@ -5724,7 +5738,7 @@ trackedFiles:
tests/mockserver/internal/sdk/models/components/eventstrategyname.go:
last_write_checksum: sha1:acecfa3fb469871561d21b30275631ced4a4a11c
tests/mockserver/internal/sdk/models/components/exportinfo.go:
- last_write_checksum: sha1:a211dd685d03fa0b8d7e0186d15abf9756d1bf4e
+ last_write_checksum: sha1:aa247f4086aa7f07a7342a5478116adea95ad8a2
tests/mockserver/internal/sdk/models/components/externalsharingoptions.go:
last_write_checksum: sha1:129d60a6464700de75963f0f71ce88c5cde095f2
tests/mockserver/internal/sdk/models/components/externalshortcut.go:
@@ -6611,8 +6625,8 @@ trackedFiles:
pristine_git_object: df2944ebda36db652b2770dd1c23be83df90fc99
tests/test_summarize.py:
id: a255d8a6f627
- last_write_checksum: sha1:71c419bc1a3c07cc4fd6a509adb08f3aca93230f
- pristine_git_object: 5917ddcb71c5d7818d0f075ade899d7908897c28
+ last_write_checksum: sha1:0a66e5784eb0a938b4399c0829e4fd716735482b
+ pristine_git_object: ef4774cfa7c7777478cd7081760ef38fbb9a0f32
tests/test_tools.py:
id: 70889bdf7321
last_write_checksum: sha1:3c0c220f8975b050c322f6475e95f7af4e65b995
@@ -7540,7 +7554,7 @@ generatedTests:
checkdatasourceauth: "2026-02-19T15:48:52Z"
getDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z"
updateDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z"
-releaseNotes: "## Python SDK Changes:\n* `glean.client.activity.feedback()`: \n * `request.feedback1.manual_feedback_info.issues[]` **Changed**\n* `glean.client.search.retrieve_feed()`: `response.results[].primary_entry.workflow.workflow.last_draft_saved_at` **Added**\n* `glean.governance.createfindingsexport()`: \n * `request.filter.statuses` **Added**\n * `response.filter.statuses` **Added**\n* `glean.governance.listfindingsexports()`: `response.exports[].filter.statuses` **Added**\n"
+releaseNotes: "## Python SDK Changes:\n* `glean.client.insights.retrieve()`: `response.agents_response.agents_time_saved_insights[].feedback_user_count` **Added**\n* `glean.governance.createfindingsexport()`: \n * `request.issue_filter` **Added**\n * `response` **Changed**\n* `glean.governance.listfindingsexports()`: `response.exports[]` **Changed**\n"
generatedFiles:
- .devcontainer/README.md
- .devcontainer/devcontainer.json
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 8ff17aec..a0c5c84a 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -34,7 +34,7 @@ generation:
generateNewTests: true
skipResponseBodyAssertions: true
python:
- version: 0.12.21
+ version: 0.12.22
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml
index a9e5c1ac..77d73f8a 100644
--- a/.speakeasy/glean-merged-spec.yaml
+++ b/.speakeasy/glean-merged-spec.yaml
@@ -2,7 +2,7 @@ openapi: 3.0.0
info:
version: 0.9.0
title: Glean API
- x-source-commit-sha: 56c43aab30e05c50c9e3277f877d2ca261a345cf
+ x-source-commit-sha: a9a6d4f331a3052d3347e7366e1166f483ff5cb7
description: |
# Introduction
In addition to the data sources that Glean has built-in support for, Glean also provides a REST API that enables customers to put arbitrary content in the search index. This is useful, for example, for doing permissions-aware search over content in internal tools that reside on-prem as well as for searching over applications that Glean does not currently support first class. In addition these APIs allow the customer to push organization data (people info, organization structure etc) into Glean.
@@ -22,7 +22,7 @@ info:
These API clients provide type-safe, idiomatic interfaces for working with Glean IndexingAPIs in your language of choice.
x-logo:
url: https://app.glean.com/images/glean-text2.svg
- x-open-api-commit-sha: 791388b111dd5bdcce38c309f76e984ebd268577
+ x-open-api-commit-sha: bee9d999e037d7c61bcd75eafa0755e05e88dba7
x-speakeasy-name: 'Glean API'
servers:
- url: https://{instance}-be.glean.com
@@ -9354,6 +9354,9 @@ components:
type: number
format: float
description: Average minutes saved per run for this agent over the specified time period.
+ feedbackUserCount:
+ type: integer
+ description: Total number of users who provided feedback on time saved for this agent over the specified time period.
AgentsInsightsV2Response:
allOf:
- $ref: "#/components/schemas/CurrentActiveUsers"
@@ -13681,6 +13684,42 @@ components:
$ref: '#/components/schemas/TimeRangeFilter'
archived:
type: boolean
+ DlpIssueFilter:
+ properties:
+ searchText:
+ type: string
+ description: Text to search for in issue fields.
+ statuses:
+ type: array
+ items:
+ $ref: '#/components/schemas/DlpIssueStatus'
+ description: Filter by one or more issue statuses.
+ assigneeId:
+ type: string
+ description: Filter by assignee user ID.
+ infoType:
+ type: string
+ regexId:
+ type: string
+ reportIds:
+ type: array
+ items:
+ type: string
+ description: Filter by one or more report/policy IDs.
+ docId:
+ type: string
+ datasource:
+ type: string
+ visibility:
+ type: string
+ severities:
+ type: array
+ items:
+ $ref: '#/components/schemas/DlpSeverity'
+ description: Filter by one or more severity levels.
+ timeRange:
+ $ref: '#/components/schemas/TimeRangeFilter'
+ description: Filter for DLP issues. Includes document-level filters and issue-specific filters.
ExportInfo:
properties:
createdBy:
@@ -13700,9 +13739,19 @@ components:
fileName:
type: string
description: The name of the file to export the findings to
+ exportType:
+ type: string
+ enum:
+ - FINDINGS
+ - DOCUMENTS
+ - ISSUES
+ description: The type of export to perform
filter:
$ref: '#/components/schemas/DlpFindingFilter'
- description: The filters used to export the findings
+ description: The filters used to export the findings. Set for FINDINGS and DOCUMENTS exports.
+ issueFilter:
+ $ref: '#/components/schemas/DlpIssueFilter'
+ description: The filters used for ISSUES exports.
status:
type: string
enum:
@@ -13731,6 +13780,9 @@ components:
description: The type of export to perform
filter:
$ref: '#/components/schemas/DlpFindingFilter'
+ issueFilter:
+ $ref: '#/components/schemas/DlpIssueFilter'
+ description: Filter for ISSUE-level exports. Used when exportType is ISSUES.
fileName:
type: string
description: The name of the file to export the findings to
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index f9d9228d..40a893f4 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -1,9 +1,9 @@
-speakeasyVersion: 1.761.3
+speakeasyVersion: 1.761.5
sources:
Glean API:
sourceNamespace: glean-api-specs
- sourceRevisionDigest: sha256:a7f1dd4dfe40c270cebc7e772bc8ef4049bc950da1ea685b954e9a2d7e118a8d
- sourceBlobDigest: sha256:e781f366e902117f472dd7e69c4e5dd653f820e6141a60670a17c24dc46930b3
+ sourceRevisionDigest: sha256:9e0b4fca588f78b58f6328e574fbca05e933d4154bba67ec143ad776d8c8088d
+ sourceBlobDigest: sha256:b9465f539f87ad950381cb10d709405eb1be8b15b32153fcc868a7f0a621db39
tags:
- latest
Glean Client API:
@@ -16,10 +16,10 @@ targets:
glean:
source: Glean API
sourceNamespace: glean-api-specs
- sourceRevisionDigest: sha256:a7f1dd4dfe40c270cebc7e772bc8ef4049bc950da1ea685b954e9a2d7e118a8d
- sourceBlobDigest: sha256:e781f366e902117f472dd7e69c4e5dd653f820e6141a60670a17c24dc46930b3
+ sourceRevisionDigest: sha256:9e0b4fca588f78b58f6328e574fbca05e933d4154bba67ec143ad776d8c8088d
+ sourceBlobDigest: sha256:b9465f539f87ad950381cb10d709405eb1be8b15b32153fcc868a7f0a621db39
codeSamplesNamespace: glean-api-specs-python-code-samples
- codeSamplesRevisionDigest: sha256:a88babde35272bb8f62fe6b45bde03c7a407f5a14b40f1302b05749f9f4ec1d3
+ codeSamplesRevisionDigest: sha256:bc78a7bd1f9c3a21f81396a93ee9382698221d20071a8fc6d28ee3f460c5180c
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
diff --git a/RELEASES.md b/RELEASES.md
index b645dae5..e943086b 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -718,4 +718,14 @@ Based on:
### Generated
- [python v0.12.21] .
### Releases
-- [PyPI v0.12.21] https://pypi.org/project/glean-api-client/0.12.21 - .
\ No newline at end of file
+- [PyPI v0.12.21] https://pypi.org/project/glean-api-client/0.12.21 - .
+
+## 2026-04-15 08:37:31
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.761.5 (2.879.13) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v0.12.22] .
+### Releases
+- [PyPI v0.12.22] https://pypi.org/project/glean-api-client/0.12.22 - .
\ No newline at end of file
diff --git a/docs/models/agentstimesavedinsight.md b/docs/models/agentstimesavedinsight.md
index 3a84fa9f..552714b4 100644
--- a/docs/models/agentstimesavedinsight.md
+++ b/docs/models/agentstimesavedinsight.md
@@ -3,11 +3,12 @@
## Fields
-| Field | Type | Required | Description | Example |
-| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
-| `agent_id` | *Optional[str]* | :heavy_minus_sign: | Agent ID | |
-| `agent_name` | *Optional[str]* | :heavy_minus_sign: | Agent name | |
-| `icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} |
-| `is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the agent has been deleted | |
-| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | |
-| `mins_per_run` | *Optional[float]* | :heavy_minus_sign: | Average minutes saved per run for this agent over the specified time period. | |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
+| `agent_id` | *Optional[str]* | :heavy_minus_sign: | Agent ID | |
+| `agent_name` | *Optional[str]* | :heavy_minus_sign: | Agent name | |
+| `icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} |
+| `is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the agent has been deleted | |
+| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | |
+| `mins_per_run` | *Optional[float]* | :heavy_minus_sign: | Average minutes saved per run for this agent over the specified time period. | |
+| `feedback_user_count` | *Optional[int]* | :heavy_minus_sign: | Total number of users who provided feedback on time saved for this agent over the specified time period. | |
\ No newline at end of file
diff --git a/docs/models/dlpexportfindingsrequest.md b/docs/models/dlpexportfindingsrequest.md
index 1ecf2023..3b8f7ff6 100644
--- a/docs/models/dlpexportfindingsrequest.md
+++ b/docs/models/dlpexportfindingsrequest.md
@@ -3,10 +3,11 @@
## Fields
-| Field | Type | Required | Description |
-| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
-| `export_type` | [Optional[models.ExportType]](../models/exporttype.md) | :heavy_minus_sign: | The type of export to perform |
-| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A |
-| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to |
-| `field_scope` | [Optional[models.FieldScope]](../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export |
-| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export |
\ No newline at end of file
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
+| `export_type` | [Optional[models.DlpExportFindingsRequestExportType]](../models/dlpexportfindingsrequestexporttype.md) | :heavy_minus_sign: | The type of export to perform |
+| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A |
+| `issue_filter` | [Optional[models.DlpIssueFilter]](../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. |
+| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to |
+| `field_scope` | [Optional[models.FieldScope]](../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export |
+| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export |
\ No newline at end of file
diff --git a/docs/models/exporttype.md b/docs/models/dlpexportfindingsrequestexporttype.md
similarity index 58%
rename from docs/models/exporttype.md
rename to docs/models/dlpexportfindingsrequestexporttype.md
index 9db29a82..7e9aee47 100644
--- a/docs/models/exporttype.md
+++ b/docs/models/dlpexportfindingsrequestexporttype.md
@@ -1,13 +1,13 @@
-# ExportType
+# DlpExportFindingsRequestExportType
The type of export to perform
## Example Usage
```python
-from glean.api_client.models import ExportType
+from glean.api_client.models import DlpExportFindingsRequestExportType
-value = ExportType.FINDINGS
+value = DlpExportFindingsRequestExportType.FINDINGS
```
diff --git a/docs/models/dlpissuefilter.md b/docs/models/dlpissuefilter.md
new file mode 100644
index 00000000..9769c134
--- /dev/null
+++ b/docs/models/dlpissuefilter.md
@@ -0,0 +1,20 @@
+# DlpIssueFilter
+
+Filter for DLP issues. Includes document-level filters and issue-specific filters.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- |
+| `search_text` | *Optional[str]* | :heavy_minus_sign: | Text to search for in issue fields. |
+| `statuses` | List[[models.DlpIssueStatus](../models/dlpissuestatus.md)] | :heavy_minus_sign: | Filter by one or more issue statuses. |
+| `assignee_id` | *Optional[str]* | :heavy_minus_sign: | Filter by assignee user ID. |
+| `info_type` | *Optional[str]* | :heavy_minus_sign: | N/A |
+| `regex_id` | *Optional[str]* | :heavy_minus_sign: | N/A |
+| `report_ids` | List[*str*] | :heavy_minus_sign: | Filter by one or more report/policy IDs. |
+| `doc_id` | *Optional[str]* | :heavy_minus_sign: | N/A |
+| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A |
+| `visibility` | *Optional[str]* | :heavy_minus_sign: | N/A |
+| `severities` | List[[models.DlpSeverity](../models/dlpseverity.md)] | :heavy_minus_sign: | Filter by one or more severity levels. |
+| `time_range` | [Optional[models.TimeRangeFilter]](../models/timerangefilter.md) | :heavy_minus_sign: | N/A |
\ No newline at end of file
diff --git a/docs/models/exportinfo.md b/docs/models/exportinfo.md
index fd1547a8..606ef59e 100644
--- a/docs/models/exportinfo.md
+++ b/docs/models/exportinfo.md
@@ -3,13 +3,15 @@
## Fields
-| Field | Type | Required | Description |
-| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
-| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. |
-| `start_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export started. |
-| `end_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export completed. |
-| `export_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the export |
-| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to |
-| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A |
-| `status` | [Optional[models.ExportInfoStatus]](../models/exportinfostatus.md) | :heavy_minus_sign: | The status of the export |
-| `export_size` | *Optional[int]* | :heavy_minus_sign: | The size of the exported file in bytes |
\ No newline at end of file
+| Field | Type | Required | Description |
+| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
+| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. |
+| `start_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export started. |
+| `end_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export completed. |
+| `export_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the export |
+| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to |
+| `export_type` | [Optional[models.ExportInfoExportType]](../models/exportinfoexporttype.md) | :heavy_minus_sign: | The type of export to perform |
+| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A |
+| `issue_filter` | [Optional[models.DlpIssueFilter]](../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. |
+| `status` | [Optional[models.ExportInfoStatus]](../models/exportinfostatus.md) | :heavy_minus_sign: | The status of the export |
+| `export_size` | *Optional[int]* | :heavy_minus_sign: | The size of the exported file in bytes |
\ No newline at end of file
diff --git a/docs/models/exportinfoexporttype.md b/docs/models/exportinfoexporttype.md
new file mode 100644
index 00000000..fd269c2f
--- /dev/null
+++ b/docs/models/exportinfoexporttype.md
@@ -0,0 +1,22 @@
+# ExportInfoExportType
+
+The type of export to perform
+
+## Example Usage
+
+```python
+from glean.api_client.models import ExportInfoExportType
+
+value = ExportInfoExportType.FINDINGS
+
+# Open enum: unrecognized values are captured as UnrecognizedStr
+```
+
+
+## Values
+
+| Name | Value |
+| ----------- | ----------- |
+| `FINDINGS` | FINDINGS |
+| `DOCUMENTS` | DOCUMENTS |
+| `ISSUES` | ISSUES |
\ No newline at end of file
diff --git a/docs/sdks/governance/README.md b/docs/sdks/governance/README.md
index 8debef42..8708b51c 100644
--- a/docs/sdks/governance/README.md
+++ b/docs/sdks/governance/README.md
@@ -34,14 +34,15 @@ with Glean(
### Parameters
-| Parameter | Type | Required | Description |
-| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
-| `export_type` | [Optional[models.ExportType]](../../models/exporttype.md) | :heavy_minus_sign: | The type of export to perform |
-| `filter_` | [Optional[models.DlpFindingFilter]](../../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A |
-| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to |
-| `field_scope` | [Optional[models.FieldScope]](../../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export |
-| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
+| Parameter | Type | Required | Description |
+| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
+| `export_type` | [Optional[models.DlpExportFindingsRequestExportType]](../../models/dlpexportfindingsrequestexporttype.md) | :heavy_minus_sign: | The type of export to perform |
+| `filter_` | [Optional[models.DlpFindingFilter]](../../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A |
+| `issue_filter` | [Optional[models.DlpIssueFilter]](../../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. |
+| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to |
+| `field_scope` | [Optional[models.FieldScope]](../../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export |
+| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
### Response
diff --git a/pyproject.toml b/pyproject.toml
index b482729a..cc9c3375 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "glean-api-client"
-version = "0.12.21"
+version = "0.12.22"
description = "Python Client SDK Generated by Speakeasy."
authors = [{ name = "Glean Technologies, Inc." },]
readme = "README-PYPI.md"
diff --git a/src/glean/api_client/_version.py b/src/glean/api_client/_version.py
index 8e3c4c8b..dac31135 100644
--- a/src/glean/api_client/_version.py
+++ b/src/glean/api_client/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "glean-api-client"
-__version__: str = "0.12.21"
+__version__: str = "0.12.22"
__openapi_doc_version__: str = "0.9.0"
-__gen_version__: str = "2.879.11"
-__user_agent__: str = "speakeasy-sdk/python 0.12.21 2.879.11 0.9.0 glean-api-client"
+__gen_version__: str = "2.879.13"
+__user_agent__: str = "speakeasy-sdk/python 0.12.22 2.879.13 0.9.0 glean-api-client"
try:
if __package__ is not None:
diff --git a/src/glean/api_client/governance.py b/src/glean/api_client/governance.py
index 7f8a45f2..3321373a 100644
--- a/src/glean/api_client/governance.py
+++ b/src/glean/api_client/governance.py
@@ -13,10 +13,13 @@ class Governance(BaseSDK):
def createfindingsexport(
self,
*,
- export_type: Optional[models.ExportType] = None,
+ export_type: Optional[models.DlpExportFindingsRequestExportType] = None,
filter_: Optional[
Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict]
] = None,
+ issue_filter: Optional[
+ Union[models.DlpIssueFilter, models.DlpIssueFilterTypedDict]
+ ] = None,
file_name: Optional[str] = None,
field_scope: Optional[models.FieldScope] = None,
fields_to_exclude: Optional[List[str]] = None,
@@ -31,6 +34,7 @@ def createfindingsexport(
:param export_type: The type of export to perform
:param filter_:
+ :param issue_filter: Filter for DLP issues. Includes document-level filters and issue-specific filters.
:param file_name: The name of the file to export the findings to
:param field_scope: Controls which fields to include in the export
:param fields_to_exclude: List of field names to exclude from the export
@@ -54,6 +58,9 @@ def createfindingsexport(
filter_=utils.get_pydantic_model(
filter_, Optional[models.DlpFindingFilter]
),
+ issue_filter=utils.get_pydantic_model(
+ issue_filter, Optional[models.DlpIssueFilter]
+ ),
file_name=file_name,
field_scope=field_scope,
fields_to_exclude=fields_to_exclude,
@@ -116,10 +123,13 @@ def createfindingsexport(
async def createfindingsexport_async(
self,
*,
- export_type: Optional[models.ExportType] = None,
+ export_type: Optional[models.DlpExportFindingsRequestExportType] = None,
filter_: Optional[
Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict]
] = None,
+ issue_filter: Optional[
+ Union[models.DlpIssueFilter, models.DlpIssueFilterTypedDict]
+ ] = None,
file_name: Optional[str] = None,
field_scope: Optional[models.FieldScope] = None,
fields_to_exclude: Optional[List[str]] = None,
@@ -134,6 +144,7 @@ async def createfindingsexport_async(
:param export_type: The type of export to perform
:param filter_:
+ :param issue_filter: Filter for DLP issues. Includes document-level filters and issue-specific filters.
:param file_name: The name of the file to export the findings to
:param field_scope: Controls which fields to include in the export
:param fields_to_exclude: List of field names to exclude from the export
@@ -157,6 +168,9 @@ async def createfindingsexport_async(
filter_=utils.get_pydantic_model(
filter_, Optional[models.DlpFindingFilter]
),
+ issue_filter=utils.get_pydantic_model(
+ issue_filter, Optional[models.DlpIssueFilter]
+ ),
file_name=file_name,
field_scope=field_scope,
fields_to_exclude=fields_to_exclude,
diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py
index d494a415..1a54febc 100644
--- a/src/glean/api_client/models/__init__.py
+++ b/src/glean/api_client/models/__init__.py
@@ -556,12 +556,13 @@
from .dlpconfig import DlpConfig, DlpConfigTypedDict
from .dlpexportfindingsrequest import (
DlpExportFindingsRequest,
+ DlpExportFindingsRequestExportType,
DlpExportFindingsRequestTypedDict,
- ExportType,
FieldScope,
)
from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict
from .dlpfrequency import DlpFrequency
+ from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict
from .dlpissuestatus import DlpIssueStatus
from .dlpperson import DlpPerson, DlpPersonTypedDict
from .dlppersonmetadata import DlpPersonMetadata, DlpPersonMetadataTypedDict
@@ -675,7 +676,12 @@
from .eventclassification import EventClassification, EventClassificationTypedDict
from .eventclassificationname import EventClassificationName
from .eventstrategyname import EventStrategyName
- from .exportinfo import ExportInfo, ExportInfoStatus, ExportInfoTypedDict
+ from .exportinfo import (
+ ExportInfo,
+ ExportInfoExportType,
+ ExportInfoStatus,
+ ExportInfoTypedDict,
+ )
from .externalsharingoptions import (
ExternalSharingOptions,
ExternalSharingOptionsTypedDict,
@@ -1814,10 +1820,13 @@
"DlpConfig",
"DlpConfigTypedDict",
"DlpExportFindingsRequest",
+ "DlpExportFindingsRequestExportType",
"DlpExportFindingsRequestTypedDict",
"DlpFindingFilter",
"DlpFindingFilterTypedDict",
"DlpFrequency",
+ "DlpIssueFilter",
+ "DlpIssueFilterTypedDict",
"DlpIssueStatus",
"DlpPerson",
"DlpPersonMetadata",
@@ -1918,9 +1927,9 @@
"EventClassificationTypedDict",
"EventStrategyName",
"ExportInfo",
+ "ExportInfoExportType",
"ExportInfoStatus",
"ExportInfoTypedDict",
- "ExportType",
"ExternalSharingOptions",
"ExternalSharingOptionsTypedDict",
"ExternalShortcut",
@@ -2942,12 +2951,14 @@
"DlpConfig": ".dlpconfig",
"DlpConfigTypedDict": ".dlpconfig",
"DlpExportFindingsRequest": ".dlpexportfindingsrequest",
+ "DlpExportFindingsRequestExportType": ".dlpexportfindingsrequest",
"DlpExportFindingsRequestTypedDict": ".dlpexportfindingsrequest",
- "ExportType": ".dlpexportfindingsrequest",
"FieldScope": ".dlpexportfindingsrequest",
"DlpFindingFilter": ".dlpfindingfilter",
"DlpFindingFilterTypedDict": ".dlpfindingfilter",
"DlpFrequency": ".dlpfrequency",
+ "DlpIssueFilter": ".dlpissuefilter",
+ "DlpIssueFilterTypedDict": ".dlpissuefilter",
"DlpIssueStatus": ".dlpissuestatus",
"DlpPerson": ".dlpperson",
"DlpPersonTypedDict": ".dlpperson",
@@ -3037,6 +3048,7 @@
"EventClassificationName": ".eventclassificationname",
"EventStrategyName": ".eventstrategyname",
"ExportInfo": ".exportinfo",
+ "ExportInfoExportType": ".exportinfo",
"ExportInfoStatus": ".exportinfo",
"ExportInfoTypedDict": ".exportinfo",
"ExternalSharingOptions": ".externalsharingoptions",
diff --git a/src/glean/api_client/models/agentstimesavedinsight.py b/src/glean/api_client/models/agentstimesavedinsight.py
index f81071aa..25a613c6 100644
--- a/src/glean/api_client/models/agentstimesavedinsight.py
+++ b/src/glean/api_client/models/agentstimesavedinsight.py
@@ -22,6 +22,8 @@ class AgentsTimeSavedInsightTypedDict(TypedDict):
r"""Total number of runs for this agent over the specified time period."""
mins_per_run: NotRequired[float]
r"""Average minutes saved per run for this agent over the specified time period."""
+ feedback_user_count: NotRequired[int]
+ r"""Total number of users who provided feedback on time saved for this agent over the specified time period."""
class AgentsTimeSavedInsight(BaseModel):
@@ -43,10 +45,23 @@ class AgentsTimeSavedInsight(BaseModel):
mins_per_run: Annotated[Optional[float], pydantic.Field(alias="minsPerRun")] = None
r"""Average minutes saved per run for this agent over the specified time period."""
+ feedback_user_count: Annotated[
+ Optional[int], pydantic.Field(alias="feedbackUserCount")
+ ] = None
+ r"""Total number of users who provided feedback on time saved for this agent over the specified time period."""
+
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
- ["agentId", "agentName", "icon", "isDeleted", "runCount", "minsPerRun"]
+ [
+ "agentId",
+ "agentName",
+ "icon",
+ "isDeleted",
+ "runCount",
+ "minsPerRun",
+ "feedbackUserCount",
+ ]
)
serialized = handler(self)
m = {}
diff --git a/src/glean/api_client/models/dlpexportfindingsrequest.py b/src/glean/api_client/models/dlpexportfindingsrequest.py
index b4c54bb4..44fedb77 100644
--- a/src/glean/api_client/models/dlpexportfindingsrequest.py
+++ b/src/glean/api_client/models/dlpexportfindingsrequest.py
@@ -2,6 +2,7 @@
from __future__ import annotations
from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict
+from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict
from enum import Enum
from glean.api_client.types import BaseModel, UNSET_SENTINEL
import pydantic
@@ -10,7 +11,7 @@
from typing_extensions import Annotated, NotRequired, TypedDict
-class ExportType(str, Enum):
+class DlpExportFindingsRequestExportType(str, Enum):
r"""The type of export to perform"""
FINDINGS = "FINDINGS"
@@ -27,9 +28,11 @@ class FieldScope(str, Enum):
class DlpExportFindingsRequestTypedDict(TypedDict):
- export_type: NotRequired[ExportType]
+ export_type: NotRequired[DlpExportFindingsRequestExportType]
r"""The type of export to perform"""
filter_: NotRequired[DlpFindingFilterTypedDict]
+ issue_filter: NotRequired[DlpIssueFilterTypedDict]
+ r"""Filter for DLP issues. Includes document-level filters and issue-specific filters."""
file_name: NotRequired[str]
r"""The name of the file to export the findings to"""
field_scope: NotRequired[FieldScope]
@@ -39,15 +42,20 @@ class DlpExportFindingsRequestTypedDict(TypedDict):
class DlpExportFindingsRequest(BaseModel):
- export_type: Annotated[Optional[ExportType], pydantic.Field(alias="exportType")] = (
- None
- )
+ export_type: Annotated[
+ Optional[DlpExportFindingsRequestExportType], pydantic.Field(alias="exportType")
+ ] = None
r"""The type of export to perform"""
filter_: Annotated[Optional[DlpFindingFilter], pydantic.Field(alias="filter")] = (
None
)
+ issue_filter: Annotated[
+ Optional[DlpIssueFilter], pydantic.Field(alias="issueFilter")
+ ] = None
+ r"""Filter for DLP issues. Includes document-level filters and issue-specific filters."""
+
file_name: Annotated[Optional[str], pydantic.Field(alias="fileName")] = None
r"""The name of the file to export the findings to"""
@@ -64,7 +72,14 @@ class DlpExportFindingsRequest(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
- ["exportType", "filter", "fileName", "fieldScope", "fieldsToExclude"]
+ [
+ "exportType",
+ "filter",
+ "issueFilter",
+ "fileName",
+ "fieldScope",
+ "fieldsToExclude",
+ ]
)
serialized = handler(self)
m = {}
diff --git a/src/glean/api_client/models/dlpissuefilter.py b/src/glean/api_client/models/dlpissuefilter.py
new file mode 100644
index 00000000..ac7f76b7
--- /dev/null
+++ b/src/glean/api_client/models/dlpissuefilter.py
@@ -0,0 +1,101 @@
+"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
+
+from __future__ import annotations
+from .dlpissuestatus import DlpIssueStatus
+from .dlpseverity import DlpSeverity
+from .timerangefilter import TimeRangeFilter, TimeRangeFilterTypedDict
+from glean.api_client.types import BaseModel, UNSET_SENTINEL
+import pydantic
+from pydantic import model_serializer
+from typing import List, Optional
+from typing_extensions import Annotated, NotRequired, TypedDict
+
+
+class DlpIssueFilterTypedDict(TypedDict):
+ r"""Filter for DLP issues. Includes document-level filters and issue-specific filters."""
+
+ search_text: NotRequired[str]
+ r"""Text to search for in issue fields."""
+ statuses: NotRequired[List[DlpIssueStatus]]
+ r"""Filter by one or more issue statuses."""
+ assignee_id: NotRequired[str]
+ r"""Filter by assignee user ID."""
+ info_type: NotRequired[str]
+ regex_id: NotRequired[str]
+ report_ids: NotRequired[List[str]]
+ r"""Filter by one or more report/policy IDs."""
+ doc_id: NotRequired[str]
+ datasource: NotRequired[str]
+ visibility: NotRequired[str]
+ severities: NotRequired[List[DlpSeverity]]
+ r"""Filter by one or more severity levels."""
+ time_range: NotRequired[TimeRangeFilterTypedDict]
+
+
+class DlpIssueFilter(BaseModel):
+ r"""Filter for DLP issues. Includes document-level filters and issue-specific filters."""
+
+ search_text: Annotated[Optional[str], pydantic.Field(alias="searchText")] = None
+ r"""Text to search for in issue fields."""
+
+ statuses: Optional[List[DlpIssueStatus]] = None
+ r"""Filter by one or more issue statuses."""
+
+ assignee_id: Annotated[Optional[str], pydantic.Field(alias="assigneeId")] = None
+ r"""Filter by assignee user ID."""
+
+ info_type: Annotated[Optional[str], pydantic.Field(alias="infoType")] = None
+
+ regex_id: Annotated[Optional[str], pydantic.Field(alias="regexId")] = None
+
+ report_ids: Annotated[Optional[List[str]], pydantic.Field(alias="reportIds")] = None
+ r"""Filter by one or more report/policy IDs."""
+
+ doc_id: Annotated[Optional[str], pydantic.Field(alias="docId")] = None
+
+ datasource: Optional[str] = None
+
+ visibility: Optional[str] = None
+
+ severities: Optional[List[DlpSeverity]] = None
+ r"""Filter by one or more severity levels."""
+
+ time_range: Annotated[
+ Optional[TimeRangeFilter], pydantic.Field(alias="timeRange")
+ ] = None
+
+ @model_serializer(mode="wrap")
+ def serialize_model(self, handler):
+ optional_fields = set(
+ [
+ "searchText",
+ "statuses",
+ "assigneeId",
+ "infoType",
+ "regexId",
+ "reportIds",
+ "docId",
+ "datasource",
+ "visibility",
+ "severities",
+ "timeRange",
+ ]
+ )
+ serialized = handler(self)
+ m = {}
+
+ for n, f in type(self).model_fields.items():
+ k = f.alias or n
+ val = serialized.get(k, serialized.get(n))
+
+ if val != UNSET_SENTINEL:
+ if val is not None or k not in optional_fields:
+ m[k] = val
+
+ return m
+
+
+try:
+ DlpIssueFilter.model_rebuild()
+except NameError:
+ pass
diff --git a/src/glean/api_client/models/exportinfo.py b/src/glean/api_client/models/exportinfo.py
index 039b187e..859689a2 100644
--- a/src/glean/api_client/models/exportinfo.py
+++ b/src/glean/api_client/models/exportinfo.py
@@ -2,6 +2,7 @@
from __future__ import annotations
from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict
+from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict
from .dlpperson import DlpPerson, DlpPersonTypedDict
from enum import Enum
from glean.api_client import models, utils
@@ -12,6 +13,14 @@
from typing_extensions import Annotated, NotRequired, TypedDict
+class ExportInfoExportType(str, Enum, metaclass=utils.OpenEnumMeta):
+ r"""The type of export to perform"""
+
+ FINDINGS = "FINDINGS"
+ DOCUMENTS = "DOCUMENTS"
+ ISSUES = "ISSUES"
+
+
class ExportInfoStatus(str, Enum, metaclass=utils.OpenEnumMeta):
r"""The status of the export"""
@@ -31,7 +40,11 @@ class ExportInfoTypedDict(TypedDict):
r"""The ID of the export"""
file_name: NotRequired[str]
r"""The name of the file to export the findings to"""
+ export_type: NotRequired[ExportInfoExportType]
+ r"""The type of export to perform"""
filter_: NotRequired[DlpFindingFilterTypedDict]
+ issue_filter: NotRequired[DlpIssueFilterTypedDict]
+ r"""Filter for DLP issues. Includes document-level filters and issue-specific filters."""
status: NotRequired[ExportInfoStatus]
r"""The status of the export"""
export_size: NotRequired[int]
@@ -54,16 +67,35 @@ class ExportInfo(BaseModel):
file_name: Annotated[Optional[str], pydantic.Field(alias="fileName")] = None
r"""The name of the file to export the findings to"""
+ export_type: Annotated[
+ Optional[ExportInfoExportType], pydantic.Field(alias="exportType")
+ ] = None
+ r"""The type of export to perform"""
+
filter_: Annotated[Optional[DlpFindingFilter], pydantic.Field(alias="filter")] = (
None
)
+ issue_filter: Annotated[
+ Optional[DlpIssueFilter], pydantic.Field(alias="issueFilter")
+ ] = None
+ r"""Filter for DLP issues. Includes document-level filters and issue-specific filters."""
+
status: Optional[ExportInfoStatus] = None
r"""The status of the export"""
export_size: Annotated[Optional[int], pydantic.Field(alias="exportSize")] = None
r"""The size of the exported file in bytes"""
+ @field_serializer("export_type")
+ def serialize_export_type(self, value):
+ if isinstance(value, str):
+ try:
+ return models.ExportInfoExportType(value)
+ except ValueError:
+ return value
+ return value
+
@field_serializer("status")
def serialize_status(self, value):
if isinstance(value, str):
@@ -82,7 +114,9 @@ def serialize_model(self, handler):
"endTime",
"exportId",
"fileName",
+ "exportType",
"filter",
+ "issueFilter",
"status",
"exportSize",
]
diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go
index 96d4127e..87401958 100644
--- a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go
+++ b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go
@@ -628,8 +628,8 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) {
Roles: []components.UserRoleSpecification{},
SourceDocumentSpec: types.Pointer(components.CreateDocumentSpecUnionDocumentSpec3(
components.DocumentSpec3{
- UgcType: components.DocumentSpecUgcType1Announcements,
- ContentID: 848009,
+ UgcType: components.DocumentSpecUgcType1Shortcuts,
+ ContentID: 602763,
},
)),
SourceType: components.AnswerSourceTypeAssistant.ToPointer(),
diff --git a/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go
index 96168672..2a8e31d9 100644
--- a/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go
+++ b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go
@@ -15,6 +15,8 @@ type AgentsTimeSavedInsight struct {
RunCount *int64 `json:"runCount,omitempty"`
// Average minutes saved per run for this agent over the specified time period.
MinsPerRun *float32 `json:"minsPerRun,omitempty"`
+ // Total number of users who provided feedback on time saved for this agent over the specified time period.
+ FeedbackUserCount *int64 `json:"feedbackUserCount,omitempty"`
}
func (o *AgentsTimeSavedInsight) GetAgentID() *string {
@@ -58,3 +60,10 @@ func (o *AgentsTimeSavedInsight) GetMinsPerRun() *float32 {
}
return o.MinsPerRun
}
+
+func (o *AgentsTimeSavedInsight) GetFeedbackUserCount() *int64 {
+ if o == nil {
+ return nil
+ }
+ return o.FeedbackUserCount
+}
diff --git a/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go b/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go
index bc646980..77fdbe96 100644
--- a/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go
+++ b/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go
@@ -7,19 +7,19 @@ import (
"fmt"
)
-// ExportType - The type of export to perform
-type ExportType string
+// DlpExportFindingsRequestExportType - The type of export to perform
+type DlpExportFindingsRequestExportType string
const (
- ExportTypeFindings ExportType = "FINDINGS"
- ExportTypeDocuments ExportType = "DOCUMENTS"
- ExportTypeIssues ExportType = "ISSUES"
+ DlpExportFindingsRequestExportTypeFindings DlpExportFindingsRequestExportType = "FINDINGS"
+ DlpExportFindingsRequestExportTypeDocuments DlpExportFindingsRequestExportType = "DOCUMENTS"
+ DlpExportFindingsRequestExportTypeIssues DlpExportFindingsRequestExportType = "ISSUES"
)
-func (e ExportType) ToPointer() *ExportType {
+func (e DlpExportFindingsRequestExportType) ToPointer() *DlpExportFindingsRequestExportType {
return &e
}
-func (e *ExportType) UnmarshalJSON(data []byte) error {
+func (e *DlpExportFindingsRequestExportType) UnmarshalJSON(data []byte) error {
var v string
if err := json.Unmarshal(data, &v); err != nil {
return err
@@ -30,10 +30,10 @@ func (e *ExportType) UnmarshalJSON(data []byte) error {
case "DOCUMENTS":
fallthrough
case "ISSUES":
- *e = ExportType(v)
+ *e = DlpExportFindingsRequestExportType(v)
return nil
default:
- return fmt.Errorf("invalid value for ExportType: %v", v)
+ return fmt.Errorf("invalid value for DlpExportFindingsRequestExportType: %v", v)
}
}
@@ -69,8 +69,10 @@ func (e *FieldScope) UnmarshalJSON(data []byte) error {
type DlpExportFindingsRequest struct {
// The type of export to perform
- ExportType *ExportType `json:"exportType,omitempty"`
- Filter *DlpFindingFilter `json:"filter,omitempty"`
+ ExportType *DlpExportFindingsRequestExportType `json:"exportType,omitempty"`
+ Filter *DlpFindingFilter `json:"filter,omitempty"`
+ // Filter for DLP issues. Includes document-level filters and issue-specific filters.
+ IssueFilter *DlpIssueFilter `json:"issueFilter,omitempty"`
// The name of the file to export the findings to
FileName *string `json:"fileName,omitempty"`
// Controls which fields to include in the export
@@ -79,7 +81,7 @@ type DlpExportFindingsRequest struct {
FieldsToExclude []string `json:"fieldsToExclude,omitempty"`
}
-func (o *DlpExportFindingsRequest) GetExportType() *ExportType {
+func (o *DlpExportFindingsRequest) GetExportType() *DlpExportFindingsRequestExportType {
if o == nil {
return nil
}
@@ -93,6 +95,13 @@ func (o *DlpExportFindingsRequest) GetFilter() *DlpFindingFilter {
return o.Filter
}
+func (o *DlpExportFindingsRequest) GetIssueFilter() *DlpIssueFilter {
+ if o == nil {
+ return nil
+ }
+ return o.IssueFilter
+}
+
func (o *DlpExportFindingsRequest) GetFileName() *string {
if o == nil {
return nil
diff --git a/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go b/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go
new file mode 100644
index 00000000..484c2a99
--- /dev/null
+++ b/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go
@@ -0,0 +1,100 @@
+// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+
+package components
+
+// DlpIssueFilter - Filter for DLP issues. Includes document-level filters and issue-specific filters.
+type DlpIssueFilter struct {
+ // Text to search for in issue fields.
+ SearchText *string `json:"searchText,omitempty"`
+ // Filter by one or more issue statuses.
+ Statuses []DlpIssueStatus `json:"statuses,omitempty"`
+ // Filter by assignee user ID.
+ AssigneeID *string `json:"assigneeId,omitempty"`
+ InfoType *string `json:"infoType,omitempty"`
+ RegexID *string `json:"regexId,omitempty"`
+ // Filter by one or more report/policy IDs.
+ ReportIds []string `json:"reportIds,omitempty"`
+ DocID *string `json:"docId,omitempty"`
+ Datasource *string `json:"datasource,omitempty"`
+ Visibility *string `json:"visibility,omitempty"`
+ // Filter by one or more severity levels.
+ Severities []DlpSeverity `json:"severities,omitempty"`
+ TimeRange *TimeRangeFilter `json:"timeRange,omitempty"`
+}
+
+func (o *DlpIssueFilter) GetSearchText() *string {
+ if o == nil {
+ return nil
+ }
+ return o.SearchText
+}
+
+func (o *DlpIssueFilter) GetStatuses() []DlpIssueStatus {
+ if o == nil {
+ return nil
+ }
+ return o.Statuses
+}
+
+func (o *DlpIssueFilter) GetAssigneeID() *string {
+ if o == nil {
+ return nil
+ }
+ return o.AssigneeID
+}
+
+func (o *DlpIssueFilter) GetInfoType() *string {
+ if o == nil {
+ return nil
+ }
+ return o.InfoType
+}
+
+func (o *DlpIssueFilter) GetRegexID() *string {
+ if o == nil {
+ return nil
+ }
+ return o.RegexID
+}
+
+func (o *DlpIssueFilter) GetReportIds() []string {
+ if o == nil {
+ return nil
+ }
+ return o.ReportIds
+}
+
+func (o *DlpIssueFilter) GetDocID() *string {
+ if o == nil {
+ return nil
+ }
+ return o.DocID
+}
+
+func (o *DlpIssueFilter) GetDatasource() *string {
+ if o == nil {
+ return nil
+ }
+ return o.Datasource
+}
+
+func (o *DlpIssueFilter) GetVisibility() *string {
+ if o == nil {
+ return nil
+ }
+ return o.Visibility
+}
+
+func (o *DlpIssueFilter) GetSeverities() []DlpSeverity {
+ if o == nil {
+ return nil
+ }
+ return o.Severities
+}
+
+func (o *DlpIssueFilter) GetTimeRange() *TimeRangeFilter {
+ if o == nil {
+ return nil
+ }
+ return o.TimeRange
+}
diff --git a/tests/mockserver/internal/sdk/models/components/exportinfo.go b/tests/mockserver/internal/sdk/models/components/exportinfo.go
index 9cd209bf..74fb0752 100644
--- a/tests/mockserver/internal/sdk/models/components/exportinfo.go
+++ b/tests/mockserver/internal/sdk/models/components/exportinfo.go
@@ -7,6 +7,36 @@ import (
"fmt"
)
+// ExportInfoExportType - The type of export to perform
+type ExportInfoExportType string
+
+const (
+ ExportInfoExportTypeFindings ExportInfoExportType = "FINDINGS"
+ ExportInfoExportTypeDocuments ExportInfoExportType = "DOCUMENTS"
+ ExportInfoExportTypeIssues ExportInfoExportType = "ISSUES"
+)
+
+func (e ExportInfoExportType) ToPointer() *ExportInfoExportType {
+ return &e
+}
+func (e *ExportInfoExportType) UnmarshalJSON(data []byte) error {
+ var v string
+ if err := json.Unmarshal(data, &v); err != nil {
+ return err
+ }
+ switch v {
+ case "FINDINGS":
+ fallthrough
+ case "DOCUMENTS":
+ fallthrough
+ case "ISSUES":
+ *e = ExportInfoExportType(v)
+ return nil
+ default:
+ return fmt.Errorf("invalid value for ExportInfoExportType: %v", v)
+ }
+}
+
// ExportInfoStatus - The status of the export
type ExportInfoStatus string
@@ -47,8 +77,12 @@ type ExportInfo struct {
// The ID of the export
ExportID *string `json:"exportId,omitempty"`
// The name of the file to export the findings to
- FileName *string `json:"fileName,omitempty"`
- Filter *DlpFindingFilter `json:"filter,omitempty"`
+ FileName *string `json:"fileName,omitempty"`
+ // The type of export to perform
+ ExportType *ExportInfoExportType `json:"exportType,omitempty"`
+ Filter *DlpFindingFilter `json:"filter,omitempty"`
+ // Filter for DLP issues. Includes document-level filters and issue-specific filters.
+ IssueFilter *DlpIssueFilter `json:"issueFilter,omitempty"`
// The status of the export
Status *ExportInfoStatus `json:"status,omitempty"`
// The size of the exported file in bytes
@@ -90,6 +124,13 @@ func (o *ExportInfo) GetFileName() *string {
return o.FileName
}
+func (o *ExportInfo) GetExportType() *ExportInfoExportType {
+ if o == nil {
+ return nil
+ }
+ return o.ExportType
+}
+
func (o *ExportInfo) GetFilter() *DlpFindingFilter {
if o == nil {
return nil
@@ -97,6 +138,13 @@ func (o *ExportInfo) GetFilter() *DlpFindingFilter {
return o.Filter
}
+func (o *ExportInfo) GetIssueFilter() *DlpIssueFilter {
+ if o == nil {
+ return nil
+ }
+ return o.IssueFilter
+}
+
func (o *ExportInfo) GetStatus() *ExportInfoStatus {
if o == nil {
return nil
diff --git a/tests/test_summarize.py b/tests/test_summarize.py
index 5917ddcb..ef4774cf 100644
--- a/tests/test_summarize.py
+++ b/tests/test_summarize.py
@@ -1,6 +1,6 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
-from glean.api_client import Glean, models
+from glean.api_client import Glean
import os
from tests.test_client import create_test_http_client
@@ -18,11 +18,10 @@ def test_summarize_summarize():
res = glean.client.documents.summarize(
document_specs=[
{
- "id": "",
+ "url": "https://nervous-stall.info",
},
{
- "ugc_type": models.DocumentSpecUgcType1.COLLECTIONS,
- "content_id": 886976,
+ "id": "",
},
]
)